From a7d9c69cc86c563e6b47fea749b6af1d77a3b129 Mon Sep 17 00:00:00 2001 From: Rafael Espindola Date: Tue, 6 May 2014 14:51:36 +0000 Subject: Be more strict about not calling setAlignment on global aliases. The fact that GlobalAlias::setAlignment exists at all is a side effect of how the classes are organized, it should never be used. llvm-svn: 208094 --- llvm/lib/Linker/LinkModules.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'llvm/lib/Linker/LinkModules.cpp') diff --git a/llvm/lib/Linker/LinkModules.cpp b/llvm/lib/Linker/LinkModules.cpp index 581e8217dee..55654ac25d6 100644 --- a/llvm/lib/Linker/LinkModules.cpp +++ b/llvm/lib/Linker/LinkModules.cpp @@ -495,10 +495,16 @@ static void forceRenaming(GlobalValue *GV, StringRef Name) { /// 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. - unsigned Alignment = std::max(DestGV->getAlignment(), SrcGV->getAlignment()); + unsigned Alignment; + bool IsAlias = isa(DestGV); + if (!IsAlias) + Alignment = std::max(DestGV->getAlignment(), SrcGV->getAlignment()); + DestGV->copyAttributesFrom(SrcGV); - DestGV->setAlignment(Alignment); - + + if (!IsAlias) + DestGV->setAlignment(Alignment); + forceRenaming(DestGV, SrcGV->getName()); } -- cgit v1.2.3