aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Basic/SourceManager.cpp
diff options
context:
space:
mode:
authorDmitry Makogon <d.makogon@g.nsu.ru>2023-02-10 16:00:16 +0700
committerDmitry Makogon <d.makogon@g.nsu.ru>2023-02-10 17:06:36 +0700
commitc77c186a647b385c291ddabecd70a2b4f84ae342 (patch)
treeb70942557d389ac8d0af438b6cf850ed577836e6 /clang/lib/Basic/SourceManager.cpp
parent0737770c3e1d5e119148351610c39fb2483c7011 (diff)
downloadllvm-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