In addition to deleting calls, the inliner can constant fold them as well.

Handle this case, which doesn't require a new callgraph edge.  This fixes
a crash compiling MallocBench/gs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29121 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2006-07-12 18:37:18 +00:00
parent d85340f4ec
commit 1bb3a40257

View File

@ -158,8 +158,10 @@ static void UpdateCallGraphAfterInlining(const Function *Caller,
std::map<const Value*, Value*>::iterator VMI = ValueMap.find(OrigCall);
if (VMI != ValueMap.end()) { // Only copy the edge if the call was inlined!
Instruction *NewCall = cast<Instruction>(VMI->second);
CallerNode->addCalledFunction(CallSite::get(NewCall), I->second);
// If the call was inlined, but then constant folded, there is no edge to
// add. Check for this case.
if (Instruction *NewCall = dyn_cast<Instruction>(VMI->second))
CallerNode->addCalledFunction(CallSite::get(NewCall), I->second);
}
}
}