diff --git a/lld/ELF/InputFiles.cpp b/lld/ELF/InputFiles.cpp --- a/lld/ELF/InputFiles.cpp +++ b/lld/ELF/InputFiles.cpp @@ -1161,8 +1161,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-thinarchivecollision.ll b/lld/test/ELF/lto/thinlto-thinarchivecollision.ll new file mode 100644 --- /dev/null +++ b/lld/test/ELF/lto/thinlto-thinarchivecollision.ll @@ -0,0 +1,27 @@ +; REQUIRES: x86 +; RUN: rm -fr %T/thinlto-archives +; RUN: mkdir %T/thinlto-archives %T/thinlto-archives/a %T/thinlto-archives/b +; RUN: opt -thinlto-bc -o %T/thinlto-archives/main.o %s +; RUN: opt -thinlto-bc -o %T/thinlto-archives/a/thin.o %S/Inputs/thin1.ll +; RUN: opt -thinlto-bc -o %T/thinlto-archives/b/thin.o %S/Inputs/thin2.ll +; RUN: llvm-ar qcT %T/thinlto-archives/thin.a %T/thinlto-archives/a/thin.o %T/thinlto-archives/b/thin.o +; RUN: ld.lld --entry=main %T/thinlto-archives/main.o %T/thinlto-archives/thin.a -o %T/thinlto-archives/main.exe -save-temps +; RUN: FileCheck %s < %T/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 @main() { + call i32 @foo(i32 0) + call i32 @blah(i32 0) + ret i32 0 +} \ No newline at end of file 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\(t.o\ at\ *\).0.preopt.bc ; NM1: T f ; NM2: T g