summaryrefslogtreecommitdiffstats
path: root/llvm/tools/llvm-jitlink
diff options
context:
space:
mode:
authorLang Hames <lhames@gmail.com>2019-08-27 15:51:19 +0000
committerLang Hames <lhames@gmail.com>2019-08-27 15:51:19 +0000
commit6fd3960066f1f04b4e35a232e91efd11774f4f59 (patch)
tree0af0c4a37c088a292c14bcbff44161fed1e25a01 /llvm/tools/llvm-jitlink
parentc48f1f6da690b721a211f6d5083b6a929b58e803 (diff)
downloadbcm5719-llvm-6fd3960066f1f04b4e35a232e91efd11774f4f59.tar.gz
bcm5719-llvm-6fd3960066f1f04b4e35a232e91efd11774f4f59.zip
[JITLink] Add timers and -show-times option to llvm-jitlink.
The timers track time spent loading objects, linking, and (if applicable) running JIT-link'd code. llvm-svn: 370075
Diffstat (limited to 'llvm/tools/llvm-jitlink')
-rw-r--r--llvm/tools/llvm-jitlink/llvm-jitlink.cpp38
1 files changed, 35 insertions, 3 deletions
diff --git a/llvm/tools/llvm-jitlink/llvm-jitlink.cpp b/llvm/tools/llvm-jitlink/llvm-jitlink.cpp
index 1e449153ad8..96c4d671b83 100644
--- a/llvm/tools/llvm-jitlink/llvm-jitlink.cpp
+++ b/llvm/tools/llvm-jitlink/llvm-jitlink.cpp
@@ -33,6 +33,7 @@
#include "llvm/Support/MemoryBuffer.h"
#include "llvm/Support/TargetRegistry.h"
#include "llvm/Support/TargetSelect.h"
+#include "llvm/Support/Timer.h"
#include <list>
#include <string>
@@ -94,6 +95,10 @@ static cl::opt<bool> ShowSizes(
cl::desc("Show sizes pre- and post-dead stripping, and allocations"),
cl::init(false));
+static cl::opt<bool> ShowTimes("show-times",
+ cl::desc("Show times for llvm-jitlink phases"),
+ cl::init(false));
+
static cl::opt<bool> ShowRelocatedSectionContents(
"show-relocated-section-contents",
cl::desc("show section contents after fixups have been applied"),
@@ -622,9 +627,25 @@ int main(int argc, char *argv[]) {
ExitOnErr(loadProcessSymbols(S));
ExitOnErr(loadDylibs());
- ExitOnErr(loadObjects(S));
+ TimerGroup JITLinkTimers;
+ // ("llvm-jitlink timers",
+ // "timers for llvm-jitlink phases");
- auto EntryPoint = ExitOnErr(getMainEntryPoint(S));
+ {
+ Timer LoadObjectsTimer(
+ "load", "time to load/add object files to llvm-jitlink", JITLinkTimers);
+ LoadObjectsTimer.startTimer();
+ ExitOnErr(loadObjects(S));
+ LoadObjectsTimer.stopTimer();
+ }
+
+ JITEvaluatedSymbol EntryPoint = 0;
+ {
+ Timer LinkTimer("link", "time to link object files", JITLinkTimers);
+ LinkTimer.startTimer();
+ EntryPoint = ExitOnErr(getMainEntryPoint(S));
+ LinkTimer.stopTimer();
+ }
if (ShowAddrs)
S.dumpSessionInfo(outs());
@@ -636,5 +657,16 @@ int main(int argc, char *argv[]) {
if (NoExec)
return 0;
- return ExitOnErr(runEntryPoint(S, EntryPoint));
+ int Result = 0;
+ {
+ Timer RunTimer("run", "time to execute jitlink'd code", JITLinkTimers);
+ RunTimer.startTimer();
+ Result = ExitOnErr(runEntryPoint(S, EntryPoint));
+ RunTimer.stopTimer();
+ }
+
+ if (ShowTimes)
+ JITLinkTimers.print(dbgs());
+
+ return Result;
}
OpenPOWER on IntegriCloud