summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2018-02-23 18:09:29 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2018-02-23 18:09:29 +0000
commit43ce3a3a4d83071eb3acfe21cba4f051d267674a (patch)
tree0613838e3de14d5422edbdb0bedc2e52bbf1030c /clang/lib/CodeGen
parent967cb19146d24464d2a3691761f893e72253eb8e (diff)
downloadbcm5719-llvm-43ce3a3a4d83071eb3acfe21cba4f051d267674a.tar.gz
bcm5719-llvm-43ce3a3a4d83071eb3acfe21cba4f051d267674a.zip
Revert "Start setting dso_local for COFF."
This reverts commit r325915. It will take some time to fix the failures on a windows host. llvm-svn: 325929
Diffstat (limited to 'clang/lib/CodeGen')
-rw-r--r--clang/lib/CodeGen/CGDecl.cpp3
-rw-r--r--clang/lib/CodeGen/CodeGenModule.cpp14
-rw-r--r--clang/lib/CodeGen/CodeGenModule.h3
-rw-r--r--clang/lib/CodeGen/ItaniumCXXABI.cpp3
4 files changed, 3 insertions, 20 deletions
diff --git a/clang/lib/CodeGen/CGDecl.cpp b/clang/lib/CodeGen/CGDecl.cpp
index 007dcf2df7d..19cdc24270c 100644
--- a/clang/lib/CodeGen/CGDecl.cpp
+++ b/clang/lib/CodeGen/CGDecl.cpp
@@ -240,6 +240,7 @@ llvm::Constant *CodeGenModule::getOrCreateStaticVarDecl(
getModule(), LTy, Ty.isConstant(getContext()), Linkage, Init, Name,
nullptr, llvm::GlobalVariable::NotThreadLocal, TargetAS);
GV->setAlignment(getContext().getDeclAlign(&D).getQuantity());
+ setGVProperties(GV, &D);
if (supportsCOMDAT() && GV->isWeakForLinker())
GV->setComdat(TheModule.getOrInsertComdat(GV->getName()));
@@ -254,8 +255,6 @@ llvm::Constant *CodeGenModule::getOrCreateStaticVarDecl(
GV->setDLLStorageClass(llvm::GlobalVariable::DLLExportStorageClass);
}
- setGVProperties(GV, &D);
-
// Make sure the result is of the correct type.
LangAS ExpectedAS = Ty.getAddressSpace();
llvm::Constant *Addr = GV;
diff --git a/clang/lib/CodeGen/CodeGenModule.cpp b/clang/lib/CodeGen/CodeGenModule.cpp
index 03bf2169157..e8577b0153f 100644
--- a/clang/lib/CodeGen/CodeGenModule.cpp
+++ b/clang/lib/CodeGen/CodeGenModule.cpp
@@ -713,20 +713,8 @@ void CodeGenModule::setGlobalVisibility(llvm::GlobalValue *GV,
static bool shouldAssumeDSOLocal(const CodeGenModule &CGM,
llvm::GlobalValue *GV) {
- // DLLImport explicitly marks the GV as external.
- if (GV->hasDLLImportStorageClass())
- return false;
-
const llvm::Triple &TT = CGM.getTriple();
- // Every other GV is local on COFF.
- // Make an exception for windows OS in the triple: Some firmware builds use
- // *-win32-macho triples. This (accidentally?) produced windows relocations
- // without GOT tables in older clang versions; Keep this behaviour.
- // FIXME: even thread local variables?
- if (TT.isOSBinFormatCOFF() || (TT.isOSWindows() && TT.isOSBinFormatMachO()))
- return true;
-
- // Only handle COFF and ELF for now.
+ // Only handle ELF for now.
if (!TT.isOSBinFormatELF())
return false;
diff --git a/clang/lib/CodeGen/CodeGenModule.h b/clang/lib/CodeGen/CodeGenModule.h
index c8b2d7880d7..65342fe7eb7 100644
--- a/clang/lib/CodeGen/CodeGenModule.h
+++ b/clang/lib/CodeGen/CodeGenModule.h
@@ -723,9 +723,6 @@ public:
void setDSOLocal(llvm::GlobalValue *GV) const;
- /// Set visibility and dso_local.
- /// This must be called after dllimport/dllexport is set.
- /// FIXME: should this set dllimport/dllexport instead?
void setGVProperties(llvm::GlobalValue *GV, const NamedDecl *D) const;
/// Set the TLS mode for the given LLVM GlobalValue for the thread-local
diff --git a/clang/lib/CodeGen/ItaniumCXXABI.cpp b/clang/lib/CodeGen/ItaniumCXXABI.cpp
index 6e202ddd35e..61ad525b80a 100644
--- a/clang/lib/CodeGen/ItaniumCXXABI.cpp
+++ b/clang/lib/CodeGen/ItaniumCXXABI.cpp
@@ -1641,14 +1641,13 @@ llvm::GlobalVariable *ItaniumCXXABI::getAddrOfVTable(const CXXRecordDecl *RD,
VTable = CGM.CreateOrReplaceCXXRuntimeVariable(
Name, VTableType, llvm::GlobalValue::ExternalLinkage);
VTable->setUnnamedAddr(llvm::GlobalValue::UnnamedAddr::Global);
+ CGM.setGVProperties(VTable, RD);
if (RD->hasAttr<DLLImportAttr>())
VTable->setDLLStorageClass(llvm::GlobalValue::DLLImportStorageClass);
else if (RD->hasAttr<DLLExportAttr>())
VTable->setDLLStorageClass(llvm::GlobalValue::DLLExportStorageClass);
- CGM.setGVProperties(VTable, RD);
-
return VTable;
}
OpenPOWER on IntegriCloud