aboutsummaryrefslogtreecommitdiff
path: root/lib/Transforms/Utils/LowerAllocations.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2001-10-18 05:27:33 +0000
committerChris Lattner <sabre@nondot.org>2001-10-18 05:27:33 +0000
commit42c9c2cce4894cc608f0c1cdb5102384778686f0 (patch)
treef63b534f4c783959ab07121663b4c68f8bb1bab4 /lib/Transforms/Utils/LowerAllocations.cpp
parenta36941c069cfedb59d53e84e21ee591d6b8af002 (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.cpp14
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;
}