[llvm] a945ada - [SCEV] Use makeExactNoWrapRegion for constant operands. (NFC) (#223973)
via llvm-commits
llvm-commits at lists.llvm.org
Mon Sep 28 03:33:42 PDT 2026
Author: Florian Hahn
Date: 2026-09-28T10:33:35Z
New Revision: a945adae2eb9236392fbbfe1ab5181f8c073d6f8
URL: https://github.com/llvm/llvm-project/commit/a945adae2eb9236392fbbfe1ab5181f8c073d6f8
DIFF: https://github.com/llvm/llvm-project/commit/a945adae2eb9236392fbbfe1ab5181f8c073d6f8.diff
LOG: [SCEV] Use makeExactNoWrapRegion for constant operands. (NFC) (#223973)
Use makeExactNoWrapRegion when constant is available.
Together with https://github.com/llvm/llvm-project/pull/223969, this
reduces compile-time in SCEV heavy workloads:
stage1-O3: -0.10%
stage1-ReleaseThinLTO: -0.0.9%
stage1-ReleaseLTO-g: -0.08%
stage1-aarch64-O3: -0.09%
stage2-O3: -0.07%
https://llvm-compile-time-tracker.com/compare.php?from=016fa12d18058b83c528f2af859e45df4548034f&to=e2efeaf6a19ac8c53170f2a2b196f3d38268fd32&stat=instructions:u
PR: https://github.com/llvm/llvm-project/pull/223973
Added:
Modified:
llvm/lib/Analysis/ScalarEvolution.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Analysis/ScalarEvolution.cpp b/llvm/lib/Analysis/ScalarEvolution.cpp
index c5e1af4bf060f..ac705f52cd239 100644
--- a/llvm/lib/Analysis/ScalarEvolution.cpp
+++ b/llvm/lib/Analysis/ScalarEvolution.cpp
@@ -2473,16 +2473,16 @@ static SCEV::NoWrapFlags StrengthenNoWrapFlags(ScalarEvolution *SE,
// (A <opcode> C) --> (A <opcode> C)<nsw> if the op doesn't sign overflow.
if (!(SignOrUnsignWrap & SCEV::FlagNSW)) {
- auto NSWRegion = ConstantRange::makeGuaranteedNoWrapRegion(
- Opcode, C, OBO::NoSignedWrap);
+ auto NSWRegion =
+ ConstantRange::makeExactNoWrapRegion(Opcode, C, OBO::NoSignedWrap);
if (NSWRegion.contains(SE->getSignedRange(Ops[1])))
Flags = ScalarEvolution::setFlags(Flags, SCEV::FlagNSW);
}
// (A <opcode> C) --> (A <opcode> C)<nuw> if the op doesn't unsign overflow.
if (!(SignOrUnsignWrap & SCEV::FlagNUW)) {
- auto NUWRegion = ConstantRange::makeGuaranteedNoWrapRegion(
- Opcode, C, OBO::NoUnsignedWrap);
+ auto NUWRegion =
+ ConstantRange::makeExactNoWrapRegion(Opcode, C, OBO::NoUnsignedWrap);
if (NUWRegion.contains(SE->getUnsignedRange(Ops[1])))
Flags = ScalarEvolution::setFlags(Flags, SCEV::FlagNUW);
}
More information about the llvm-commits
mailing list