[PATCH] D69069: [LoopExtractor] Convert LoopExtractor from LoopPass to ModulePass

Ehud Katz via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Jan 15 20:34:06 PST 2020


ekatz marked an inline comment as done.
ekatz added inline comments.


================
Comment at: llvm/lib/Transforms/IPO/LoopExtractor.cpp:149
+  // function is more than a minimal wrapper around the loop, extract the loop.
+  Loop *TLL = *LI.begin();
+
----------------
ekatz wrote:
> fhahn wrote:
> > ekatz wrote:
> > > fhahn wrote:
> > > > Do we actually need this special case when it's a module pass? IIUC, it was only needed with the LoopPass to avoid extracting loops we already extracted into new functions earlier right?
> > > This particular line was added in SVN commit r86175 (Git commit rGa83ac2d9e7b990df6978598d9dec860b5ef13a9a). Personally, I do not see a good reason not to extract loops in a non simplify-form, but the change (that added it) does not explain much, so I decided to keep it (maybe there was a related bug?).
> > > If you are positive that it is not needed, then I'll remove it.
> > I think the position of my original comment got messed up. I was referring to the distinction between functions with a single loop and functions with multiple loops. I *think* this was only needed with the LoopPass to avoid extracting loops we already extracted into new functions earlier which might result in an infinite loop.
> > 
> > I.e. just have the following starting at line 140.
> > 
> > ```  
> > DominatorTree &DT = getAnalysis<DominatorTreeWrapperPass>(F).getDomTree();
> > return extractLoops(LI.begin(), LI.end(), LI, DT);
> > ```
> > 
> > The test coverage isn't great, but it seems to pass all tests ;)
> Not sure the position got messed up - it is probably my fault. I do not sleep much these days, with my 1 year old teething or whatever he decides the reason to wake up every  hour at night...
> 
> Anyway, this code is from SVN commit rL12403 (Git commit rG2f155d87). It is from the time that the pass was a FunctionPass. It tries to distinguish between a function that has more than a single loop with a simple function wrapper around a loop (which can be created by other means than the extractor).
I'll add a test for that particular case.


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

https://reviews.llvm.org/D69069





More information about the llvm-commits mailing list