From 5622f07a21b799964dc172925b9ebc38191859f6 Mon Sep 17 00:00:00 2001 From: Devang Patel Date: Tue, 24 Feb 2009 00:05:16 +0000 Subject: While folding unconditional return move DbgRegionEndInst into the predecessor, instead of removing it. This fixes following tests from llvmgcc42 testsuite. gcc.c-torture/execute/20000605-3.c gcc.c-torture/execute/20020619-1.c gcc.c-torture/execute/20030920-1.c gcc.c-torture/execute/loop-ivopts-1.c git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65353 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Transforms/Utils/BasicBlockUtils.cpp | 24 ++---------------------- 1 file changed, 2 insertions(+), 22 deletions(-) (limited to 'lib/Transforms/Utils/BasicBlockUtils.cpp') diff --git a/lib/Transforms/Utils/BasicBlockUtils.cpp b/lib/Transforms/Utils/BasicBlockUtils.cpp index 964fcc083d..7b633b2007 100644 --- a/lib/Transforms/Utils/BasicBlockUtils.cpp +++ b/lib/Transforms/Utils/BasicBlockUtils.cpp @@ -15,7 +15,6 @@ #include "llvm/Transforms/Utils/BasicBlockUtils.h" #include "llvm/Function.h" #include "llvm/Instructions.h" -#include "llvm/IntrinsicInst.h" #include "llvm/Constant.h" #include "llvm/Type.h" #include "llvm/Analysis/AliasAnalysis.h" @@ -32,7 +31,7 @@ void llvm::DeleteDeadBlock(BasicBlock *BB) { // Can delete self loop. BB->getSinglePredecessor() == BB) && "Block is not dead!"); TerminatorInst *BBTerm = BB->getTerminator(); - Value *DbgRegionEndContext = NULL; + // Loop through all of our successors and make sure they know that one // of their predecessors is going away. for (unsigned i = 0, e = BBTerm->getNumSuccessors(); i != e; ++i) @@ -41,10 +40,6 @@ void llvm::DeleteDeadBlock(BasicBlock *BB) { // Zap all the instructions in the block. while (!BB->empty()) { Instruction &I = BB->back(); - // It is possible to have multiple llvm.dbg.region.end in a block. - if (DbgRegionEndInst *DREI = dyn_cast(&I)) - DbgRegionEndContext = DREI->getContext(); - // If this instruction is used, replace uses with an arbitrary value. // Because control flow can't get here, we don't care what we replace the // value with. Note that since this block is unreachable, and all values @@ -54,22 +49,7 @@ void llvm::DeleteDeadBlock(BasicBlock *BB) { I.replaceAllUsesWith(UndefValue::get(I.getType())); BB->getInstList().pop_back(); } - - if (DbgRegionEndContext) { - // Delete corresponding llvm.dbg.func.start from entry block. - BasicBlock &Entry = BB->getParent()->getEntryBlock(); - DbgFuncStartInst *DbgFuncStart = NULL; - for (BasicBlock::iterator BI = Entry.begin(), BE = Entry.end(); - BI != BE; ++BI) { - if (DbgFuncStartInst *DFSI = dyn_cast(BI)) { - DbgFuncStart = DFSI; - break; - } - } - if (DbgFuncStart && DbgFuncStart->getSubprogram() == DbgRegionEndContext) - DbgFuncStart->eraseFromParent(); - } - + // Zap the block! BB->eraseFromParent(); } -- cgit v1.2.3-18-g5258