mirror of
https://github.com/RPCSX/llvm.git
synced 2024-12-03 17:31:50 +00:00
Fix a bug compimling Ruby, fixing this testcase:
LowerSetJmp/2005-05-05-OldUses.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21696 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
ac0630ff75
commit
3987abdfe3
@ -272,9 +272,17 @@ void LowerSetJmp::TransformLongJmpCall(CallInst* Inst)
|
||||
else
|
||||
new UnwindInst(Inst);
|
||||
|
||||
// Remove all insts after the branch/unwind inst.
|
||||
Inst->getParent()->getInstList().erase(Inst,
|
||||
Inst->getParent()->getInstList().end());
|
||||
// Remove all insts after the branch/unwind inst. Go from back to front to
|
||||
// avoid replaceAllUsesWith if possible.
|
||||
BasicBlock *BB = Inst->getParent();
|
||||
Instruction *Removed;
|
||||
do {
|
||||
Removed = &BB->back();
|
||||
// If the removed instructions have any users, replace them now.
|
||||
if (!Removed->use_empty())
|
||||
Removed->replaceAllUsesWith(UndefValue::get(Removed->getType()));
|
||||
Removed->eraseFromParent();
|
||||
} while (Removed != Inst);
|
||||
|
||||
++LongJmpsTransformed;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user