Skip to content

Commit 200415c

Browse files
committed
[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
1 parent e452633 commit 200415c

File tree

1 file changed

+16
-15
lines changed

1 file changed

+16
-15
lines changed

llvm/tools/llvm-jitlink/llvm-jitlink.cpp

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -609,6 +609,15 @@ Expected<int> runEntryPoint(Session &S, JITEvaluatedSymbol EntryPoint) {
609609
return EntryPointPtr(EntryPointArgs.size() - 1, EntryPointArgs.data());
610610
}
611611

612+
struct JITLinkTimers {
613+
TimerGroup JITLinkTimers{"llvm-jitlink timers",
614+
"timers for llvm-jitlink phases"};
615+
Timer LoadObjectsTimer{
616+
"load", "time to load/add object files to llvm-jitlink", JITLinkTimers};
617+
Timer LinkTimer{"link", "time to link object files", JITLinkTimers};
618+
Timer RunTimer{"run", "time to execute jitlink'd code", JITLinkTimers};
619+
};
620+
612621
int main(int argc, char *argv[]) {
613622
InitLLVM X(argc, argv);
614623

@@ -619,6 +628,10 @@ int main(int argc, char *argv[]) {
619628
cl::ParseCommandLineOptions(argc, argv, "llvm jitlink tool");
620629
ExitOnErr.setBanner(std::string(argv[0]) + ": ");
621630

631+
/// If timers are enabled, create a JITLinkTimers instance.
632+
std::unique_ptr<JITLinkTimers> Timers =
633+
ShowTimes ? std::make_unique<JITLinkTimers>() : nullptr;
634+
622635
Session S(getFirstFileTriple());
623636

624637
ExitOnErr(sanitizeArguments(S));
@@ -627,23 +640,16 @@ int main(int argc, char *argv[]) {
627640
ExitOnErr(loadProcessSymbols(S));
628641
ExitOnErr(loadDylibs());
629642

630-
TimerGroup JITLinkTimers("llvm-jitlink timers",
631-
"timers for llvm-jitlink phases");
632643

633644
{
634-
Timer LoadObjectsTimer(
635-
"load", "time to load/add object files to llvm-jitlink", JITLinkTimers);
636-
LoadObjectsTimer.startTimer();
645+
TimeRegion TR(Timers ? &Timers->LoadObjectsTimer : nullptr);
637646
ExitOnErr(loadObjects(S));
638-
LoadObjectsTimer.stopTimer();
639647
}
640648

641649
JITEvaluatedSymbol EntryPoint = 0;
642650
{
643-
Timer LinkTimer("link", "time to link object files", JITLinkTimers);
644-
LinkTimer.startTimer();
651+
TimeRegion TR(Timers ? &Timers->LinkTimer : nullptr);
645652
EntryPoint = ExitOnErr(getMainEntryPoint(S));
646-
LinkTimer.stopTimer();
647653
}
648654

649655
if (ShowAddrs)
@@ -658,14 +664,9 @@ int main(int argc, char *argv[]) {
658664

659665
int Result = 0;
660666
{
661-
Timer RunTimer("run", "time to execute jitlink'd code", JITLinkTimers);
662-
RunTimer.startTimer();
667+
TimeRegion TR(Timers ? &Timers->RunTimer : nullptr);
663668
Result = ExitOnErr(runEntryPoint(S, EntryPoint));
664-
RunTimer.stopTimer();
665669
}
666670

667-
if (ShowTimes)
668-
JITLinkTimers.print(dbgs());
669-
670671
return Result;
671672
}

0 commit comments

Comments
 (0)