Skip to content

[BOLT] Sort EntryData #143308

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 6 commits into from
Jun 9, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion bolt/lib/Profile/DataAggregator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -580,8 +580,10 @@ void DataAggregator::processProfile(BinaryContext &BC) {
}
}

for (auto &FuncBranches : NamesToBranches)
for (auto &FuncBranches : NamesToBranches) {
llvm::stable_sort(FuncBranches.second.Data);
llvm::stable_sort(FuncBranches.second.EntryData);
}

for (auto &MemEvents : NamesToMemEvents)
llvm::stable_sort(MemEvents.second.Data);
Expand Down
33 changes: 17 additions & 16 deletions bolt/test/X86/pre-aggregated-perf.test
Original file line number Diff line number Diff line change
Expand Up @@ -36,26 +36,26 @@ RUN: llvm-bolt %t.exe -p %p/Inputs/pre-aggregated.txt --pa -o %t.null | FileChec

CHECK: BOLT-INFO: 4 out of 7 functions in the binary (57.1%) have non-empty execution profile

RUN: cat %t | sort | FileCheck %s -check-prefix=PERF2BOLT
RUN: cat %t.new | FileCheck %s -check-prefix=NEWFORMAT
RUN: FileCheck %s -check-prefix=PERF2BOLT --input-file %t
RUN: FileCheck %s -check-prefix=NEWFORMAT --input-file %t.new

## Test --profile-format option with perf2bolt
RUN: perf2bolt %t.exe -o %t.fdata --pa -p %p/Inputs/pre-aggregated.txt \
RUN: --profile-format=fdata
RUN: cat %t.fdata | sort | FileCheck %s -check-prefix=PERF2BOLT
RUN: FileCheck %s -check-prefix=PERF2BOLT --input-file %t.fdata

RUN: perf2bolt %t.exe -o %t.yaml --pa -p %p/Inputs/pre-aggregated.txt \
RUN: --profile-format=yaml --profile-use-dfs
RUN: cat %t.yaml | FileCheck %s -check-prefix=NEWFORMAT
RUN: FileCheck %s -check-prefix=NEWFORMAT --input-file %t.yaml

## Test --profile-format option with llvm-bolt --aggregate-only
RUN: llvm-bolt %t.exe -o %t.bolt.fdata --pa -p %p/Inputs/pre-aggregated.txt \
RUN: --aggregate-only --profile-format=fdata
RUN: cat %t.bolt.fdata | sort | FileCheck %s -check-prefix=PERF2BOLT
RUN: FileCheck %s -check-prefix=PERF2BOLT --input-file %t.bolt.fdata

RUN: llvm-bolt %t.exe -o %t.bolt.yaml --pa -p %p/Inputs/pre-aggregated.txt \
RUN: --aggregate-only --profile-format=yaml --profile-use-dfs
RUN: cat %t.bolt.yaml | FileCheck %s -check-prefix=NEWFORMAT
RUN: FileCheck %s -check-prefix=NEWFORMAT --input-file %t.bolt.yaml

## Test pre-aggregated basic profile
RUN: perf2bolt %t.exe -o %t --pa -p %p/Inputs/pre-aggregated-basic.txt -o %t.ba \
Expand All @@ -67,16 +67,17 @@ BASIC-ERROR: BOLT-INFO: 0 out of 7 functions in the binary (0.0%) have non-empty
BASIC-SUCCESS: BOLT-INFO: 4 out of 7 functions in the binary (57.1%) have non-empty execution profile
CHECK-BASIC-NL: no_lbr cycles

PERF2BOLT: 0 [unknown] 7f36d18d60c0 1 main 53c 0 2
PERF2BOLT: 1 main 451 1 SolveCubic 0 0 2
PERF2BOLT: 1 main 490 0 [unknown] 4005f0 0 1
PERF2BOLT: 1 main 537 0 [unknown] 400610 0 1
PERF2BOLT: 1 usqrt 30 1 usqrt 32 0 22
PERF2BOLT: 1 usqrt 30 1 usqrt 39 4 33
PERF2BOLT: 1 usqrt 35 1 usqrt 39 0 22
PERF2BOLT: 1 usqrt 3d 1 usqrt 10 0 58
PERF2BOLT: 1 usqrt 3d 1 usqrt 3f 0 22
PERF2BOLT: 1 usqrt a 1 usqrt 10 0 22
PERF2BOLT: 1 frame_dummy/1 1e 1 frame_dummy/1 0 0 1
PERF2BOLT-NEXT: 1 main 451 1 SolveCubic 0 0 2
PERF2BOLT-NEXT: 1 main 490 0 [unknown] 4005f0 0 1
PERF2BOLT-NEXT: 1 main 537 0 [unknown] 400610 0 1
PERF2BOLT-NEXT: 0 [unknown] 7f36d18d60c0 1 main 53c 0 2
PERF2BOLT-NEXT: 1 usqrt a 1 usqrt 10 0 22
PERF2BOLT-NEXT: 1 usqrt 30 1 usqrt 32 0 22
PERF2BOLT-NEXT: 1 usqrt 30 1 usqrt 39 4 33
PERF2BOLT-NEXT: 1 usqrt 35 1 usqrt 39 0 22
PERF2BOLT-NEXT: 1 usqrt 3d 1 usqrt 10 0 58
PERF2BOLT-NEXT: 1 usqrt 3d 1 usqrt 3f 0 22

NEWFORMAT: - name: 'frame_dummy/1'
NEWFORMAT: fid: 3
Expand Down
Loading