diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2018-02-23 18:09:29 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2018-02-23 18:09:29 +0000 |
commit | 43ce3a3a4d83071eb3acfe21cba4f051d267674a (patch) | |
tree | 0613838e3de14d5422edbdb0bedc2e52bbf1030c /clang/lib/CodeGen | |
parent | 967cb19146d24464d2a3691761f893e72253eb8e (diff) | |
download | bcm5719-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.cpp | 3 | ||||
-rw-r--r-- | clang/lib/CodeGen/CodeGenModule.cpp | 14 | ||||
-rw-r--r-- | clang/lib/CodeGen/CodeGenModule.h | 3 | ||||
-rw-r--r-- | clang/lib/CodeGen/ItaniumCXXABI.cpp | 3 |
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; } |