hanchenye-llvm-project/polly/lib/Transform
Michael Kruse 68821a8b91 [ZoneAlgo/ForwardOpTree] Normalize PHIs to their known incoming values.
Represent PHIs by their incoming values instead of an opaque value of
themselves. This allows ForwardOpTree to "look through" the PHIs and
forward the incoming values since forwardings PHIs is currently not
supported.

This is particularly useful to cope with PHIs inserted by GVN LoadPRE.
The incoming values all resolve to a load from a single array element
which then can be forwarded.

It should in theory also reduce spurious conflicts in value mapping
(DeLICM), but I have not yet found a profitable case yet, so it is
not included here.

To avoid transitive closure and potentially necessary overapproximations
of those, PHIs that may reference themselves are excluded from
normalization and keep their opaque self-representation.

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

llvm-svn: 317008
2017-10-31 16:11:46 +00:00
..
Canonicalization.cpp [Polly] Run early cse + memory SSA to remove redundancies in the input code 2017-08-19 08:44:46 +00:00
CodePreparation.cpp [Polly][PM][WIP] Polly pass registration 2017-08-02 15:52:25 +00:00
DeLICM.cpp [ZoneAlgo/ForwardOpTree] Normalize PHIs to their known incoming values. 2017-10-31 16:11:46 +00:00
DeadCodeElimination.cpp Move include/isl-noexceptions.h to include/isl/isl-noexceptions.h 2017-08-22 22:04:22 +00:00
FlattenAlgo.cpp [Polly] Add dumpPw() and dumpExpanded() functions. NFC. 2017-09-29 15:45:40 +00:00
FlattenSchedule.cpp [ScopInfo] Move Scop::getPwAffOnly to isl++ [NFC] 2017-08-06 21:42:38 +00:00
ForwardOpTree.cpp [ZoneAlgo/ForwardOpTree] Normalize PHIs to their known incoming values. 2017-10-31 16:11:46 +00:00
MaximalStaticExpansion.cpp Rename OptimizationDiagnosticInfo.h to OptimizationRemarkEmitter.h 2017-10-09 23:49:08 +00:00
RewriteByReferenceParameters.cpp Add rewrite by-reference parameter pass 2017-08-17 05:25:08 +00:00
ScheduleOptimizer.cpp Check whether IslAstInfo and DependenceInfo were computed for the same Scop. 2017-09-21 00:01:13 +00:00
ScopInliner.cpp [ScopInliner] Fix hidden overload warning. NFC. 2017-08-23 13:07:43 +00:00
Simplify.cpp [Simplify] Actually remove unsed instruction from region header. 2017-09-05 19:44:39 +00:00
ZoneAlgo.cpp [ZoneAlgo/ForwardOpTree] Normalize PHIs to their known incoming values. 2017-10-31 16:11:46 +00:00