[Driver] x86-64 Windows is always PIC
authorDavid Majnemer <david.majnemer@gmail.com>
Sun, 28 Jun 2015 04:23:33 +0000 (04:23 +0000)
committerDavid Majnemer <david.majnemer@gmail.com>
Sun, 28 Jun 2015 04:23:33 +0000 (04:23 +0000)
This fixes PR23963.

llvm-svn: 240902

clang/lib/Driver/ToolChains.cpp
clang/test/Driver/pic.c

index 27bc357..df74b41 100644 (file)
@@ -2021,11 +2021,15 @@ bool Generic_GCC::IsUnwindTablesDefault() const {
   return getArch() == llvm::Triple::x86_64;
 }
 
-bool Generic_GCC::isPICDefault() const { return false; }
+bool Generic_GCC::isPICDefault() const {
+  return getArch() == llvm::Triple::x86_64 && getTriple().isOSWindows();
+}
 
 bool Generic_GCC::isPIEDefault() const { return false; }
 
-bool Generic_GCC::isPICDefaultForced() const { return false; }
+bool Generic_GCC::isPICDefaultForced() const {
+  return getArch() == llvm::Triple::x86_64 && getTriple().isOSWindows();
+}
 
 bool Generic_GCC::IsIntegratedAssemblerDefault() const {
   switch (getTriple().getArch()) {
index a515f81..120e66a 100644 (file)
 // RUN:   | FileCheck %s --check-prefix=CHECK-PIC1
 // RUN: %clang -c %s -target arm64-linux-android -### 2>&1 \
 // RUN:   | FileCheck %s --check-prefix=CHECK-PIC1
+//
+// On Windows-X64 PIC is enabled by default
+// RUN: %clang -c %s -target x86_64-pc-windows-msvc18.0.0 -### 2>&1 \
+// RUN:   | FileCheck %s --check-prefix=CHECK-PIC2
+// RUN: %clang -c %s -target x86_64-pc-windows-gnu -### 2>&1 \
+// RUN:   | FileCheck %s --check-prefix=CHECK-PIC2