[PATCH] D48109: [Timers] Use the pass argument name for JSON keys in time-passes
Francis Visoiu Mistrih via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Jun 12 17:11:52 PDT 2018
thegameg created this revision.
thegameg added reviewers: jpaquette, MatzeB, lebedev.ri, george.karpenkov, graydon.
Herald added a subscriber: mehdi_amini.
When using clang --save-stats -mllvm -time-passes, both timers and stats end up in the same json file.
We could end up with things like:
{
"asm-printer.EmittedInsts": 1,
"time.pass.Virtual Register Map.wall": 2.9015541076660156e-04,
"time.pass.Virtual Register Map.user": 2.0500000000000379e-04,
"time.pass.Virtual Register Map.sys": 8.5000000000001741e-05,
}
This patch makes use of the pass argument name (if available) in the JSON key to end up with things like:
{
"asm-printer.EmittedInsts": 1,
"time.pass.virtregmap.wall": 2.9015541076660156e-04,
"time.pass.virtregmap.user": 2.0500000000000379e-04,
"time.pass.virtregmap.sys": 8.5000000000001741e-05,
}
This also helps avoiding to write another JSON printer to handle all the cases that we could have in our pass names.
https://reviews.llvm.org/D48109
Files:
lib/IR/LegacyPassManager.cpp
test/CodeGen/X86/time-passes-json-stats.ll
Index: test/CodeGen/X86/time-passes-json-stats.ll
===================================================================
--- /dev/null
+++ 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 }
Index: lib/IR/LegacyPassManager.cpp
===================================================================
--- lib/IR/LegacyPassManager.cpp
+++ lib/IR/LegacyPassManager.cpp
@@ -545,7 +545,11 @@
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;
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D48109.151074.patch
Type: text/x-patch
Size: 1292 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180613/c42317c9/attachment.bin>
More information about the llvm-commits
mailing list