[llvm] r351987 - [mips] Handle MipsMCExpr sub-expression for the MEK_DTPREL tag

Amara Emerson via llvm-commits llvm-commits at lists.llvm.org
Wed Jan 23 16:25:31 PST 2019


Reverted in r351998.

Amara

> On Jan 23, 2019, at 4:13 PM, Amara Emerson via llvm-commits <llvm-commits at lists.llvm.org> wrote:
> 
> Hi Simon,
> 
> This commit breaks some of the green dragon bots, e.g.: http://green.lab.llvm.org/green/job/clang-stage1-cmake-RA-incremental/57382/ <http://green.lab.llvm.org/green/job/clang-stage1-cmake-RA-incremental/57382/>
> 
> I’m going to revert in 10 minutes unless you’re working on a fix.
> 
> Thanks,
> Amara
> 
>> On Jan 23, 2019, at 2:02 PM, Simon Atanasyan via llvm-commits <llvm-commits at lists.llvm.org <mailto:llvm-commits at lists.llvm.org>> wrote:
>> 
>> Author: atanasyan
>> Date: Wed Jan 23 14:02:53 2019
>> New Revision: 351987
>> 
>> URL: http://llvm.org/viewvc/llvm-project?rev=351987&view=rev <http://llvm.org/viewvc/llvm-project?rev=351987&view=rev>
>> Log:
>> [mips] Handle MipsMCExpr sub-expression for the MEK_DTPREL tag
>> 
>> This is a fix for a regression introduced by the rL348194 commit. In
>> that change new type (MEK_DTPREL) of MipsMCExpr expression was added,
>> but in some places of the code this type of expression considered as
>> unexpected.
>> 
>> This change fixes the bug. The MEK_DTPREL type of expression is used for
>> marking TLS DIEExpr only and contains a regular sub-expression. Where we
>> need to handle the expression, we retrieve the sub-expression and
>> handle it in a common way.
>> 
>> Modified:
>>    llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsMCCodeEmitter.cpp
>>    llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsMCExpr.cpp
>>    llvm/trunk/test/DebugInfo/Mips/dwarfdump-tls.ll
>> 
>> Modified: llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsMCCodeEmitter.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsMCCodeEmitter.cpp?rev=351987&r1=351986&r2=351987&view=diff <http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsMCCodeEmitter.cpp?rev=351987&r1=351986&r2=351987&view=diff>
>> ==============================================================================
>> --- llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsMCCodeEmitter.cpp (original)
>> +++ llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsMCCodeEmitter.cpp Wed Jan 23 14:02:53 2019
>> @@ -613,8 +613,9 @@ getExprOpValue(const MCExpr *Expr, Small
>>       llvm_unreachable("Unhandled fixup kind!");
>>       break;
>>     case MipsMCExpr::MEK_DTPREL:
>> -      llvm_unreachable("MEK_DTPREL is used for TLS DIEExpr only");
>> -      break;
>> +      // MEK_DTPREL is used for marking TLS DIEExpr only
>> +      // and contains a regular sub-expression.
>> +      return getExprOpValue(MipsExpr->getSubExpr(), Fixups, STI);
>>     case MipsMCExpr::MEK_CALL_HI16:
>>       FixupKind = Mips::fixup_Mips_CALL_HI16;
>>       break;
>> 
>> Modified: llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsMCExpr.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsMCExpr.cpp?rev=351987&r1=351986&r2=351987&view=diff <http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsMCExpr.cpp?rev=351987&r1=351986&r2=351987&view=diff>
>> ==============================================================================
>> --- llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsMCExpr.cpp (original)
>> +++ llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsMCExpr.cpp Wed Jan 23 14:02:53 2019
>> @@ -43,8 +43,10 @@ void MipsMCExpr::printImpl(raw_ostream &
>>     llvm_unreachable("MEK_None and MEK_Special are invalid");
>>     break;
>>   case MEK_DTPREL:
>> -    llvm_unreachable("MEK_DTPREL is used for TLS DIEExpr only");
>> -    break;
>> +    // MEK_DTPREL is used for marking TLS DIEExpr only
>> +    // and contains a regular sub-expression.
>> +    getSubExpr()->print(OS, MAI, true);
>> +    return;
>>   case MEK_CALL_HI16:
>>     OS << "%call_hi";
>>     break;
>> @@ -160,7 +162,9 @@ MipsMCExpr::evaluateAsRelocatableImpl(MC
>>     case MEK_Special:
>>       llvm_unreachable("MEK_None and MEK_Special are invalid");
>>     case MEK_DTPREL:
>> -      llvm_unreachable("MEK_DTPREL is used for TLS DIEExpr only");
>> +      // MEK_DTPREL is used for marking TLS DIEExpr only
>> +      // and contains a regular sub-expression.
>> +      return getSubExpr()->evaluateAsRelocatable(Res, Layout, Fixup);
>>     case MEK_DTPREL_HI:
>>     case MEK_DTPREL_LO:
>>     case MEK_GOT:
>> @@ -248,9 +252,6 @@ void MipsMCExpr::fixELFSymbolsInTLSFixup
>>   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:
>> @@ -273,6 +274,7 @@ void MipsMCExpr::fixELFSymbolsInTLSFixup
>>     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:
>> 
>> Modified: llvm/trunk/test/DebugInfo/Mips/dwarfdump-tls.ll
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/Mips/dwarfdump-tls.ll?rev=351987&r1=351986&r2=351987&view=diff <http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/Mips/dwarfdump-tls.ll?rev=351987&r1=351986&r2=351987&view=diff>
>> ==============================================================================
>> --- llvm/trunk/test/DebugInfo/Mips/dwarfdump-tls.ll (original)
>> +++ llvm/trunk/test/DebugInfo/Mips/dwarfdump-tls.ll Wed Jan 23 14:02:53 2019
>> @@ -1,12 +1,34 @@
>> -; RUN: llc -O0 -march=mips -mcpu=mips32r2 -filetype=obj -o=%t-32.o < %s
>> +; RUN: llc -O0 -march=mips -mcpu=mips32r2 -filetype=obj \
>> +; RUN:     -split-dwarf-file=foo.dwo -o=%t-32.o < %s
>> ; RUN: llvm-dwarfdump %t-32.o 2>&1 | FileCheck %s
>> -; RUN: llc -O0 -march=mips64 -mcpu=mips64r2 -filetype=obj -o=%t-64.o < %s
>> +; RUN: llc -O0 -march=mips64 -mcpu=mips64r2 -filetype=obj \
>> +; RUN:     -split-dwarf-file=foo.dwo -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}
>> 
>> 
>> 
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at lists.llvm.org <mailto:llvm-commits at lists.llvm.org>
>> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
> 
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190123/2410c8af/attachment.html>


More information about the llvm-commits mailing list