@@ -62,6 +62,14 @@ static llvm::cl::opt<bool> SILViewSILGenCFG(
6262 " sil-view-silgen-cfg" , llvm::cl::init(false ),
6363 llvm::cl::desc(" Enable the sil cfg viewer pass before diagnostics" ));
6464
65+ static llvm::cl::opt<bool > SILPrintSILGenModule (
66+ " sil-print-silgen-module" , llvm::cl::init(false ),
67+ llvm::cl::desc(" Enable printing the module after SILGen" ));
68+
69+ static llvm::cl::opt<bool > SILPrintFinalModule (
70+ " sil-print-final-module" , llvm::cl::init(false ),
71+ llvm::cl::desc(" Enable printing the module after all SIL passes" ));
72+
6573// ===----------------------------------------------------------------------===//
6674// Diagnostic Pass Pipeline
6775// ===----------------------------------------------------------------------===//
@@ -283,6 +291,9 @@ SILPassPipelinePlan::getSILGenPassPipeline(const SILOptions &Options) {
283291 if (SILViewSILGenCFG) {
284292 addCFGPrinterPipeline (P, " SIL View SILGen CFG" );
285293 }
294+ if (SILPrintSILGenModule) {
295+ addModulePrinterPipeline (P, " SIL Print SILGen Module" );
296+ }
286297 return P;
287298}
288299
@@ -1044,6 +1055,9 @@ SILPassPipelinePlan::getPerformancePassPipeline(const SILOptions &Options) {
10441055 if (SILViewCFG) {
10451056 addCFGPrinterPipeline (P, " SIL Before IRGen View CFG" );
10461057 }
1058+ if (SILPrintFinalModule) {
1059+ addModulePrinterPipeline (P, " SIL Print Final Module" );
1060+ }
10471061
10481062 return P;
10491063}
@@ -1127,6 +1141,9 @@ SILPassPipelinePlan::getOnonePassPipeline(const SILOptions &Options) {
11271141 // Has only an effect if the -sil-based-debuginfo option is specified.
11281142 P.addSILDebugInfoGenerator ();
11291143
1144+ if (SILPrintFinalModule) {
1145+ addModulePrinterPipeline (P, " SIL Print Final Module" );
1146+ }
11301147 return P;
11311148}
11321149
0 commit comments