@@ -44,6 +44,9 @@ template <>
44
44
A<int> A<int>::instance = bar();
45
45
} // namespace test2
46
46
47
+ // CHECK: @_ZGVN5test12t2E = linkonce_odr global i64 0, align 8
48
+ // CHECK: @_ZGVN5test21AIvE8instanceE = weak_odr global i64 0, align 8
49
+ // CHECK: @_ZGVN5test12t1IiEE = linkonce_odr global i64 0, align 8
47
50
// CHECK: @llvm.global_ctors = appending global [4 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__cxx_global_var_init.1, i8* null }, { i32, void ()*, i8* } { i32 65535, void ()* @__cxx_global_var_init.2, i8* null }, { i32, void ()*, i8* } { i32 65535, void ()* @__cxx_global_var_init.4, i8* null }, { i32, void ()*, i8* } { i32 65535, void ()* @_GLOBAL__sub_I__, i8* null }]
48
51
// CHECK: @llvm.global_dtors = appending global [4 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__finalize__ZN5test12t2E, i8* null }, { i32, void ()*, i8* } { i32 65535, void ()* @__finalize__ZN5test21AIvE8instanceE, i8* null }, { i32, void ()*, i8* } { i32 65535, void ()* @__finalize__ZN5test12t1IiEE, i8* null }, { i32, void ()*, i8* } { i32 65535, void ()* @_GLOBAL__D_a, i8* null }]
49
52
@@ -77,7 +80,7 @@ A<int> A<int>::instance = bar();
77
80
78
81
// CHECK: define internal void @__cxx_global_var_init.1() [[ATTR:#[0-9]+]] {
79
82
// CHECK: entry:
80
- // CHECK: %0 = load atomic i8, i8* bitcast (i64* @_ZGVN5test12t2E to i8*) acquire
83
+ // CHECK: %0 = load atomic i8, i8* bitcast (i64* @_ZGVN5test12t2E to i8*) acquire, align 8
81
84
// CHECK: %guard.uninitialized = icmp eq i8 %0, 0
82
85
// CHECK: br i1 %guard.uninitialized, label %init.check, label %init.end
83
86
@@ -119,14 +122,14 @@ A<int> A<int>::instance = bar();
119
122
120
123
// CHECK: define internal void @__cxx_global_var_init.2() [[ATTR:#[0-9]+]] {
121
124
// CHECK: entry:
122
- // CHECK: %0 = load i8, i8* bitcast (i64* @_ZGVN5test21AIvE8instanceE to i8*)
125
+ // CHECK: %0 = load i8, i8* bitcast (i64* @_ZGVN5test21AIvE8instanceE to i8*), align 8
123
126
// CHECK: %guard.uninitialized = icmp eq i8 %0, 0
124
127
// CHECK: br i1 %guard.uninitialized, label %init.check, label %init.end
125
128
126
129
// CHECK: init.check:
127
130
// CHECK: call void @_ZN5test21AIvEC1Ev(%"struct.test2::A"* {{[^,]*}} @_ZN5test21AIvE8instanceE)
128
131
// CHECK: %1 = call i32 @atexit(void ()* @__dtor__ZN5test21AIvE8instanceE)
129
- // CHECK: store i64 1, i64* @_ZGVN5test21AIvE8instanceE
132
+ // CHECK: store i8 1, i8* bitcast ( i64* @_ZGVN5test21AIvE8instanceE to i8*), align 8
130
133
// CHECK: br label %init.end
131
134
132
135
// CHECK: init.end:
@@ -182,15 +185,15 @@ A<int> A<int>::instance = bar();
182
185
183
186
// CHECK: define internal void @__cxx_global_var_init.4() [[ATTR:#[0-9]+]] {
184
187
// CHECK: entry:
185
- // CHECK: %0 = load i8, i8* bitcast (i64* @_ZGVN5test12t1IiEE to i8*)
188
+ // CHECK: %0 = load i8, i8* bitcast (i64* @_ZGVN5test12t1IiEE to i8*), align 8
186
189
// CHECK: %guard.uninitialized = icmp eq i8 %0, 0
187
190
// CHECK: br i1 %guard.uninitialized, label %init.check, label %init.end
188
191
189
192
// CHECK: init.check:
190
193
// CHECK32: call void @_ZN5test15Test1C1Ei(%"struct.test1::Test1"* {{[^,]*}} @_ZN5test12t1IiEE, i32 2)
191
194
// CHECK64: call void @_ZN5test15Test1C1Ei(%"struct.test1::Test1"* {{[^,]*}} @_ZN5test12t1IiEE, i32 signext 2)
192
195
// CHECK: %1 = call i32 @atexit(void ()* @__dtor__ZN5test12t1IiEE)
193
- // CHECK: store i64 1, i64* @_ZGVN5test12t1IiEE
196
+ // CHECK: store i8 1, i8* bitcast ( i64* @_ZGVN5test12t1IiEE to i8*), align 8
194
197
// CHECK: br label %init.end
195
198
196
199
// CHECK: init.end:
0 commit comments