Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions lld/test/ELF/riscv-branch.s
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# REQUIRES: riscv

# RUN: llvm-mc -filetype=obj -triple=riscv32-unknown-elf -mattr=-relax -riscv-asm-relax-branches=0 %s -o %t.rv32.o
# RUN: llvm-mc -filetype=obj -triple=riscv64-unknown-elf -mattr=-relax -riscv-asm-relax-branches=0 %s -o %t.rv64.o
# RUN: llvm-mc -filetype=obj -triple=riscv32-unknown-elf %s -o %t.rv32.o
# RUN: llvm-mc -filetype=obj -triple=riscv64-unknown-elf %s -o %t.rv64.o

# RUN: ld.lld %t.rv32.o --defsym foo=_start+4 --defsym bar=_start -o %t.rv32
# RUN: ld.lld %t.rv64.o --defsym foo=_start+4 --defsym bar=_start -o %t.rv64
Expand Down Expand Up @@ -30,6 +30,8 @@
# RUN: not ld.lld %t.rv64.o --defsym foo=_start+1 --defsym bar=_start-1 -o /dev/null 2>&1 | FileCheck --check-prefix=ERROR-ALIGN %s
# ERROR-ALIGN: improper alignment for relocation R_RISCV_BRANCH: 0x1 is not aligned to 2 bytes

.option exact

.global _start
_start:
beq x0, x0, foo
Expand Down
4 changes: 3 additions & 1 deletion lld/test/ELF/riscv-undefined-weak.s
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# REQUIRES: riscv
# RUN: llvm-mc -filetype=obj -triple=riscv64 /dev/null -o %t2.o
# RUN: ld.lld -shared -soname=t2 %t2.o -o %t2.so
# RUN: llvm-mc -filetype=obj -triple=riscv64 -riscv-asm-relax-branches=0 %s -o %t.o
# RUN: llvm-mc -filetype=obj -triple=riscv64 %s -o %t.o
# RUN: llvm-readobj -r %t.o | FileCheck --check-prefix=RELOC %s

# RUN: ld.lld -e absolute %t.o -o %t
Expand All @@ -12,6 +12,8 @@
# RUN: llvm-objdump -d --no-show-raw-insn %t | FileCheck --check-prefixes=CHECK,PLT %s
# RUN: llvm-readelf -x .data %t | FileCheck --check-prefixes=HEX,HEX-WITH-PLT %s

.option exact

.weak target
.global absolute, relative, branch

Expand Down
5 changes: 0 additions & 5 deletions llvm/lib/Target/RISCV/MCTargetDesc/RISCVAsmBackend.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,6 @@

using namespace llvm;

static cl::opt<bool> RelaxBranches("riscv-asm-relax-branches", cl::init(true),
cl::Hidden);
// Temporary workaround for old linkers that do not support ULEB128 relocations,
// which are abused by DWARF v5 DW_LLE_offset_pair/DW_RLE_offset_pair
// implemented in Clang/LLVM.
Expand Down Expand Up @@ -110,9 +108,6 @@ bool RISCVAsmBackend::fixupNeedsRelaxationAdvanced(const MCFixup &Fixup,
const MCValue &,
uint64_t Value,
bool Resolved) const {
if (!RelaxBranches)
return false;

int64_t Offset = int64_t(Value);
unsigned Kind = Fixup.getTargetKind();

Expand Down
6 changes: 4 additions & 2 deletions llvm/test/ExecutionEngine/JITLink/RISCV/ELF_branch.s
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# RUN: rm -rf %t && mkdir -p %t
# RUN: llvm-mc -triple=riscv64 -filetype=obj -riscv-asm-relax-branches=0 \
# RUN: llvm-mc -triple=riscv64 -filetype=obj \
# RUN: -o %t/elf_riscv64_branch.o %s
# RUN: llvm-mc -triple=riscv32 -filetype=obj -riscv-asm-relax-branches=0 \
# RUN: llvm-mc -triple=riscv32 -filetype=obj \
# RUN: -o %t/elf_riscv32_branch.o %s
# RUN: llvm-jitlink -noexec \
# RUN: -slab-allocate 100Kb -slab-address 0xfff00ff4 -slab-page-size 4096 \
Expand All @@ -13,6 +13,8 @@
# RUN: -check %s %t/elf_riscv32_branch.o
#

.option exact

.text
# Empty main entry point.
.globl main
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@
## Test that long branches are not relaxed with -riscv-asm-relax-branches=0
## Test that long branches are not relaxed with .option exact
# RUN: split-file %s %t
# RUN: llvm-mc -filetype=obj -triple=riscv64 -mattr=+c \
# RUN: -riscv-asm-relax-branches=0 %t/pass.s \
# RUN: %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: %t/fail.s 2>&1 \
# RUN: | FileCheck %t/fail.s

#--- pass.s
.option exact

.text
test_undefined:
## Branches to undefined symbols should not be relaxed
Expand All @@ -33,6 +35,8 @@ test_defined_in_range:
bar:

#--- fail.s
.option exact

.text
## Branches to defined out-of-range symbols should report an error
test_defined_out_of_range:
Expand Down
Loading