aboutsummaryrefslogtreecommitdiff
path: root/lldb/source/Commands/CommandObjectPlatform.cpp
diff options
context:
space:
mode:
authorSjoerd Meijer <sjoerd.meijer@arm.com>2021-09-03 15:05:09 +0100
committerSjoerd Meijer <sjoerd.meijer@arm.com>2021-09-10 12:34:04 +0100
commit6a076fa9539ee6eea078368bc5298e381c1c059e (patch)
tree65704c4347c795cd4f3436852ab4a342f1e89f4b /lldb/source/Commands/CommandObjectPlatform.cpp
parente08911e17b2bf7030a587bbf158e6a4fe0164f38 (diff)
downloadllvm-6a076fa9539ee6eea078368bc5298e381c1c059e.zip
llvm-6a076fa9539ee6eea078368bc5298e381c1c059e.tar.gz
llvm-6a076fa9539ee6eea078368bc5298e381c1c059e.tar.bz2
[LoopFlatten] Make the analysis more robust after IV widening
LoopFlatten wasn't triggering on this motivating case after IV widening: void foo(int *A, int N, int M) { for (int i = 0; i < N; ++i) for (int j = 0; j < M; ++j) f(A[i*M+j]); } The reason was that the old induction phi nodes were getting in the way. These narrow and dead induction phis are not always trivially dead, and having both the narrow and wide IVs confused the analysis and caused it to bail. This adds some extra bookkeeping for these old phis, so we can filter them out when checks on phi nodes are performed. Other clean up passes will get rid of these old phis and increment instructions. As this was one of the motivating examples from the beginning, it was surprising this wasn't triggering from C/C++ code. It looks like the IR and CFG is just slightly different. Differential Revision: https://reviews.llvm.org/D109309
Diffstat (limited to 'lldb/source/Commands/CommandObjectPlatform.cpp')
0 files changed, 0 insertions, 0 deletions