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
This commit is contained in:
Chris Lattner 2004-03-14 04:14:31 +00:00
parent 6cc83750b8
commit bf9eaddfb0

View File

@ -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);
}