[llvm-dev] Legacy Loop Pass Manager question
Bhatu via llvm-dev
llvm-dev at lists.llvm.org
Wed Aug 15 21:39:11 PDT 2018
Ping!
On Thu, Aug 9, 2018 at 2:46 PM, Bhatu <cs12b1010 at iith.ac.in> wrote:
> Hi,
>
> If we add multiple loop passes to the pass manager in
> PassManagerBuilder.cpp consecutively without any func/module pass in
> between, I used to think they would belong to the same loop pass manager.
> But it does not seem to be the case.
>
> For example for this code snippet
> PM.add(createIndVarSimplifyPass()); // Canonicalize indvars
> MPM.add(createLoopIdiomPass()); // Recognize idioms like
> memset.
> addExtensionsToPM(EP_LateLoopOptimizations, MPM);
> MPM.add(createLoopDeletionPass()); // Delete dead loops
> ..
> if (!DisableUnrollLoops)
> MPM.add(createSimpleLoopUnrollPass(OptLevel)); // Unroll small
> loops
>
> I see -debug-pass=Structure output:
> Scalar Evolution Analysis
> Loop Pass Manager
> Induction Variable Simplification
> Recognize loop idioms
> Delete dead loops
> Unroll loops
> MergedLoadStoreMotion
>
> Which is in line to what I thought. However for this code snippet:
> if (EnableUnrollAndJam) {
> // Unroll and Jam. We do this before unroll but need to be in a
> separate
> // loop pass manager in order for the outer loop to be processed by
> // unroll and jam before the inner loop is unrolled.
> MPM.add(createLoopUnrollAndJamPass(OptLevel));
> }
>
> MPM.add(createLoopUnrollPass(OptLevel)); // Unroll small loops
>
> I see:
> Loop-Closed SSA Form Pass
> Loop Pass Manager
> Unroll and Jam loops
> Loop Pass Manager
> Unroll loops
> Lazy Branch Probability Analysis
>
> Here two different loop pass managers were created. What is the difference
> in between these two cases? How was the loop pass manager split up in the
> second case?
>
>
> --
> Regards
> Bhatu
>
--
Regards
Bhatu
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180816/8bc08452/attachment.html>
More information about the llvm-dev
mailing list