diff options
| author | Dmitry Makogon <d.makogon@g.nsu.ru> | 2023-02-10 16:00:16 +0700 |
|---|---|---|
| committer | Dmitry Makogon <d.makogon@g.nsu.ru> | 2023-02-10 17:06:36 +0700 |
| commit | c77c186a647b385c291ddabecd70a2b4f84ae342 (patch) | |
| tree | b70942557d389ac8d0af438b6cf850ed577836e6 /clang/lib/Basic/SourceManager.cpp | |
| parent | 0737770c3e1d5e119148351610c39fb2483c7011 (diff) | |
| download | llvm-c77c186a647b385c291ddabecd70a2b4f84ae342.zip llvm-c77c186a647b385c291ddabecd70a2b4f84ae342.tar.gz llvm-c77c186a647b385c291ddabecd70a2b4f84ae342.tar.bz2 | |
[LVI] Don't traverse uses when calculating range at use
This effectively reverts 5c38c6a and 4f772b0.
A recently introduced LazyValueInfo::getConstantRangeAtUse returns incorrect
ranges for values in certain cases. One such example is described in PR60629.
The issue has something to do with traversing PHI uses of a value transitively.
As nikic pointed out, we're effectively reasoning about values from different
loop iterations.
In the faulting test case, CVP made a miscompilation because the calculated
range for a shift argument was incorrect. It returned empty-set, however it is
clearly not a dead code. CVP then erased the shift instruction because
of empty range.
Diffstat (limited to 'clang/lib/Basic/SourceManager.cpp')
0 files changed, 0 insertions, 0 deletions
