diff options
-rw-r--r-- | llvm/lib/Target/Mips/MCTargetDesc/MipsMCCodeEmitter.cpp | 5 | ||||
-rw-r--r-- | llvm/lib/Target/Mips/MCTargetDesc/MipsMCExpr.cpp | 14 | ||||
-rw-r--r-- | llvm/test/DebugInfo/Mips/dwarfdump-tls.ll | 26 |
3 files changed, 10 insertions, 35 deletions
diff --git a/llvm/lib/Target/Mips/MCTargetDesc/MipsMCCodeEmitter.cpp b/llvm/lib/Target/Mips/MCTargetDesc/MipsMCCodeEmitter.cpp index 3d3003a0811..32931c033e5 100644 --- a/llvm/lib/Target/Mips/MCTargetDesc/MipsMCCodeEmitter.cpp +++ b/llvm/lib/Target/Mips/MCTargetDesc/MipsMCCodeEmitter.cpp @@ -613,9 +613,8 @@ getExprOpValue(const MCExpr *Expr, SmallVectorImpl<MCFixup> &Fixups, llvm_unreachable("Unhandled fixup kind!"); break; case MipsMCExpr::MEK_DTPREL: - // MEK_DTPREL is used for marking TLS DIEExpr only - // and contains a regular sub-expression. - return getExprOpValue(MipsExpr->getSubExpr(), Fixups, STI); + llvm_unreachable("MEK_DTPREL is used for TLS DIEExpr only"); + break; case MipsMCExpr::MEK_CALL_HI16: FixupKind = Mips::fixup_Mips_CALL_HI16; break; diff --git a/llvm/lib/Target/Mips/MCTargetDesc/MipsMCExpr.cpp b/llvm/lib/Target/Mips/MCTargetDesc/MipsMCExpr.cpp index 680806c4deb..42bc847bb61 100644 --- a/llvm/lib/Target/Mips/MCTargetDesc/MipsMCExpr.cpp +++ b/llvm/lib/Target/Mips/MCTargetDesc/MipsMCExpr.cpp @@ -43,10 +43,8 @@ void MipsMCExpr::printImpl(raw_ostream &OS, const MCAsmInfo *MAI) const { llvm_unreachable("MEK_None and MEK_Special are invalid"); break; case MEK_DTPREL: - // MEK_DTPREL is used for marking TLS DIEExpr only - // and contains a regular sub-expression. - getSubExpr()->print(OS, MAI, true); - return; + llvm_unreachable("MEK_DTPREL is used for TLS DIEExpr only"); + break; case MEK_CALL_HI16: OS << "%call_hi"; break; @@ -162,9 +160,7 @@ MipsMCExpr::evaluateAsRelocatableImpl(MCValue &Res, case MEK_Special: llvm_unreachable("MEK_None and MEK_Special are invalid"); case MEK_DTPREL: - // MEK_DTPREL is used for marking TLS DIEExpr only - // and contains a regular sub-expression. - return getSubExpr()->evaluateAsRelocatable(Res, Layout, Fixup); + llvm_unreachable("MEK_DTPREL is used for TLS DIEExpr only"); case MEK_DTPREL_HI: case MEK_DTPREL_LO: case MEK_GOT: @@ -252,6 +248,9 @@ void MipsMCExpr::fixELFSymbolsInTLSFixups(MCAssembler &Asm) const { case MEK_Special: llvm_unreachable("MEK_None and MEK_Special are invalid"); break; + case MEK_DTPREL: + llvm_unreachable("MEK_DTPREL is used for TLS DIEExpr only"); + break; case MEK_CALL_HI16: case MEK_CALL_LO16: case MEK_GOT: @@ -274,7 +273,6 @@ void MipsMCExpr::fixELFSymbolsInTLSFixups(MCAssembler &Asm) const { if (const MipsMCExpr *E = dyn_cast<const MipsMCExpr>(getSubExpr())) E->fixELFSymbolsInTLSFixups(Asm); break; - case MEK_DTPREL: case MEK_DTPREL_HI: case MEK_DTPREL_LO: case MEK_TLSLDM: diff --git a/llvm/test/DebugInfo/Mips/dwarfdump-tls.ll b/llvm/test/DebugInfo/Mips/dwarfdump-tls.ll index 6f5fc61eecd..6aa429adb41 100644 --- a/llvm/test/DebugInfo/Mips/dwarfdump-tls.ll +++ b/llvm/test/DebugInfo/Mips/dwarfdump-tls.ll @@ -1,34 +1,12 @@ -; RUN: llc -O0 -march=mips -mcpu=mips32r2 -filetype=obj \ -; RUN: -split-dwarf-file=foo.dwo -o=%t-32.o < %s +; RUN: llc -O0 -march=mips -mcpu=mips32r2 -filetype=obj -o=%t-32.o < %s ; RUN: llvm-dwarfdump %t-32.o 2>&1 | FileCheck %s -; RUN: llc -O0 -march=mips64 -mcpu=mips64r2 -filetype=obj \ -; RUN: -split-dwarf-file=foo.dwo -o=%t-64.o < %s +; RUN: llc -O0 -march=mips64 -mcpu=mips64r2 -filetype=obj -o=%t-64.o < %s ; RUN: llvm-dwarfdump %t-64.o 2>&1 | FileCheck %s -; RUN: llc -O0 -march=mips -mcpu=mips32r2 -filetype=asm \ -; RUN: -split-dwarf-file=foo.dwo < %s | FileCheck -check-prefix=ASM32 %s -; RUN: llc -O0 -march=mips64 -mcpu=mips64r2 -filetype=asm \ -; RUN: -split-dwarf-file=foo.dwo < %s | FileCheck -check-prefix=ASM64 %s - @x = thread_local global i32 5, align 4, !dbg !0 ; CHECK-NOT: error: failed to compute relocation: R_MIPS_TLS_DTPREL -; CHECK: DW_AT_name ("x") -; CHECK-NEXT: DW_AT_type (0x00000025 "int") -; CHECK-NEXT: DW_AT_external (true) -; CHECK-NEXT: DW_AT_decl_file (0x01) -; CHECK-NEXT: DW_AT_decl_line (1) -; CHECK-NEXT: DW_AT_location (DW_OP_GNU_const_index 0x0, DW_OP_GNU_push_tls_address) - -; ASM32: .section .debug_addr -; ASM32-NEXT: $addr_table_base0: -; ASM32-NEXT: .4byte x+32768 - -; ASM64: .section .debug_addr -; ASM64-NEXT: .Laddr_table_base0: -; ASM64-NEXT: .8byte x+32768 - !llvm.dbg.cu = !{!2} !llvm.module.flags = !{!7, !8} |