diff options
| author | Reid Kleckner <rnk@google.com> | 2016-12-28 17:41:36 +0000 |
|---|---|---|
| committer | Reid Kleckner <rnk@google.com> | 2016-12-28 17:41:36 +0000 |
| commit | 8c19083f76c2187f4dfa287dedfdfaadd7f3f217 (patch) | |
| tree | 472249eb79826c8afb801053e748d6f89e1f9adf /clang/lib | |
| parent | 3f4c87d0b5c3bf2fa342b3196d6e420b85487069 (diff) | |
| download | bcm5719-llvm-8c19083f76c2187f4dfa287dedfdfaadd7f3f217.tar.gz bcm5719-llvm-8c19083f76c2187f4dfa287dedfdfaadd7f3f217.zip | |
Revert "Driver: switch Windows to static RelocModel"
This reverts commit r290569. It caused unforeseen codegen changes for
switch jump tables described in PR31488.
llvm-svn: 290672
Diffstat (limited to 'clang/lib')
| -rw-r--r-- | clang/lib/Driver/MSVCToolChain.cpp | 12 | ||||
| -rw-r--r-- | clang/lib/Driver/ToolChains.cpp | 11 | ||||
| -rw-r--r-- | clang/lib/Driver/ToolChains.h | 10 |
3 files changed, 27 insertions, 6 deletions
diff --git a/clang/lib/Driver/MSVCToolChain.cpp b/clang/lib/Driver/MSVCToolChain.cpp index 0bbe79c3aa7..95cf056f7a7 100644 --- a/clang/lib/Driver/MSVCToolChain.cpp +++ b/clang/lib/Driver/MSVCToolChain.cpp @@ -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) { diff --git a/clang/lib/Driver/ToolChains.cpp b/clang/lib/Driver/ToolChains.cpp index d831ba8adc3..968b0cb4724 100644 --- a/clang/lib/Driver/ToolChains.cpp +++ b/clang/lib/Driver/ToolChains.cpp @@ -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: diff --git a/clang/lib/Driver/ToolChains.h b/clang/lib/Driver/ToolChains.h index c8b7931cac8..7dab08915d4 100644 --- a/clang/lib/Driver/ToolChains.h +++ b/clang/lib/Driver/ToolChains.h @@ -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, |

