diff options
| author | Lang Hames <lhames@gmail.com> | 2019-09-04 18:38:29 +0000 |
|---|---|---|
| committer | Lang Hames <lhames@gmail.com> | 2019-09-04 18:38:29 +0000 |
| commit | 200415c6dcc5e0febe3e574970ef89e0c510465b (patch) | |
| tree | 0f539f15ee6d4e095df63e9fab60680151aae8b7 | |
| parent | e4526330b39e16bec316ebb397c270fdcf574704 (diff) | |
| download | bcm5719-llvm-200415c6dcc5e0febe3e574970ef89e0c510465b.tar.gz bcm5719-llvm-200415c6dcc5e0febe3e574970ef89e0c510465b.zip | |
[JITLink] Fix the show-timers option on llvm-jitlink.
No longer constantly shows times (even when -show-times=false). When shown,
times are now correctly grouped.
llvm-svn: 370951
| -rw-r--r-- | llvm/tools/llvm-jitlink/llvm-jitlink.cpp | 31 |
1 files changed, 16 insertions, 15 deletions
diff --git a/llvm/tools/llvm-jitlink/llvm-jitlink.cpp b/llvm/tools/llvm-jitlink/llvm-jitlink.cpp index ff3ba93d57c..651e312da30 100644 --- a/llvm/tools/llvm-jitlink/llvm-jitlink.cpp +++ b/llvm/tools/llvm-jitlink/llvm-jitlink.cpp @@ -609,6 +609,15 @@ Expected<int> runEntryPoint(Session &S, JITEvaluatedSymbol EntryPoint) { return EntryPointPtr(EntryPointArgs.size() - 1, EntryPointArgs.data()); } +struct JITLinkTimers { + TimerGroup JITLinkTimers{"llvm-jitlink timers", + "timers for llvm-jitlink phases"}; + Timer LoadObjectsTimer{ + "load", "time to load/add object files to llvm-jitlink", JITLinkTimers}; + Timer LinkTimer{"link", "time to link object files", JITLinkTimers}; + Timer RunTimer{"run", "time to execute jitlink'd code", JITLinkTimers}; +}; + int main(int argc, char *argv[]) { InitLLVM X(argc, argv); @@ -619,6 +628,10 @@ int main(int argc, char *argv[]) { cl::ParseCommandLineOptions(argc, argv, "llvm jitlink tool"); ExitOnErr.setBanner(std::string(argv[0]) + ": "); + /// If timers are enabled, create a JITLinkTimers instance. + std::unique_ptr<JITLinkTimers> Timers = + ShowTimes ? std::make_unique<JITLinkTimers>() : nullptr; + Session S(getFirstFileTriple()); ExitOnErr(sanitizeArguments(S)); @@ -627,23 +640,16 @@ int main(int argc, char *argv[]) { ExitOnErr(loadProcessSymbols(S)); ExitOnErr(loadDylibs()); - TimerGroup JITLinkTimers("llvm-jitlink timers", - "timers for llvm-jitlink phases"); { - Timer LoadObjectsTimer( - "load", "time to load/add object files to llvm-jitlink", JITLinkTimers); - LoadObjectsTimer.startTimer(); + TimeRegion TR(Timers ? &Timers->LoadObjectsTimer : nullptr); ExitOnErr(loadObjects(S)); - LoadObjectsTimer.stopTimer(); } JITEvaluatedSymbol EntryPoint = 0; { - Timer LinkTimer("link", "time to link object files", JITLinkTimers); - LinkTimer.startTimer(); + TimeRegion TR(Timers ? &Timers->LinkTimer : nullptr); EntryPoint = ExitOnErr(getMainEntryPoint(S)); - LinkTimer.stopTimer(); } if (ShowAddrs) @@ -658,14 +664,9 @@ int main(int argc, char *argv[]) { int Result = 0; { - Timer RunTimer("run", "time to execute jitlink'd code", JITLinkTimers); - RunTimer.startTimer(); + TimeRegion TR(Timers ? &Timers->RunTimer : nullptr); Result = ExitOnErr(runEntryPoint(S, EntryPoint)); - RunTimer.stopTimer(); } - if (ShowTimes) - JITLinkTimers.print(dbgs()); - return Result; } |

