1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-25 20:23:11 +01:00
llvm-mirror/lib/Transforms
Michael Zolotukhin 97a2ec64f5 [LoopSimplify] Rebuild LCSSA for the inner loop after separating nested loops.
Summary:
This hopefully fixes PR28825. The problem now was that a value from the
original loop was used in a subloop, which became a sibling after separation.
While a subloop doesn't need an lcssa phi node, a sibling does, and that's
where we broke LCSSA. The most natural way to fix this now is to simply call
formLCSSA on the original loop: it'll do what we've been doing before plus
it'll cover situations described above.

I think we don't need to run formLCSSARecursively here, and we have an assert
to verify this (I've tried testing it on LLVM testsuite + SPECs). I'd be happy
to be corrected here though.

I also changed a run line in the test from '-lcssa -loop-unroll' to
'-lcssa -loop-simplify -indvars', because it exercises LCSSA
preservation to the same extent, but also makes less unrelated
transformation on the CFG, which makes it easier to verify.

Reviewers: chandlerc, sanjoy, silvas

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D23288

llvm-svn: 278173
2016-08-09 22:44:56 +00:00
..
Coroutines CoroSplit: Squash unused variable FnTrigger warning in NDEBUG 2016-08-06 21:11:10 +00:00
Hello
InstCombine Consistently use FunctionAnalysisManager 2016-08-09 00:28:15 +00:00
Instrumentation [Profile] turn off verbose warnings by default 2016-08-09 15:35:28 +00:00
IPO Consistently use ModuleAnalysisManager 2016-08-09 00:28:38 +00:00
ObjCARC
Scalar Fix the runtime error caused by "Use ValueOffsetPair to enhance value reuse during SCEV expansion". 2016-08-09 20:40:03 +00:00
Utils [LoopSimplify] Rebuild LCSSA for the inner loop after separating nested loops. 2016-08-09 22:44:56 +00:00
Vectorize Move helpers into anonymous namespaces. NFC. 2016-08-06 11:13:10 +00:00
CMakeLists.txt
LLVMBuild.txt