Add spliceFunction to the CallGraph interface. This allows users to efficiently

update a callGraph when performing the common operation of splicing the body to
a new function and updating all callers (such as via RAUW).

No users yet, though this is intended for DeadArgumentElimination as part of
PR8887.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122728 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Nick Lewycky
2011-01-03 03:19:35 +00:00
parent 8e7f0d70c7
commit 9ad1cb59de
2 changed files with 25 additions and 2 deletions

View File

@ -138,6 +138,13 @@ public:
/// not already exist.
CallGraphNode *getOrInsertFunction(const Function *F);
/// spliceFunction - Replace the function represented by this node by another.
/// This does not rescan the body of the function, so it is suitable when
/// splicing the body of one function to another while also updating all
/// callers from the old function to the new.
///
void spliceFunction(const Function *From, const Function *To);
//===---------------------------------------------------------------------
// Pass infrastructure interface glue code.
//
@ -163,8 +170,10 @@ protected:
// CallGraphNode class definition.
//
class CallGraphNode {
AssertingVH<Function> F;
friend class CallGraph;
AssertingVH<Function> F;
// CallRecord - This is a pair of the calling instruction (a call or invoke)
// and the callgraph node being called.
public: