From: Chris Lattner Date: Sun, 14 Mar 2004 04:14:31 +0000 (+0000) Subject: Do not create empty basic blocks when the lowerswitch pass expects blocks to X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=bf9eaddfb0642e49bc2f3835765a9782ff48c76e;p=oota-llvm.git Do not create empty basic blocks when the lowerswitch pass expects blocks to be non-empty! This fixes LowerSwitch/2004-03-13-SwitchIsDefaultCrash.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12384 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Transforms/Utils/LowerSwitch.cpp b/lib/Transforms/Utils/LowerSwitch.cpp index 2238d7b388f..653d9ffa47c 100644 --- a/lib/Transforms/Utils/LowerSwitch.cpp +++ b/lib/Transforms/Utils/LowerSwitch.cpp @@ -181,13 +181,10 @@ void LowerSwitch::processSwitchInst(SwitchInst *SI) { Value *Val = SI->getOperand(0); // The value we are switching on... BasicBlock* Default = SI->getDefaultDest(); - // Unlink the switch instruction from it's block. - CurBlock->getInstList().remove(SI); - // If there is only the default destination, don't bother with the code below. if (SI->getNumOperands() == 2) { new BranchInst(SI->getDefaultDest(), CurBlock); - delete SI; + CurBlock->getInstList().erase(SI); return; } @@ -222,5 +219,5 @@ void LowerSwitch::processSwitchInst(SwitchInst *SI) { new BranchInst(SwitchBlock, OrigBlock); // We are now done with the switch instruction, delete it. - delete SI; + CurBlock->getInstList().erase(SI); }