Index: ELF/InputFiles.cpp =================================================================== --- ELF/InputFiles.cpp +++ ELF/InputFiles.cpp @@ -1241,10 +1241,11 @@ // into consideration at LTO time (which very likely causes undefined // symbols later in the link stage). So we append file offset to make // filename unique. - MemoryBufferRef MBRef( - MB.getBuffer(), - Saver.save(ArchiveName + Path + - (ArchiveName.empty() ? "" : utostr(OffsetInArchive)))); + StringRef Name = ArchiveName.empty() + ? Saver.save(Path) + : Saver.save(ArchiveName + "(" + Path + " at " + + utostr(OffsetInArchive) + ")"); + MemoryBufferRef MBRef(MB.getBuffer(), Name); Obj = CHECK(lto::InputFile::create(MBRef), this); Index: test/ELF/lto/Inputs/irmover-warning.ll =================================================================== --- test/ELF/lto/Inputs/irmover-warning.ll +++ test/ELF/lto/Inputs/irmover-warning.ll @@ -0,0 +1,10 @@ +target triple = "x86_64-unknown-linux-gnu" +target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" + +define void @f() { + ret void +} + +!0 = !{ i32 2, !"foo", i32 2 } + +!llvm.module.flags = !{ !0 } Index: test/ELF/lto/irmover-warning.ll =================================================================== --- test/ELF/lto/irmover-warning.ll +++ test/ELF/lto/irmover-warning.ll @@ -0,0 +1,22 @@ +; RUN: llvm-as -o %t1.bc %s +; RUN: llvm-as -o %t2.bc %S/Inputs/irmover-warning.ll +; RUN: rm -f %t.a +; RUN: llvm-ar rcs %t.a %t2.bc +; RUN: ld.lld %t1.bc %t.a -o %t 2>&1 | FileCheck %s + +; CHECK: warning: linking module flags 'foo': IDs have conflicting values +; CHECK-SAME: irmover-warning.ll.tmp.a(irmover-warning.ll.tmp2.bc at {{[0-9]+}}) + +target triple = "x86_64-unknown-linux-gnu" +target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" + +declare void @f() + +define void @g() { + call void @f() + ret void +} + +!0 = !{ i32 2, !"foo", i32 1 } + +!llvm.module.flags = !{ !0 }