[PATCH] D47624: [PM/LoopUnswitch] Fix PR37651 by correctly invalidating SCEV when unswitching loops.
Max Kazantsev via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Jun 7 20:03:54 PDT 2018
mkazantsev added inline comments.
================
Comment at: llvm/lib/Transforms/Scalar/SimpleLoopUnswitch.cpp:359
+ if (OuterL)
+ SE->forgetLoop(OuterL);
+ else
----------------
Why it is enough? Imagine that you have
for (...) { // Loop 1
for (...) { // Loop 2
for (...) { // Loop 3
...
}
}
}
Let `L` be Loop 3 and all exits from `L` lead to Loop 2. Then, if I understand the code correctly, OuterL will be found as Loop 2 and we invalidate it (and its internals). But what if what we are going to do with Loop 3 also affects trip count in Loop 1?
Repository:
rL LLVM
https://reviews.llvm.org/D47624
More information about the llvm-commits
mailing list