mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-28 21:34:23 +00:00
Fix Transforms/SimplifyCFG/switch-simplify-crash.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22158 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
07b5c9d68f
commit
42eb7524ef
@ -1236,6 +1236,7 @@ bool llvm::SimplifyCFG(BasicBlock *BB) {
|
||||
} else if (SwitchInst *SI = dyn_cast<SwitchInst>(TI)) {
|
||||
for (unsigned i = 1, e = SI->getNumCases(); i != e; ++i)
|
||||
if (SI->getSuccessor(i) == BB) {
|
||||
BB->removePredecessor(SI->getParent());
|
||||
SI->removeCase(i);
|
||||
--i; --e;
|
||||
Changed = true;
|
||||
@ -1263,6 +1264,12 @@ bool llvm::SimplifyCFG(BasicBlock *BB) {
|
||||
SI->setSuccessor(0, MaxBlock);
|
||||
Changed = true;
|
||||
|
||||
// If MaxBlock has phinodes in it, remove MaxPop-1 entries from
|
||||
// it.
|
||||
if (isa<PHINode>(MaxBlock->begin()))
|
||||
for (unsigned i = 0; i != MaxPop-1; ++i)
|
||||
MaxBlock->removePredecessor(SI->getParent());
|
||||
|
||||
for (unsigned i = 1, e = SI->getNumCases(); i != e; ++i)
|
||||
if (SI->getSuccessor(i) == MaxBlock) {
|
||||
SI->removeCase(i);
|
||||
|
Loading…
x
Reference in New Issue
Block a user