[libc] Switch to using the generic `<gpuintrin.h>` implementations (#121810)
[llvm-project.git] / lld / test / MachO / map-file.ll
blobc8ab444370b3e2936aa09b8c2e82797c30fbda73
1 ; REQUIRES: x86
2 ; RUN: rm -rf %t; split-file %s %t
4 ;; Verify that we map symbols to their original bitcode input files, not the
5 ;; intermediate object files. Also verify that we don't emit these intermediate
6 ;; object files if no symbol needs to reference them. (Intermediate object files
7 ;; may still be referenced if they contain compiler-synthesized symbols, such
8 ;; as outlined functions. TODO: Test this case.)
10 ; RUN: opt -module-summary %t/foo.ll -o %t/foo.thinlto.o
11 ; RUN: opt -module-summary %t/bar.ll -o %t/bar.thinlto.o
13 ; RUN: %lld -dylib %t/foo.thinlto.o %t/bar.thinlto.o -o %t/foobar.thinlto -map \
14 ; RUN:   %t/foobar.thinlto.map
15 ; RUN: FileCheck %s --check-prefix=FOOBAR < %t/foobar.thinlto.map
17 ; RUN: %lld -dylib %t/bar.thinlto.o %t/foo.thinlto.o -o %t/barfoo.thinlto -map \
18 ; RUN:   %t/barfoo.thinlto.map
19 ; RUN: FileCheck %s --check-prefix=BARFOO < %t/barfoo.thinlto.map
21 ; RUN: llvm-as %t/foo.ll -o %t/foo.o
22 ; RUN: llvm-as %t/bar.ll -o %t/bar.o
23 ; RUN: %lld -dylib %t/foo.o %t/bar.o -o %t/foobar -map %t/foobar.map
24 ; RUN: FileCheck %s --check-prefix=LTO < %t/foobar.map
26 ; FOOBAR:      # Path: {{.*}}{{/|\\}}map-file.ll.tmp/foobar.thinlto
27 ; FOOBAR-NEXT: # Arch: x86_64
28 ; FOOBAR-NEXT: # Object files:
29 ; FOOBAR-NEXT: [  0] linker synthesized
30 ; FOOBAR-NEXT: [  1] {{.*}}{{/|\\}}usr/lib{{/|\\}}libSystem.tbd{{$}}
31 ; FOOBAR-NEXT: [  2] {{.*}}{{/|\\}}map-file.ll.tmp/foo.thinlto.o{{$}}
32 ; FOOBAR-NEXT: [  3] {{.*}}{{/|\\}}map-file.ll.tmp/bar.thinlto.o{{$}}
33 ; FOOBAR-NEXT: # Sections:
34 ; FOOBAR:      # Symbols:
35 ; FOOBAR-NEXT: # Address        Size             File  Name
36 ; FOOBAR-NEXT: 0x{{[0-9A-F]+}}  0x{{[0-9A-F]+}}  [  2] _foo
37 ; FOOBAR-NEXT: 0x{{[0-9A-F]+}}  0x{{[0-9A-F]+}}  [  3] _bar
38 ; FOOBAR-NEXT: 0x{{[0-9A-F]+}}  0x{{[0-9A-F]+}}  [  3] _maybe_weak
40 ; BARFOO:      # Path: {{.*}}{{/|\\}}map-file.ll.tmp/barfoo.thinlto
41 ; BARFOO-NEXT: # Arch: x86_64
42 ; BARFOO-NEXT: # Object files:
43 ; BARFOO-NEXT: [  0] linker synthesized
44 ; BARFOO-NEXT: [  1] {{.*}}{{/|\\}}usr/lib{{/|\\}}libSystem.tbd
45 ; BARFOO-NEXT: [  2] {{.*}}{{/|\\}}map-file.ll.tmp/bar.thinlto.o
46 ; BARFOO-NEXT: [  3] {{.*}}{{/|\\}}map-file.ll.tmp/foo.thinlto.o
47 ; BARFOO-NEXT: # Sections:
48 ; BARFOO:      # Symbols:
49 ; BARFOO-NEXT: # Address        Size             File  Name
50 ; BARFOO-NEXT: 0x{{[0-9A-F]+}}  0x{{[0-9A-F]+}}  [  2] _bar
51 ; BARFOO-NEXT: 0x{{[0-9A-F]+}}  0x{{[0-9A-F]+}}  [  2] _maybe_weak
52 ; BARFOO-NEXT: 0x{{[0-9A-F]+}}  0x{{[0-9A-F]+}}  [  3] _foo
54 ; LTO:      # Path: {{.*}}{{/|\\}}map-file.ll.tmp/foobar
55 ; LTO-NEXT: # Arch: x86_64
56 ; LTO-NEXT: # Object files:
57 ; LTO-NEXT: [  0] linker synthesized
58 ; LTO-NEXT: [  1] {{.*}}{{/|\\}}usr/lib{{/|\\}}libSystem.tbd
59 ; LTO-NEXT: [  2] {{.*}}{{/|\\}}map-file.ll.tmp/foo.o
60 ; LTO-NEXT: [  3] {{.*}}{{/|\\}}map-file.ll.tmp/bar.o
61 ; LTO-NEXT: # Sections:
62 ; LTO:      # Symbols:
63 ; LTO-NEXT: # Address        Size             File   Name
64 ; LTO-NEXT: 0x{{[0-9A-F]+}}  0x{{[0-9A-F]+}}  [  2]  _foo
65 ; LTO-NEXT: 0x{{[0-9A-F]+}}  0x{{[0-9A-F]+}}  [  3]  _bar
66 ; LTO-NEXT: 0x{{[0-9A-F]+}}  0x{{[0-9A-F]+}}  [  3]  _maybe_weak
68 ;--- foo.ll
69 target triple = "x86_64-apple-darwin"
70 target datalayout = "e-m:o-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
72 define void @foo() {
73   ret void
76 ;; This is weak in foo.ll but non-weak in bar.ll, so the definition in bar.ll
77 ;; will always prevail. Check that the map file maps `maybe_weak` to bar.ll
78 ;; regardless of the object file input order.
79 define weak_odr void @maybe_weak() {
80   ret void
83 ;--- bar.ll
84 target triple = "x86_64-apple-darwin"
85 target datalayout = "e-m:o-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
87 define void @bar() {
88   ret void
91 define void @maybe_weak() {
92   ret void