mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-14 11:32:34 +00:00
Do compare constant SCEV values in SCEVComplexityCompare, because
even though the order doesn't matter at the top level of an expression, it does matter when the constant is a subexpression of an n-ary expression, because n-ary expressions are sorted lexicographically. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73358 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
a82752c9eb
commit
4dfad29547
@ -504,9 +504,18 @@ namespace {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Constant sorting doesn't matter since they'll be folded.
|
||||
if (isa<SCEVConstant>(LHS))
|
||||
return false;
|
||||
// Compare constant values.
|
||||
if (const SCEVConstant *LC = dyn_cast<SCEVConstant>(LHS)) {
|
||||
const SCEVConstant *RC = cast<SCEVConstant>(RHS);
|
||||
return LC->getValue()->getValue().ult(RC->getValue()->getValue());
|
||||
}
|
||||
|
||||
// Compare addrec loop depths.
|
||||
if (const SCEVAddRecExpr *LA = dyn_cast<SCEVAddRecExpr>(LHS)) {
|
||||
const SCEVAddRecExpr *RA = cast<SCEVAddRecExpr>(RHS);
|
||||
if (LA->getLoop()->getLoopDepth() != RA->getLoop()->getLoopDepth())
|
||||
return LA->getLoop()->getLoopDepth() < RA->getLoop()->getLoopDepth();
|
||||
}
|
||||
|
||||
// Lexicographically compare n-ary expressions.
|
||||
if (const SCEVNAryExpr *LC = dyn_cast<SCEVNAryExpr>(LHS)) {
|
||||
|
Loading…
Reference in New Issue
Block a user