summaryrefslogtreecommitdiffstats
path: root/clang/lib/Driver/ToolChains.cpp
diff options
context:
space:
mode:
authorJoerg Sonnenberger <joerg@bec.de>2016-12-15 00:02:57 +0000
committerJoerg Sonnenberger <joerg@bec.de>2016-12-15 00:02:57 +0000
commitabedf7a0c0ae6331533e935ca0f17bab0530e083 (patch)
tree4703d88b2bb73be5e8024c0efcee16bee6e24615 /clang/lib/Driver/ToolChains.cpp
parent400e7b7811162e729e4f687294f9d8229704c2e7 (diff)
downloadbcm5719-llvm-abedf7a0c0ae6331533e935ca0f17bab0530e083.tar.gz
bcm5719-llvm-abedf7a0c0ae6331533e935ca0f17bab0530e083.zip
Use PIC relocation mode by default for PowerPC64 ELF
Most of the PowerPC64 code generation already creates PIC access. This changes to a full PIC default, similar to what GCC is doing. Overall, a monolithic clang binary shrinks by 600KB (about 1%). This can be a slight regression for TLS access and will use the TOC more aggressively instead of synthesizing immediates. It is expected to be performance neutral. Differential Revision: https://reviews.llvm.org/D26564 llvm-svn: 289744
Diffstat (limited to 'clang/lib/Driver/ToolChains.cpp')
-rw-r--r--clang/lib/Driver/ToolChains.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/clang/lib/Driver/ToolChains.cpp b/clang/lib/Driver/ToolChains.cpp
index 46707aa06ba..968b0cb4724 100644
--- a/clang/lib/Driver/ToolChains.cpp
+++ b/clang/lib/Driver/ToolChains.cpp
@@ -2879,7 +2879,15 @@ bool Generic_GCC::IsUnwindTablesDefault() const {
}
bool Generic_GCC::isPICDefault() const {
- return getArch() == llvm::Triple::x86_64 && getTriple().isOSWindows();
+ switch (getArch()) {
+ case llvm::Triple::x86_64:
+ return getTriple().isOSWindows();
+ case llvm::Triple::ppc64:
+ case llvm::Triple::ppc64le:
+ return !getTriple().isOSBinFormatMachO() && !getTriple().isMacOSX();
+ default:
+ return false;
+ }
}
bool Generic_GCC::isPIEDefault() const { return false; }
OpenPOWER on IntegriCloud