[CallGraph] Teach the CallGraph about non-leaf intrinsics.
[oota-llvm.git] / lib / Analysis / IPA / CallGraphSCCPass.cpp
index 65ba1c7c6c479010f1ab410bc8b27f40225a25ab..6b3e06346269ac37b544d8168a68cc8b132a56d2 100644 (file)
@@ -217,8 +217,10 @@ bool CGPassManager::RefreshCallGraph(CallGraphSCC &CurSCC,
           // another value. This can happen when constant folding happens
           // of well known functions etc.
           !CallSite(I->first) ||
-           (CallSite(I->first).getCalledFunction() &&
-            CallSite(I->first).getCalledFunction()->isIntrinsic())) {
+          (CallSite(I->first).getCalledFunction() &&
+           CallSite(I->first).getCalledFunction()->isIntrinsic() &&
+           Intrinsic::isLeaf(
+               CallSite(I->first).getCalledFunction()->getIntrinsicID()))) {
         assert(!CheckingMode &&
                "CallGraphSCCPass did not update the CallGraph correctly!");