diff options
author | Chris Lattner <sabre@nondot.org> | 2001-10-18 05:27:33 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2001-10-18 05:27:33 +0000 |
commit | 42c9c2cce4894cc608f0c1cdb5102384778686f0 (patch) | |
tree | f63b534f4c783959ab07121663b4c68f8bb1bab4 /lib/Transforms/Utils/LowerAllocations.cpp | |
parent | a36941c069cfedb59d53e84e21ee591d6b8af002 (diff) |
Convert to new simpler pass itf
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@880 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Transforms/Utils/LowerAllocations.cpp')
-rw-r--r-- | lib/Transforms/Utils/LowerAllocations.cpp | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/lib/Transforms/Utils/LowerAllocations.cpp b/lib/Transforms/Utils/LowerAllocations.cpp index ba78ce18fd..945d941530 100644 --- a/lib/Transforms/Utils/LowerAllocations.cpp +++ b/lib/Transforms/Utils/LowerAllocations.cpp @@ -19,7 +19,8 @@ // // This function is always successful. // -bool LowerAllocations::doPassInitializationVirt(Module *M) { +bool LowerAllocations::doPassInitialization(Module *M) { + bool Changed = false; const MethodType *MallocType = MethodType::get(PointerType::get(Type::UByteTy), vector<const Type*>(1, Type::UIntTy), false); @@ -31,6 +32,7 @@ bool LowerAllocations::doPassInitializationVirt(Module *M) { MallocMeth = cast<Method>(V); // Yup, got it } else { // Nope, add one M->getMethodList().push_back(MallocMeth = new Method(MallocType, "malloc")); + Changed = true; } const MethodType *FreeType = @@ -43,15 +45,17 @@ bool LowerAllocations::doPassInitializationVirt(Module *M) { FreeMeth = cast<Method>(V); // Yup, got it } else { // Nope, add one M->getMethodList().push_back(FreeMeth = new Method(FreeType, "free")); + Changed = true; } - return false; // Always successful + return Changed; // Always successful } // doPerMethodWork - This method does the actual work of converting // instructions over, assuming that the pass has already been initialized. // -bool LowerAllocations::doPerMethodWorkVirt(Method *M) { +bool LowerAllocations::doPerMethodWork(Method *M) { + bool Changed = false; assert(MallocMeth && FreeMeth && M && "Pass not initialized!"); // Loop over all of the instructions, looking for malloc or free instructions @@ -97,6 +101,7 @@ bool LowerAllocations::doPerMethodWorkVirt(Method *M) { // Replace all uses of the old malloc inst with the cast inst MI->replaceAllUsesWith(MCast); delete MI; // Delete the malloc inst + Changed = true; } else if (FreeInst *FI = dyn_cast<FreeInst>(*(BBIL.begin()+i))) { BBIL.remove(BB->getInstList().begin()+i); @@ -112,10 +117,11 @@ bool LowerAllocations::doPerMethodWorkVirt(Method *M) { // Delete the old free instruction delete FI; + Changed = true; } } } - return false; // Always successful + return Changed; } |