mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-03 13:31:05 +00:00
Use IRBuilder while simplifying terminator.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131552 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
a23812cfbd
commit
d3372b85e6
@ -1835,16 +1835,19 @@ static bool SimplifyTerminatorOnSelect(TerminatorInst *OldTerm, Value *Cond,
|
||||
Succ->removePredecessor(OldTerm->getParent());
|
||||
}
|
||||
|
||||
IRBuilder<> Builder(OldTerm);
|
||||
Builder.SetCurrentDebugLocation(OldTerm->getDebugLoc());
|
||||
|
||||
// Insert an appropriate new terminator.
|
||||
if ((KeepEdge1 == 0) && (KeepEdge2 == 0)) {
|
||||
if (TrueBB == FalseBB)
|
||||
// We were only looking for one successor, and it was present.
|
||||
// Create an unconditional branch to it.
|
||||
BranchInst::Create(TrueBB, OldTerm);
|
||||
Builder.CreateBr(TrueBB);
|
||||
else
|
||||
// We found both of the successors we were looking for.
|
||||
// Create a conditional branch sharing the condition of the select.
|
||||
BranchInst::Create(TrueBB, FalseBB, Cond, OldTerm);
|
||||
Builder.CreateCondBr(Cond, TrueBB, FalseBB);
|
||||
} else if (KeepEdge1 && (KeepEdge2 || TrueBB == FalseBB)) {
|
||||
// Neither of the selected blocks were successors, so this
|
||||
// terminator must be unreachable.
|
||||
@ -1855,10 +1858,10 @@ static bool SimplifyTerminatorOnSelect(TerminatorInst *OldTerm, Value *Cond,
|
||||
// the edge to the one that wasn't must be unreachable.
|
||||
if (KeepEdge1 == 0)
|
||||
// Only TrueBB was found.
|
||||
BranchInst::Create(TrueBB, OldTerm);
|
||||
Builder.CreateBr(TrueBB);
|
||||
else
|
||||
// Only FalseBB was found.
|
||||
BranchInst::Create(FalseBB, OldTerm);
|
||||
Builder.CreateBr(FalseBB);
|
||||
}
|
||||
|
||||
EraseTerminatorInstAndDCECond(OldTerm);
|
||||
|
Loading…
Reference in New Issue
Block a user