mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-02-05 03:36:43 +00:00
Make bugpoint ehpad/token friendly
Tokens shouldn't be blindly replaced with undef/null. Also, don't try to remove EH pad instructions from the top of basic blocks. llvm-svn: 252414
This commit is contained in:
parent
b682989c7b
commit
5efe6aaf0c
@ -373,8 +373,9 @@ bool ReduceCrashingBlocks::TestBlocks(std::vector<const BasicBlock*> &BBs) {
|
||||
(*SI)->removePredecessor(&*BB);
|
||||
|
||||
TerminatorInst *BBTerm = BB->getTerminator();
|
||||
|
||||
if (!BB->getTerminator()->getType()->isVoidTy())
|
||||
if (BBTerm->isEHPad())
|
||||
continue;
|
||||
if (!BBTerm->getType()->isVoidTy() && !BBTerm->getType()->isTokenTy())
|
||||
BBTerm->replaceAllUsesWith(Constant::getNullValue(BBTerm->getType()));
|
||||
|
||||
// Replace the old terminator instruction.
|
||||
@ -476,7 +477,7 @@ bool ReduceCrashingInstructions::TestInsts(std::vector<const Instruction*>
|
||||
Instruction *Inst = &*I++;
|
||||
if (!Instructions.count(Inst) && !isa<TerminatorInst>(Inst) &&
|
||||
!Inst->isEHPad()) {
|
||||
if (!Inst->getType()->isVoidTy())
|
||||
if (!Inst->getType()->isVoidTy() && !Inst->getType()->isTokenTy())
|
||||
Inst->replaceAllUsesWith(UndefValue::get(Inst->getType()));
|
||||
Inst->eraseFromParent();
|
||||
}
|
||||
@ -785,7 +786,7 @@ static bool DebugACrash(BugDriver &BD,
|
||||
} else {
|
||||
if (BugpointIsInterrupted) goto ExitLoops;
|
||||
|
||||
if (isa<LandingPadInst>(I))
|
||||
if (I->isEHPad() || I->getType()->isTokenTy())
|
||||
continue;
|
||||
|
||||
outs() << "Checking instruction: " << *I;
|
||||
|
Loading…
x
Reference in New Issue
Block a user