This revision was automatically updated to reflect the committed changes. jcranmer-intel marked an inline comment as done. Closed by commit rGbf4923710333: [Clang] Enable -print-pipeline-passes in clang. (authored by jcranmer-intel).
Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D127221/new/ https://reviews.llvm.org/D127221 Files: clang/lib/CodeGen/BackendUtil.cpp clang/test/CodeGen/print-pipeline-passes.c Index: clang/test/CodeGen/print-pipeline-passes.c =================================================================== --- /dev/null +++ clang/test/CodeGen/print-pipeline-passes.c @@ -0,0 +1,9 @@ +// Test that -print-pipeline-passes works in Clang + +// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -emit-llvm-bc -o /dev/null -mllvm -print-pipeline-passes -O0 %s 2>&1 | FileCheck %s + +// Don't try to check all passes, just a few to make sure that something is +// actually printed. +// CHECK: always-inline +// CHECK-SAME: annotation-remarks +void Foo(void) {} Index: clang/lib/CodeGen/BackendUtil.cpp =================================================================== --- clang/lib/CodeGen/BackendUtil.cpp +++ clang/lib/CodeGen/BackendUtil.cpp @@ -91,6 +91,7 @@ namespace llvm { extern cl::opt<bool> DebugInfoCorrelate; +extern cl::opt<bool> PrintPipelinePasses; // Experiment to move sanitizers earlier. static cl::opt<bool> ClSanitizeOnOptimizerEarlyEP( @@ -1090,6 +1091,17 @@ TheModule->addModuleFlag(Module::Error, "UnifiedLTO", uint32_t(1)); } + // Print a textual, '-passes=' compatible, representation of pipeline if + // requested. + if (PrintPipelinePasses) { + MPM.printPipeline(outs(), [&PIC](StringRef ClassName) { + auto PassName = PIC.getPassNameForClassName(ClassName); + return PassName.empty() ? ClassName : PassName; + }); + outs() << "\n"; + return; + } + // Now that we have all of the passes ready, run them. { PrettyStackTraceString CrashInfo("Optimizer"); @@ -1127,6 +1139,13 @@ return; } + // If -print-pipeline-passes is requested, don't run the legacy pass manager. + // FIXME: when codegen is switched to use the new pass manager, it should also + // emit pass names here. + if (PrintPipelinePasses) { + return; + } + { PrettyStackTraceString CrashInfo("Code generation"); llvm::TimeTraceScope TimeScope("CodeGenPasses");
Index: clang/test/CodeGen/print-pipeline-passes.c =================================================================== --- /dev/null +++ clang/test/CodeGen/print-pipeline-passes.c @@ -0,0 +1,9 @@ +// Test that -print-pipeline-passes works in Clang + +// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -emit-llvm-bc -o /dev/null -mllvm -print-pipeline-passes -O0 %s 2>&1 | FileCheck %s + +// Don't try to check all passes, just a few to make sure that something is +// actually printed. +// CHECK: always-inline +// CHECK-SAME: annotation-remarks +void Foo(void) {} Index: clang/lib/CodeGen/BackendUtil.cpp =================================================================== --- clang/lib/CodeGen/BackendUtil.cpp +++ clang/lib/CodeGen/BackendUtil.cpp @@ -91,6 +91,7 @@ namespace llvm { extern cl::opt<bool> DebugInfoCorrelate; +extern cl::opt<bool> PrintPipelinePasses; // Experiment to move sanitizers earlier. static cl::opt<bool> ClSanitizeOnOptimizerEarlyEP( @@ -1090,6 +1091,17 @@ TheModule->addModuleFlag(Module::Error, "UnifiedLTO", uint32_t(1)); } + // Print a textual, '-passes=' compatible, representation of pipeline if + // requested. + if (PrintPipelinePasses) { + MPM.printPipeline(outs(), [&PIC](StringRef ClassName) { + auto PassName = PIC.getPassNameForClassName(ClassName); + return PassName.empty() ? ClassName : PassName; + }); + outs() << "\n"; + return; + } + // Now that we have all of the passes ready, run them. { PrettyStackTraceString CrashInfo("Optimizer"); @@ -1127,6 +1139,13 @@ return; } + // If -print-pipeline-passes is requested, don't run the legacy pass manager. + // FIXME: when codegen is switched to use the new pass manager, it should also + // emit pass names here. + if (PrintPipelinePasses) { + return; + } + { PrettyStackTraceString CrashInfo("Code generation"); llvm::TimeTraceScope TimeScope("CodeGenPasses");
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits