xref: /llvm-project/bolt/test/RISCV/function-alignment.s (revision b6b492880f5ac6357d85ba2f3ad8e41fded1d97c)
1*b6b49288SJob Noorman## Test that BOLT uses a minimum function alignment of 4 (or 2 for RVC) bytes.
2*b6b49288SJob Noorman
3*b6b49288SJob Noorman# RUN: llvm-mc -triple=riscv64 -filetype=obj -o %t.o %s
4*b6b49288SJob Noorman# RUN: ld.lld -q -o %t %t.o
5*b6b49288SJob Noorman# RUN: llvm-bolt --align-functions=1 --use-old-text=0 -o %t.bolt %t
6*b6b49288SJob Noorman# RUN: llvm-nm -n %t.bolt | FileCheck %s
7*b6b49288SJob Noorman
8*b6b49288SJob Noorman# RUN: llvm-mc -triple=riscv64 -mattr=+c -filetype=obj -o %t-c.o %s
9*b6b49288SJob Noorman# RUN: ld.lld -q -o %t-c %t-c.o
10*b6b49288SJob Noorman# RUN: llvm-bolt --align-functions=1 --use-old-text=0 -o %t-c.bolt %t-c
11*b6b49288SJob Noorman# RUN: llvm-nm -n %t-c.bolt | FileCheck --check-prefix=CHECK-C %s
12*b6b49288SJob Noorman
13*b6b49288SJob Noorman# CHECK:      {{[048c]}} T _start
14*b6b49288SJob Noorman# CHECK-NEXT: {{[048c]}} T dummy
15*b6b49288SJob Noorman
16*b6b49288SJob Noorman# CHECK-C:      {{[02468ace]}} T _start
17*b6b49288SJob Noorman# CHECK-C-NEXT: {{[02468ace]}} T dummy
18*b6b49288SJob Noorman
19*b6b49288SJob Noorman    .text
20*b6b49288SJob Noorman
21*b6b49288SJob Noorman    # Make sure input binary is only 1 byte aligned. BOLT should increase the
22*b6b49288SJob Noorman    # alignment to 2 or 4 bytes.
23*b6b49288SJob Noorman    .byte 0
24*b6b49288SJob Noorman    .balign 1
25*b6b49288SJob Noorman
26*b6b49288SJob Noorman    .globl _start
27*b6b49288SJob Noorman    .type _start, @function
28*b6b49288SJob Noorman_start:
29*b6b49288SJob Noorman    # Dummy reloc to force relocation mode.
30*b6b49288SJob Noorman    .reloc 0, R_RISCV_NONE
31*b6b49288SJob Noorman    ret
32*b6b49288SJob Noorman    .size _start, .-_start
33*b6b49288SJob Noorman
34*b6b49288SJob Noorman    .globl dummy
35*b6b49288SJob Noorman    .type dummy, @function
36*b6b49288SJob Noormandummy:
37*b6b49288SJob Noorman    ret
38*b6b49288SJob Noorman    .size dummy, .-dummy
39