/// Check that functions with internal relocations are considered "simple" and /// get transformed by BOLT. The tests rely on the "remove-nops" optimization: /// if nops got removed from the function, it got transformed by BOLT. // RUN: llvm-mc -triple riscv64 -filetype=obj -o %t.o %s // RUN: ld.lld --emit-relocs -o %t %t.o // RUN: llvm-bolt -o %t.bolt %t // RUN: llvm-objdump -d %t.bolt | FileCheck %s // RUN: llvm-mc -triple riscv32 -filetype=obj -o %t.rv32.o %s // RUN: ld.lld --emit-relocs -o %t.rv32 %t.rv32.o // RUN: llvm-bolt -o %t.rv32.bolt %t.rv32 // RUN: llvm-objdump -d %t.rv32.bolt | FileCheck %s .text .globl _start .p2align 2 // CHECK: <_start>: // CHECK-NEXT: j 0x{{.*}} <_start> _start: nop 1: j 1b .size _start, .-_start .globl f .p2align 2 // CHECK: : // CHECK-NEXT: auipc a0, [[#]] // CHECK-NEXT: addi a0, a0, [[#]] f: nop 1: /// Same as "la a0, g" but more explicit auipc a0, %pcrel_hi(g) addi a0, a0, %pcrel_lo(1b) ret .size f, .-f .globl g .p2align 2 g: ret .size g, .-g