diff options
author | Andrew Lenharth <andrewl@lenharth.org> | 2008-11-03 16:05:35 +0000 |
---|---|---|
committer | Andrew Lenharth <andrewl@lenharth.org> | 2008-11-03 16:05:35 +0000 |
commit | 97bd9a914bbf754e3a1624b1def7b9224041cbbf (patch) | |
tree | 36234c03127aba1989124c7e96bd65573c208317 /lib/Transforms/IPO/PartialSpecialization.cpp | |
parent | d1000d99277e2e4ddd65000a7cc87ce3a8e465c1 (diff) |
Ensure that we are checking only calls to the function we are interested in specializing
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58615 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Transforms/IPO/PartialSpecialization.cpp')
-rw-r--r-- | lib/Transforms/IPO/PartialSpecialization.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/lib/Transforms/IPO/PartialSpecialization.cpp b/lib/Transforms/IPO/PartialSpecialization.cpp index 006da59610..486294dd4c 100644 --- a/lib/Transforms/IPO/PartialSpecialization.cpp +++ b/lib/Transforms/IPO/PartialSpecialization.cpp @@ -165,14 +165,16 @@ void PartSpec::scanForInterest(Function& F, SmallVector<int, 6>& args) { } } +/// scanDistribution - Construct a histogram of constants for arg of F at arg int PartSpec::scanDistribution(Function& F, int arg, std::map<Constant*, int>& dist) { bool hasIndirect = false; int total = 0; for(Value::use_iterator ii = F.use_begin(), ee = F.use_end(); ii != ee; ++ii) - if (CallInst* CI = dyn_cast<CallInst>(ii)) { - ++dist[dyn_cast<Constant>(CI->getOperand(arg + 1))]; + if ((isa<CallInst>(ii) || isa<InvokeInst>(ii)) + && ii->getOperand(0) == &F) { + ++dist[dyn_cast<Constant>(ii->getOperand(arg + 1))]; ++total; } else hasIndirect = true; |