From: Bill Schmidt Date: Thu, 5 Feb 2015 01:12:24 +0000 (+0000) Subject: [PowerPC] Revert workaround for TLS linker bug X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=789b2f76988a29c71afa0849dea8ce68767ab972;p=clang [PowerPC] Revert workaround for TLS linker bug 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 --- diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp index c45955441c..d24375b3d7 100644 --- a/lib/Driver/Tools.cpp +++ b/lib/Driver/Tools.cpp @@ -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()); diff --git a/test/Driver/ppc-features.cpp b/test/Driver/ppc-features.cpp index feecf3ceed..39d6357dcc 100644 --- a/test/Driver/ppc-features.cpp +++ b/test/Driver/ppc-features.cpp @@ -132,10 +132,8 @@ // 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"