diff options
| author | Rafael Espindola <rafael.espindola@gmail.com> | 2014-12-05 00:09:02 +0000 |
|---|---|---|
| committer | Rafael Espindola <rafael.espindola@gmail.com> | 2014-12-05 00:09:02 +0000 |
| commit | 439835a6fed49ed788c3bec215848cbcb3f7f6fe (patch) | |
| tree | 5629537b483f0ee8414203d49802670f19d3b1c2 /llvm | |
| parent | 8da0a5b876f3c463f73866c2054f22a3dafc1fc1 (diff) | |
| download | bcm5719-llvm-439835a6fed49ed788c3bec215848cbcb3f7f6fe.tar.gz bcm5719-llvm-439835a6fed49ed788c3bec215848cbcb3f7f6fe.zip | |
Move merging of alignment to a central location. NFC.
llvm-svn: 223418
Diffstat (limited to 'llvm')
| -rw-r--r-- | llvm/lib/Linker/LinkModules.cpp | 22 |
1 files changed, 3 insertions, 19 deletions
diff --git a/llvm/lib/Linker/LinkModules.cpp b/llvm/lib/Linker/LinkModules.cpp index e643f5bb4c3..738791d7e56 100644 --- a/llvm/lib/Linker/LinkModules.cpp +++ b/llvm/lib/Linker/LinkModules.cpp @@ -525,17 +525,7 @@ static void forceRenaming(GlobalValue *GV, StringRef Name) { /// copy additional attributes (those not needed to construct a GlobalValue) /// from the SrcGV to the DestGV. static void copyGVAttributes(GlobalValue *DestGV, const GlobalValue *SrcGV) { - // Use the maximum alignment, rather than just copying the alignment of SrcGV. - auto *DestGO = dyn_cast<GlobalObject>(DestGV); - unsigned Alignment; - if (DestGO) - Alignment = std::max(DestGO->getAlignment(), SrcGV->getAlignment()); - DestGV->copyAttributesFrom(SrcGV); - - if (DestGO) - DestGO->setAlignment(Alignment); - forceRenaming(DestGV, SrcGV->getName()); } @@ -1051,6 +1041,9 @@ bool ModuleLinker::linkGlobalValueProto(GlobalValue *SGV) { if (auto *NewGO = dyn_cast<GlobalObject>(NewGV)) { if (C) NewGO->setComdat(C); + + if (DGV && DGV->hasCommonLinkage() && SGV->hasCommonLinkage()) + NewGO->setAlignment(std::max(DGV->getAlignment(), SGV->getAlignment())); } // Make sure to remember this mapping. @@ -1072,13 +1065,9 @@ bool ModuleLinker::linkGlobalValueProto(GlobalValue *SGV) { GlobalValue *ModuleLinker::linkGlobalVariableProto(const GlobalVariable *SGVar, GlobalValue *DGV, bool LinkFromSrc) { - unsigned Alignment = 0; bool ClearConstant = false; if (DGV) { - if (DGV->hasCommonLinkage() && SGVar->hasCommonLinkage()) - Alignment = std::max(SGVar->getAlignment(), DGV->getAlignment()); - auto *DGVar = dyn_cast<GlobalVariable>(DGV); if (!SGVar->isConstant() || (DGVar && !DGVar->isConstant())) ClearConstant = true; @@ -1086,8 +1075,6 @@ GlobalValue *ModuleLinker::linkGlobalVariableProto(const GlobalVariable *SGVar, if (!LinkFromSrc) { if (auto *NewGVar = dyn_cast<GlobalVariable>(DGV)) { - if (Alignment) - NewGVar->setAlignment(Alignment); if (NewGVar->isDeclaration() && ClearConstant) NewGVar->setConstant(false); } @@ -1103,9 +1090,6 @@ GlobalValue *ModuleLinker::linkGlobalVariableProto(const GlobalVariable *SGVar, SGVar->getName(), /*insertbefore*/ nullptr, SGVar->getThreadLocalMode(), SGVar->getType()->getAddressSpace()); - if (Alignment) - NewDGV->setAlignment(Alignment); - return NewDGV; } |

