@@ -257,6 +257,57 @@ bool SILPassManager::runFunctionPasses(PassList FuncTransforms) {
257
257
return false ;
258
258
}
259
259
260
+ void SILPassManager::runModulePass (SILModuleTransform *SMT) {
261
+ if (isDisabled (SMT))
262
+ return ;
263
+
264
+ const SILOptions &Options = getOptions ();
265
+
266
+ PrettyStackTraceSILModuleTransform X (SMT);
267
+
268
+ SMT->injectPassManager (this );
269
+ SMT->injectModule (Mod);
270
+
271
+ currentPassHasInvalidated = false ;
272
+
273
+ if (SILPrintPassName)
274
+ llvm::dbgs () << " #" << NumPassesRun << " Stage: " << StageName
275
+ << " Pass: " << SMT->getName () << " (module pass)\n " ;
276
+
277
+ if (doPrintBefore (SMT, nullptr )) {
278
+ llvm::dbgs () << " *** SIL module before " << StageName << " "
279
+ << SMT->getName () << " (" << NumOptimizationIterations
280
+ << " ) ***\n " ;
281
+ printModule (Mod, Options.EmitVerboseSIL );
282
+ }
283
+
284
+ llvm::sys::TimeValue StartTime = llvm::sys::TimeValue::now ();
285
+ Mod->registerDeleteNotificationHandler (SMT);
286
+ SMT->run ();
287
+ Mod->removeDeleteNotificationHandler (SMT);
288
+
289
+ if (SILPrintPassTime) {
290
+ auto Delta = llvm::sys::TimeValue::now ().nanoseconds () -
291
+ StartTime.nanoseconds ();
292
+ llvm::dbgs () << Delta << " (" << SMT->getName () << " ,Module)\n " ;
293
+ }
294
+
295
+ // If this pass invalidated anything, print and verify.
296
+ if (doPrintAfter (SMT, nullptr ,
297
+ currentPassHasInvalidated && SILPrintAll)) {
298
+ llvm::dbgs () << " *** SIL module after " << StageName << " "
299
+ << SMT->getName () << " (" << NumOptimizationIterations
300
+ << " ) ***\n " ;
301
+ printModule (Mod, Options.EmitVerboseSIL );
302
+ }
303
+
304
+ if (Options.VerifyAll &&
305
+ (currentPassHasInvalidated || !SILVerifyWithoutInvalidation)) {
306
+ Mod->verify ();
307
+ verifyAnalyses ();
308
+ }
309
+ }
310
+
260
311
void SILPassManager::runOneIteration () {
261
312
// Verify that all analysis were properly unlocked.
262
313
for (auto A : Analysis) {
@@ -297,52 +348,7 @@ void SILPassManager::runOneIteration() {
297
348
298
349
PendingFuncTransforms.clear ();
299
350
300
- if (isDisabled (SMT))
301
- continue ;
302
-
303
- PrettyStackTraceSILModuleTransform X (SMT);
304
-
305
- SMT->injectPassManager (this );
306
- SMT->injectModule (Mod);
307
-
308
- currentPassHasInvalidated = false ;
309
-
310
- if (SILPrintPassName)
311
- llvm::dbgs () << " #" << NumPassesRun << " Stage: " << StageName
312
- << " Pass: " << SMT->getName () << " (module pass)\n " ;
313
-
314
- if (doPrintBefore (SMT, nullptr )) {
315
- llvm::dbgs () << " *** SIL module before " << StageName << " "
316
- << SMT->getName () << " (" << NumOptimizationIterations
317
- << " ) ***\n " ;
318
- printModule (Mod, Options.EmitVerboseSIL );
319
- }
320
-
321
- llvm::sys::TimeValue StartTime = llvm::sys::TimeValue::now ();
322
- Mod->registerDeleteNotificationHandler (SMT);
323
- SMT->run ();
324
- Mod->removeDeleteNotificationHandler (SMT);
325
-
326
- if (SILPrintPassTime) {
327
- auto Delta = llvm::sys::TimeValue::now ().nanoseconds () -
328
- StartTime.nanoseconds ();
329
- llvm::dbgs () << Delta << " (" << SMT->getName () << " ,Module)\n " ;
330
- }
331
-
332
- // If this pass invalidated anything, print and verify.
333
- if (doPrintAfter (SMT, nullptr ,
334
- currentPassHasInvalidated && SILPrintAll)) {
335
- llvm::dbgs () << " *** SIL module after " << StageName << " "
336
- << SMT->getName () << " (" << NumOptimizationIterations
337
- << " ) ***\n " ;
338
- printModule (Mod, Options.EmitVerboseSIL );
339
- }
340
-
341
- if (Options.VerifyAll &&
342
- (currentPassHasInvalidated || !SILVerifyWithoutInvalidation)) {
343
- Mod->verify ();
344
- verifyAnalyses ();
345
- }
351
+ runModulePass (SMT);
346
352
347
353
++NumPassesRun;
348
354
if (Mod->getStage () == SILStage::Canonical
0 commit comments