diff options
author | Francis Visoiu Mistrih <francisvm@yahoo.com> | 2018-06-13 21:03:56 +0000 |
---|---|---|
committer | Francis Visoiu Mistrih <francisvm@yahoo.com> | 2018-06-13 21:03:56 +0000 |
commit | 68d5d59240f4e6fbeaafbf01bb5ea37722ffc263 (patch) | |
tree | 15d363b2c8b269b3e6fc894067e47ffbca5c41d6 | |
parent | 77fc0e911916581ad68a06ee7319fd802f225a88 (diff) |
Reland: [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.
Fixed test instead of adding a new one originally from r334649.
Differential Revision: https://reviews.llvm.org/D48109
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@334657 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/IR/LegacyPassManager.cpp | 6 | ||||
-rw-r--r-- | test/Other/statistic.ll | 6 |
2 files changed, 8 insertions, 4 deletions
diff --git a/lib/IR/LegacyPassManager.cpp b/lib/IR/LegacyPassManager.cpp index b04787cb30e..46bfba7f5a0 100644 --- a/lib/IR/LegacyPassManager.cpp +++ b/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/test/Other/statistic.ll b/test/Other/statistic.ll index 7b89c9e5462..b972780fc35 100644 --- a/test/Other/statistic.ll +++ b/test/Other/statistic.ll @@ -8,9 +8,9 @@ ; JSON: { ; JSON-DAG: "instsimplify.NumSimplified": 1 -; JSONTIME-DAG: "time.pass.Remove redundant instructions.wall" -; JSONTIME-DAG: "time.pass.Remove redundant instructions.user" -; JSONTIME-DAG: "time.pass.Remove redundant instructions.sys" +; JSONTIME-DAG: "time.pass.instsimplify.wall" +; JSONTIME-DAG: "time.pass.instsimplify.user" +; JSONTIME-DAG: "time.pass.instsimplify.sys" ; JSON: } ; DEFAULT: 1 instsimplify - Number of redundant instructions removed |