xref: /llvm-project/bolt/test/X86/bug-function-layout-execount.s (revision 11791ae7b0b05b8bd8d806331ff51da618912cf8)
1*11791ae7SSayhaan Siddiqui## Verifies that llvm-bolt correctly sorts functions by their execution counts.
29460ebd1Sspupyrev
3d158ee57SHans Wennborg# REQUIRES: x86_64-linux, asserts
4d158ee57SHans Wennborg
59460ebd1Sspupyrev# RUN: llvm-mc -filetype=obj -triple x86_64-unknown-unknown %s -o %t.o
69460ebd1Sspupyrev# RUN: link_fdata %s %t.o %t.fdata
79460ebd1Sspupyrev# RUN: %clang %cflags %t.o -o %t.exe -Wl,-q
89460ebd1Sspupyrev# RUN: llvm-bolt %t.exe --data %t.fdata --lite --reorder-functions=exec-count \
9ab14eb23SAmir Ayupov# RUN:   -v=2 --debug-only=hfsort -o %t.null 2>&1 | FileCheck %s
109460ebd1Sspupyrev
119460ebd1Sspupyrev# CHECK: Starting pass: reorder-functions
129460ebd1Sspupyrev# CHECK-NEXT: hot func func2 (1500)
139460ebd1Sspupyrev# CHECK-NEXT: hot func func1 (500)
149460ebd1Sspupyrev# CHECK-NEXT: hot func main (400)
159460ebd1Sspupyrev# CHECK-NEXT: hot func func5 (110)
169460ebd1Sspupyrev# CHECK-NEXT: hot func func3 (100)
179460ebd1Sspupyrev# CHECK-NEXT: hot func func4 (99)
189460ebd1Sspupyrev
199460ebd1Sspupyrev  .text
209460ebd1Sspupyrev  .globl main
219460ebd1Sspupyrev  .type main, %function
229460ebd1Sspupyrevmain:
239460ebd1Sspupyrev# FDATA: 0 [unknown] 0 1 main 0 1 400
249460ebd1Sspupyrev  .cfi_startproc
259460ebd1Sspupyrev  call func1
269460ebd1Sspupyrev  retq
279460ebd1Sspupyrev  .size _start, .-_start
289460ebd1Sspupyrev  .cfi_endproc
299460ebd1Sspupyrev
309460ebd1Sspupyrev  .globl  func1
319460ebd1Sspupyrev  .type func1,@function
329460ebd1Sspupyrevfunc1:
339460ebd1Sspupyrev# FDATA: 0 [unknown] 0 1 func1 0 1 500
349460ebd1Sspupyrev  .cfi_startproc
359460ebd1Sspupyrev  retq
369460ebd1Sspupyrev  .size func1, .-func1
379460ebd1Sspupyrev  .cfi_endproc
389460ebd1Sspupyrev
399460ebd1Sspupyrev  .globl  func2
409460ebd1Sspupyrev  .type func2,@function
419460ebd1Sspupyrevfunc2:
429460ebd1Sspupyrev# FDATA: 0 [unknown] 0 1 func2 0 1 1500
439460ebd1Sspupyrev  .cfi_startproc
449460ebd1Sspupyrev  retq
459460ebd1Sspupyrev  .size func2, .-func2
469460ebd1Sspupyrev  .cfi_endproc
479460ebd1Sspupyrev
489460ebd1Sspupyrev  .globl  func3
499460ebd1Sspupyrev  .type func3,@function
509460ebd1Sspupyrevfunc3:
519460ebd1Sspupyrev# FDATA: 0 [unknown] 0 1 func3 0 1 100
529460ebd1Sspupyrev  .cfi_startproc
539460ebd1Sspupyrev  retq
549460ebd1Sspupyrev  .size func3, .-func3
559460ebd1Sspupyrev  .cfi_endproc
569460ebd1Sspupyrev
579460ebd1Sspupyrev  .globl  func4
589460ebd1Sspupyrev  .type func4,@function
599460ebd1Sspupyrevfunc4:
609460ebd1Sspupyrev# FDATA: 0 [unknown] 0 1 func4 0 1 99
619460ebd1Sspupyrev  .cfi_startproc
629460ebd1Sspupyrev  retq
639460ebd1Sspupyrev  .size func4, .-func4
649460ebd1Sspupyrev  .cfi_endproc
659460ebd1Sspupyrev
669460ebd1Sspupyrev  .globl  func5
679460ebd1Sspupyrev  .type func5,@function
689460ebd1Sspupyrevfunc5:
699460ebd1Sspupyrev# FDATA: 0 [unknown] 0 1 func5 0 1 110
709460ebd1Sspupyrev  .cfi_startproc
719460ebd1Sspupyrev  retq
729460ebd1Sspupyrev  .size func5, .-func5
739460ebd1Sspupyrev  .cfi_endproc
74