diff options
author | Chris Lattner <sabre@nondot.org> | 2003-01-13 00:27:23 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2003-01-13 00:27:23 +0000 |
commit | 019a7c801b491504868ad105016fc6ebbb09ff5d (patch) | |
tree | e3c4407313fc179d3d49cd5707c36a7cf3a7e701 /lib | |
parent | 08084145c652afdec1b21404ead287fb79964a14 (diff) | |
download | external_llvm-019a7c801b491504868ad105016fc6ebbb09ff5d.zip external_llvm-019a7c801b491504868ad105016fc6ebbb09ff5d.tar.gz external_llvm-019a7c801b491504868ad105016fc6ebbb09ff5d.tar.bz2 |
Fix references to functions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5222 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Transforms/IPO/InlineSimple.cpp | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/lib/Transforms/IPO/InlineSimple.cpp b/lib/Transforms/IPO/InlineSimple.cpp index 6dbab59..afa4890 100644 --- a/lib/Transforms/IPO/InlineSimple.cpp +++ b/lib/Transforms/IPO/InlineSimple.cpp @@ -8,13 +8,8 @@ // * Is able to inline ANY function call // . Has a smart heuristic for when to inline a function // -// Notice that: -// * This pass opens up a lot of opportunities for constant propogation. It -// is a good idea to to run a constant propogation pass, then a DCE pass -// sometime after running this pass. -// // FIXME: This pass should transform alloca instructions in the called function -// into malloc/free pairs! +// into malloc/free pairs! Or perhaps it should refuse to inline them! // //===----------------------------------------------------------------------===// @@ -105,6 +100,13 @@ bool InlineFunction(CallInst *CI) { // Make a vector to capture the return instructions in the cloned function... std::vector<ReturnInst*> Returns; + // Populate the value map with all of the globals in the program. + Module &M = *OrigBB->getParent()->getParent(); + for (Module::iterator I = M.begin(), E = M.end(); I != E; ++I) + ValueMap[I] = I; + for (Module::giterator I = M.gbegin(), E = M.gend(); I != E; ++I) + ValueMap[I] = I; + // Do all of the hard part of cloning the callee into the caller... CloneFunctionInto(OrigBB->getParent(), CalledFunc, ValueMap, Returns, ".i"); |