diff options
Diffstat (limited to 'clang')
| -rw-r--r-- | clang/lib/Driver/ToolChains.cpp | 10 | ||||
| -rw-r--r-- | clang/test/Driver/ppc-abi.c | 3 |
2 files changed, 12 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; } diff --git a/clang/test/Driver/ppc-abi.c b/clang/test/Driver/ppc-abi.c index 958fd774166..cebc90d3f99 100644 --- a/clang/test/Driver/ppc-abi.c +++ b/clang/test/Driver/ppc-abi.c @@ -24,7 +24,10 @@ // RUN: %clang -target powerpc64le-unknown-linux-gnu %s -### -o %t.o 2>&1 \ // RUN: -mabi=altivec | FileCheck -check-prefix=CHECK-ELFv2 %s +// CHECK-ELFv1: "-mrelocation-model" "pic" "-pic-level" "2" // CHECK-ELFv1: "-target-abi" "elfv1" +// CHECK-ELFv1-QPX: "-mrelocation-model" "pic" "-pic-level" "2" // CHECK-ELFv1-QPX: "-target-abi" "elfv1-qpx" +// CHECK-ELFv2: "-mrelocation-model" "pic" "-pic-level" "2" // CHECK-ELFv2: "-target-abi" "elfv2" |

