mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 11:13:28 +01:00
[Timers] Use the pass argument name for JSON keys in time-passes
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. Differential Revision: https://reviews.llvm.org/D48109 llvm-svn: 334649
This commit is contained in:
parent
726af1b5f7
commit
b88ba4150b
@ -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;
|
||||
}
|
||||
|
14
test/CodeGen/X86/time-passes-json-stats.ll
Normal file
14
test/CodeGen/X86/time-passes-json-stats.ll
Normal file
@ -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 }
|
Loading…
Reference in New Issue
Block a user