Move merging of alignment to a central location. NFC.
authorRafael Espindola <rafael.espindola@gmail.com>
Fri, 5 Dec 2014 00:09:02 +0000 (00:09 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Fri, 5 Dec 2014 00:09:02 +0000 (00:09 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@223418 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Linker/LinkModules.cpp

index e643f5bb4c312416fc3f7027d76c55cde14325c7..738791d7e5691378abe0af6c9b3a76ad6ab04ee8 100644 (file)
@@ -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) {
 /// 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);
   DestGV->copyAttributesFrom(SrcGV);
-
-  if (DestGO)
-    DestGO->setAlignment(Alignment);
-
   forceRenaming(DestGV, SrcGV->getName());
 }
 
   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 (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.
     }
 
     // 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) {
 GlobalValue *ModuleLinker::linkGlobalVariableProto(const GlobalVariable *SGVar,
                                                    GlobalValue *DGV,
                                                    bool LinkFromSrc) {
-  unsigned Alignment = 0;
   bool ClearConstant = false;
 
   if (DGV) {
   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;
     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 (!LinkFromSrc) {
     if (auto *NewGVar = dyn_cast<GlobalVariable>(DGV)) {
-      if (Alignment)
-        NewGVar->setAlignment(Alignment);
       if (NewGVar->isDeclaration() && ClearConstant)
         NewGVar->setConstant(false);
     }
       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());
 
       SGVar->getName(), /*insertbefore*/ nullptr, SGVar->getThreadLocalMode(),
       SGVar->getType()->getAddressSpace());
 
-  if (Alignment)
-    NewDGV->setAlignment(Alignment);
-
   return NewDGV;
 }
 
   return NewDGV;
 }