mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-07 14:33:15 +00:00
Fix references to functions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5222 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
08084145c6
commit
019a7c801b
@ -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");
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user