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.

llvm-svn: 29121
This commit is contained in:
Chris Lattner 2006-07-12 18:37:18 +00:00
parent 5de3b8b262
commit 6148456ec2
1 changed files with 4 additions and 2 deletions

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);
}
}
}