aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bolt/lib/Profile/DataAggregator.cpp5
-rw-r--r--bolt/lib/Rewrite/RewriteInstance.cpp15
-rw-r--r--bolt/test/X86/unclaimed-jt-entries.s18
3 files changed, 18 insertions, 20 deletions
diff --git a/bolt/lib/Profile/DataAggregator.cpp b/bolt/lib/Profile/DataAggregator.cpp
index 905728de..3604fdd 100644
--- a/bolt/lib/Profile/DataAggregator.cpp
+++ b/bolt/lib/Profile/DataAggregator.cpp
@@ -906,11 +906,10 @@ DataAggregator::getFallthroughsInTrace(BinaryFunction &BF, const Trace &Trace,
if (BF.isPseudo())
return Branches;
- if (!BF.isSimple())
+ // Can only record traces in CFG state
+ if (!BF.hasCFG())
return std::nullopt;
- assert(BF.hasCFG() && "can only record traces in CFG state");
-
const BinaryBasicBlock *FromBB = BF.getBasicBlockContainingOffset(From);
const BinaryBasicBlock *ToBB = BF.getBasicBlockContainingOffset(To);
diff --git a/bolt/lib/Rewrite/RewriteInstance.cpp b/bolt/lib/Rewrite/RewriteInstance.cpp
index f1b94e4..9f243a1 100644
--- a/bolt/lib/Rewrite/RewriteInstance.cpp
+++ b/bolt/lib/Rewrite/RewriteInstance.cpp
@@ -714,21 +714,6 @@ Error RewriteInstance::run() {
preprocessProfileData();
- // Skip disassembling if we have a translation table and we are running an
- // aggregation job.
- if (opts::AggregateOnly && BAT->enabledFor(InputFile)) {
- // YAML profile in BAT mode requires CFG for .bolt.org.text functions
- if (!opts::SaveProfile.empty() ||
- opts::ProfileFormat == opts::ProfileFormatKind::PF_YAML) {
- selectFunctionsToProcess();
- disassembleFunctions();
- processMetadataPreCFG();
- buildFunctionsCFG();
- }
- processProfileData();
- return Error::success();
- }
-
selectFunctionsToProcess();
readDebugInfo();
diff --git a/bolt/test/X86/unclaimed-jt-entries.s b/bolt/test/X86/unclaimed-jt-entries.s
index 1102e4a..31b72c4 100644
--- a/bolt/test/X86/unclaimed-jt-entries.s
+++ b/bolt/test/X86/unclaimed-jt-entries.s
@@ -18,6 +18,18 @@
# RUN: llvm-mc -filetype=obj -triple x86_64-unknown-unknown %s -o %t.o
# RUN: %clang %cflags -no-pie %t.o -o %t.exe -Wl,-q
+
+## Check that non-simple function profile is emitted in perf2bolt mode
+# RUN: link_fdata %s %t.exe %t.pa PREAGG
+# RUN: llvm-strip -N L5 -N L5_ret %t.exe
+# RUN: perf2bolt %t.exe -p %t.pa --pa -o %t.fdata -strict=0 -print-profile \
+# RUN: -print-only=main | FileCheck %s --check-prefix=CHECK-P2B
+# CHECK-P2B: PERF2BOLT: traces mismatching disassembled function contents: 0
+# CHECK-P2B: Binary Function "main"
+# CHECK-P2B: IsSimple : 0
+# RUN: FileCheck %s --input-file %t.fdata --check-prefix=CHECK-FDATA
+# CHECK-FDATA: 1 main 0 1 main 7 0 1
+
# RUN: llvm-bolt %t.exe -v=1 -o %t.out 2>&1 | FileCheck %s
# CHECK: BOLT-WARNING: unclaimed data to code reference (possibly an unrecognized jump table entry) to .Ltmp[[#]] in main
@@ -33,8 +45,10 @@
.size main, .Lend-main
main:
jmp *L4-24(,%rdi,8)
-.L5:
+# PREAGG: T #main# #L5# #L5_ret# 1
+L5:
movl $4, %eax
+L5_ret:
ret
.L9:
movl $2, %eax
@@ -58,7 +72,7 @@ L4:
.quad .L3
.quad .L6
.quad .L3
- .quad .L5
+ .quad L5
.quad .L3
.quad .L3
.quad .L3