@@ -89,22 +89,14 @@ struct padded { char c; int i; };
89
89
// PATTERN-O1-NOT: @__const.test_paddednullinit_custom.custom
90
90
struct paddednullinit { char c = 0 ; int i = 0 ; };
91
91
// PATTERN-O0: @__const.test_paddedpacked_uninit.uninit = private unnamed_addr constant %struct.paddedpacked <{ i8 [[I8]], i32 [[I32]] }>, align 1
92
- // PATTERN: @__const.test_paddedpacked_custom.custom = private unnamed_addr constant %struct.paddedpacked <{ i8 42, i32 13371337 }>, align 1
93
- // ZERO: @__const.test_paddedpacked_custom.custom = private unnamed_addr constant %struct.paddedpacked <{ i8 42, i32 13371337 }>, align 1
94
92
struct paddedpacked { char c; int i; } __attribute__((packed));
95
93
// PATTERN-O0: @__const.test_paddedpackedarray_uninit.uninit = private unnamed_addr constant %struct.paddedpackedarray { [2 x %struct.paddedpacked] [%struct.paddedpacked <{ i8 [[I8]], i32 [[I32]] }>, %struct.paddedpacked <{ i8 [[I8]], i32 [[I32]] }>] }, align 1
96
- // PATTERN: @__const.test_paddedpackedarray_custom.custom = private unnamed_addr constant %struct.paddedpackedarray { [2 x %struct.paddedpacked] [%struct.paddedpacked <{ i8 42, i32 13371337 }>, %struct.paddedpacked <{ i8 43, i32 13371338 }>] }, align 1
97
- // ZERO: @__const.test_paddedpackedarray_custom.custom = private unnamed_addr constant %struct.paddedpackedarray { [2 x %struct.paddedpacked] [%struct.paddedpacked <{ i8 42, i32 13371337 }>, %struct.paddedpacked <{ i8 43, i32 13371338 }>] }, align 1
98
94
struct paddedpackedarray { struct paddedpacked p[2 ]; };
99
95
// PATTERN-O0: @__const.test_unpackedinpacked_uninit.uninit = private unnamed_addr constant <{ { i8, [3 x i8], i32 }, i8 }> <{ { i8, [3 x i8], i32 } { i8 [[I8]], [3 x i8] c"\[[IC]]\[[IC]]\[[IC]]", i32 [[I32]] }, i8 [[I8]] }>, align 1
100
96
struct unpackedinpacked { padded a; char b; } __attribute__((packed));
101
97
// PATTERN-O0: @__const.test_paddednested_uninit.uninit = private unnamed_addr constant { { i8, [3 x i8], i32 }, { i8, [3 x i8], i32 } } { { i8, [3 x i8], i32 } { i8 [[I8]], [3 x i8] c"\[[IC]]\[[IC]]\[[IC]]", i32 [[I32]] }, { i8, [3 x i8], i32 } { i8 [[I8]], [3 x i8] c"\[[IC]]\[[IC]]\[[IC]]", i32 [[I32]] } }, align 4
102
- // PATTERN: @__const.test_paddednested_custom.custom = private unnamed_addr constant { { i8, [3 x i8], i32 }, { i8, [3 x i8], i32 } } { { i8, [3 x i8], i32 } { i8 42, [3 x i8] zeroinitializer, i32 13371337 }, { i8, [3 x i8], i32 } { i8 43, [3 x i8] zeroinitializer, i32 13371338 } }, align 4
103
- // ZERO: @__const.test_paddednested_custom.custom = private unnamed_addr constant { { i8, [3 x i8], i32 }, { i8, [3 x i8], i32 } } { { i8, [3 x i8], i32 } { i8 42, [3 x i8] zeroinitializer, i32 13371337 }, { i8, [3 x i8], i32 } { i8 43, [3 x i8] zeroinitializer, i32 13371338 } }, align 4
104
98
struct paddednested { struct padded p1, p2; };
105
99
// PATTERN-O0: @__const.test_paddedpackednested_uninit.uninit = private unnamed_addr constant %struct.paddedpackednested { %struct.paddedpacked <{ i8 [[I8]], i32 [[I32]] }>, %struct.paddedpacked <{ i8 [[I8]], i32 [[I32]] }> }, align 1
106
- // PATTERN: @__const.test_paddedpackednested_custom.custom = private unnamed_addr constant %struct.paddedpackednested { %struct.paddedpacked <{ i8 42, i32 13371337 }>, %struct.paddedpacked <{ i8 43, i32 13371338 }> }, align 1
107
- // ZERO: @__const.test_paddedpackednested_custom.custom = private unnamed_addr constant %struct.paddedpackednested { %struct.paddedpacked <{ i8 42, i32 13371337 }>, %struct.paddedpacked <{ i8 43, i32 13371338 }> }, align 1
108
100
struct paddedpackednested { struct paddedpacked p1, p2; };
109
101
// PATTERN-O0: @__const.test_bitfield_uninit.uninit = private unnamed_addr constant %struct.bitfield { i8 [[I8]], [3 x i8] c"\[[IC]]\[[IC]]\[[IC]]" }, align 4
110
102
// PATTERN-O0: @__const.test_bitfield_custom.custom = private unnamed_addr constant %struct.bitfield { i8 20, [3 x i8] c"\[[IC]]\[[IC]]\[[IC]]" }, align 4
@@ -714,7 +706,8 @@ TEST_UNINIT(padded, padded);
714
706
// CHECK-NEXT: call void @{{.*}}used{{.*}}%uninit)
715
707
// PATTERN-LABEL: @test_padded_uninit()
716
708
// PATTERN-O0: call void @llvm.memcpy{{.*}} @__const.test_padded_uninit.uninit{{.+}}), !annotation [[AUTO_INIT]]
717
- // PATTERN-O1: store i64 [[I64]], ptr %uninit, align 8, !annotation [[AUTO_INIT]]
709
+ // PATTERN-O1: store i64 [[I64]], ptr %uninit, align 8
710
+ // PATTERN-O1-NOT: !annotation
718
711
// ZERO-LABEL: @test_padded_uninit()
719
712
// ZERO-O0: call void @llvm.memset{{.*}}, i8 0,{{.+}}), !annotation [[AUTO_INIT]]
720
713
// ZERO-O1: store i64 0, ptr %uninit, align 8, !annotation [[AUTO_INIT]]
@@ -740,7 +733,8 @@ TEST_UNINIT(paddednullinit, paddednullinit);
740
733
// CHECK-NEXT: call void @{{.*}}used{{.*}}%uninit)
741
734
// PATTERN-LABEL: @test_paddednullinit_uninit()
742
735
// PATTERN-O0: call void @llvm.memcpy{{.*}} @__const.test_paddednullinit_uninit.uninit{{.+}}), !annotation [[AUTO_INIT]]
743
- // PATTERN-O1: store i64 [[I64]], ptr %uninit, align 8, !annotation [[AUTO_INIT]]
736
+ // PATTERN-O1: store i64 [[I64]], ptr %uninit, align 8
737
+ // PATTERN-O1-NOT: !annotation
744
738
// ZERO-LABEL: @test_paddednullinit_uninit()
745
739
// ZERO-O0: call void @llvm.memset{{.*}}, i8 0, {{.*}}, !annotation [[AUTO_INIT]]
746
740
// ZERO-O1: store i64 0, ptr %uninit, align 8
@@ -778,9 +772,8 @@ TEST_UNINIT(paddedpacked, paddedpacked);
778
772
// PATTERN-LABEL: @test_paddedpacked_uninit()
779
773
// PATTERN-O0: call void @llvm.memcpy{{.*}} @__const.test_paddedpacked_uninit.uninit{{.+}}), !annotation [[AUTO_INIT]]
780
774
// PATTERN-O1: store i8 [[I8]], ptr %uninit, align {{.+}}, !annotation [[AUTO_INIT]]
781
- // PATTERN-O1: %[[I:[^ ]*]] = getelementptr inbounds {{.*}}%uninit, i64 0, i32 1
775
+ // PATTERN-O1: %[[I:[^ ]*]] = getelementptr inbounds {{.*}}%uninit, i64 1
782
776
// PATTERN-O1: store i32 [[I32]], ptr %[[I]], align {{.+}}, !annotation [[AUTO_INIT]]
783
-
784
777
// ZERO-LABEL: @test_paddedpacked_uninit()
785
778
// ZERO: call void @llvm.memset{{.*}}, i8 0,{{.+}}), !annotation [[AUTO_INIT]]
786
779
@@ -1192,7 +1185,8 @@ TEST_UNINIT(atomicpadded, _Atomic(padded));
1192
1185
// CHECK-NEXT: call void @{{.*}}used{{.*}}%uninit)
1193
1186
// PATTERN-LABEL: @test_atomicpadded_uninit()
1194
1187
// PATTERN-O0: call void @llvm.memcpy{{.*}} @__const.test_atomicpadded_uninit.uninit{{.+}}), !annotation [[AUTO_INIT]]
1195
- // PATTERN-O1: store i64 [[IPTR]], ptr %uninit, align 8, !annotation [[AUTO_INIT]]
1188
+ // PATTERN-O1: store i64 [[IPTR]], ptr %uninit, align 8
1189
+ // PATTERN-O1-NOT: !annotation
1196
1190
// ZERO-LABEL: @test_atomicpadded_uninit()
1197
1191
// ZERO-O0: call void @llvm.memset{{.*}}, i8 0, {{.+}}), !annotation [[AUTO_INIT]]
1198
1192
// ZERO-O1: store i64 0, ptr %uninit, align 8, !annotation [[AUTO_INIT]]
@@ -1214,8 +1208,7 @@ TEST_UNINIT(complexfloat, _Complex float);
1214
1208
// PATTERN-LABEL: @test_complexfloat_uninit()
1215
1209
// PATTERN-O0: call void @llvm.memcpy{{.*}} @__const.test_complexfloat_uninit.uninit{{.+}}), !annotation [[AUTO_INIT]]
1216
1210
// PATTERN-O1: store float 0xFFFFFFFFE0000000, ptr %uninit, align {{.+}}, !annotation [[AUTO_INIT]]
1217
-
1218
- // PATTERN-O1: %[[F2:[^ ]*]] = getelementptr inbounds {{.*}}%uninit, i64 0, i32 1
1211
+ // PATTERN-O1: %[[F2:[^ ]*]] = getelementptr inbounds {{.*}}%uninit, i64 4
1219
1212
// PATTERN-O1: store float 0xFFFFFFFFE0000000, ptr %[[F2]], align {{.+}}, !annotation [[AUTO_INIT]]
1220
1213
1221
1214
// ZERO-LABEL: @test_complexfloat_uninit()
@@ -1314,7 +1307,9 @@ TEST_CUSTOM(semivolatile, semivolatile, { 0x44444444, 0x44444444 });
1314
1307
// CHECK-O0: call void @llvm.memcpy
1315
1308
// CHECK-NOT: !annotation
1316
1309
// CHECK-O0: call void @{{.*}}used{{.*}}%custom)
1317
- // CHECK-O1: store i64 4919131752989213764, ptr %custom, align 8
1310
+ // CHECK-O1: store i32 1145324612, ptr %custom, align 4
1311
+ // CHECK-O1-NEXT: %[[I:[^ ]*]] = getelementptr inbounds i8, ptr %custom, i64 4
1312
+ // CHECK-O1-NEXT: store i32 1145324612, ptr %[[I]], align 4
1318
1313
// CHECK-NOT: !annotation
1319
1314
1320
1315
TEST_UNINIT (semivolatileinit, semivolatileinit);
@@ -1427,7 +1422,7 @@ TEST_CUSTOM(matching, matching, { .f = 0xf00f });
1427
1422
// CHECK-O0: call void @llvm.memcpy
1428
1423
// CHECK-NOT: !annotation
1429
1424
// CHECK-O0: call void @{{.*}}used{{.*}}%custom)
1430
- // CHECK-O1: store i32 1198526208 , ptr {{.*}}, align 4
1425
+ // CHECK-O1: store float 6.145500e+04 , ptr {{.*}}, align 4
1431
1426
// CHECK-NOT: !annotation
1432
1427
1433
1428
TEST_UNINIT (matchingreverse, matchingreverse);
@@ -1506,8 +1501,12 @@ TEST_CUSTOM(unmatchedreverse, unmatchedreverse, { .c = 42 });
1506
1501
// CHECK-O0: call void @llvm.memcpy
1507
1502
// CHECK-NOT: !annotation
1508
1503
// CHECK-O0: call void @{{.*}}used{{.*}}%custom)
1509
- // PATTERN-O1: store i32 -1431655894, ptr {{.*}}, align 4
1510
- // ZERO-O1: store i32 42, ptr {{.*}}, align 4
1504
+ // PATTERN-O1: store i8 42, ptr {{.*}}, align 4
1505
+ // PATTERN-O1-NEXT: %[[I:[^ ]*]] = getelementptr inbounds i8, ptr %custom, i64 1
1506
+ // PATTERN-O1-NEXT: call void @llvm.memset.{{.*}}({{.*}}, i8 -86, i64 3, {{.*}})
1507
+ // ZERO-O1: store i8 42, ptr {{.*}}, align 4
1508
+ // ZERO-O1-NEXT: %[[I:[^ ]*]] = getelementptr inbounds i8, ptr %custom, i64 1
1509
+ // ZERO-O1-NEXT: call void @llvm.memset.{{.*}}({{.*}}, i8 0, i64 3, {{.*}})
1511
1510
1512
1511
TEST_UNINIT (unmatchedfp, unmatchedfp);
1513
1512
// CHECK-LABEL: @test_unmatchedfp_uninit()
@@ -1532,7 +1531,7 @@ TEST_CUSTOM(unmatchedfp, unmatchedfp, { .d = 3.1415926535897932384626433 });
1532
1531
// CHECK-O0: call void @llvm.memcpy
1533
1532
// CHECK-NOT: !annotation
1534
1533
// CHECK-O0: call void @{{.*}}used{{.*}}%custom)
1535
- // CHECK-O1: store i64 4614256656552045848 , ptr %custom, align 8
1534
+ // CHECK-O1: store double 0x400921FB54442D18 , ptr %custom, align 8
1536
1535
// CHECK-NOT: !annotation
1537
1536
1538
1537
TEST_UNINIT (emptyenum, emptyenum);
0 commit comments