[PATCH] D28921: [PM] Port LoopSink to the new pass manager.
Chandler Carruth via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Jan 19 14:34:28 PST 2017
chandlerc created this revision.
Herald added subscribers: mzolotukhin, mcrosier, sanjoy.
Like several other loop passes (the vectorizer, etc) this pass doesn't
really fit the model of a loop pass. The critical distinction is that it
isn't intended to be pipelined together with other loop passes. I plan
to add some documentation to the loop pass manager to make this more
clear on that side.
LoopSink is also different because it doesn't really need a lot of the
infrastructure of our loop passes. For example, if there aren't loop
invariant instructions causing a preheader to exist, there is no need to
form a preheader. It also doesn't need LCSSA because this pass is
only involved in sinking invariant instructions from a preheader into
the loop, not reasoning about live-outs.
This allows some nice simplifications to the pass in the new PM where we
can directly walk the loops once without restructuring them.
https://reviews.llvm.org/D28921
Files:
include/llvm/Transforms/Scalar/LoopSink.h
lib/Passes/PassBuilder.cpp
lib/Passes/PassRegistry.def
lib/Transforms/Scalar/LoopSink.cpp
test/Transforms/LICM/loopsink.ll
test/Transforms/LICM/sink.ll
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D28921.85039.patch
Type: text/x-patch
Size: 5972 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170119/aa9da6f4/attachment.bin>
More information about the llvm-commits
mailing list