llvm/test/Transforms/LoopVersioning
Adam Nemet 1c1b0ccdd6 [LoopVer] Update all existing PHIs in the exit block
We only used to add the edge from the cloned loop to PHIs that
corresponded to values defined by the loop.  We need to do this for all
PHIs obviously since we need a PHI operand for each incoming edge.

This includes things like PHIs with a constant value or with values
defined before the original loop (see the testcases).

After the patch the PHIs are added to the exit block in two passes.

In the first pass we ensure there is a single-operand (LCSSA) PHI for
each value defined by the loop.

In the second pass we loop through each (single-operand) PHI and add the
value for the edge from the cloned loop.  If the value is defined in the
loop we'll use the cloned instruction from the cloned loop.

Fixes PR28037

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272649 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-14 09:38:54 +00:00
..
basic.ll
incorrect-phi.ll [LoopVer] Update all existing PHIs in the exit block 2016-06-14 09:38:54 +00:00
lcssa.ll [LoopVersioning] Relax an assert for LCSSA PHIs 2016-03-22 18:38:15 +00:00
noalias-version-twice.ll
noalias.ll [LVers] Change CHECK_LABEL to CHECK-LABEL (underscore->dash) 2016-03-28 21:04:13 +00:00