diff options
author | Max Kazantsev <mkazantsev@azul.com> | 2022-08-03 13:10:56 +0700 |
---|---|---|
committer | Max Kazantsev <mkazantsev@azul.com> | 2022-08-03 14:08:57 +0700 |
commit | 34ae308c73e4d76dbdab25a6206d3fbc5ebafdf5 (patch) | |
tree | 905baf7d3cbe2e7de7aaa11e4778529fd4264090 /llvm/unittests/ADT/SmallVectorTest.cpp | |
parent | 817dd5e3fd6bdad584728843c72892f0fae058cd (diff) | |
download | llvm-34ae308c73e4d76dbdab25a6206d3fbc5ebafdf5.zip llvm-34ae308c73e4d76dbdab25a6206d3fbc5ebafdf5.tar.gz llvm-34ae308c73e4d76dbdab25a6206d3fbc5ebafdf5.tar.bz2 |
[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
Diffstat (limited to 'llvm/unittests/ADT/SmallVectorTest.cpp')
0 files changed, 0 insertions, 0 deletions