xref: /llvm-project/llvm/test/CodeGen/X86/ctor-priority-coff.ll (revision 9181ce623fd8189252659da7c48de1982597b79c)
1; RUN: llc < %s | FileCheck %s
2
3; Check that we come up with appropriate section names that link.exe sorts
4; well.
5
6; CHECK: .section        .CRT$XCA00042,"dr"
7; CHECK: .p2align        3
8; CHECK: .quad   f
9; CHECK: .section        .CRT$XCC,"dr"
10; CHECK: .p2align        3
11; CHECK: .quad   i
12; CHECK: .section        .CRT$XCC00250,"dr"
13; CHECK: .p2align        3
14; CHECK: .quad   k
15; CHECK: .section        .CRT$XCL,"dr"
16; CHECK: .p2align        3
17; CHECK: .quad   j
18; CHECK: .section        .CRT$XCT12345,"dr"
19; CHECK: .p2align        3
20; CHECK: .quad   g
21; CHECK: .section        .CRT$XCT23456,"dr",associative,h
22; CHECK: .p2align        3
23; CHECK: .quad   init_h
24
25target datalayout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128"
26target triple = "x86_64-pc-windows-msvc19.14.26433"
27
28$h = comdat any
29
30@h = linkonce_odr global i8 55, comdat, align 1
31
32@str0 = private dso_local unnamed_addr constant [6 x i8] c"later\00", align 1
33@str1 = private dso_local unnamed_addr constant [6 x i8] c"first\00", align 1
34@str2 = private dso_local unnamed_addr constant [5 x i8] c"main\00", align 1
35
36@llvm.global_ctors = appending global [6 x { i32, ptr, ptr }] [
37  { i32, ptr, ptr } { i32 12345, ptr @g, ptr null },
38  { i32, ptr, ptr } { i32 42, ptr @f, ptr null },
39  { i32, ptr, ptr } { i32 23456, ptr @init_h, ptr @h },
40  { i32, ptr, ptr } { i32 200, ptr @i, ptr null },
41  { i32, ptr, ptr } { i32 400, ptr @j, ptr null },
42  { i32, ptr, ptr } { i32 250, ptr @k, ptr null }
43]
44
45declare dso_local i32 @puts(ptr nocapture readonly) local_unnamed_addr
46
47define dso_local void @g() {
48entry:
49  %call = tail call i32 @puts(ptr @str0)
50  ret void
51}
52
53define dso_local void @f() {
54entry:
55  %call = tail call i32 @puts(ptr @str1)
56  ret void
57}
58
59define dso_local void @init_h() {
60entry:
61  store i8 42, ptr @h
62  ret void
63}
64
65define dso_local void @i() {
66entry:
67  store i8 43, ptr @h
68  ret void
69}
70
71define dso_local void @j() {
72entry:
73  store i8 44, ptr @h
74  ret void
75}
76
77define dso_local void @k() {
78entry:
79  store i8 45, ptr @h
80  ret void
81}
82
83; Function Attrs: nounwind uwtable
84define dso_local i32 @main() local_unnamed_addr {
85entry:
86  %call = tail call i32 @puts(ptr @str2)
87  ret i32 0
88}
89