mirror of
https://github.com/RPCS3/llvm.git
synced 2025-01-19 00:14:20 +00:00
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:
parent
d85340f4ec
commit
1bb3a40257
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user