[PATCH] D128111: [BOLT] Allow function entry to be a cold fragment

Amir Ayupov via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Sat Jun 18 11:40:14 PDT 2022


This revision was landed with ongoing or failed builds.
This revision was automatically updated to reflect the committed changes.
Closed by commit rG543f13c99b1f: [BOLT] Allow function entry to be a cold fragment (authored by nhuhuan, committed by Amir).

Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D128111/new/

https://reviews.llvm.org/D128111

Files:
  bolt/lib/Rewrite/RewriteInstance.cpp
  bolt/test/X86/shared_object_entry.s


Index: bolt/test/X86/shared_object_entry.s
===================================================================
--- /dev/null
+++ bolt/test/X86/shared_object_entry.s
@@ -0,0 +1,38 @@
+# RUN: llvm-mc -filetype=obj -triple x86_64-unknown-unknown %s -o %t.o
+# RUN: ld.lld %t.o -o %t.so --shared --entry=func1.cold.1 --emit-relocs
+# RUN: llvm-bolt -relocs %t.so -o %t -reorder-functions=hfsort+ \
+# RUN:    -split-functions=3 -reorder-blocks=ext-tsp -split-all-cold \
+# RUN:    -dyno-stats -icf=1 -use-gnu-stack
+
+# Check that an entry point is a cold symbol
+# RUN: llvm-readelf -h %t.so > %t.log
+# RUN: llvm-nm %t.so >> %t.log
+# RUN: FileCheck %s --input-file %t.log
+# CHECK: Entry point address: 0x[[#%X,ENTRY:]]
+# CHECK: [[#%x,ENTRY]] {{.*}} func1.cold.1
+
+.globl func1.cold.1
+.type func1.cold.1, at function
+func1.cold.1:
+  .cfi_startproc
+.L1:
+		movq %rbx, %rdx
+		jmp .L3
+.L2:
+		# exit(0)
+		movq $60, %rax
+		xorq %rdi, %rdi
+		syscall
+  .size func1.cold.1, .-func1.cold.1
+  .cfi_endproc
+
+.globl func1
+.type func1, at function
+func1:
+  .cfi_startproc
+.L3:
+		movq %rax, %rdi
+		jmp .L2
+  call exit
+  .size func1, .-func1
+  .cfi_endproc
Index: bolt/lib/Rewrite/RewriteInstance.cpp
===================================================================
--- bolt/lib/Rewrite/RewriteInstance.cpp
+++ bolt/lib/Rewrite/RewriteInstance.cpp
@@ -5207,8 +5207,6 @@
   if (!Function)
     return 0;
 
-  assert(!Function->isFragment() && "cannot get new address for a fragment");
-
   return Function->getOutputAddress();
 }
 


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D128111.438139.patch
Type: text/x-patch
Size: 1537 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20220618/e385d9f6/attachment.bin>


More information about the llvm-commits mailing list