mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-19 06:31:18 +00:00
Lift a cheap early exit test above loops and other complex early exit
tests. No need to pay the high cost when we're never going to do anything. No functionality changed. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173331 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
c61bc7a90c
commit
9e62095261
@ -1370,6 +1370,11 @@ static bool SinkThenElseCodeToEnd(BranchInst *BI1) {
|
|||||||
///
|
///
|
||||||
/// \returns true if the conditional block is removed.
|
/// \returns true if the conditional block is removed.
|
||||||
static bool SpeculativelyExecuteBB(BranchInst *BI, BasicBlock *BB1) {
|
static bool SpeculativelyExecuteBB(BranchInst *BI, BasicBlock *BB1) {
|
||||||
|
// Be conservative for now. FP select instruction can often be expensive.
|
||||||
|
Value *BrCond = BI->getCondition();
|
||||||
|
if (isa<FCmpInst>(BrCond))
|
||||||
|
return false;
|
||||||
|
|
||||||
// Only speculatively execution a single instruction (not counting the
|
// Only speculatively execution a single instruction (not counting the
|
||||||
// terminator) for now.
|
// terminator) for now.
|
||||||
Instruction *HInst = NULL;
|
Instruction *HInst = NULL;
|
||||||
@ -1409,11 +1414,6 @@ static bool SpeculativelyExecuteBB(BranchInst *BI, BasicBlock *BB1) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Be conservative for now. FP select instruction can often be expensive.
|
|
||||||
Value *BrCond = BI->getCondition();
|
|
||||||
if (isa<FCmpInst>(BrCond))
|
|
||||||
return false;
|
|
||||||
|
|
||||||
// If BB1 is actually on the false edge of the conditional branch, remember
|
// If BB1 is actually on the false edge of the conditional branch, remember
|
||||||
// to swap the select operands later.
|
// to swap the select operands later.
|
||||||
bool Invert = false;
|
bool Invert = false;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user