## Test that long branches are not relaxed with -riscv-asm-relax-branches=0 # RUN: split-file %s %t # RUN: llvm-mc -filetype=obj -triple=riscv64 -mattr=+c \ # RUN: -riscv-asm-relax-branches=0 %t/pass.s \ # RUN: | llvm-objdump -dr -M no-aliases - \ # RUN: | FileCheck %t/pass.s # RUN: not llvm-mc -filetype=obj -triple=riscv64 -mattr=+c -o /dev/null \ # RUN: -riscv-asm-relax-branches=0 %t/fail.s 2>&1 \ # RUN: | FileCheck %t/fail.s #--- pass.s .text test_undefined: ## Branches to undefined symbols should not be relaxed # CHECK: bne a0, a1, {{.*}} # CHECK-NEXT: R_RISCV_BRANCH foo bne a0, a1, foo # CHECK: c.beqz a0, {{.*}} # CHECK-NEXT: R_RISCV_RVC_BRANCH foo c.beqz a0, foo # CHECK: c.j {{.*}} # CHECK-NEXT: R_RISCV_RVC_JUMP foo c.j foo ## Branches to defined in-range symbols should work normally test_defined_in_range: # CHECK: bne a0, a1, {{.*}} bne a0, a1, bar # CHECK: c.beqz a0, {{.*}} c.beqz a0, bar # CHECK: c.j {{.*}} c.j bar bar: #--- fail.s .text ## Branches to defined out-of-range symbols should report an error test_defined_out_of_range: bne a0, a1, 1f # CHECK: :[[#@LINE]]:3: error: fixup value out of range .skip (1 << 12) 1: c.beqz a0, 1f # CHECK: :[[#@LINE]]:3: error: fixup value out of range .skip (1 << 8) 1: c.j 1f # CHECK: :[[#@LINE]]:3: error: fixup value out of range .skip (1 << 11) 1: