Skip to content

Commit 0cecafd

Browse files
committed
[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
1 parent d7de7ac commit 0cecafd

File tree

5 files changed

+6
-23
lines changed

5 files changed

+6
-23
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 & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,6 @@
7070
; CHECK-NEXT: Memory SSA
7171
; CHECK-NEXT: Early CSE w/ MemorySSA
7272
; CHECK-NEXT: Speculatively execute instructions if target has divergent branches
73-
; CHECK-NEXT: Basic Alias Analysis (stateless AA impl)
7473
; CHECK-NEXT: Function Alias Analysis Results
7574
; CHECK-NEXT: Lazy Value Information Analysis
7675
; CHECK-NEXT: Jump Threading
@@ -134,7 +133,6 @@
134133
; CHECK-NEXT: Unroll loops
135134
; CHECK-NEXT: MergedLoadStoreMotion
136135
; CHECK-NEXT: Phi Values Analysis
137-
; CHECK-NEXT: Basic Alias Analysis (stateless AA impl)
138136
; CHECK-NEXT: Function Alias Analysis Results
139137
; CHECK-NEXT: Memory Dependence Analysis
140138
; CHECK-NEXT: Lazy Branch Probability Analysis
@@ -149,7 +147,6 @@
149147
; CHECK-NEXT: Sparse Conditional Constant Propagation
150148
; CHECK-NEXT: Demanded bits analysis
151149
; CHECK-NEXT: Bit-Tracking Dead Code Elimination
152-
; CHECK-NEXT: Basic Alias Analysis (stateless AA impl)
153150
; CHECK-NEXT: Function Alias Analysis Results
154151
; CHECK-NEXT: Lazy Branch Probability Analysis
155152
; CHECK-NEXT: Lazy Block Frequency Analysis
@@ -163,7 +160,6 @@
163160
; CHECK-NEXT: Phi Values Analysis
164161
; CHECK-NEXT: Memory Dependence Analysis
165162
; CHECK-NEXT: Dead Store Elimination
166-
; CHECK-NEXT: Basic Alias Analysis (stateless AA impl)
167163
; CHECK-NEXT: Function Alias Analysis Results
168164
; CHECK-NEXT: Memory SSA
169165
; CHECK-NEXT: Natural Loop Information
@@ -231,7 +227,6 @@
231227
; CHECK-NEXT: Loop Vectorization
232228
; CHECK-NEXT: Canonicalize natural loops
233229
; CHECK-NEXT: Scalar Evolution Analysis
234-
; CHECK-NEXT: Basic Alias Analysis (stateless AA impl)
235230
; CHECK-NEXT: Function Alias Analysis Results
236231
; CHECK-NEXT: Loop Access Analysis
237232
; CHECK-NEXT: Lazy Branch Probability Analysis
@@ -256,7 +251,6 @@
256251
; CHECK-NEXT: Optimization Remark Emitter
257252
; CHECK-NEXT: SLP Vectorizer
258253
; CHECK-NEXT: Optimize scalar/vector ops
259-
; CHECK-NEXT: Basic Alias Analysis (stateless AA impl)
260254
; CHECK-NEXT: Function Alias Analysis Results
261255
; CHECK-NEXT: Optimization Remark Emitter
262256
; CHECK-NEXT: Combine redundant instructions

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

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,6 @@
7474
; CHECK-NEXT: Memory SSA
7575
; CHECK-NEXT: Early CSE w/ MemorySSA
7676
; CHECK-NEXT: Speculatively execute instructions if target has divergent branches
77-
; CHECK-NEXT: Basic Alias Analysis (stateless AA impl)
7877
; CHECK-NEXT: Function Alias Analysis Results
7978
; CHECK-NEXT: Lazy Value Information Analysis
8079
; CHECK-NEXT: Jump Threading
@@ -139,7 +138,6 @@
139138
; CHECK-NEXT: Unroll loops
140139
; CHECK-NEXT: MergedLoadStoreMotion
141140
; CHECK-NEXT: Phi Values Analysis
142-
; CHECK-NEXT: Basic Alias Analysis (stateless AA impl)
143141
; CHECK-NEXT: Function Alias Analysis Results
144142
; CHECK-NEXT: Memory Dependence Analysis
145143
; CHECK-NEXT: Lazy Branch Probability Analysis
@@ -154,7 +152,6 @@
154152
; CHECK-NEXT: Sparse Conditional Constant Propagation
155153
; CHECK-NEXT: Demanded bits analysis
156154
; CHECK-NEXT: Bit-Tracking Dead Code Elimination
157-
; CHECK-NEXT: Basic Alias Analysis (stateless AA impl)
158155
; CHECK-NEXT: Function Alias Analysis Results
159156
; CHECK-NEXT: Lazy Branch Probability Analysis
160157
; CHECK-NEXT: Lazy Block Frequency Analysis
@@ -168,7 +165,6 @@
168165
; CHECK-NEXT: Phi Values Analysis
169166
; CHECK-NEXT: Memory Dependence Analysis
170167
; CHECK-NEXT: Dead Store Elimination
171-
; CHECK-NEXT: Basic Alias Analysis (stateless AA impl)
172168
; CHECK-NEXT: Function Alias Analysis Results
173169
; CHECK-NEXT: Memory SSA
174170
; CHECK-NEXT: Natural Loop Information
@@ -236,7 +232,6 @@
236232
; CHECK-NEXT: Loop Vectorization
237233
; CHECK-NEXT: Canonicalize natural loops
238234
; CHECK-NEXT: Scalar Evolution Analysis
239-
; CHECK-NEXT: Basic Alias Analysis (stateless AA impl)
240235
; CHECK-NEXT: Function Alias Analysis Results
241236
; CHECK-NEXT: Loop Access Analysis
242237
; CHECK-NEXT: Lazy Branch Probability Analysis
@@ -261,7 +256,6 @@
261256
; CHECK-NEXT: Optimization Remark Emitter
262257
; CHECK-NEXT: SLP Vectorizer
263258
; CHECK-NEXT: Optimize scalar/vector ops
264-
; CHECK-NEXT: Basic Alias Analysis (stateless AA impl)
265259
; CHECK-NEXT: Function Alias Analysis Results
266260
; CHECK-NEXT: Optimization Remark Emitter
267261
; CHECK-NEXT: Combine redundant instructions

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

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,6 @@
7070
; CHECK-NEXT: Memory SSA
7171
; CHECK-NEXT: Early CSE w/ MemorySSA
7272
; CHECK-NEXT: Speculatively execute instructions if target has divergent branches
73-
; CHECK-NEXT: Basic Alias Analysis (stateless AA impl)
7473
; CHECK-NEXT: Function Alias Analysis Results
7574
; CHECK-NEXT: Lazy Value Information Analysis
7675
; CHECK-NEXT: Jump Threading
@@ -121,7 +120,6 @@
121120
; CHECK-NEXT: Unroll loops
122121
; CHECK-NEXT: MergedLoadStoreMotion
123122
; CHECK-NEXT: Phi Values Analysis
124-
; CHECK-NEXT: Basic Alias Analysis (stateless AA impl)
125123
; CHECK-NEXT: Function Alias Analysis Results
126124
; CHECK-NEXT: Memory Dependence Analysis
127125
; CHECK-NEXT: Lazy Branch Probability Analysis
@@ -136,7 +134,6 @@
136134
; CHECK-NEXT: Sparse Conditional Constant Propagation
137135
; CHECK-NEXT: Demanded bits analysis
138136
; CHECK-NEXT: Bit-Tracking Dead Code Elimination
139-
; CHECK-NEXT: Basic Alias Analysis (stateless AA impl)
140137
; CHECK-NEXT: Function Alias Analysis Results
141138
; CHECK-NEXT: Lazy Branch Probability Analysis
142139
; CHECK-NEXT: Lazy Block Frequency Analysis
@@ -150,7 +147,6 @@
150147
; CHECK-NEXT: Phi Values Analysis
151148
; CHECK-NEXT: Memory Dependence Analysis
152149
; CHECK-NEXT: Dead Store Elimination
153-
; CHECK-NEXT: Basic Alias Analysis (stateless AA impl)
154150
; CHECK-NEXT: Function Alias Analysis Results
155151
; CHECK-NEXT: Memory SSA
156152
; CHECK-NEXT: Natural Loop Information
@@ -218,7 +214,6 @@
218214
; CHECK-NEXT: Loop Vectorization
219215
; CHECK-NEXT: Canonicalize natural loops
220216
; CHECK-NEXT: Scalar Evolution Analysis
221-
; CHECK-NEXT: Basic Alias Analysis (stateless AA impl)
222217
; CHECK-NEXT: Function Alias Analysis Results
223218
; CHECK-NEXT: Loop Access Analysis
224219
; CHECK-NEXT: Lazy Branch Probability Analysis
@@ -243,7 +238,6 @@
243238
; CHECK-NEXT: Optimization Remark Emitter
244239
; CHECK-NEXT: SLP Vectorizer
245240
; CHECK-NEXT: Optimize scalar/vector ops
246-
; CHECK-NEXT: Basic Alias Analysis (stateless AA impl)
247241
; CHECK-NEXT: Function Alias Analysis Results
248242
; CHECK-NEXT: Optimization Remark Emitter
249243
; CHECK-NEXT: Combine redundant instructions

0 commit comments

Comments
 (0)