| ## A label difference separated by an alignment directive, when the |
| ## referenced symbols are in a non-executable section with instructions, |
| ## should generate ADD/SUB relocations. |
| ## https://github.com/llvm/llvm-project/pull/76552 |
| |
| # RUN: llvm-mc --filetype=obj --triple=riscv64 --mattr=+relax %s \ |
| # RUN: | llvm-readobj -r - | FileCheck --check-prefixes=CHECK,RELAX %s |
| # RUN: llvm-mc --filetype=obj --triple=riscv64 --mattr=-relax %s \ |
| # RUN: | llvm-readobj -r - | FileCheck %s |
| |
| .section ".dummy", "a" |
| .L1: |
| call func |
| .p2align 3 |
| .L2: |
| .dword .L2 - .L1 |
| |
| # CHECK: Relocations [ |
| # CHECK-NEXT: Section ({{.*}}) .rela.dummy { |
| # CHECK-NEXT: 0x0 R_RISCV_CALL_PLT func 0x0 |
| # RELAX-NEXT: 0x0 R_RISCV_RELAX - 0x0 |
| # CHECK-NEXT: 0x8 R_RISCV_ADD64 .L2 0x0 |
| # CHECK-NEXT: 0x8 R_RISCV_SUB64 .L1 0x0 |
| # CHECK-NEXT: } |
| # CHECK-NEXT: ] |