[PATCH] D45210: [New-PM] Lift Scop Pipeline to CGSCC-level

Lukas Böhm via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Apr 3 07:48:49 PDT 2018


lksbhm created this revision.
lksbhm added reviewers: philip.pfaffe, Meinersbur, grosser.
Herald added a subscriber: mehdi_amini.
Herald added a reviewer: bollu.

This patch is intended as a preparation to teach polly interprocedural analysis.

The reason we want to have polly passes run in CGSCC scope instead of function scope is the deterministic iteration order over functions: To be able to "look into" a region's callees, we ideally want ScopInfo to be already available for every callee. The CGSCC AnalysisManager ensures this - except for callees which are part of the analyzed function's SCC. But we aren't interested in those anyways. For that matter, the differential's most important part is the change from `FunctionToScopPassAdaptor` to `CGSCCToScopPassAdaptor` and `buildDefaultPollyPipeline` taking a CGSCC-AM now instead of a Function-AM.

However, this differential also includes some further CGSCC-related changes to prepare for upcoming patches: In `RegisterPasses.cpp` we add a `parseCGSCCPipeline` callback, allowing us to run the `ScopInfoPrinterPass` in a CGSCC-pipeline as well (making no difference at the moment, but using the `CGSCC_PASS` macro in `PollyPasses.def`).

Regarding tests: @philip.pfaffe is currently working on porting the existing lit test-suite to the new passmanager. I would suggest waiting for this effort to be complete before I add any more tests to the repo. That being said, I am not opposed to doing so if asked.

I apologize for the seemingly unnecessary small changes (e.g. renaming `FAM`->`AM`), but we had a lot of code churn while developing our IPO changes, and I didn't think it important enough to waste time reverting them again.


Repository:
  rPLO Polly

https://reviews.llvm.org/D45210

Files:
  include/polly/ScopInfo.h
  include/polly/ScopPass.h
  lib/Analysis/ScopInfo.cpp
  lib/Analysis/ScopPass.cpp
  lib/Support/PollyPasses.def
  lib/Support/RegisterPasses.cpp
  unittests/ScopPassManager/PassManagerTest.cpp

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D45210.140779.patch
Type: text/x-patch
Size: 17878 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180403/50d64b8e/attachment.bin>


More information about the llvm-commits mailing list