From: Rafael Espindola Date: Fri, 5 Dec 2014 00:09:02 +0000 (+0000) Subject: Move merging of alignment to a central location. NFC. X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=aa8cddcd3af4a2a38d7f31b436978afd697e4f1a;p=oota-llvm.git Move merging of alignment to a central location. NFC. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@223418 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Linker/LinkModules.cpp b/lib/Linker/LinkModules.cpp index e643f5bb4c3..738791d7e56 100644 --- a/lib/Linker/LinkModules.cpp +++ b/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(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(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(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(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; }