svn commit: r356330 - head/contrib/llvm-project/llvm/lib/Target/RISCV

Dimitry Andric dim at FreeBSD.org
Fri Jan 3 20:11:41 UTC 2020


Author: dim
Date: Fri Jan  3 20:11:40 2020
New Revision: 356330
URL: https://svnweb.freebsd.org/changeset/base/356330

Log:
  Merge commit da7b129b1 from llvm git (by James Clarke):
  
    [RISCV] Don't force Local Exec TLS for non-PIC
  
    Summary:
  
    Forcing Local Exec TLS requires the use of copy relocations. Copy
    relocations need special handling in the runtime linker when being
    used against TLS symbols, which is present in glibc, but not in
    FreeBSD nor musl, and so cannot be relied upon. Moreover, copy
    relocations are a hack that embed the size of an object in the ABI
    when it otherwise wouldn't be, and break protected symbols (which are
    expected to be DSO local), whilst also wasting space, thus they
    should be avoided whenever possible. As discussed in D70398, RISC-V
    should move away from forcing Local Exec, and instead use Initial
    Exec like other targets, with possible linker relaxation to follow.
    The RISC-V GCC maintainers also intend to adopt this
    more-conventional behaviour (see
    https://github.com/riscv/riscv-elf-psabi-doc/issues/122).
  
    Reviewers: asb, MaskRay
  
    Reviewed By: MaskRay
  
    Subscribers: emaste, krytarowski, hiraditya, rbar, johnrusso,
    simoncook, sabuasal, niosHD, kito-cheng, shiva0217, zzheng,
    edward-jones, rogfer01, MartinMosbeck, brucehoult, the_o, rkruppe,
    PkmX, jocewei, psnobl, benna, Jim, lenary, s.egerton, pzheng,
    sameer.abuasal, apazos, llvm-commits, bsdjhb
  
    Tags: #llvm
  
    Differential Revision: https://reviews.llvm.org/D70649
  
  This is a prerequisite for building and linking hard- and soft-float
  riscv worlds with clang and lld.
  
  Requested by:	jhb
  MFC after:	1 week
  X-MFC-With:	r353358

Modified:
  head/contrib/llvm-project/llvm/lib/Target/RISCV/RISCVISelLowering.cpp

Modified: head/contrib/llvm-project/llvm/lib/Target/RISCV/RISCVISelLowering.cpp
==============================================================================
--- head/contrib/llvm-project/llvm/lib/Target/RISCV/RISCVISelLowering.cpp	Fri Jan  3 20:09:38 2020	(r356329)
+++ head/contrib/llvm-project/llvm/lib/Target/RISCV/RISCVISelLowering.cpp	Fri Jan  3 20:11:40 2020	(r356330)
@@ -570,10 +570,7 @@ SDValue RISCVTargetLowering::lowerGlobalTLSAddress(SDV
   int64_t Offset = N->getOffset();
   MVT XLenVT = Subtarget.getXLenVT();
 
-  // Non-PIC TLS lowering should always use the LocalExec model.
-  TLSModel::Model Model = isPositionIndependent()
-                              ? getTargetMachine().getTLSModel(N->getGlobal())
-                              : TLSModel::LocalExec;
+  TLSModel::Model Model = getTargetMachine().getTLSModel(N->getGlobal());
 
   SDValue Addr;
   switch (Model) {


More information about the svn-src-head mailing list