xref: /llvm-project/llvm/test/CodeGen/X86/constructor.ll (revision f972e4d3434364718899f974e4d1c8e60aea91fa)
1; RUN: llc -mtriple x86_64 < %s | FileCheck --check-prefix=INIT-ARRAY %s
2; RUN: llc -mtriple x86_64-pc-linux -use-ctors < %s | FileCheck --check-prefix=CTOR %s
3; RUN: llc -mtriple x86_64-unknown-freebsd -use-ctors < %s | FileCheck --check-prefix=CTOR %s
4; RUN: llc -mtriple x86_64-pc-solaris2.11 -use-ctors < %s | FileCheck --check-prefix=CTOR %s
5; RUN: llc -mtriple x86_64-pc-linux < %s | FileCheck --check-prefix=INIT-ARRAY %s
6; RUN: llc -mtriple x86_64-unknown-freebsd < %s | FileCheck --check-prefix=INIT-ARRAY %s
7; RUN: llc -mtriple x86_64-pc-solaris2.11 < %s | FileCheck --check-prefix=INIT-ARRAY %s
8; RUN: llc -mtriple x86_64-unknown-nacl < %s | FileCheck --check-prefix=NACL %s
9; RUN: llc -mtriple i586-intel-elfiamcu -use-ctors < %s | FileCheck %s --check-prefix=MCU-CTORS
10; RUN: llc -mtriple i586-intel-elfiamcu < %s | FileCheck %s --check-prefix=MCU-INIT-ARRAY
11; RUN: llc -mtriple x86_64-win32-gnu < %s | FileCheck --check-prefix=COFF-CTOR %s
12@llvm.global_ctors = appending global [5 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 65535, ptr @f, ptr null}, { i32, ptr, ptr } { i32 15, ptr @g, ptr @v }, { i32, ptr, ptr } { i32 55555, ptr @h, ptr @v }, { i32, ptr, ptr } { i32 65535, ptr @i, ptr null }, { i32, ptr, ptr } { i32 65535, ptr @j, ptr null }]
13
14@v = weak_odr global i8 0
15
16define void @f() {
17entry:
18  ret void
19}
20
21define void @g() {
22entry:
23  ret void
24}
25
26define void @h() {
27entry:
28  ret void
29}
30
31define void @i() {
32entry:
33  ret void
34}
35
36define void @j() {
37entry:
38  ret void
39}
40
41; CTOR:	        .section	.ctors,"aw",@progbits
42; CTOR-NEXT:	.p2align	3
43; CTOR-NEXT:	.quad	j
44; CTOR-NEXT:	.quad	i
45; CTOR-NEXT:	.quad	f
46; CTOR-NEXT:	.section	.ctors.09980,"awG",@progbits,v,comdat
47; CTOR-NEXT:	.p2align	3
48; CTOR-NEXT:	.quad	h
49; CTOR-NEXT:	.section	.ctors.65520,"awG",@progbits,v,comdat
50; CTOR-NEXT:	.p2align	3
51; CTOR-NEXT:	.quad	g
52
53; INIT-ARRAY:		.section	.init_array.15,"awG",@init_array,v,comdat
54; INIT-ARRAY-NEXT:	.p2align	3
55; INIT-ARRAY-NEXT:	.quad	g
56; INIT-ARRAY-NEXT:	.section	.init_array.55555,"awG",@init_array,v,comdat
57; INIT-ARRAY-NEXT:	.p2align	3
58; INIT-ARRAY-NEXT:	.quad	h
59; INIT-ARRAY-NEXT:	.section	.init_array,"aw",@init_array
60; INIT-ARRAY-NEXT:	.p2align	3
61; INIT-ARRAY-NEXT:	.quad	f
62; INIT-ARRAY-NEXT:	.quad	i
63; INIT-ARRAY-NEXT:	.quad	j
64
65; NACL:		.section	.init_array.15,"awG",@init_array,v,comdat
66; NACL-NEXT:	.p2align	2
67; NACL-NEXT:	.long	g
68; NACL-NEXT:	.section	.init_array.55555,"awG",@init_array,v,comdat
69; NACL-NEXT:	.p2align	2
70; NACL-NEXT:	.long	h
71; NACL-NEXT:	.section	.init_array,"aw",@init_array
72; NACL-NEXT:	.p2align	2
73; NACL-NEXT:	.long	f
74; NACL-NEXT:	.long	i
75; NACL-NEXT:	.long	j
76
77; MCU-CTORS:         .section        .ctors,"aw",@progbits
78; MCU-INIT-ARRAY:    .section        .init_array,"aw",@init_array
79
80; COFF-CTOR:		.section	.ctors.65520,"dw",associative,v
81; COFF-CTOR-NEXT:	.p2align	3
82; COFF-CTOR-NEXT:	.quad	g
83; COFF-CTOR-NEXT:	.section	.ctors.09980,"dw",associative,v
84; COFF-CTOR-NEXT:	.p2align	3
85; COFF-CTOR-NEXT:	.quad	h
86; COFF-CTOR-NEXT:	.section	.ctors,"dw"
87; COFF-CTOR-NEXT:	.p2align	3
88; COFF-CTOR-NEXT:	.quad	f
89; COFF-CTOR-NEXT:	.quad	i
90; COFF-CTOR-NEXT:	.quad	j
91