leonardchan added inline comments.

================
Comment at: llvm/lib/Passes/PassBuilder.cpp:665-668
+    // We must also remove exception handling before attaching sample profile
+    // data.
+    MPM.addPass(
+        createModuleToPostOrderCGSCCPassAdaptor(PostOrderFunctionAttrsPass()));
----------------
chandlerc wrote:
> leonardchan wrote:
> > tejohnson wrote:
> > > chandlerc wrote:
> > > > Does the this need to go before the EarlyFPM as well as before the 
> > > > sample profile loader?
> > > > 
> > > > Also, this is ... a pretty expensive thing to do... Do we really need 
> > > > this? We've been using ThinLTO and sample PGO with the new PM for a 
> > > > long time and haven't seen any real issue. I think we can probably just 
> > > > leave this difference between the two pass managers and remove the test 
> > > > for this pass running rather than adding it.
> > > > 
> > > > CC-ing some others just to double check, but I'm not aware of any 
> > > > issues we've seen with PGO that were because of this discrepancy.
> > > We don't tend to use exception handling so might not be hitting the issue 
> > > described in the headline.
> > > 
> > > If this is fixing an issue with SamplePGO and EH cleanup interactions, 
> > > can you add a test that tests for that (i.e. is there a code optimization 
> > > issue currently?).
> > I'm not entirely familiar with the expected codegen for SamplePGO or 
> > PruneEH and don't really know if not adding these 2 passes breaks anything.
> > 
> > Under the legacy PM, exception handling was removed via `PruneEH` before 
> > creating the sample profile loader, so this change was meant to match the 
> > behavior since `function-attrs` and `function(simplify-cfg)` (the new PM 
> > equivalent for `-prune-eh`) did not initially run before 
> > `SampleProfileLoaderPass` was added to the pipeline.
> > 
> > The original patch that added `CodeGen/pgo-sample.c` (D21197) doesn't seem 
> > to have any codegen tests either and only checks that PruneEH runs before 
> > sample profile loader creation, so I'm also unsure of what code 
> > optimizations are meant to happen.
> Going back to this original issue, I think I understand more what is going 
> on...
> 
> Specifically, I can imagine that having `invoke` still in place caused some 
> issues.
> 
> So I would just keep the testing that (in the new PM) SimplifyCFG is run 
> before the profile loading pass, and ignore function attrs.
> 
Done.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D63626



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to