Index: lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp =================================================================== --- lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp +++ lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp @@ -399,6 +399,7 @@ 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: Index: test/CodeGen/X86/tailjmp_gotpcrel_relax_relocation.ll =================================================================== --- test/CodeGen/X86/tailjmp_gotpcrel_relax_relocation.ll +++ 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 }