Skip to content

Commit caa755f

Browse files
alinaststellar
authored andcommitted
[BasicAA] Make BasicAA a cfg pass.
Summary: Part of the changes in D44564 made BasicAA not CFG only due to it using PhiAnalysisValues which may have values invalidated. Subsequent patches (rL340613) appear to have addressed this limitation. BasicAA should not be invalidated by non-CFG-altering passes. A concrete example is MemCpyOpt which preserves CFG, but we are testing it invalidates BasicAA. llvm-dev RFC: https://groups.google.com/forum/#!topic/llvm-dev/eSPXuWnNfzM Reviewers: john.brawn, sebpop, hfinkel, brzycki Subscribers: hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D74353 (cherry picked from commit 0cecafd)
1 parent 1f3be0e commit caa755f

File tree

5 files changed

+6
-17
lines changed

5 files changed

+6
-17
lines changed

llvm/lib/Analysis/BasicAliasAnalysis.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2059,12 +2059,13 @@ char BasicAAWrapperPass::ID = 0;
20592059
void BasicAAWrapperPass::anchor() {}
20602060

20612061
INITIALIZE_PASS_BEGIN(BasicAAWrapperPass, "basicaa",
2062-
"Basic Alias Analysis (stateless AA impl)", false, true)
2062+
"Basic Alias Analysis (stateless AA impl)", true, true)
20632063
INITIALIZE_PASS_DEPENDENCY(AssumptionCacheTracker)
20642064
INITIALIZE_PASS_DEPENDENCY(DominatorTreeWrapperPass)
20652065
INITIALIZE_PASS_DEPENDENCY(TargetLibraryInfoWrapperPass)
2066+
INITIALIZE_PASS_DEPENDENCY(PhiValuesWrapperPass)
20662067
INITIALIZE_PASS_END(BasicAAWrapperPass, "basicaa",
2067-
"Basic Alias Analysis (stateless AA impl)", false, true)
2068+
"Basic Alias Analysis (stateless AA impl)", true, true)
20682069

20692070
FunctionPass *llvm::createBasicAAWrapperPass() {
20702071
return new BasicAAWrapperPass();

llvm/test/Analysis/BasicAA/phi-values-usage.ll

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
; RUN: opt -debug-pass=Executions -memdep -instcombine -disable-output < %s 2>&1 | FileCheck %s -check-prefix=CHECK
33

44
; Check that phi values is not run when it's not already available, and that
5-
; basicaa is freed after a pass that preserves CFG.
5+
; basicaa is not freed after a pass that preserves CFG, as it preserves CFG.
66

77
; CHECK: Executing Pass 'Phi Values Analysis'
88
; CHECK: Executing Pass 'Basic Alias Analysis (stateless AA impl)'
@@ -11,9 +11,9 @@
1111
; CHECK-MEMCPY-DAG: Freeing Pass 'MemCpy Optimization'
1212
; CHECK-DAG: Freeing Pass 'Phi Values Analysis'
1313
; CHECK-DAG: Freeing Pass 'Memory Dependence Analysis'
14-
; CHECK-DAG: Freeing Pass 'Basic Alias Analysis (stateless AA impl)'
14+
; CHECK-MEMCPY-NOT: Freeing Pass 'Basic Alias Analysis (stateless AA impl)'
1515
; CHECK-NOT: Executing Pass 'Phi Values Analysis'
16-
; CHECK-MEMCPY: Executing Pass 'Basic Alias Analysis (stateless AA impl)'
16+
; CHECK-NOT: Executing Pass 'Basic Alias Analysis (stateless AA impl)'
1717
; CHECK: Executing Pass 'Combine redundant instructions'
1818

1919
target datalayout = "p:8:8-n8"

llvm/test/Other/opt-O2-pipeline.ll

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,6 @@
6868
; CHECK-NEXT: Memory SSA
6969
; CHECK-NEXT: Early CSE w/ MemorySSA
7070
; CHECK-NEXT: Speculatively execute instructions if target has divergent branches
71-
; CHECK-NEXT: Basic Alias Analysis (stateless AA impl)
7271
; CHECK-NEXT: Function Alias Analysis Results
7372
; CHECK-NEXT: Lazy Value Information Analysis
7473
; CHECK-NEXT: Jump Threading
@@ -133,7 +132,6 @@
133132
; CHECK-NEXT: Unroll loops
134133
; CHECK-NEXT: MergedLoadStoreMotion
135134
; CHECK-NEXT: Phi Values Analysis
136-
; CHECK-NEXT: Basic Alias Analysis (stateless AA impl)
137135
; CHECK-NEXT: Function Alias Analysis Results
138136
; CHECK-NEXT: Memory Dependence Analysis
139137
; CHECK-NEXT: Lazy Branch Probability Analysis
@@ -148,7 +146,6 @@
148146
; CHECK-NEXT: Sparse Conditional Constant Propagation
149147
; CHECK-NEXT: Demanded bits analysis
150148
; CHECK-NEXT: Bit-Tracking Dead Code Elimination
151-
; CHECK-NEXT: Basic Alias Analysis (stateless AA impl)
152149
; CHECK-NEXT: Function Alias Analysis Results
153150
; CHECK-NEXT: Lazy Branch Probability Analysis
154151
; CHECK-NEXT: Lazy Block Frequency Analysis
@@ -162,7 +159,6 @@
162159
; CHECK-NEXT: Phi Values Analysis
163160
; CHECK-NEXT: Memory Dependence Analysis
164161
; CHECK-NEXT: Dead Store Elimination
165-
; CHECK-NEXT: Basic Alias Analysis (stateless AA impl)
166162
; CHECK-NEXT: Function Alias Analysis Results
167163
; CHECK-NEXT: Memory SSA
168164
; CHECK-NEXT: Natural Loop Information

llvm/test/Other/opt-O3-pipeline.ll

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,6 @@
7272
; CHECK-NEXT: Memory SSA
7373
; CHECK-NEXT: Early CSE w/ MemorySSA
7474
; CHECK-NEXT: Speculatively execute instructions if target has divergent branches
75-
; CHECK-NEXT: Basic Alias Analysis (stateless AA impl)
7675
; CHECK-NEXT: Function Alias Analysis Results
7776
; CHECK-NEXT: Lazy Value Information Analysis
7877
; CHECK-NEXT: Jump Threading
@@ -138,7 +137,6 @@
138137
; CHECK-NEXT: Unroll loops
139138
; CHECK-NEXT: MergedLoadStoreMotion
140139
; CHECK-NEXT: Phi Values Analysis
141-
; CHECK-NEXT: Basic Alias Analysis (stateless AA impl)
142140
; CHECK-NEXT: Function Alias Analysis Results
143141
; CHECK-NEXT: Memory Dependence Analysis
144142
; CHECK-NEXT: Lazy Branch Probability Analysis
@@ -153,7 +151,6 @@
153151
; CHECK-NEXT: Sparse Conditional Constant Propagation
154152
; CHECK-NEXT: Demanded bits analysis
155153
; CHECK-NEXT: Bit-Tracking Dead Code Elimination
156-
; CHECK-NEXT: Basic Alias Analysis (stateless AA impl)
157154
; CHECK-NEXT: Function Alias Analysis Results
158155
; CHECK-NEXT: Lazy Branch Probability Analysis
159156
; CHECK-NEXT: Lazy Block Frequency Analysis
@@ -167,7 +164,6 @@
167164
; CHECK-NEXT: Phi Values Analysis
168165
; CHECK-NEXT: Memory Dependence Analysis
169166
; CHECK-NEXT: Dead Store Elimination
170-
; CHECK-NEXT: Basic Alias Analysis (stateless AA impl)
171167
; CHECK-NEXT: Function Alias Analysis Results
172168
; CHECK-NEXT: Memory SSA
173169
; CHECK-NEXT: Natural Loop Information

llvm/test/Other/opt-Os-pipeline.ll

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,6 @@
6868
; CHECK-NEXT: Memory SSA
6969
; CHECK-NEXT: Early CSE w/ MemorySSA
7070
; CHECK-NEXT: Speculatively execute instructions if target has divergent branches
71-
; CHECK-NEXT: Basic Alias Analysis (stateless AA impl)
7271
; CHECK-NEXT: Function Alias Analysis Results
7372
; CHECK-NEXT: Lazy Value Information Analysis
7473
; CHECK-NEXT: Jump Threading
@@ -120,7 +119,6 @@
120119
; CHECK-NEXT: Unroll loops
121120
; CHECK-NEXT: MergedLoadStoreMotion
122121
; CHECK-NEXT: Phi Values Analysis
123-
; CHECK-NEXT: Basic Alias Analysis (stateless AA impl)
124122
; CHECK-NEXT: Function Alias Analysis Results
125123
; CHECK-NEXT: Memory Dependence Analysis
126124
; CHECK-NEXT: Lazy Branch Probability Analysis
@@ -135,7 +133,6 @@
135133
; CHECK-NEXT: Sparse Conditional Constant Propagation
136134
; CHECK-NEXT: Demanded bits analysis
137135
; CHECK-NEXT: Bit-Tracking Dead Code Elimination
138-
; CHECK-NEXT: Basic Alias Analysis (stateless AA impl)
139136
; CHECK-NEXT: Function Alias Analysis Results
140137
; CHECK-NEXT: Lazy Branch Probability Analysis
141138
; CHECK-NEXT: Lazy Block Frequency Analysis
@@ -149,7 +146,6 @@
149146
; CHECK-NEXT: Phi Values Analysis
150147
; CHECK-NEXT: Memory Dependence Analysis
151148
; CHECK-NEXT: Dead Store Elimination
152-
; CHECK-NEXT: Basic Alias Analysis (stateless AA impl)
153149
; CHECK-NEXT: Function Alias Analysis Results
154150
; CHECK-NEXT: Memory SSA
155151
; CHECK-NEXT: Natural Loop Information

0 commit comments

Comments
 (0)