r290569 - Driver: switch Windows to static RelocModel

Reid Kleckner via cfe-commits cfe-commits at lists.llvm.org
Wed Dec 28 09:10:11 PST 2016


I suspect this broke Win64:
http://lab.llvm.org:8011/builders/clang-x64-ninja-win7/builds/1410

On Mon, Dec 26, 2016 at 6:20 PM, Saleem Abdulrasool via cfe-commits <
cfe-commits at lists.llvm.org> wrote:

> 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
> +
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20161228/44b8ae94/attachment.html>


More information about the cfe-commits mailing list