diff --git a/bolt/lib/Profile/DataAggregator.cpp b/bolt/lib/Profile/DataAggregator.cpp index c011a8d9f76b6..8da11c83a0383 100644 --- a/bolt/lib/Profile/DataAggregator.cpp +++ b/bolt/lib/Profile/DataAggregator.cpp @@ -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); diff --git a/bolt/test/X86/pre-aggregated-perf.test b/bolt/test/X86/pre-aggregated-perf.test index 92e093c238e00..b0af4b96058f4 100644 --- a/bolt/test/X86/pre-aggregated-perf.test +++ b/bolt/test/X86/pre-aggregated-perf.test @@ -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 \ @@ -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