[llvm] 33ff3c2 - Revert "Make dependency between certain analysis passes transitive"
Bjorn Pettersson via llvm-commits
llvm-commits at lists.llvm.org
Tue May 4 10:08:52 PDT 2021
Author: Bjorn Pettersson
Date: 2021-05-04T19:08:41+02:00
New Revision: 33ff3c20498ef5c2057730d91a9dbee21a027a31
URL: https://github.com/llvm/llvm-project/commit/33ff3c20498ef5c2057730d91a9dbee21a027a31
DIFF: https://github.com/llvm/llvm-project/commit/33ff3c20498ef5c2057730d91a9dbee21a027a31.diff
LOG: Revert "Make dependency between certain analysis passes transitive"
This reverts commit 3655f0757f2b4b61419446b326410118658826ba.
It caused assertion failures related to setLastUser in polly builds.
Added:
Modified:
llvm/lib/Analysis/LazyBlockFrequencyInfo.cpp
llvm/lib/Analysis/LazyBranchProbabilityInfo.cpp
llvm/lib/Analysis/LoopAccessAnalysis.cpp
Removed:
llvm/test/Other/pr49950.ll
################################################################################
diff --git a/llvm/lib/Analysis/LazyBlockFrequencyInfo.cpp b/llvm/lib/Analysis/LazyBlockFrequencyInfo.cpp
index 636baf82eedff..6107cacb9533d 100644
--- a/llvm/lib/Analysis/LazyBlockFrequencyInfo.cpp
+++ b/llvm/lib/Analysis/LazyBlockFrequencyInfo.cpp
@@ -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) {
diff --git a/llvm/lib/Analysis/LazyBranchProbabilityInfo.cpp b/llvm/lib/Analysis/LazyBranchProbabilityInfo.cpp
index 95de4949b21cf..83698598e1563 100644
--- a/llvm/lib/Analysis/LazyBranchProbabilityInfo.cpp
+++ b/llvm/lib/Analysis/LazyBranchProbabilityInfo.cpp
@@ -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) {
diff --git a/llvm/lib/Analysis/LoopAccessAnalysis.cpp b/llvm/lib/Analysis/LoopAccessAnalysis.cpp
index 35350582b4b55..cd086328ec682 100644
--- a/llvm/lib/Analysis/LoopAccessAnalysis.cpp
+++ b/llvm/lib/Analysis/LoopAccessAnalysis.cpp
@@ -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
index 7a65d2670cc07..0000000000000
--- a/llvm/test/Other/pr49950.ll
+++ /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
More information about the llvm-commits
mailing list