OSDN Git Service

Ensure that we are checking only calls to the function we are interested in specializing
authorAndrew Lenharth <andrewl@lenharth.org>
Mon, 3 Nov 2008 16:05:35 +0000 (16:05 +0000)
committerAndrew Lenharth <andrewl@lenharth.org>
Mon, 3 Nov 2008 16:05:35 +0000 (16:05 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58615 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/IPO/PartialSpecialization.cpp

index 006da59..486294d 100644 (file)
@@ -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;