]> granicus.if.org Git - clang/commitdiff
Revert "Driver: switch Windows to static RelocModel"
authorReid Kleckner <rnk@google.com>
Wed, 28 Dec 2016 17:41:36 +0000 (17:41 +0000)
committerReid Kleckner <rnk@google.com>
Wed, 28 Dec 2016 17:41:36 +0000 (17:41 +0000)
This reverts commit r290569. It caused unforeseen codegen changes for
switch jump tables described in PR31488.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@290672 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Driver/MSVCToolChain.cpp
lib/Driver/ToolChains.cpp
lib/Driver/ToolChains.h
test/Driver/pic.c

index 0bbe79c3aa7252d64ae0a90709f8f06386cdc76b..95cf056f7a741d7a0c849d95aec13d85c0a586f1 100644 (file)
@@ -82,6 +82,18 @@ bool MSVCToolChain::IsUnwindTablesDefault() const {
   return getArch() == llvm::Triple::x86_64;
 }
 
+bool MSVCToolChain::isPICDefault() const {
+  return getArch() == llvm::Triple::x86_64;
+}
+
+bool MSVCToolChain::isPIEDefault() const {
+  return false;
+}
+
+bool MSVCToolChain::isPICDefaultForced() const {
+  return getArch() == llvm::Triple::x86_64;
+}
+
 #ifdef USE_WIN32
 static bool readFullStringValue(HKEY hkey, const char *valueName,
                                 std::string &value) {
index d831ba8adc3fcb1a9ddf21525d6289155c950c45..968b0cb4724aebf4acc63c3a0e6df0f2a9855efb 100644 (file)
@@ -2880,13 +2880,22 @@ bool Generic_GCC::IsUnwindTablesDefault() const {
 
 bool Generic_GCC::isPICDefault() const {
   switch (getArch()) {
-  default: return false;
+  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; }
+
+bool Generic_GCC::isPICDefaultForced() const {
+  return getArch() == llvm::Triple::x86_64 && getTriple().isOSWindows();
+}
+
 bool Generic_GCC::IsIntegratedAssemblerDefault() const {
   switch (getTriple().getArch()) {
   case llvm::Triple::x86:
index c8b7931cac82354835abd33bf3fa4f6564ade54f..7dab08915d48c232c3b8ad1899b5e6e4c53b833a 100644 (file)
@@ -232,8 +232,8 @@ public:
 
   bool IsUnwindTablesDefault() const override;
   bool isPICDefault() const override;
-  bool isPIEDefault() const override { return false; }
-  bool isPICDefaultForced() const override { return false; }
+  bool isPIEDefault() const override;
+  bool isPICDefaultForced() const override;
   bool IsIntegratedAssemblerDefault() const override;
   llvm::opt::DerivedArgList *
   TranslateArgs(const llvm::opt::DerivedArgList &Args, StringRef BoundArch,
@@ -1136,9 +1136,9 @@ public:
 
   bool IsIntegratedAssemblerDefault() const override;
   bool IsUnwindTablesDefault() const override;
-  bool isPICDefault() const override { return false; }
-  bool isPIEDefault() const override { return false; }
-  bool isPICDefaultForced() const override { return false; }
+  bool isPICDefault() const override;
+  bool isPIEDefault() const override;
+  bool isPICDefaultForced() const override;
 
   void
   AddClangSystemIncludeArgs(const llvm::opt::ArgList &DriverArgs,
index 57d1e3fd7dcf3cf66ed0cde903e5f2f4abb575ae..9f9d09c54cf0899b085cdbe354895319e41d06eb 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