[PATCH] D151666: [IPSCCP] Update Post Dominator Tree if Block Frequency Analysis has run.

Bjorn Pettersson via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue May 30 01:05:05 PDT 2023


bjope added inline comments.


================
Comment at: llvm/lib/Transforms/IPO/SCCP.cpp:227
 
-    DomTreeUpdater DTU = IsFuncSpecEnabled && Specializer.isClonedFunction(&F)
-        ? DomTreeUpdater(DomTreeUpdater::UpdateStrategy::Lazy)
-        : Solver.getDTU(F);
-
+    DomTreeUpdater DTU = Specializer.getDTU(F);
     // Change dead blocks to unreachable. We do it after replacing constants
----------------
Had been nice if one could just do something like this here:

```
DominatorTree *DT = FAM->getCachedResult<DominatorTreeAnalysis>(F);
PostDominatorTree *PDT = FAM->getCachedResult<PostDominatorTreeAnalysis>(F);
DomTreeUpdated DTU(DT, PDT, DomTreeUpdater::UpdateStrategy::Lazy};
```

I.e. just use getCachedResult to see if there is a DT/PDT analysis available. If so, we need to update corresponding analyses. If they aren't available we shouldn't run the analysis here.

I think that would work if getCachedResult actually picks up an analysis that is created during the pass execution (any reason why it wouldn't do that?).

Just saying that the PassManager/AnalysisManager should know if PDT has been calculated (so having a map in FunctionSpecialization that keep track of if BlockFrequencyAnalysis has been run seems a bit off, as what we want to know is if the DominatarTree/PostDominiatorTree needs to be updated).

So a solution like this would be more future proof (if it is working) as it wouldn't need to know which other analyses that might end up calculating the PDT.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D151666



More information about the llvm-commits mailing list