| // RUN: %clang_cc1 -triple powerpc-ibm-aix-xcoff -x c++ -emit-llvm < %s | \ |
| // RUN: FileCheck %s |
| // RUN: %clang_cc1 -triple powerpc64-ibm-aix-xcoff -x c++ -emit-llvm < %s | \ |
| // RUN: FileCheck %s |
| |
| struct test { |
| test() {} |
| ~test() {} |
| }; |
| |
| __attribute__((init_priority(200))) |
| test t1; |
| __attribute__((init_priority(200))) |
| test t2; |
| __attribute__((init_priority(300))) |
| test t3; |
| __attribute__((init_priority(150))) |
| test t4; |
| test t5; |
| |
| // 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 }] |
| // 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 }] |
| |
| // CHECK: define internal void @_GLOBAL__I_000150() [[ATTR:#[0-9]+]] { |
| // CHECK: entry: |
| // CHECK: call void @__cxx_global_var_init.3() |
| // CHECK: ret void |
| // CHECK: } |
| |
| // CHECK: define internal void @_GLOBAL__I_000200() [[ATTR:#[0-9]+]] { |
| // CHECK: entry: |
| // CHECK: call void @__cxx_global_var_init() |
| // CHECK: call void @__cxx_global_var_init.1() |
| // CHECK: ret void |
| // CHECK: } |
| |
| // CHECK: define internal void @_GLOBAL__I_000300() [[ATTR:#[0-9]+]] { |
| // CHECK: entry: |
| // CHECK: call void @__cxx_global_var_init.2() |
| // CHECK: ret void |
| // CHECK: } |
| |
| // CHECK: define internal void @_GLOBAL__sub_I__() [[ATTR:#[0-9]+]] { |
| // CHECK: entry: |
| // CHECK: call void @__cxx_global_var_init.4() |
| // CHECK: ret void |
| // CHECK: } |
| |
| // CHECK: define internal void @_GLOBAL__a_000150() [[ATTR:#[0-9]+]] { |
| // CHECK: entry: |
| // CHECK: call void @__finalize_t4() |
| // CHECK: ret void |
| // CHECK: } |
| |
| // CHECK: define internal void @_GLOBAL__a_000200() [[ATTR:#[0-9]+]] { |
| // CHECK: entry: |
| // CHECK: call void @__finalize_t2() |
| // CHECK: call void @__finalize_t1() |
| // CHECK: ret void |
| // CHECK: } |
| |
| // CHECK: define internal void @_GLOBAL__a_000300() [[ATTR:#[0-9]+]] { |
| // CHECK: entry: |
| // CHECK: call void @__finalize_t3() |
| // CHECK: ret void |
| // CHECK: } |
| |
| // CHECK: define internal void @_GLOBAL__D_a() [[ATTR:#[0-9]+]] { |
| // CHECK: entry: |
| // CHECK: call void @__finalize_t5() |
| // CHECK: ret void |
| // CHECK: } |