xref: /llvm-project/clang/test/CodeGen/PowerPC/aix-init-priority-attribute.cpp (revision 39db5e1ed87363a9ffea81e53520b542201b3262)
1 // RUN: %clang_cc1 -triple powerpc-ibm-aix-xcoff -x c++ -emit-llvm < %s | \
2 // RUN:   FileCheck %s
3 // RUN: %clang_cc1 -triple powerpc64-ibm-aix-xcoff -x c++ -emit-llvm < %s | \
4 // RUN:   FileCheck %s
5 
6 struct test {
testtest7   test() {}
~testtest8   ~test() {}
9 };
10 
11 __attribute__((init_priority(200)))
12 test t1;
13 __attribute__((init_priority(200)))
14 test t2;
15 __attribute__((init_priority(300)))
16 test t3;
17 __attribute__((init_priority(150)))
18 test t4;
19 test t5;
20 
21 // CHECK: @llvm.global_ctors = appending global [4 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 150, ptr @_GLOBAL__I_000150, ptr null }, { i32, ptr, ptr } { i32 200, ptr @_GLOBAL__I_000200, ptr null }, { i32, ptr, ptr } { i32 300, ptr @_GLOBAL__I_000300, ptr null }, { i32, ptr, ptr } { i32 65535, ptr @_GLOBAL__sub_I__, ptr null }]
22 // CHECK: @llvm.global_dtors = appending global [4 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 150, ptr @_GLOBAL__a_000150, ptr null }, { i32, ptr, ptr } { i32 200, ptr @_GLOBAL__a_000200, ptr null }, { i32, ptr, ptr } { i32 300, ptr @_GLOBAL__a_000300, ptr null }, { i32, ptr, ptr } { i32 65535, ptr @_GLOBAL__D_a, ptr null }]
23 
24 // CHECK: define internal void @_GLOBAL__I_000150() [[ATTR:#[0-9]+]] {
25 // CHECK: entry:
26 // CHECK:   call void @__cxx_global_var_init.3()
27 // CHECK:   ret void
28 // CHECK: }
29 
30 // CHECK: define internal void @_GLOBAL__I_000200() [[ATTR:#[0-9]+]] {
31 // CHECK: entry:
32 // CHECK:   call void @__cxx_global_var_init()
33 // CHECK:   call void @__cxx_global_var_init.1()
34 // CHECK:   ret void
35 // CHECK: }
36 
37 // CHECK: define internal void @_GLOBAL__I_000300() [[ATTR:#[0-9]+]] {
38 // CHECK: entry:
39 // CHECK:   call void @__cxx_global_var_init.2()
40 // CHECK:   ret void
41 // CHECK: }
42 
43 // CHECK: define internal void @_GLOBAL__sub_I__() [[ATTR:#[0-9]+]] {
44 // CHECK: entry:
45 // CHECK:   call void @__cxx_global_var_init.4()
46 // CHECK:   ret void
47 // CHECK: }
48 
49 // CHECK: define internal void @_GLOBAL__a_000150() [[ATTR:#[0-9]+]] {
50 // CHECK: entry:
51 // CHECK:   call void @__finalize_t4()
52 // CHECK:   ret void
53 // CHECK: }
54 
55 // CHECK: define internal void @_GLOBAL__a_000200() [[ATTR:#[0-9]+]] {
56 // CHECK: entry:
57 // CHECK:   call void @__finalize_t2()
58 // CHECK:   call void @__finalize_t1()
59 // CHECK:   ret void
60 // CHECK: }
61 
62 // CHECK: define internal void @_GLOBAL__a_000300() [[ATTR:#[0-9]+]] {
63 // CHECK: entry:
64 // CHECK:   call void @__finalize_t3()
65 // CHECK:   ret void
66 // CHECK: }
67 
68 // CHECK: define internal void @_GLOBAL__D_a() [[ATTR:#[0-9]+]] {
69 // CHECK: entry:
70 // CHECK:   call void @__finalize_t5()
71 // CHECK:   ret void
72 // CHECK: }
73