diff --git a/lld/ELF/InputFiles.cpp b/lld/ELF/InputFiles.cpp --- a/lld/ELF/InputFiles.cpp +++ b/lld/ELF/InputFiles.cpp @@ -1162,8 +1162,7 @@ if (tar && c.getParent()->isThin()) tar->append(relativeToRoot(CHECK(c.getFullName(), this)), mb.getBuffer()); - InputFile *file = createObjectFile( - mb, getName(), c.getParent()->isThin() ? 0 : c.getChildOffset()); + InputFile *file = createObjectFile(mb, getName(), c.getChildOffset()); file->groupId = groupId; parseFile(file); } diff --git a/lld/test/ELF/lto/thinlto-thin-archive-collision.ll b/lld/test/ELF/lto/thinlto-thin-archive-collision.ll new file mode 100644 --- /dev/null +++ b/lld/test/ELF/lto/thinlto-thin-archive-collision.ll @@ -0,0 +1,27 @@ +; REQUIRES: x86 +; RUN: rm -fr %t && mkdir %t && cd %t +; RUN: mkdir thinlto-archives thinlto-archives/a thinlto-archives/b +; RUN: opt -thinlto-bc -o thinlto-archives/main.o %s +; RUN: opt -thinlto-bc -o thinlto-archives/a/thin.o %S/Inputs/thin1.ll +; RUN: opt -thinlto-bc -o thinlto-archives/b/thin.o %S/Inputs/thin2.ll +; RUN: llvm-ar qcT thinlto-archives/thin.a thinlto-archives/a/thin.o thinlto-archives/b/thin.o +; RUN: ld.lld thinlto-archives/main.o thinlto-archives/thin.a -o thinlto-archives/main.exe --save-temps +; RUN: FileCheck %s < thinlto-archives/main.exe.resolution.txt + +; CHECK: thinlto-archives/main.o +; CHECK: thinlto-archives/thin.a(thin.o at {{[1-9][0-9]+}}) +; CHECK-NEXT: -r=thinlto-archives/thin.a(thin.o at {{[1-9][0-9]+}}),foo,pl +; CHECK: thinlto-archives/thin.a(thin.o at {{[1-9][0-9]+}}) +; CHECK-NEXT: -r=thinlto-archives/thin.a(thin.o at {{[1-9][0-9]+}}),blah,pl + +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" +target triple = "x86_64-scei-ps4" + +declare i32 @blah(i32 %meh) +declare i32 @foo(i32 %goo) + +define i32 @_start() { + call i32 @foo(i32 0) + call i32 @blah(i32 0) + ret i32 0 +} diff --git a/lld/test/ELF/lto/thinlto.ll b/lld/test/ELF/lto/thinlto.ll --- a/lld/test/ELF/lto/thinlto.ll +++ b/lld/test/ELF/lto/thinlto.ll @@ -62,7 +62,7 @@ ; RUN: cp %t2.o %t.dir/t.o ; RUN: llvm-ar rcsT %t.dir/t.a %t.dir/t.o ; RUN: ld.lld -save-temps %t1.o %t.dir/t.a -o %t.null -; RUN: ls '%t.dir/t.a(t.o at 0).0.preopt.bc' +; RUN: ls %t.dir/t.a*.0.preopt.bc ; NM1: T f ; NM2: T g