mirror of
https://github.com/RPCS3/llvm.git
synced 2025-01-30 07:14:53 +00:00
Fix the predicate which checks for non-sensical formulae which have
constants in registers which partially cancel out their immediate fields. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104088 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
b2df433f71
commit
360026f07f
@ -2572,10 +2572,11 @@ void LSRInstance::GenerateCrossUseConstantOffsets() {
|
||||
J = NewF.BaseRegs.begin(), JE = NewF.BaseRegs.end();
|
||||
J != JE; ++J)
|
||||
if (const SCEVConstant *C = dyn_cast<SCEVConstant>(*J))
|
||||
if (C->getValue()->getValue().isNegative() !=
|
||||
(NewF.AM.BaseOffs < 0) &&
|
||||
C->getValue()->getValue().abs()
|
||||
.ule(abs64(NewF.AM.BaseOffs)))
|
||||
if ((C->getValue()->getValue() + NewF.AM.BaseOffs).abs().slt(
|
||||
abs64(NewF.AM.BaseOffs)) &&
|
||||
(C->getValue()->getValue() +
|
||||
NewF.AM.BaseOffs).countTrailingZeros() >=
|
||||
CountTrailingZeros_64(NewF.AM.BaseOffs))
|
||||
goto skip_formula;
|
||||
|
||||
// Ok, looks good.
|
||||
|
Loading…
x
Reference in New Issue
Block a user