Support indirect calls
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@764 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Transforms/IPO/InlineSimple.cpp b/lib/Transforms/IPO/InlineSimple.cpp
index c8afc27..609c3f1 100644
--- a/lib/Transforms/IPO/InlineSimple.cpp
+++ b/lib/Transforms/IPO/InlineSimple.cpp
@@ -69,7 +69,8 @@
CallInst *CI = cast<CallInst>(*CIIt);
const Method *CalledMeth = CI->getCalledMethod();
- if (CalledMeth->isExternal()) return false; // Can't inline external method!
+ if (CalledMeth == 0 || // Can't inline external method or indirect call!
+ CalledMeth->isExternal()) return false;
Method *CurrentMeth = CI->getParent()->getParent();
//cerr << "Inlining " << CalledMeth->getName() << " into "
@@ -238,7 +239,7 @@
if (CallInst *CI = dyn_cast<CallInst>(*I)) {
// Check to see if we should inline this method
Method *M = CI->getCalledMethod();
- if (ShouldInlineMethod(CI, M))
+ if (M && ShouldInlineMethod(CI, M))
return InlineMethod(I);
}
}