19
19
#include " swift/SILPasses/Transforms.h"
20
20
#include " llvm/ADT/Statistic.h"
21
21
#include " llvm/ADT/StringSwitch.h"
22
- #include " swift/SILAnalysis/FunctionOrder.h"
23
22
#include " llvm/Support/CommandLine.h"
24
23
#include " llvm/Support/Debug.h"
25
24
#include " llvm/Support/TimeValue.h"
@@ -160,30 +159,20 @@ SILPassManager::SILPassManager(SILModule *M, llvm::StringRef Stage) :
160
159
bool SILPassManager::runFunctionPasses (PassList FuncTransforms) {
161
160
const SILOptions &Options = getOptions ();
162
161
163
- BasicCalleeAnalysis *BCA = getAnalysis<BasicCalleeAnalysis>();
164
- BottomUpFunctionOrder BottomUpOrder (*Mod, BCA);
165
- auto BottomUpFunctions = BottomUpOrder.getFunctions ();
166
-
167
- for (auto I = BottomUpFunctions.rbegin (),
168
- E = BottomUpFunctions.rend ();
169
- I != E; ++I) {
170
- SILFunction *F = *I;
171
-
172
- if (F->empty ())
162
+ for (auto &F : *Mod) {
163
+ if (F.empty ())
173
164
continue ;
174
165
175
166
// Don't optimize functions that are marked with the opt.never attribute.
176
- if (!F-> shouldOptimize ())
167
+ if (!F. shouldOptimize ())
177
168
continue ;
178
169
179
- CompletedPasses &completedPasses = CompletedPassesMap[F];
180
-
181
-
170
+ CompletedPasses &completedPasses = CompletedPassesMap[&F];
182
171
183
172
for (auto SFT : FuncTransforms) {
184
173
PrettyStackTraceSILFunctionTransform X (SFT);
185
174
SFT->injectPassManager (this );
186
- SFT->injectFunction (F);
175
+ SFT->injectFunction (& F);
187
176
188
177
// If nothing changed since the last run of this pass, we can skip this
189
178
// pass.
@@ -198,13 +187,13 @@ bool SILPassManager::runFunctionPasses(PassList FuncTransforms) {
198
187
if (SILPrintPassName)
199
188
llvm::dbgs () << " #" << NumPassesRun << " Stage: " << StageName
200
189
<< " Pass: " << SFT->getName ()
201
- << " , Function: " << F-> getName () << " \n " ;
190
+ << " , Function: " << F. getName () << " \n " ;
202
191
203
- if (doPrintBefore (SFT, F)) {
192
+ if (doPrintBefore (SFT, & F)) {
204
193
llvm::dbgs () << " *** SIL function before " << StageName << " "
205
194
<< SFT->getName () << " (" << NumOptimizationIterations
206
195
<< " ) ***\n " ;
207
- F-> dump (Options.EmitVerboseSIL );
196
+ F. dump (Options.EmitVerboseSIL );
208
197
}
209
198
210
199
llvm::sys::TimeValue StartTime = llvm::sys::TimeValue::now ();
@@ -213,17 +202,17 @@ bool SILPassManager::runFunctionPasses(PassList FuncTransforms) {
213
202
if (SILPrintPassTime) {
214
203
auto Delta = llvm::sys::TimeValue::now ().nanoseconds () -
215
204
StartTime.nanoseconds ();
216
- llvm::dbgs () << Delta << " (" << SFT->getName () << " ," << F-> getName ()
205
+ llvm::dbgs () << Delta << " (" << SFT->getName () << " ," << F. getName ()
217
206
<< " )\n " ;
218
207
}
219
208
220
209
// If this pass invalidated anything, print and verify.
221
- if (doPrintAfter (SFT, F,
210
+ if (doPrintAfter (SFT, & F,
222
211
currentPassHasInvalidated && SILPrintAll)) {
223
212
llvm::dbgs () << " *** SIL function after " << StageName << " "
224
213
<< SFT->getName () << " (" << NumOptimizationIterations
225
214
<< " ) ***\n " ;
226
- F-> dump (Options.EmitVerboseSIL );
215
+ F. dump (Options.EmitVerboseSIL );
227
216
}
228
217
229
218
// Remember if this pass didn't change anything.
@@ -232,8 +221,8 @@ bool SILPassManager::runFunctionPasses(PassList FuncTransforms) {
232
221
233
222
if (Options.VerifyAll &&
234
223
(currentPassHasInvalidated || SILVerifyWithoutInvalidation)) {
235
- F-> verify ();
236
- verifyAnalyses (F);
224
+ F. verify ();
225
+ verifyAnalyses (& F);
237
226
}
238
227
239
228
++NumPassesRun;
0 commit comments