1; REQUIRES: x86
2;
3; RUN: llc -filetype=obj %s -o %t.obj
4; RUN: llc -filetype=obj %p/Inputs/start-lib1.ll -o %t1.obj
5; RUN: llc -filetype=obj %p/Inputs/start-lib2.ll -o %t2.obj
6; RUN: opt -thinlto-bc %s -o %t.bc
7; RUN: opt -thinlto-bc %p/Inputs/start-lib1.ll -o %t1.bc
8; RUN: opt -thinlto-bc %p/Inputs/start-lib2.ll -o %t2.bc
9;
10; RUN: lld-link -out:%t1.exe -entry:main -opt:noref -lldmap:%t1.map \
11; RUN:     %t.obj %t1.obj %t2.obj
12; RUN: FileCheck --check-prefix=TEST1 %s < %t1.map
13; RUN: lld-link -out:%t1.exe -entry:main -opt:noref -lldmap:%t1.thinlto.map \
14; RUN:     %t.bc %t1.bc %t2.bc
15; RUN: FileCheck --check-prefix=TEST1 %s < %t1.thinlto.map
16; TEST1: foo
17; TEST1: bar
18;
19; RUN: lld-link -out:%t2.exe -entry:main -opt:noref -lldmap:%t2.map \
20; RUN:     %t.obj -start-lib %t1.obj -end-lib %t2.obj
21; RUN: FileCheck --check-prefix=TEST2 %s < %t2.map
22; RUN: lld-link -out:%t2.exe -entry:main -opt:noref -lldmap:%t2.thinlto.map \
23; RUN:     %t.bc -start-lib %t1.bc -end-lib %t2.bc
24; RUN: FileCheck --check-prefix=TEST2 %s < %t2.thinlto.map
25; TEST2:     Address Size Align Out In Symbol
26; TEST2-NOT:                           {{ }}foo{{$}}
27; TEST2:                               {{ }}bar{{$}}
28; TEST2-NOT:                           {{ }}foo{{$}}
29;
30; RUN: lld-link -out:%t3.exe -entry:main -opt:noref -lldmap:%t3.map \
31; RUN:     %t.obj -start-lib %t1.obj %t2.obj
32; RUN: FileCheck --check-prefix=TEST3 %s < %t3.map
33; RUN: lld-link -out:%t3.exe -entry:main -opt:noref -lldmap:%t3.thinlto.map \
34; RUN:     %t.bc -start-lib %t1.bc %t2.bc
35; RUN: FileCheck --check-prefix=TEST3 %s < %t3.thinlto.map
36; TEST3:     Address Size Align Out In Symbol
37; TEST3-NOT: {{ }}foo{{$}}
38; TEST3-NOT: {{ }}bar{{$}}
39
40target datalayout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128"
41target triple = "x86_64-pc-windows-msvc"
42
43define void @main() {
44  ret void
45}
46