[PATCH] D109958: [LoopFlatten] Enable it by default

Sjoerd Meijer via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Oct 11 06:06:33 PDT 2021


SjoerdMeijer added inline comments.


================
Comment at: llvm/test/CodeGen/AMDGPU/opt-pipeline.ll:164
+; GCN-O1-NEXT:       Flattens loops
+; GCN-O1-NEXT:       Memory SSA
 ; GCN-O1-NEXT:       Loop Pass Manager
----------------
SjoerdMeijer wrote:
> nikic wrote:
> > I'm somewhat confused by what is going on here. Why do we now calculate MemorySSA and why does LoopUnroll get split into a separate LPM?
> I have no idea and accepted this as something the pass manager decided to do.... I am also confused about both things: I have no idea why we need to rerun Memory SSA, and don't see why LoopUnroll is now run separately.  I will look into this, see if I can get any wiser here....
In `lib/Passes/PassBuilderPipelines.cpp` we have this:

  if (EnableLoopFlatten)
    FPM.addPass(createFunctionToLoopPassAdaptor(LoopFlattenPass()));
  // The loop passes in LPM2 (LoopFullUnrollPass) do not preserve MemorySSA.
  // *All* loop passes must preserve it, in order to be able to use it.
  FPM.addPass(createFunctionToLoopPassAdaptor(std::move(LPM2),
                                              /*UseMemorySSA=*/false,
                                              /*UseBlockFrequencyInfo=*/false));

Since this is talking about MemorySSA this might be related, but there are so many things going on here and I am still looking, so don't know for certain. If e.g. @aeubanks has some tips or suggestions here, I would be happy to receive them. :)


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D109958/new/

https://reviews.llvm.org/D109958



More information about the llvm-commits mailing list