mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-11-30 09:01:19 +00:00
[Clang] Enable -print-pipeline-passes in clang.
Reviewed By: arsenm, aeubanks Differential Revision: https://reviews.llvm.org/D127221
This commit is contained in:
parent
b6f66c94bc
commit
bf49237103
@ -91,6 +91,7 @@ using namespace llvm;
|
||||
|
||||
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 @@ void EmitAssemblyHelper::RunOptimizationPipeline(
|
||||
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 @@ void EmitAssemblyHelper::RunCodegenPipeline(
|
||||
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");
|
||||
|
9
clang/test/CodeGen/print-pipeline-passes.c
Normal file
9
clang/test/CodeGen/print-pipeline-passes.c
Normal file
@ -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) {}
|
Loading…
Reference in New Issue
Block a user