@@ -27,13 +27,13 @@ private char *private_p = 0;
27
27
// CHECK: @local_p = local_unnamed_addr addrspace(1) global i8 addrspace(3)* addrspacecast (i8 addrspace(4)* null to i8 addrspace(3)*), align 4
28
28
local char * local_p = 0 ;
29
29
30
- // CHECK: @global_p = local_unnamed_addr addrspace(1) global i8 addrspace(1)* null, align 4
30
+ // CHECK: @global_p = local_unnamed_addr addrspace(1) global i8 addrspace(1)* null, align 8
31
31
global char * global_p = 0 ;
32
32
33
- // CHECK: @constant_p = local_unnamed_addr addrspace(1) global i8 addrspace(2)* null, align 4
33
+ // CHECK: @constant_p = local_unnamed_addr addrspace(1) global i8 addrspace(2)* null, align 8
34
34
constant char * constant_p = 0 ;
35
35
36
- // CHECK: @generic_p = local_unnamed_addr addrspace(1) global i8 addrspace(4)* null, align 4
36
+ // CHECK: @generic_p = local_unnamed_addr addrspace(1) global i8 addrspace(4)* null, align 8
37
37
generic char * generic_p = 0 ;
38
38
39
39
// Test NULL as initializer.
@@ -44,19 +44,19 @@ private char *private_p_NULL = NULL;
44
44
// CHECK: @local_p_NULL = local_unnamed_addr addrspace(1) global i8 addrspace(3)* addrspacecast (i8 addrspace(4)* null to i8 addrspace(3)*), align 4
45
45
local char * local_p_NULL = NULL ;
46
46
47
- // CHECK: @global_p_NULL = local_unnamed_addr addrspace(1) global i8 addrspace(1)* null, align 4
47
+ // CHECK: @global_p_NULL = local_unnamed_addr addrspace(1) global i8 addrspace(1)* null, align 8
48
48
global char * global_p_NULL = NULL ;
49
49
50
- // CHECK: @constant_p_NULL = local_unnamed_addr addrspace(1) global i8 addrspace(2)* null, align 4
50
+ // CHECK: @constant_p_NULL = local_unnamed_addr addrspace(1) global i8 addrspace(2)* null, align 8
51
51
constant char * constant_p_NULL = NULL ;
52
52
53
- // CHECK: @generic_p_NULL = local_unnamed_addr addrspace(1) global i8 addrspace(4)* null, align 4
53
+ // CHECK: @generic_p_NULL = local_unnamed_addr addrspace(1) global i8 addrspace(4)* null, align 8
54
54
generic char * generic_p_NULL = NULL ;
55
55
56
56
// Test constant folding of null pointer.
57
57
// A null pointer should be folded to a null pointer in the target address space.
58
58
59
- // CHECK: @fold_generic = local_unnamed_addr addrspace(1) global i32 addrspace(4)* null, align 4
59
+ // CHECK: @fold_generic = local_unnamed_addr addrspace(1) global i32 addrspace(4)* null, align 8
60
60
generic int * fold_generic = (global int * )(generic float * )(private char * )0 ;
61
61
62
62
// CHECK: @fold_priv = local_unnamed_addr addrspace(1) global i16* null, align 4
@@ -104,8 +104,8 @@ int fold_int5_local = (int) &((local StructTy1*)0)->p2;
104
104
// NOOPT: @test_static_var_private.sp3 = internal addrspace(1) global i8* null, align 4
105
105
// NOOPT: @test_static_var_private.sp4 = internal addrspace(1) global i8* null, align 4
106
106
// NOOPT: @test_static_var_private.sp5 = internal addrspace(1) global i8* null, align 4
107
- // NOOPT: @test_static_var_private.SS1 = internal addrspace(1) global %struct.StructTy1 { i8* null, i8 addrspace(3)* addrspacecast (i8 addrspace(4)* null to i8 addrspace(3)*), i8 addrspace(2)* null, i8 addrspace(1)* null, i8 addrspace(4)* null }, align 4
108
- // NOOPT: @test_static_var_private.SS2 = internal addrspace(1) global %struct.StructTy2 zeroinitializer, align 4
107
+ // NOOPT: @test_static_var_private.SS1 = internal addrspace(1) global %struct.StructTy1 { i8* null, i8 addrspace(3)* addrspacecast (i8 addrspace(4)* null to i8 addrspace(3)*), i8 addrspace(2)* null, i8 addrspace(1)* null, i8 addrspace(4)* null }, align 8
108
+ // NOOPT: @test_static_var_private.SS2 = internal addrspace(1) global %struct.StructTy2 zeroinitializer, align 8
109
109
110
110
void test_static_var_private (void ) {
111
111
static private char * sp1 = 0 ;
@@ -123,8 +123,8 @@ void test_static_var_private(void) {
123
123
// NOOPT: @test_static_var_local.sp3 = internal addrspace(1) global i8 addrspace(3)* addrspacecast (i8 addrspace(4)* null to i8 addrspace(3)*), align 4
124
124
// NOOPT: @test_static_var_local.sp4 = internal addrspace(1) global i8 addrspace(3)* null, align 4
125
125
// NOOPT: @test_static_var_local.sp5 = internal addrspace(1) global i8 addrspace(3)* null, align 4
126
- // NOOPT: @test_static_var_local.SS1 = internal addrspace(1) global %struct.StructTy1 { i8* null, i8 addrspace(3)* addrspacecast (i8 addrspace(4)* null to i8 addrspace(3)*), i8 addrspace(2)* null, i8 addrspace(1)* null, i8 addrspace(4)* null }, align 4
127
- // NOOPT: @test_static_var_local.SS2 = internal addrspace(1) global %struct.StructTy2 zeroinitializer, align 4
126
+ // NOOPT: @test_static_var_local.SS1 = internal addrspace(1) global %struct.StructTy1 { i8* null, i8 addrspace(3)* addrspacecast (i8 addrspace(4)* null to i8 addrspace(3)*), i8 addrspace(2)* null, i8 addrspace(1)* null, i8 addrspace(4)* null }, align 8
127
+ // NOOPT: @test_static_var_local.SS2 = internal addrspace(1) global %struct.StructTy2 zeroinitializer, align 8
128
128
void test_static_var_local (void ) {
129
129
static local char * sp1 = 0 ;
130
130
static local char * sp2 = NULL ;
@@ -143,9 +143,9 @@ void test_static_var_local(void) {
143
143
// NOOPT: store i8* null, i8** %sp3, align 4
144
144
// NOOPT: store i8* null, i8** %sp4, align 4
145
145
// NOOPT: %[[SS1:.*]] = bitcast %struct.StructTy1* %SS1 to i8*
146
- // NOOPT: call void @llvm.memcpy.p0i8.p2i8.i64(i8* %[[SS1]], i8 addrspace(2)* bitcast (%struct.StructTy1 addrspace(2)* @test_func_scope_var_private.SS1 to i8 addrspace(2)*), i64 32, i32 4 , i1 false)
146
+ // NOOPT: call void @llvm.memcpy.p0i8.p2i8.i64(i8* %[[SS1]], i8 addrspace(2)* bitcast (%struct.StructTy1 addrspace(2)* @test_func_scope_var_private.SS1 to i8 addrspace(2)*), i64 32, i32 8 , i1 false)
147
147
// NOOPT: %[[SS2:.*]] = bitcast %struct.StructTy2* %SS2 to i8*
148
- // NOOPT: call void @llvm.memset.p0i8.i64(i8* %[[SS2]], i8 0, i64 24, i32 4 , i1 false)
148
+ // NOOPT: call void @llvm.memset.p0i8.i64(i8* %[[SS2]], i8 0, i64 24, i32 8 , i1 false)
149
149
void test_func_scope_var_private (void ) {
150
150
private char * sp1 = 0 ;
151
151
private char * sp2 = NULL ;
@@ -163,9 +163,9 @@ void test_func_scope_var_private(void) {
163
163
// NOOPT: store i8 addrspace(3)* null, i8 addrspace(3)** %sp3, align 4
164
164
// NOOPT: store i8 addrspace(3)* null, i8 addrspace(3)** %sp4, align 4
165
165
// NOOPT: %[[SS1:.*]] = bitcast %struct.StructTy1* %SS1 to i8*
166
- // NOOPT: call void @llvm.memcpy.p0i8.p2i8.i64(i8* %[[SS1]], i8 addrspace(2)* bitcast (%struct.StructTy1 addrspace(2)* @test_func_scope_var_local.SS1 to i8 addrspace(2)*), i64 32, i32 4 , i1 false)
166
+ // NOOPT: call void @llvm.memcpy.p0i8.p2i8.i64(i8* %[[SS1]], i8 addrspace(2)* bitcast (%struct.StructTy1 addrspace(2)* @test_func_scope_var_local.SS1 to i8 addrspace(2)*), i64 32, i32 8 , i1 false)
167
167
// NOOPT: %[[SS2:.*]] = bitcast %struct.StructTy2* %SS2 to i8*
168
- // NOOPT: call void @llvm.memset.p0i8.i64(i8* %[[SS2]], i8 0, i64 24, i32 4 , i1 false)
168
+ // NOOPT: call void @llvm.memset.p0i8.i64(i8* %[[SS2]], i8 0, i64 24, i32 8 , i1 false)
169
169
void test_func_scope_var_local (void ) {
170
170
local char * sp1 = 0 ;
171
171
local char * sp2 = NULL ;
@@ -189,28 +189,28 @@ private char *p1;
189
189
// CHECK: @p2 = weak local_unnamed_addr addrspace(1) global i8 addrspace(3)* addrspacecast (i8 addrspace(4)* null to i8 addrspace(3)*), align 4
190
190
local char * p2 ;
191
191
192
- // CHECK: @p3 = common local_unnamed_addr addrspace(1) global i8 addrspace(2)* null, align 4
192
+ // CHECK: @p3 = common local_unnamed_addr addrspace(1) global i8 addrspace(2)* null, align 8
193
193
constant char * p3 ;
194
194
195
- // CHECK: @p4 = common local_unnamed_addr addrspace(1) global i8 addrspace(1)* null, align 4
195
+ // CHECK: @p4 = common local_unnamed_addr addrspace(1) global i8 addrspace(1)* null, align 8
196
196
global char * p4 ;
197
197
198
- // CHECK: @p5 = common local_unnamed_addr addrspace(1) global i8 addrspace(4)* null, align 4
198
+ // CHECK: @p5 = common local_unnamed_addr addrspace(1) global i8 addrspace(4)* null, align 8
199
199
generic char * p5 ;
200
200
201
201
// Test default initialization of sturcture.
202
202
203
- // CHECK: @S1 = weak local_unnamed_addr addrspace(1) global %struct.StructTy1 { i8* null, i8 addrspace(3)* addrspacecast (i8 addrspace(4)* null to i8 addrspace(3)*), i8 addrspace(2)* null, i8 addrspace(1)* null, i8 addrspace(4)* null }, align 4
203
+ // CHECK: @S1 = weak local_unnamed_addr addrspace(1) global %struct.StructTy1 { i8* null, i8 addrspace(3)* addrspacecast (i8 addrspace(4)* null to i8 addrspace(3)*), i8 addrspace(2)* null, i8 addrspace(1)* null, i8 addrspace(4)* null }, align 8
204
204
StructTy1 S1 ;
205
205
206
- // CHECK: @S2 = common local_unnamed_addr addrspace(1) global %struct.StructTy2 zeroinitializer, align 4
206
+ // CHECK: @S2 = common local_unnamed_addr addrspace(1) global %struct.StructTy2 zeroinitializer, align 8
207
207
StructTy2 S2 ;
208
208
209
209
// Test default initialization of array.
210
- // CHECK: @A1 = weak local_unnamed_addr addrspace(1) global [2 x %struct.StructTy1] [%struct.StructTy1 { i8* null, i8 addrspace(3)* addrspacecast (i8 addrspace(4)* null to i8 addrspace(3)*), i8 addrspace(2)* null, i8 addrspace(1)* null, i8 addrspace(4)* null }, %struct.StructTy1 { i8* null, i8 addrspace(3)* addrspacecast (i8 addrspace(4)* null to i8 addrspace(3)*), i8 addrspace(2)* null, i8 addrspace(1)* null, i8 addrspace(4)* null }], align 4
210
+ // CHECK: @A1 = weak local_unnamed_addr addrspace(1) global [2 x %struct.StructTy1] [%struct.StructTy1 { i8* null, i8 addrspace(3)* addrspacecast (i8 addrspace(4)* null to i8 addrspace(3)*), i8 addrspace(2)* null, i8 addrspace(1)* null, i8 addrspace(4)* null }, %struct.StructTy1 { i8* null, i8 addrspace(3)* addrspacecast (i8 addrspace(4)* null to i8 addrspace(3)*), i8 addrspace(2)* null, i8 addrspace(1)* null, i8 addrspace(4)* null }], align 8
211
211
StructTy1 A1 [2 ];
212
212
213
- // CHECK: @A2 = common local_unnamed_addr addrspace(1) global [2 x %struct.StructTy2] zeroinitializer, align 4
213
+ // CHECK: @A2 = common local_unnamed_addr addrspace(1) global [2 x %struct.StructTy2] zeroinitializer, align 8
214
214
StructTy2 A2 [2 ];
215
215
216
216
// Test comparison with 0.
@@ -597,7 +597,7 @@ int test_and_ptr(private char* p1, local char* p2) {
597
597
// Test folding of null pointer in function scope.
598
598
// NOOPT-LABEL: test_fold_private
599
599
// NOOPT: call void @test_fold_callee
600
- // NOOPT: store i32 addrspace(1)* null, i32 addrspace(1)** %glob, align 4
600
+ // NOOPT: store i32 addrspace(1)* null, i32 addrspace(1)** %glob, align 8
601
601
// NOOPT: %{{.*}} = sub i64 %{{.*}}, 0
602
602
// NOOPT: call void @test_fold_callee
603
603
// NOOPT: %{{.*}} = add nsw i64 %{{.*}}, 0
@@ -612,7 +612,7 @@ void test_fold_private(void) {
612
612
613
613
// NOOPT-LABEL: test_fold_local
614
614
// NOOPT: call void @test_fold_callee
615
- // NOOPT: store i32 addrspace(1)* null, i32 addrspace(1)** %glob, align 4
615
+ // NOOPT: store i32 addrspace(1)* null, i32 addrspace(1)** %glob, align 8
616
616
// NOOPT: %{{.*}} = sub i64 %{{.*}}, 0
617
617
// NOOPT: call void @test_fold_callee
618
618
// NOOPT: %{{.*}} = add nsw i64 %{{.*}}, sext (i32 ptrtoint (i32 addrspace(3)* addrspacecast (i32 addrspace(4)* null to i32 addrspace(3)*) to i32) to i64)
0 commit comments