diff options
| -rw-r--r-- | llvm/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp | 1 | ||||
| -rw-r--r-- | llvm/test/CodeGen/X86/tailjmp_gotpcrel_relax_relocation.ll | 15 |
2 files changed, 16 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp b/llvm/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp index 9e2d6220985..7e434175ec5 100644 --- a/llvm/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp +++ b/llvm/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp @@ -399,6 +399,7 @@ void X86MCCodeEmitter::emitMemModRMByte(const MCInst &MI, unsigned Op, return X86::reloc_riprel_4byte_movq_load; case X86::CALL64m: case X86::JMP64m: + case X86::TAILJMPm64: case X86::TEST64mr: case X86::ADC64rm: case X86::ADD64rm: diff --git a/llvm/test/CodeGen/X86/tailjmp_gotpcrel_relax_relocation.ll b/llvm/test/CodeGen/X86/tailjmp_gotpcrel_relax_relocation.ll new file mode 100644 index 00000000000..3fb161cc2cb --- /dev/null +++ b/llvm/test/CodeGen/X86/tailjmp_gotpcrel_relax_relocation.ll @@ -0,0 +1,15 @@ +; RUN: llc -filetype=obj -relax-elf-relocations=true -mtriple=x86_64-linux-gnu -o - %s | llvm-objdump - -d -r | FileCheck %s + +; CHECK: jmpq *(%rip) +; CHECK-NEXT: R_X86_64_GOTPCRELX + +define i32 @main() { +entry: + %call = tail call i32 @foo() + ret i32 %call +} + +; Function Attrs: nonlazybind +declare i32 @foo() #1 + +attributes #1 = { nonlazybind } |

