[BOLT][NFC] Print timers in perf2bolt invocation

When BOLT is run in AggregateOnly mode (perf2bolt), it exits with code
zero so destructors are not run thus TimerGroup never prints the timers.

Add explicit printing just before the exit to honor options requesting
timers (`--time-rewrite`, `--time-aggr`).

Test Plan: updated bolt/test/timers.c

Reviewers: ayermolo, maksfb, rafaelauler, dcci

Reviewed By: dcci

Pull Request: https://github.com/llvm/llvm-project/pull/101270
This commit is contained in:
Amir Ayupov 2024-07-31 22:14:52 -07:00 committed by GitHub
parent fb97b4f962
commit 3f51bec466
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 8 additions and 0 deletions

View File

@ -3200,6 +3200,7 @@ void RewriteInstance::processProfileData() {
if (opts::AggregateOnly) {
PrintProgramStats PPS(&*BAT);
BC->logBOLTErrorsAndQuitOnFatal(PPS.runOnFunctions(*BC));
TimerGroup::printAll(outs());
exit(0);
}
}

View File

@ -3,6 +3,9 @@
# RUN: link_fdata %s %t.exe %t.fdata
# RUN: llvm-bolt %t.exe -o %t.null --data %t.fdata -w %t.yaml --time-rewrite \
# RUN: 2>&1 | FileCheck %s
# RUN: link_fdata %s %t.exe %t.preagg PREAGG
# RUN: perf2bolt %t.exe -o %t.null -p %t.preagg --pa --time-rewrite \
# RUN: 2>&1 | FileCheck %s --check-prefix=CHECK-P2B
# CHECK-DAG: update metadata post-emit
# CHECK-DAG: process section metadata
@ -10,6 +13,10 @@
# CHECK-DAG: process metadata post-CFG
# CHECK-DAG: finalize metadata pre-emit
# CHECK-P2B-DAG: process section metadata
# CHECK-P2B-DAG: process metadata pre-CFG
# FDATA: 0 [unknown] 0 1 main 0 1 0
# PREAGG: B X:0 #main# 1 0
*/
int main() { return 0; }