From 48c576c8775969eb808833e3f0a00ff618ee4bbd Mon Sep 17 00:00:00 2001 From: Bill Schmidt Date: Fri, 6 Feb 2015 15:31:03 +0000 Subject: [PATCH] [PowerPC] Re-disable linker optimizations for now git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@228402 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Driver/Tools.cpp | 7 +++++++ test/Driver/ppc-features.cpp | 2 ++ 2 files changed, 9 insertions(+) diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp index 8634ed604c..ba8b665630 100644 --- a/lib/Driver/Tools.cpp +++ b/lib/Driver/Tools.cpp @@ -7625,6 +7625,13 @@ 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 39d6357dcc..feecf3ceed 100644 --- a/test/Driver/ppc-features.cpp +++ b/test/Driver/ppc-features.cpp @@ -132,8 +132,10 @@ // 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" -- 2.50.1