r290569 - Driver: switch Windows to static RelocModel

Saleem Abdulrasool via cfe-commits cfe-commits at lists.llvm.org
Mon Dec 26 18:20:36 PST 2016


Author: compnerd
Date: Mon Dec 26 20:20:35 2016
New Revision: 290569

URL: http://llvm.org/viewvc/llvm-project?rev=290569&view=rev
Log:
Driver: switch Windows to static RelocModel

Windows uses PE/COFF which is inherently position independent.  The use
of the PIC model is unnecessary.  In fact, we would generate invalid
code using the ELF PIC model when PIC was enabled previously.  Now that
we no longer accept -fPIC and -fpoc, this switches the internal
representation to the static model to permit us to make PIC modules
invalid when targeting Windows.  This should not change the code
generation, only the internal state management.

Modified:
    cfe/trunk/lib/Driver/MSVCToolChain.cpp
    cfe/trunk/lib/Driver/ToolChains.cpp
    cfe/trunk/lib/Driver/ToolChains.h
    cfe/trunk/test/Driver/pic.c

Modified: cfe/trunk/lib/Driver/MSVCToolChain.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/MSVCToolChain.cpp?rev=290569&r1=290568&r2=290569&view=diff
==============================================================================
--- cfe/trunk/lib/Driver/MSVCToolChain.cpp (original)
+++ cfe/trunk/lib/Driver/MSVCToolChain.cpp Mon Dec 26 20:20:35 2016
@@ -82,18 +82,6 @@ bool MSVCToolChain::IsUnwindTablesDefaul
   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) {

Modified: cfe/trunk/lib/Driver/ToolChains.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.cpp?rev=290569&r1=290568&r2=290569&view=diff
==============================================================================
--- cfe/trunk/lib/Driver/ToolChains.cpp (original)
+++ cfe/trunk/lib/Driver/ToolChains.cpp Mon Dec 26 20:20:35 2016
@@ -2880,22 +2880,13 @@ bool Generic_GCC::IsUnwindTablesDefault(
 
 bool Generic_GCC::isPICDefault() const {
   switch (getArch()) {
-  case llvm::Triple::x86_64:
-    return getTriple().isOSWindows();
+  default: return false;
   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:

Modified: cfe/trunk/lib/Driver/ToolChains.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.h?rev=290569&r1=290568&r2=290569&view=diff
==============================================================================
--- cfe/trunk/lib/Driver/ToolChains.h (original)
+++ cfe/trunk/lib/Driver/ToolChains.h Mon Dec 26 20:20:35 2016
@@ -232,8 +232,8 @@ public:
 
   bool IsUnwindTablesDefault() const override;
   bool isPICDefault() const override;
-  bool isPIEDefault() const override;
-  bool isPICDefaultForced() const override;
+  bool isPIEDefault() const override { return false; }
+  bool isPICDefaultForced() const override { return false; }
   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;
-  bool isPIEDefault() const override;
-  bool isPICDefaultForced() const override;
+  bool isPICDefault() const override { return false; }
+  bool isPIEDefault() const override { return false; }
+  bool isPICDefaultForced() const override { return false; }
 
   void
   AddClangSystemIncludeArgs(const llvm::opt::ArgList &DriverArgs,

Modified: cfe/trunk/test/Driver/pic.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/pic.c?rev=290569&r1=290568&r2=290569&view=diff
==============================================================================
--- cfe/trunk/test/Driver/pic.c (original)
+++ cfe/trunk/test/Driver/pic.c Mon Dec 26 20:20:35 2016
@@ -255,9 +255,4 @@
 // 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
+




More information about the cfe-commits mailing list