Skip to content

Commit 7660981

Browse files
committed
[LSR] Use computeConstantDifference()
This API is faster than getMinusSCEV() and a SCEVConstant cast.
1 parent 69c4346 commit 7660981

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5304,17 +5304,17 @@ static bool IsSimplerBaseSCEVForTarget(const TargetTransformInfo &TTI,
53045304
cast<SCEVAddRecExpr>(Best)->getLoop() !=
53055305
cast<SCEVAddRecExpr>(Reg)->getLoop()))
53065306
return false;
5307-
const auto *Diff = dyn_cast<SCEVConstant>(SE.getMinusSCEV(Best, Reg));
5307+
std::optional<APInt> Diff = SE.computeConstantDifference(Best, Reg);
53085308
if (!Diff)
53095309
return false;
53105310

53115311
return TTI.isLegalAddressingMode(
53125312
AccessType.MemTy, /*BaseGV=*/nullptr,
5313-
/*BaseOffset=*/Diff->getAPInt().getSExtValue(),
5313+
/*BaseOffset=*/Diff->getSExtValue(),
53145314
/*HasBaseReg=*/true, /*Scale=*/0, AccessType.AddrSpace) &&
53155315
!TTI.isLegalAddressingMode(
53165316
AccessType.MemTy, /*BaseGV=*/nullptr,
5317-
/*BaseOffset=*/-Diff->getAPInt().getSExtValue(),
5317+
/*BaseOffset=*/-Diff->getSExtValue(),
53185318
/*HasBaseReg=*/true, /*Scale=*/0, AccessType.AddrSpace);
53195319
}
53205320

0 commit comments

Comments
 (0)