1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-26 14:33:02 +02:00
llvm-mirror/lib/Transforms
Adam Nemet 108f359996 [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

llvm-svn: 272649
2016-06-14 09:38:54 +00:00
..
Hello Add auto-exporting of symbols from tools so that plugins work on Windows 2016-05-26 11:16:43 +00:00
InstCombine [IR] Require ArrayRef of 'uint32_t' instead of 'int' for the mask argument for one of the signatures of CreateShuffleVector. This better emphasises that you can't use it for the -1 as undef behavior. 2016-06-12 00:41:19 +00:00
Instrumentation [esan|cfrag] Handle complex GEP instr in the cfrag tool 2016-06-10 22:28:55 +00:00
IPO [PM] Port DeadArgumentElimination to the new PM 2016-06-12 09:16:39 +00:00
ObjCARC Form objc_storeStrong in the presence of bitcasts. 2016-05-27 02:13:53 +00:00
Scalar [PM] Port MemCpyOpt to the new PM. 2016-06-14 02:44:55 +00:00
Utils [LoopVer] Update all existing PHIs in the exit block 2016-06-14 09:38:54 +00:00
Vectorize [PM] Port LCSSA to the new PM. 2016-06-09 19:44:46 +00:00
CMakeLists.txt
LLVMBuild.txt