mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-04-12 23:37:33 +00:00
Let the inliner update the callgraph to reflect the changes it makes, instead
of doing it ourselves. This fixes Transforms/Inline/2006-01-14-CallGraphUpdate.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25321 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
468fb1df7d
commit
432a205769
@ -42,18 +42,7 @@ static bool InlineCallIfPossible(CallSite CS, CallGraph &CG,
|
||||
const std::set<Function*> &SCCFunctions) {
|
||||
Function *Caller = CS.getInstruction()->getParent()->getParent();
|
||||
Function *Callee = CS.getCalledFunction();
|
||||
if (!InlineFunction(CS)) return false;
|
||||
|
||||
// Update the call graph by deleting the edge from Callee to Caller
|
||||
CallGraphNode *CalleeNode = CG[Callee];
|
||||
CallGraphNode *CallerNode = CG[Caller];
|
||||
CallerNode->removeCallEdgeTo(CalleeNode);
|
||||
|
||||
// Since we inlined all uninlined call sites in the callee into the caller,
|
||||
// add edges from the caller to all of the callees of the callee.
|
||||
for (CallGraphNode::iterator I = CalleeNode->begin(),
|
||||
E = CalleeNode->end(); I != E; ++I)
|
||||
CallerNode->addCalledFunction(*I);
|
||||
if (!InlineFunction(CS, &CG)) return false;
|
||||
|
||||
// If we inlined the last possible call site to the function, delete the
|
||||
// function body now.
|
||||
@ -63,6 +52,7 @@ static bool InlineCallIfPossible(CallSite CS, CallGraph &CG,
|
||||
<< Callee->getName() << "\n");
|
||||
|
||||
// Remove any call graph edges from the callee to its callees.
|
||||
CallGraphNode *CalleeNode = CG[Callee];
|
||||
while (CalleeNode->begin() != CalleeNode->end())
|
||||
CalleeNode->removeCallEdgeTo(*(CalleeNode->end()-1));
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user