summaryrefslogtreecommitdiffstats
path: root/llvm
diff options
context:
space:
mode:
Diffstat (limited to 'llvm')
-rw-r--r--llvm/lib/IR/LegacyPassManager.cpp6
-rw-r--r--llvm/test/CodeGen/X86/time-passes-json-stats.ll14
2 files changed, 19 insertions, 1 deletions
diff --git a/llvm/lib/IR/LegacyPassManager.cpp b/llvm/lib/IR/LegacyPassManager.cpp
index b04787cb30e..46bfba7f5a0 100644
--- a/llvm/lib/IR/LegacyPassManager.cpp
+++ b/llvm/lib/IR/LegacyPassManager.cpp
@@ -545,7 +545,11 @@ public:
Timer *&T = TimingData[P];
if (!T) {
StringRef PassName = P->getPassName();
- T = new Timer(PassName, PassName, TG);
+ StringRef PassArgument;
+ if (const PassInfo *PI = Pass::lookupPassInfo(P->getPassID()))
+ PassArgument = PI->getPassArgument();
+ T = new Timer(PassArgument.empty() ? PassName : PassArgument, PassName,
+ TG);
}
return T;
}
diff --git a/llvm/test/CodeGen/X86/time-passes-json-stats.ll b/llvm/test/CodeGen/X86/time-passes-json-stats.ll
new file mode 100644
index 00000000000..70049b2363e
--- /dev/null
+++ b/llvm/test/CodeGen/X86/time-passes-json-stats.ll
@@ -0,0 +1,14 @@
+; RUN: llc -mtriple=x86_64-- -stats-json=true -stats -time-passes %s -o /dev/null 2>&1 | FileCheck %s
+
+; Verify that we use the argument pass name instead of the full name as a json
+; key for timers.
+;
+; CHECK: {
+; CHECK-NEXT: "asm-printer.EmittedInsts":
+; CHECK-NOT: Virtual Register Map
+; CHECK: "time.pass.virtregmap.wall":
+; CHECK: "time.pass.virtregmap.user":
+; CHECK: "time.pass.virtregmap.sys":
+; CHECK: Virtual Register Map
+
+define void @test_stats() { ret void }
OpenPOWER on IntegriCloud