[all-commits] [llvm/llvm-project] 34ae30: [SCEV] Use context to strengthen flags of BinOps
Max Kazantsev via All-commits
all-commits at lists.llvm.org
Wed Aug 3 00:09:17 PDT 2022
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: 34ae308c73e4d76dbdab25a6206d3fbc5ebafdf5
https://github.com/llvm/llvm-project/commit/34ae308c73e4d76dbdab25a6206d3fbc5ebafdf5
Author: Max Kazantsev <mkazantsev at azul.com>
Date: 2022-08-03 (Wed, 03 Aug 2022)
Changed paths:
M llvm/include/llvm/Analysis/ScalarEvolution.h
M llvm/lib/Analysis/ScalarEvolution.cpp
M llvm/test/Transforms/IndVarSimplify/AArch64/widen-loop-comp.ll
M llvm/test/Transforms/IndVarSimplify/X86/iv-widen.ll
M llvm/test/Transforms/IndVarSimplify/X86/pr35406.ll
M llvm/test/Transforms/IndVarSimplify/bbi-63564.ll
M llvm/test/Transforms/IndVarSimplify/cycled_phis.ll
M llvm/test/Transforms/IndVarSimplify/eliminate-comparison.ll
M llvm/test/Transforms/IndVarSimplify/finite-exit-comparisons.ll
M llvm/test/Transforms/IndVarSimplify/loop-predication.ll
M llvm/test/Transforms/IndVarSimplify/trivial-guard.ll
M llvm/test/Transforms/LoopUnroll/runtime-loop-multiple-exits.ll
Log Message:
-----------
[SCEV] Use context to strengthen flags of BinOps
Sometimes SCEV cannot infer nuw/nsw from something as simple as
```
len in [0, MAX_INT]
...
iv = phi(0, iv.next)
guard(iv <s len)
guard(iv <u len)
iv.next = iv + 1
```
just because flag strenthening only relies on definition and does not use local facts.
This patch adds support for the simplest case: inference of flags of `add(x, constant)`
if we can contextually prove that `x <= max_int - constant`.
In case if it has negative CT impact, we can add an option to switch it off. I woudln't
expect that though.
Differential Revision: https://reviews.llvm.org/D129643
Reviewed By: apilipenko
More information about the All-commits
mailing list