diff options
author | Chris Lattner <sabre@nondot.org> | 2003-12-10 20:22:42 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2003-12-10 20:22:42 +0000 |
commit | 7e5bd59da23157f70d74150b91e5be1f6bcf01d1 (patch) | |
tree | 0819e871c0688c325c0b952b33f7714bd55f1602 | |
parent | 02f7e71d355e17a07d16b23843a3c587c9b1ba5e (diff) | |
download | llvm-7e5bd59da23157f70d74150b91e5be1f6bcf01d1.zip llvm-7e5bd59da23157f70d74150b91e5be1f6bcf01d1.tar.gz llvm-7e5bd59da23157f70d74150b91e5be1f6bcf01d1.tar.bz2 |
Finegrainify namespacification
Fix bug: LowerInvoke/2003-12-10-Crash.llx
llvm-svn: 10382
-rw-r--r-- | llvm/lib/Transforms/Scalar/LowerInvoke.cpp | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/llvm/lib/Transforms/Scalar/LowerInvoke.cpp b/llvm/lib/Transforms/Scalar/LowerInvoke.cpp index ec97ca2..3686fc0 100644 --- a/llvm/lib/Transforms/Scalar/LowerInvoke.cpp +++ b/llvm/lib/Transforms/Scalar/LowerInvoke.cpp @@ -22,8 +22,7 @@ #include "llvm/Type.h" #include "llvm/Constant.h" #include "Support/Statistic.h" - -namespace llvm { +using namespace llvm; namespace { Statistic<> NumLowered("lowerinvoke", "Number of invoke & unwinds replaced"); @@ -40,7 +39,7 @@ namespace { } // Public Interface To the LowerInvoke pass. -FunctionPass *createLowerInvokePass() { return new LowerInvoke(); } +FunctionPass *llvm::createLowerInvokePass() { return new LowerInvoke(); } // doInitialization - Make sure that there is a prototype for abort in the // current module. @@ -51,8 +50,8 @@ bool LowerInvoke::doInitialization(Module &M) { bool LowerInvoke::runOnFunction(Function &F) { bool Changed = false; - for (Function::iterator I = F.begin(), E = F.end(); I != E; ++I) - if (InvokeInst *II = dyn_cast<InvokeInst>(I->getTerminator())) { + for (Function::iterator BB = F.begin(), E = F.end(); BB != E; ++BB) + if (InvokeInst *II = dyn_cast<InvokeInst>(BB->getTerminator())) { // Insert a normal call instruction... std::string Name = II->getName(); II->setName(""); Value *NewCall = new CallInst(II->getCalledValue(), @@ -60,14 +59,17 @@ bool LowerInvoke::runOnFunction(Function &F) { II->op_end()), Name,II); II->replaceAllUsesWith(NewCall); - // Insert an unconditional branch to the normal destination + // Insert an unconditional branch to the normal destination. new BranchInst(II->getNormalDest(), II); + // Remove any PHI node entries from the exception destination. + II->getExceptionalDest()->removePredecessor(BB); + // Remove the invoke instruction now. - I->getInstList().erase(II); + BB->getInstList().erase(II); ++NumLowered; Changed = true; - } else if (UnwindInst *UI = dyn_cast<UnwindInst>(I->getTerminator())) { + } else if (UnwindInst *UI = dyn_cast<UnwindInst>(BB->getTerminator())) { // Insert a call to abort() new CallInst(AbortFn, std::vector<Value*>(), "", UI); @@ -76,11 +78,9 @@ bool LowerInvoke::runOnFunction(Function &F) { Constant::getNullValue(F.getReturnType()), UI); // Remove the unwind instruction now. - I->getInstList().erase(UI); + BB->getInstList().erase(UI); ++NumLowered; Changed = true; } return Changed; } - -} // End llvm namespace |