Skip to content

Commit 6da79ce

Browse files
committed
[MemorySSA] Re-enable MemorySSA use.
Differential Revision: https://reviews.llvm.org/D58311 llvm-svn: 370957
1 parent a7a3b3a commit 6da79ce

File tree

6 files changed

+53
-38
lines changed

6 files changed

+53
-38
lines changed

llvm/lib/Analysis/MemorySSA.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ bool llvm::VerifyMemorySSA = false;
8484
#endif
8585
/// Enables memory ssa as a dependency for loop passes in legacy pass manager.
8686
cl::opt<bool> llvm::EnableMSSALoopDependency(
87-
"enable-mssa-loop-dependency", cl::Hidden, cl::init(false),
87+
"enable-mssa-loop-dependency", cl::Hidden, cl::init(true),
8888
cl::desc("Enable MemorySSA dependency for loop pass manager"));
8989

9090
static cl::opt<bool, true>

llvm/lib/Transforms/Utils/LoopUtils.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
#include "llvm/Analysis/InstructionSimplify.h"
2020
#include "llvm/Analysis/LoopInfo.h"
2121
#include "llvm/Analysis/LoopPass.h"
22+
#include "llvm/Analysis/MemorySSA.h"
2223
#include "llvm/Analysis/MemorySSAUpdater.h"
2324
#include "llvm/Analysis/MustExecute.h"
2425
#include "llvm/Analysis/ScalarEvolution.h"
@@ -170,6 +171,8 @@ void llvm::getLoopAnalysisUsage(AnalysisUsage &AU) {
170171
AU.addPreserved<SCEVAAWrapperPass>();
171172
AU.addRequired<ScalarEvolutionWrapperPass>();
172173
AU.addPreserved<ScalarEvolutionWrapperPass>();
174+
// FIXME: When all loop passes preserve MemorySSA, it can be required and
175+
// preserved here instead of the individual handling in each pass.
173176
}
174177

175178
/// Manually defined generic "LoopPass" dependency initialization. This is used
@@ -190,6 +193,7 @@ void llvm::initializeLoopPassPass(PassRegistry &Registry) {
190193
INITIALIZE_PASS_DEPENDENCY(GlobalsAAWrapperPass)
191194
INITIALIZE_PASS_DEPENDENCY(SCEVAAWrapperPass)
192195
INITIALIZE_PASS_DEPENDENCY(ScalarEvolutionWrapperPass)
196+
INITIALIZE_PASS_DEPENDENCY(MemorySSAWrapperPass)
193197
}
194198

195199
/// Create MDNode for input string.

llvm/test/CodeGen/PowerPC/sms-grp-order.ll

Lines changed: 18 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -4,25 +4,24 @@
44

55
define void @lame_encode_buffer_interleaved() local_unnamed_addr {
66
; CHECK-LABEL: lame_encode_buffer_interleaved:
7-
; CHECK: # %bb.0:
8-
; CHECK-NEXT: lhz 3, 0(0)
9-
; CHECK-NEXT: li 5, 1
10-
; CHECK-NEXT: sldi 5, 5, 62
11-
; CHECK-NEXT: lhz 4, 0(3)
12-
; CHECK-NEXT: mtctr 5
13-
; CHECK-NEXT: .p2align 5
14-
; CHECK-NEXT: .LBB0_1: #
15-
; CHECK-NEXT: extsh 3, 3
16-
; CHECK-NEXT: extsh 4, 4
17-
; CHECK-NEXT: srawi 3, 3, 1
18-
; CHECK-NEXT: addze 3, 3
19-
; CHECK-NEXT: srawi 4, 4, 1
20-
; CHECK-NEXT: addze 4, 4
21-
; CHECK-NEXT: bdnz .LBB0_1
22-
; CHECK-NEXT: # %bb.2:
23-
; CHECK-NEXT: sth 3, 0(0)
24-
; CHECK-NEXT: sth 4, 0(3)
25-
; CHECK-NEXT: blr
7+
; CHECK: # %bb.0:
8+
; CHECK-NEXT: lha 3, 0(3)
9+
; CHECK-NEXT: li 5, 1
10+
; CHECK-NEXT: sldi 5, 5, 62
11+
; CHECK-NEXT: lhz 4, 0(0)
12+
; CHECK-NEXT: mtctr 5
13+
; CHECK-NEXT: srawi 3, 3, 1
14+
; CHECK-NEXT: addze 3, 3
15+
; CHECK-NEXT: .p2align 4
16+
; CHECK-NEXT: .LBB0_1:
17+
; CHECK-NEXT: extsh 4, 4
18+
; CHECK-NEXT: srawi 4, 4, 1
19+
; CHECK-NEXT: addze 4, 4
20+
; CHECK-NEXT: bdnz .LBB0_1
21+
; CHECK-NEXT: # %bb.2:
22+
; CHECK-NEXT: sth 4, 0(0)
23+
; CHECK-NEXT: sth 3, 0(3)
24+
; CHECK-NEXT: blr
2625
br label %1
2726

2827
1: ; preds = %1, %0

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

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -93,12 +93,13 @@
9393
; CHECK-NEXT: Simplify the CFG
9494
; CHECK-NEXT: Reassociate expressions
9595
; CHECK-NEXT: Dominator Tree Construction
96+
; CHECK-NEXT: Basic Alias Analysis (stateless AA impl)
97+
; CHECK-NEXT: Function Alias Analysis Results
98+
; CHECK-NEXT: Memory SSA
9699
; CHECK-NEXT: Natural Loop Information
97100
; CHECK-NEXT: Canonicalize natural loops
98101
; CHECK-NEXT: LCSSA Verifier
99102
; CHECK-NEXT: Loop-Closed SSA Form Pass
100-
; CHECK-NEXT: Basic Alias Analysis (stateless AA impl)
101-
; CHECK-NEXT: Function Alias Analysis Results
102103
; CHECK-NEXT: Scalar Evolution Analysis
103104
; CHECK-NEXT: Loop Pass Manager
104105
; CHECK-NEXT: Rotate Loops
@@ -153,12 +154,13 @@
153154
; CHECK-NEXT: Phi Values Analysis
154155
; CHECK-NEXT: Memory Dependence Analysis
155156
; CHECK-NEXT: Dead Store Elimination
157+
; CHECK-NEXT: Basic Alias Analysis (stateless AA impl)
158+
; CHECK-NEXT: Function Alias Analysis Results
159+
; CHECK-NEXT: Memory SSA
156160
; CHECK-NEXT: Natural Loop Information
157161
; CHECK-NEXT: Canonicalize natural loops
158162
; CHECK-NEXT: LCSSA Verifier
159163
; CHECK-NEXT: Loop-Closed SSA Form Pass
160-
; CHECK-NEXT: Basic Alias Analysis (stateless AA impl)
161-
; CHECK-NEXT: Function Alias Analysis Results
162164
; CHECK-NEXT: Scalar Evolution Analysis
163165
; CHECK-NEXT: Loop Pass Manager
164166
; CHECK-NEXT: Loop Invariant Code Motion
@@ -185,12 +187,13 @@
185187
; CHECK-NEXT: FunctionPass Manager
186188
; CHECK-NEXT: Float to int
187189
; CHECK-NEXT: Dominator Tree Construction
190+
; CHECK-NEXT: Basic Alias Analysis (stateless AA impl)
191+
; CHECK-NEXT: Function Alias Analysis Results
192+
; CHECK-NEXT: Memory SSA
188193
; CHECK-NEXT: Natural Loop Information
189194
; CHECK-NEXT: Canonicalize natural loops
190195
; CHECK-NEXT: LCSSA Verifier
191196
; CHECK-NEXT: Loop-Closed SSA Form Pass
192-
; CHECK-NEXT: Basic Alias Analysis (stateless AA impl)
193-
; CHECK-NEXT: Function Alias Analysis Results
194197
; CHECK-NEXT: Scalar Evolution Analysis
195198
; CHECK-NEXT: Loop Pass Manager
196199
; CHECK-NEXT: Rotate Loops
@@ -246,6 +249,7 @@
246249
; CHECK-NEXT: Lazy Block Frequency Analysis
247250
; CHECK-NEXT: Optimization Remark Emitter
248251
; CHECK-NEXT: Combine redundant instructions
252+
; CHECK-NEXT: Memory SSA
249253
; CHECK-NEXT: Canonicalize natural loops
250254
; CHECK-NEXT: LCSSA Verifier
251255
; CHECK-NEXT: Loop-Closed SSA Form Pass

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

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -98,12 +98,13 @@
9898
; CHECK-NEXT: Simplify the CFG
9999
; CHECK-NEXT: Reassociate expressions
100100
; CHECK-NEXT: Dominator Tree Construction
101+
; CHECK-NEXT: Basic Alias Analysis (stateless AA impl)
102+
; CHECK-NEXT: Function Alias Analysis Results
103+
; CHECK-NEXT: Memory SSA
101104
; CHECK-NEXT: Natural Loop Information
102105
; CHECK-NEXT: Canonicalize natural loops
103106
; CHECK-NEXT: LCSSA Verifier
104107
; CHECK-NEXT: Loop-Closed SSA Form Pass
105-
; CHECK-NEXT: Basic Alias Analysis (stateless AA impl)
106-
; CHECK-NEXT: Function Alias Analysis Results
107108
; CHECK-NEXT: Scalar Evolution Analysis
108109
; CHECK-NEXT: Loop Pass Manager
109110
; CHECK-NEXT: Rotate Loops
@@ -158,12 +159,13 @@
158159
; CHECK-NEXT: Phi Values Analysis
159160
; CHECK-NEXT: Memory Dependence Analysis
160161
; CHECK-NEXT: Dead Store Elimination
162+
; CHECK-NEXT: Basic Alias Analysis (stateless AA impl)
163+
; CHECK-NEXT: Function Alias Analysis Results
164+
; CHECK-NEXT: Memory SSA
161165
; CHECK-NEXT: Natural Loop Information
162166
; CHECK-NEXT: Canonicalize natural loops
163167
; CHECK-NEXT: LCSSA Verifier
164168
; CHECK-NEXT: Loop-Closed SSA Form Pass
165-
; CHECK-NEXT: Basic Alias Analysis (stateless AA impl)
166-
; CHECK-NEXT: Function Alias Analysis Results
167169
; CHECK-NEXT: Scalar Evolution Analysis
168170
; CHECK-NEXT: Loop Pass Manager
169171
; CHECK-NEXT: Loop Invariant Code Motion
@@ -190,12 +192,13 @@
190192
; CHECK-NEXT: FunctionPass Manager
191193
; CHECK-NEXT: Float to int
192194
; CHECK-NEXT: Dominator Tree Construction
195+
; CHECK-NEXT: Basic Alias Analysis (stateless AA impl)
196+
; CHECK-NEXT: Function Alias Analysis Results
197+
; CHECK-NEXT: Memory SSA
193198
; CHECK-NEXT: Natural Loop Information
194199
; CHECK-NEXT: Canonicalize natural loops
195200
; CHECK-NEXT: LCSSA Verifier
196201
; CHECK-NEXT: Loop-Closed SSA Form Pass
197-
; CHECK-NEXT: Basic Alias Analysis (stateless AA impl)
198-
; CHECK-NEXT: Function Alias Analysis Results
199202
; CHECK-NEXT: Scalar Evolution Analysis
200203
; CHECK-NEXT: Loop Pass Manager
201204
; CHECK-NEXT: Rotate Loops
@@ -251,6 +254,7 @@
251254
; CHECK-NEXT: Lazy Block Frequency Analysis
252255
; CHECK-NEXT: Optimization Remark Emitter
253256
; CHECK-NEXT: Combine redundant instructions
257+
; CHECK-NEXT: Memory SSA
254258
; CHECK-NEXT: Canonicalize natural loops
255259
; CHECK-NEXT: LCSSA Verifier
256260
; CHECK-NEXT: Loop-Closed SSA Form Pass

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

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -80,12 +80,13 @@
8080
; CHECK-NEXT: Simplify the CFG
8181
; CHECK-NEXT: Reassociate expressions
8282
; CHECK-NEXT: Dominator Tree Construction
83+
; CHECK-NEXT: Basic Alias Analysis (stateless AA impl)
84+
; CHECK-NEXT: Function Alias Analysis Results
85+
; CHECK-NEXT: Memory SSA
8386
; CHECK-NEXT: Natural Loop Information
8487
; CHECK-NEXT: Canonicalize natural loops
8588
; CHECK-NEXT: LCSSA Verifier
8689
; CHECK-NEXT: Loop-Closed SSA Form Pass
87-
; CHECK-NEXT: Basic Alias Analysis (stateless AA impl)
88-
; CHECK-NEXT: Function Alias Analysis Results
8990
; CHECK-NEXT: Scalar Evolution Analysis
9091
; CHECK-NEXT: Loop Pass Manager
9192
; CHECK-NEXT: Rotate Loops
@@ -140,12 +141,13 @@
140141
; CHECK-NEXT: Phi Values Analysis
141142
; CHECK-NEXT: Memory Dependence Analysis
142143
; CHECK-NEXT: Dead Store Elimination
144+
; CHECK-NEXT: Basic Alias Analysis (stateless AA impl)
145+
; CHECK-NEXT: Function Alias Analysis Results
146+
; CHECK-NEXT: Memory SSA
143147
; CHECK-NEXT: Natural Loop Information
144148
; CHECK-NEXT: Canonicalize natural loops
145149
; CHECK-NEXT: LCSSA Verifier
146150
; CHECK-NEXT: Loop-Closed SSA Form Pass
147-
; CHECK-NEXT: Basic Alias Analysis (stateless AA impl)
148-
; CHECK-NEXT: Function Alias Analysis Results
149151
; CHECK-NEXT: Scalar Evolution Analysis
150152
; CHECK-NEXT: Loop Pass Manager
151153
; CHECK-NEXT: Loop Invariant Code Motion
@@ -172,12 +174,13 @@
172174
; CHECK-NEXT: FunctionPass Manager
173175
; CHECK-NEXT: Float to int
174176
; CHECK-NEXT: Dominator Tree Construction
177+
; CHECK-NEXT: Basic Alias Analysis (stateless AA impl)
178+
; CHECK-NEXT: Function Alias Analysis Results
179+
; CHECK-NEXT: Memory SSA
175180
; CHECK-NEXT: Natural Loop Information
176181
; CHECK-NEXT: Canonicalize natural loops
177182
; CHECK-NEXT: LCSSA Verifier
178183
; CHECK-NEXT: Loop-Closed SSA Form Pass
179-
; CHECK-NEXT: Basic Alias Analysis (stateless AA impl)
180-
; CHECK-NEXT: Function Alias Analysis Results
181184
; CHECK-NEXT: Scalar Evolution Analysis
182185
; CHECK-NEXT: Loop Pass Manager
183186
; CHECK-NEXT: Rotate Loops
@@ -233,6 +236,7 @@
233236
; CHECK-NEXT: Lazy Block Frequency Analysis
234237
; CHECK-NEXT: Optimization Remark Emitter
235238
; CHECK-NEXT: Combine redundant instructions
239+
; CHECK-NEXT: Memory SSA
236240
; CHECK-NEXT: Canonicalize natural loops
237241
; CHECK-NEXT: LCSSA Verifier
238242
; CHECK-NEXT: Loop-Closed SSA Form Pass

0 commit comments

Comments
 (0)