]> granicus.if.org Git - clang/commitdiff
[PowerPC] Revert workaround for TLS linker bug
authorBill Schmidt <wschmidt@linux.vnet.ibm.com>
Thu, 5 Feb 2015 01:12:24 +0000 (01:12 +0000)
committerBill Schmidt <wschmidt@linux.vnet.ibm.com>
Thu, 5 Feb 2015 01:12:24 +0000 (01:12 +0000)
In r227480, Ulrich Weigand introduced a workaround for a linker
optimization bug that can create mis-optimized code for accesses to
general-dynamic or local-dynamic TLS variables.  The linker
optimization bug only occurred for Clang/LLVM because of some
inefficient code being generated for these TLS accesses.  I have
recently corrected LLVM to produce the efficient code sequence
expected by the linkers, so this workaround is no longer needed.
Therefore this patch reverts r227480.

I've tested that the previous bootstrap failure no longer occurs with
the workaround reverted.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@228253 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Driver/Tools.cpp
test/Driver/ppc-features.cpp

index c45955441c4ec373709b69e1199958527dce4898..d24375b3d789a7f9c7f84257abcd53e5aaa2f128 100644 (file)
@@ -7625,13 +7625,6 @@ void gnutools::Link::ConstructJob(Compilation &C, const JobAction &JA,
         D.DyldPrefix + getLinuxDynamicLinker(Args, ToolChain)));
   }
 
-  // Work around a bug in GNU ld (and gold) linker versions up to 2.25
-  // that may mis-optimize code generated by this version of clang/LLVM
-  // to access general-dynamic or local-dynamic TLS variables.
-  if (ToolChain.getArch() == llvm::Triple::ppc64 ||
-      ToolChain.getArch() == llvm::Triple::ppc64le)
-    CmdArgs.push_back("--no-tls-optimize");
-
   CmdArgs.push_back("-o");
   CmdArgs.push_back(Output.getFilename());
 
index feecf3ceedd1c486286eb56280076ed017a5abcc..39d6357dccdac8d679b9af862b2d865a3cd8a142 100644 (file)
 // linker features
 // RUN: %clang -target powerpc64-unknown-linux-gnu %s -### -o %t.o 2>&1 | FileCheck -check-prefix=CHECK_BE_LD_ARGS %s
 // CHECK_BE_LD_ARGS: "elf64ppc"
-// CHECK_BE_LD_ARGS: "--no-tls-optimize"
 
 // RUN: %clang -target powerpc64le-unknown-linux-gnu %s -### -o %t.o 2>&1 | FileCheck -check-prefix=CHECK_LE_LD_ARGS %s
 // CHECK_LE_LD_ARGS: "elf64lppc"
-// CHECK_LE_LD_ARGS: "--no-tls-optimize"