summaryrefslogtreecommitdiffstats
path: root/clang/lib
diff options
context:
space:
mode:
authorSaleem Abdulrasool <compnerd@compnerd.org>2016-12-27 02:20:35 +0000
committerSaleem Abdulrasool <compnerd@compnerd.org>2016-12-27 02:20:35 +0000
commita5ad5919187750d649e9cfa8791334a8b3e89f47 (patch)
treeacab6068ff86b356a085ee8f1af689aa8bce195a /clang/lib
parentb67bfd2fd7c5dbe08c399f9214ccc34cd26acfef (diff)
downloadbcm5719-llvm-a5ad5919187750d649e9cfa8791334a8b3e89f47.tar.gz
bcm5719-llvm-a5ad5919187750d649e9cfa8791334a8b3e89f47.zip
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. llvm-svn: 290569
Diffstat (limited to 'clang/lib')
-rw-r--r--clang/lib/Driver/MSVCToolChain.cpp12
-rw-r--r--clang/lib/Driver/ToolChains.cpp11
-rw-r--r--clang/lib/Driver/ToolChains.h10
3 files changed, 6 insertions, 27 deletions
diff --git a/clang/lib/Driver/MSVCToolChain.cpp b/clang/lib/Driver/MSVCToolChain.cpp
index 95cf056f7a7..0bbe79c3aa7 100644
--- a/clang/lib/Driver/MSVCToolChain.cpp
+++ b/clang/lib/Driver/MSVCToolChain.cpp
@@ -82,18 +82,6 @@ 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 968b0cb4724..d831ba8adc3 100644
--- a/clang/lib/Driver/ToolChains.cpp
+++ b/clang/lib/Driver/ToolChains.cpp
@@ -2880,22 +2880,13 @@ bool Generic_GCC::IsUnwindTablesDefault() const {
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:
diff --git a/clang/lib/Driver/ToolChains.h b/clang/lib/Driver/ToolChains.h
index 7dab08915d4..c8b7931cac8 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;
- 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,
OpenPOWER on IntegriCloud