xref: /llvm-project/llvm/test/CodeGen/X86/mingw-hidden.ll (revision c5b3de6745c37dd991430b9b88ff97c35b6fc455)
1; RUN: llc -mtriple i386-pc-win32 < %s \
2; RUN:    | FileCheck --check-prefixes=CHECK,CHECK-MSVC %s
3; RUN: llc -mtriple i386-pc-mingw32 < %s \
4; RUN:    | FileCheck --check-prefixes=CHECK,CHECK-MINGW %s
5; RUN: llc -mtriple i386-pc-mingw32 < %s \
6; RUN:    | FileCheck --check-prefix=NOTEXPORTED %s
7
8; CHECK: .text
9
10; CHECK: .globl _notHidden
11define void @notHidden() {
12	ret void
13}
14
15; CHECK: .globl _f1
16define hidden void @f1() {
17	ret void
18}
19
20; CHECK: .globl _f2
21define hidden void @f2() unnamed_addr {
22	ret void
23}
24
25declare hidden void @notDefined()
26
27; CHECK: .globl _stdfun@0
28define hidden x86_stdcallcc void @stdfun() nounwind {
29	ret void
30}
31
32; CHECK: .globl _lnk1
33$lnk1 = comdat any
34
35define linkonce_odr hidden void @lnk1() comdat {
36	ret void
37}
38
39; CHECK: .globl _lnk2
40$lnk2 = comdat any
41
42define linkonce_odr hidden void @lnk2() alwaysinline comdat {
43	ret void
44}
45
46; CHECK: .data
47; CHECK: .globl _Var1
48@Var1 = hidden global i32 1, align 4
49
50; CHECK: .rdata,"dr"
51; CHECK: .globl _Var2
52@Var2 = hidden unnamed_addr constant i32 1
53
54; CHECK: .comm _Var3
55@Var3 = common hidden global i32 0, align 4
56
57; CHECK: .globl "_complex-name"
58@"complex-name" = hidden global i32 1, align 4
59
60; CHECK: .globl _complex.name
61@"complex.name" = hidden global i32 1, align 4
62
63
64; Verify items that should not be marked hidden do not appear in the directives.
65; We use a separate check prefix to avoid confusion between -NOT and -SAME.
66; NOTEXPORTED: .section .drectve
67; NOTEXPORTED-NOT: :notHidden
68; NOTEXPORTED-NOT: :notDefined
69
70; CHECK-MSVC-NOT: .section .drectve
71; CHECK-MINGW: .section .drectve
72; CHECK-MINGW: .ascii " -exclude-symbols:f1"
73; CHECK-MINGW: .ascii " -exclude-symbols:f2"
74; CHECK-MINGW: .ascii " -exclude-symbols:stdfun@0"
75; CHECK-MINGW: .ascii " -exclude-symbols:lnk1"
76; CHECK-MINGW: .ascii " -exclude-symbols:lnk2"
77; CHECK-MINGW: .ascii " -exclude-symbols:Var1"
78; CHECK-MINGW: .ascii " -exclude-symbols:Var2"
79; CHECK-MINGW: .ascii " -exclude-symbols:Var3"
80; CHECK-MINGW: .ascii " -exclude-symbols:\"complex-name\""
81; CHECK-MINGW: .ascii " -exclude-symbols:\"complex.name\""
82