Revert "Make dependency between certain analysis passes transitive"
authorBjorn Pettersson <bjorn.a.pettersson@ericsson.com>
Tue, 4 May 2021 17:07:05 +0000 (19:07 +0200)
committerBjorn Pettersson <bjorn.a.pettersson@ericsson.com>
Tue, 4 May 2021 17:08:41 +0000 (19:08 +0200)
This reverts commit 3655f0757f2b4b61419446b326410118658826ba.

It caused assertion failures related to setLastUser in polly builds.

llvm/lib/Analysis/LazyBlockFrequencyInfo.cpp
llvm/lib/Analysis/LazyBranchProbabilityInfo.cpp
llvm/lib/Analysis/LoopAccessAnalysis.cpp
llvm/test/Other/pr49950.ll [deleted file]

index 636baf8..6107cac 100644 (file)
@@ -45,8 +45,8 @@ void LazyBlockFrequencyInfoPass::getAnalysisUsage(AnalysisUsage &AU) const {
   // We require DT so it's available when LI is available. The LI updating code
   // asserts that DT is also present so if we don't make sure that we have DT
   // here, that assert will trigger.
-  AU.addRequiredTransitive<DominatorTreeWrapperPass>();
-  AU.addRequiredTransitive<LoopInfoWrapperPass>();
+  AU.addRequired<DominatorTreeWrapperPass>();
+  AU.addRequired<LoopInfoWrapperPass>();
   AU.setPreservesAll();
 }
 
@@ -61,8 +61,8 @@ bool LazyBlockFrequencyInfoPass::runOnFunction(Function &F) {
 
 void LazyBlockFrequencyInfoPass::getLazyBFIAnalysisUsage(AnalysisUsage &AU) {
   LazyBranchProbabilityInfoPass::getLazyBPIAnalysisUsage(AU);
-  AU.addRequiredTransitive<LazyBlockFrequencyInfoPass>();
-  AU.addRequiredTransitive<LoopInfoWrapperPass>();
+  AU.addRequired<LazyBlockFrequencyInfoPass>();
+  AU.addRequired<LoopInfoWrapperPass>();
 }
 
 void llvm::initializeLazyBFIPassPass(PassRegistry &Registry) {
index 95de494..8369859 100644 (file)
@@ -46,9 +46,9 @@ void LazyBranchProbabilityInfoPass::getAnalysisUsage(AnalysisUsage &AU) const {
   // We require DT so it's available when LI is available. The LI updating code
   // asserts that DT is also present so if we don't make sure that we have DT
   // here, that assert will trigger.
-  AU.addRequiredTransitive<DominatorTreeWrapperPass>();
-  AU.addRequiredTransitive<LoopInfoWrapperPass>();
-  AU.addRequiredTransitive<TargetLibraryInfoWrapperPass>();
+  AU.addRequired<DominatorTreeWrapperPass>();
+  AU.addRequired<LoopInfoWrapperPass>();
+  AU.addRequired<TargetLibraryInfoWrapperPass>();
   AU.setPreservesAll();
 }
 
@@ -63,9 +63,9 @@ bool LazyBranchProbabilityInfoPass::runOnFunction(Function &F) {
 }
 
 void LazyBranchProbabilityInfoPass::getLazyBPIAnalysisUsage(AnalysisUsage &AU) {
-  AU.addRequiredTransitive<LazyBranchProbabilityInfoPass>();
-  AU.addRequiredTransitive<LoopInfoWrapperPass>();
-  AU.addRequiredTransitive<TargetLibraryInfoWrapperPass>();
+  AU.addRequired<LazyBranchProbabilityInfoPass>();
+  AU.addRequired<LoopInfoWrapperPass>();
+  AU.addRequired<TargetLibraryInfoWrapperPass>();
 }
 
 void llvm::initializeLazyBPIPassPass(PassRegistry &Registry) {
index 3535058..cd08632 100644 (file)
@@ -2281,12 +2281,12 @@ bool LoopAccessLegacyAnalysis::runOnFunction(Function &F) {
 }
 
 void LoopAccessLegacyAnalysis::getAnalysisUsage(AnalysisUsage &AU) const {
-  AU.addRequiredTransitive<ScalarEvolutionWrapperPass>();
-  AU.addRequiredTransitive<AAResultsWrapperPass>();
-  AU.addRequiredTransitive<DominatorTreeWrapperPass>();
-  AU.addRequiredTransitive<LoopInfoWrapperPass>();
+    AU.addRequired<ScalarEvolutionWrapperPass>();
+    AU.addRequired<AAResultsWrapperPass>();
+    AU.addRequired<DominatorTreeWrapperPass>();
+    AU.addRequired<LoopInfoWrapperPass>();
 
-  AU.setPreservesAll();
+    AU.setPreservesAll();
 }
 
 char LoopAccessLegacyAnalysis::ID = 0;
diff --git a/llvm/test/Other/pr49950.ll b/llvm/test/Other/pr49950.ll
deleted file mode 100644 (file)
index 7a65d26..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-; RUN: opt < %s -o /dev/null -enable-new-pm=0 -block-freq -opt-remark-emitter -memoryssa -inject-tli-mappings -pgo-memop-opt -verify-loop-info -debug-pass=Details 2>&1 | FileCheck %s
-
-; REQUIRES: asserts
-
-; This is a heavily reduced reproducer for the problem found in
-; https://bugs.llvm.org/show_bug.cgi?id=49950 when doing fuzzy
-; testing (including non-standard pipelines).
-;
-; The problem manifested as having a pass structure like this
-; when it failed (as given by using -debug-pass=Details):
-;
-;   Target Library Information
-;   Target Transform Information
-;   Profile summary info
-;   Assumption Cache Tracker
-;     ModulePass Manager
-;       FunctionPass Manager
-;         Dominator Tree Construction
-;         Natural Loop Information
-;         Post-Dominator Tree Construction
-;         Branch Probability Analysis
-;         Block Frequency Analysis
-;   --      Branch Probability Analysis
-;         Lazy Branch Probability Analysis
-;         Lazy Block Frequency Analysis
-;         Optimization Remark Emitter
-;         Basic Alias Analysis (stateless AA impl)
-;         Function Alias Analysis Results
-;         Memory SSA
-;   --      Dominator Tree Construction
-;   --      Function Alias Analysis Results
-;   --      Basic Alias Analysis (stateless AA impl)
-;   --      Memory SSA
-;         Inject TLI Mappings
-;   --      Inject TLI Mappings
-;         PGOMemOPSize
-;   --      Block Frequency Analysis
-;   --      Post-Dominator Tree Construction
-;   --      Optimization Remark Emitter
-;   --      Lazy Branch Probability Analysis
-;   --      Natural Loop Information
-;   --      Lazy Block Frequency Analysis
-;   --      PGOMemOPSize
-;         Module Verifier
-;   --      Module Verifier
-;   --    Target Library Information
-;   --    Profile summary info
-;   --    Assumption Cache Tracker
-;       Bitcode Writer
-;   --    Bitcode Writer
-;
-; One might notice that "Dominator Tree Construction" is dropped after
-; "Memory SSA", while for example "Natural Loop Information" stick around
-; a bit longer. This despite "Dominator Tree Construction" being transitively
-; required by "Natural Loop Information".
-; The end result was that we got crashes when doing verification of loop
-; info after "Inject TLI Mappings" (since the dominator tree had been
-; removed too early).
-
-; Verify that both domintator tree and loop info are kept until after
-; PGOMemOPSize:
-;
-; CHECK:     Dominator Tree Construction
-; CHECK-NOT: --      Dominator Tree Construction
-; CHECK:     Memory SSA
-; CHECK-NOT: --      Dominator Tree Construction
-; CHECK:     Inject TLI Mappings
-; CHECK-NOT: --      Dominator Tree Construction
-; CHECK:     PGOMemOPSize
-; CHECK-DAG: --      Dominator Tree Construction
-; CHECK-DAG: --      Natural Loop Information
-; CHECK-DAG: --      PGOMemOPSize
-; CHECK:     Bitcode Writer
-
-define void @foo() {
-entry:
-  ret void
-}
\ No newline at end of file