Index: llvm/trunk/include/llvm/Transforms/Utils/ModuleUtils.h =================================================================== --- llvm/trunk/include/llvm/Transforms/Utils/ModuleUtils.h +++ llvm/trunk/include/llvm/Transforms/Utils/ModuleUtils.h @@ -85,7 +85,8 @@ Module &M, SmallVectorImpl &DeadComdatFunctions); /// \brief Produce a unique identifier for this module by taking the MD5 sum of -/// the names of the module's strong external symbols. +/// the names of the module's strong external symbols that are not comdat +/// members. /// /// This identifier is normally guaranteed to be unique, or the program would /// fail to link due to multiply defined symbols. Index: llvm/trunk/lib/Transforms/Utils/ModuleUtils.cpp =================================================================== --- llvm/trunk/lib/Transforms/Utils/ModuleUtils.cpp +++ llvm/trunk/lib/Transforms/Utils/ModuleUtils.cpp @@ -243,7 +243,7 @@ bool ExportsSymbols = false; auto AddGlobal = [&](GlobalValue &GV) { if (GV.isDeclaration() || GV.getName().startswith("llvm.") || - !GV.hasExternalLinkage()) + !GV.hasExternalLinkage() || GV.hasComdat()) return; ExportsSymbols = true; Md5.update(GV.getName()); Index: llvm/trunk/test/Transforms/ThinLTOBitcodeWriter/filter-alias.ll =================================================================== --- llvm/trunk/test/Transforms/ThinLTOBitcodeWriter/filter-alias.ll +++ llvm/trunk/test/Transforms/ThinLTOBitcodeWriter/filter-alias.ll @@ -13,4 +13,6 @@ @al = external unnamed_addr alias i8*, getelementptr inbounds ({ [1 x i8*] }, { [1 x i8*] }* @anon, i32 0, i32 0, i32 1) +@foo = global i32 1 + !0 = !{i64 8, !"?AVA@@"} Index: llvm/trunk/test/Transforms/ThinLTOBitcodeWriter/unsplittable.ll =================================================================== --- llvm/trunk/test/Transforms/ThinLTOBitcodeWriter/unsplittable.ll +++ llvm/trunk/test/Transforms/ThinLTOBitcodeWriter/unsplittable.ll @@ -21,4 +21,10 @@ ret void } +$h = comdat any +; CHECK: define void @h() comdat +define void @h() comdat { + ret void +} + !0 = !{i32 0, !"typeid"}