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
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());
// 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"