<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">Hi Simon,<div class=""><br class=""></div><div class="">This commit breaks some of the green dragon bots, e.g.: <a href="http://green.lab.llvm.org/green/job/clang-stage1-cmake-RA-incremental/57382/" class="">http://green.lab.llvm.org/green/job/clang-stage1-cmake-RA-incremental/57382/</a></div><div class=""><br class=""></div><div class="">I’m going to revert in 10 minutes unless you’re working on a fix.</div><div class=""><br class=""></div><div class="">Thanks,</div><div class="">Amara<br class=""><div><br class=""><blockquote type="cite" class=""><div class="">On Jan 23, 2019, at 2:02 PM, Simon Atanasyan via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org" class="">llvm-commits@lists.llvm.org</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="">Author: atanasyan<br class="">Date: Wed Jan 23 14:02:53 2019<br class="">New Revision: 351987<br class=""><br class="">URL: <a href="http://llvm.org/viewvc/llvm-project?rev=351987&view=rev" class="">http://llvm.org/viewvc/llvm-project?rev=351987&view=rev</a><br class="">Log:<br class="">[mips] Handle MipsMCExpr sub-expression for the MEK_DTPREL tag<br class=""><br class="">This is a fix for a regression introduced by the rL348194 commit. In<br class="">that change new type (MEK_DTPREL) of MipsMCExpr expression was added,<br class="">but in some places of the code this type of expression considered as<br class="">unexpected.<br class=""><br class="">This change fixes the bug. The MEK_DTPREL type of expression is used for<br class="">marking TLS DIEExpr only and contains a regular sub-expression. Where we<br class="">need to handle the expression, we retrieve the sub-expression and<br class="">handle it in a common way.<br class=""><br class="">Modified:<br class="">    llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsMCCodeEmitter.cpp<br class="">    llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsMCExpr.cpp<br class="">    llvm/trunk/test/DebugInfo/Mips/dwarfdump-tls.ll<br class=""><br class="">Modified: llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsMCCodeEmitter.cpp<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsMCCodeEmitter.cpp?rev=351987&r1=351986&r2=351987&view=diff" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsMCCodeEmitter.cpp?rev=351987&r1=351986&r2=351987&view=diff</a><br class="">==============================================================================<br class="">--- llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsMCCodeEmitter.cpp (original)<br class="">+++ llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsMCCodeEmitter.cpp Wed Jan 23 14:02:53 2019<br class="">@@ -613,8 +613,9 @@ getExprOpValue(const MCExpr *Expr, Small<br class="">       llvm_unreachable("Unhandled fixup kind!");<br class="">       break;<br class="">     case MipsMCExpr::MEK_DTPREL:<br class="">-      llvm_unreachable("MEK_DTPREL is used for TLS DIEExpr only");<br class="">-      break;<br class="">+      // MEK_DTPREL is used for marking TLS DIEExpr only<br class="">+      // and contains a regular sub-expression.<br class="">+      return getExprOpValue(MipsExpr->getSubExpr(), Fixups, STI);<br class="">     case MipsMCExpr::MEK_CALL_HI16:<br class="">       FixupKind = Mips::fixup_Mips_CALL_HI16;<br class="">       break;<br class=""><br class="">Modified: llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsMCExpr.cpp<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsMCExpr.cpp?rev=351987&r1=351986&r2=351987&view=diff" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsMCExpr.cpp?rev=351987&r1=351986&r2=351987&view=diff</a><br class="">==============================================================================<br class="">--- llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsMCExpr.cpp (original)<br class="">+++ llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsMCExpr.cpp Wed Jan 23 14:02:53 2019<br class="">@@ -43,8 +43,10 @@ void MipsMCExpr::printImpl(raw_ostream &<br class="">     llvm_unreachable("MEK_None and MEK_Special are invalid");<br class="">     break;<br class="">   case MEK_DTPREL:<br class="">-    llvm_unreachable("MEK_DTPREL is used for TLS DIEExpr only");<br class="">-    break;<br class="">+    // MEK_DTPREL is used for marking TLS DIEExpr only<br class="">+    // and contains a regular sub-expression.<br class="">+    getSubExpr()->print(OS, MAI, true);<br class="">+    return;<br class="">   case MEK_CALL_HI16:<br class="">     OS << "%call_hi";<br class="">     break;<br class="">@@ -160,7 +162,9 @@ MipsMCExpr::evaluateAsRelocatableImpl(MC<br class="">     case MEK_Special:<br class="">       llvm_unreachable("MEK_None and MEK_Special are invalid");<br class="">     case MEK_DTPREL:<br class="">-      llvm_unreachable("MEK_DTPREL is used for TLS DIEExpr only");<br class="">+      // MEK_DTPREL is used for marking TLS DIEExpr only<br class="">+      // and contains a regular sub-expression.<br class="">+      return getSubExpr()->evaluateAsRelocatable(Res, Layout, Fixup);<br class="">     case MEK_DTPREL_HI:<br class="">     case MEK_DTPREL_LO:<br class="">     case MEK_GOT:<br class="">@@ -248,9 +252,6 @@ void MipsMCExpr::fixELFSymbolsInTLSFixup<br class="">   case MEK_Special:<br class="">     llvm_unreachable("MEK_None and MEK_Special are invalid");<br class="">     break;<br class="">-  case MEK_DTPREL:<br class="">-    llvm_unreachable("MEK_DTPREL is used for TLS DIEExpr only");<br class="">-    break;<br class="">   case MEK_CALL_HI16:<br class="">   case MEK_CALL_LO16:<br class="">   case MEK_GOT:<br class="">@@ -273,6 +274,7 @@ void MipsMCExpr::fixELFSymbolsInTLSFixup<br class="">     if (const MipsMCExpr *E = dyn_cast<const MipsMCExpr>(getSubExpr()))<br class="">       E->fixELFSymbolsInTLSFixups(Asm);<br class="">     break;<br class="">+  case MEK_DTPREL:<br class="">   case MEK_DTPREL_HI:<br class="">   case MEK_DTPREL_LO:<br class="">   case MEK_TLSLDM:<br class=""><br class="">Modified: llvm/trunk/test/DebugInfo/Mips/dwarfdump-tls.ll<br class="">URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/Mips/dwarfdump-tls.ll?rev=351987&r1=351986&r2=351987&view=diff" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/Mips/dwarfdump-tls.ll?rev=351987&r1=351986&r2=351987&view=diff</a><br class="">==============================================================================<br class="">--- llvm/trunk/test/DebugInfo/Mips/dwarfdump-tls.ll (original)<br class="">+++ llvm/trunk/test/DebugInfo/Mips/dwarfdump-tls.ll Wed Jan 23 14:02:53 2019<br class="">@@ -1,12 +1,34 @@<br class="">-; RUN: llc -O0 -march=mips -mcpu=mips32r2 -filetype=obj -o=%t-32.o < %s<br class="">+; RUN: llc -O0 -march=mips -mcpu=mips32r2 -filetype=obj \<br class="">+; RUN:     -split-dwarf-file=foo.dwo -o=%t-32.o < %s<br class=""> ; RUN: llvm-dwarfdump %t-32.o 2>&1 | FileCheck %s<br class="">-; RUN: llc -O0 -march=mips64 -mcpu=mips64r2 -filetype=obj -o=%t-64.o < %s<br class="">+; RUN: llc -O0 -march=mips64 -mcpu=mips64r2 -filetype=obj \<br class="">+; RUN:     -split-dwarf-file=foo.dwo -o=%t-64.o < %s<br class=""> ; RUN: llvm-dwarfdump %t-64.o 2>&1 | FileCheck %s<br class=""><br class="">+; RUN: llc -O0 -march=mips -mcpu=mips32r2 -filetype=asm \<br class="">+; RUN:     -split-dwarf-file=foo.dwo < %s | FileCheck -check-prefix=ASM32 %s<br class="">+; RUN: llc -O0 -march=mips64 -mcpu=mips64r2 -filetype=asm \<br class="">+; RUN:     -split-dwarf-file=foo.dwo < %s | FileCheck -check-prefix=ASM64 %s<br class="">+<br class=""> @x = thread_local global i32 5, align 4, !dbg !0<br class=""><br class=""> ; CHECK-NOT: error: failed to compute relocation: R_MIPS_TLS_DTPREL<br class=""><br class="">+; CHECK:      DW_AT_name      ("x")<br class="">+; CHECK-NEXT: DW_AT_type      (0x00000025 "int")<br class="">+; CHECK-NEXT: DW_AT_external  (true)<br class="">+; CHECK-NEXT: DW_AT_decl_file (0x01)<br class="">+; CHECK-NEXT: DW_AT_decl_line (1)<br class="">+; CHECK-NEXT: DW_AT_location  (DW_OP_GNU_const_index 0x0, DW_OP_GNU_push_tls_address)<br class="">+<br class="">+; ASM32:              .section        .debug_addr<br class="">+; ASM32-NEXT: $addr_table_base0:<br class="">+; ASM32-NEXT:         .4byte  x+32768<br class="">+<br class="">+; ASM64:              .section        .debug_addr<br class="">+; ASM64-NEXT: .Laddr_table_base0:<br class="">+; ASM64-NEXT:         .8byte  x+32768<br class="">+<br class=""> !llvm.dbg.cu = !{!2}<br class=""> !llvm.module.flags = !{!7, !8}<br class=""><br class=""><br class=""><br class="">_______________________________________________<br class="">llvm-commits mailing list<br class=""><a href="mailto:llvm-commits@lists.llvm.org" class="">llvm-commits@lists.llvm.org</a><br class="">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits<br class=""></div></div></blockquote></div><br class=""></div></body></html>