Generalize LCSSA to handle loops with exits with predecessors outside
authorDan Gohman <gohman@apple.com>
Mon, 9 Nov 2009 18:28:24 +0000 (18:28 +0000)
committerDan Gohman <gohman@apple.com>
Mon, 9 Nov 2009 18:28:24 +0000 (18:28 +0000)
commitf6572d0aa2abb87d34afcca3e3bec89e1613b8ec
tree58ab51b1ba4d7d87bc54ad867dd93f6fd1c93ddf
parentd146e986c818165cca866ee05751451706ccf36a
Generalize LCSSA to handle loops with exits with predecessors outside
the loop. This is needed because with indirectbr it may not be possible
for LoopSimplify to guarantee that all loop exit predecessors are
inside the loop. This fixes PR5437.

LCCSA no longer actually requires LoopSimplify form, but for now it
must still have the dependency because the PassManager doesn't know
how to schedule LoopSimplify otherwise.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86569 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Transforms/Utils/LCSSA.cpp
test/Transforms/LCSSA/indirectbr.ll [new file with mode: 0644]