Index: lld/trunk/COFF/SymbolTable.cpp =================================================================== --- lld/trunk/COFF/SymbolTable.cpp +++ lld/trunk/COFF/SymbolTable.cpp @@ -177,7 +177,8 @@ if (!Sym->Body.compare_exchange_strong(Existing, New)) continue; New->setBackref(Sym); - Accum->push_back(Sym); + if (isa(Existing)) + Accum->push_back(Sym); return; } } Index: lld/trunk/test/COFF/ar-comdat.test =================================================================== --- lld/trunk/test/COFF/ar-comdat.test +++ lld/trunk/test/COFF/ar-comdat.test @@ -0,0 +1,38 @@ +# RUN: yaml2obj %s > %t1.obj +# RUN: yaml2obj %s > %t2.obj +# RUN: llvm-lib /out:%t.lib %t1.obj %t2.obj +# RUN: lld -flavor link2 /out:%t.exe /lldmap:%t.map /entry:main /subsystem:console %p/Inputs/ret42.obj %t.lib +# RUN: FileCheck %s < %t.map + +# CHECK-NOT: .lib + +--- +header: + Machine: IMAGE_FILE_MACHINE_AMD64 + Characteristics: [ ] +sections: + - Name: .bss + Characteristics: [ IMAGE_SCN_CNT_UNINITIALIZED_DATA, IMAGE_SCN_LNK_COMDAT, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_WRITE ] + Alignment: 4 + SectionData: '' +symbols: + - Name: .bss + Value: 0 + SectionNumber: 1 + SimpleType: IMAGE_SYM_TYPE_NULL + ComplexType: IMAGE_SYM_DTYPE_NULL + StorageClass: IMAGE_SYM_CLASS_STATIC + SectionDefinition: + Length: 4 + NumberOfRelocations: 0 + NumberOfLinenumbers: 0 + CheckSum: 0 + Number: 1 + Selection: IMAGE_COMDAT_SELECT_ANY + - Name: x + Value: 0 + SectionNumber: 1 + SimpleType: IMAGE_SYM_TYPE_NULL + ComplexType: IMAGE_SYM_DTYPE_NULL + StorageClass: IMAGE_SYM_CLASS_EXTERNAL +...