| 
 | 1 | +// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 5  | 
1 | 2 | // REQUIRES: aarch64-registered-target  | 
2 | 3 | // RUN: %clang_cc1 -triple aarch64 -target-feature +neon -emit-llvm -O2 -o - %s | FileCheck %s  | 
3 | 4 | #include <stdarg.h>  | 
@@ -58,8 +59,8 @@ struct non_packed_struct gs_non_packed_struct;  | 
58 | 59 | // CHECK-SAME: (double [[D0:%.*]], double [[D1:%.*]], double [[D2:%.*]], double [[D3:%.*]], double [[D4:%.*]], double [[D5:%.*]], double [[D6:%.*]], double [[D7:%.*]], double noundef [[D8:%.*]], [1 x <8 x i16>] alignstack(16) [[S_NON_PACKED_STRUCT_COERCE:%.*]]) local_unnamed_addr #[[ATTR0:[0-9]+]] {  | 
59 | 60 | // CHECK-NEXT:  entry:  | 
60 | 61 | // CHECK-NEXT:    [[S_NON_PACKED_STRUCT_COERCE_FCA_0_EXTRACT:%.*]] = extractvalue [1 x <8 x i16>] [[S_NON_PACKED_STRUCT_COERCE]], 0  | 
61 |  | -// CHECK-NEXT:    store double [[D8]], ptr @gd, align 8, !tbaa [[TBAA2:![0-9]+]]  | 
62 |  | -// CHECK-NEXT:    store <8 x i16> [[S_NON_PACKED_STRUCT_COERCE_FCA_0_EXTRACT]], ptr @gs_non_packed_struct, align 16, !tbaa [[TBAA6:![0-9]+]]  | 
 | 62 | +// CHECK-NEXT:    store double [[D8]], ptr @gd, align 8, !tbaa [[TBAA6:![0-9]+]]  | 
 | 63 | +// CHECK-NEXT:    store <8 x i16> [[S_NON_PACKED_STRUCT_COERCE_FCA_0_EXTRACT]], ptr @gs_non_packed_struct, align 16, !tbaa [[TBAA8:![0-9]+]]  | 
63 | 64 | // CHECK-NEXT:    ret void  | 
64 | 65 | __attribute__((noinline)) void named_arg_non_packed_struct(double d0, double d1, double d2, double d3,  | 
65 | 66 |                                  double d4, double d5, double d6, double d7,  | 
@@ -113,8 +114,8 @@ struct packed_struct gs_packed_struct;  | 
113 | 114 | // CHECK-SAME: (double [[D0:%.*]], double [[D1:%.*]], double [[D2:%.*]], double [[D3:%.*]], double [[D4:%.*]], double [[D5:%.*]], double [[D6:%.*]], double [[D7:%.*]], double noundef [[D8:%.*]], [1 x <8 x i16>] alignstack(8) [[S_PACKED_STRUCT_COERCE:%.*]]) local_unnamed_addr #[[ATTR0]] {  | 
114 | 115 | // CHECK-NEXT:  entry:  | 
115 | 116 | // CHECK-NEXT:    [[S_PACKED_STRUCT_COERCE_FCA_0_EXTRACT:%.*]] = extractvalue [1 x <8 x i16>] [[S_PACKED_STRUCT_COERCE]], 0  | 
116 |  | -// CHECK-NEXT:    store double [[D8]], ptr @gd, align 8, !tbaa [[TBAA2]]  | 
117 |  | -// CHECK-NEXT:    store <8 x i16> [[S_PACKED_STRUCT_COERCE_FCA_0_EXTRACT]], ptr @gs_packed_struct, align 1, !tbaa [[TBAA6]]  | 
 | 117 | +// CHECK-NEXT:    store double [[D8]], ptr @gd, align 8, !tbaa [[TBAA6]]  | 
 | 118 | +// CHECK-NEXT:    store <8 x i16> [[S_PACKED_STRUCT_COERCE_FCA_0_EXTRACT]], ptr @gs_packed_struct, align 1, !tbaa [[TBAA8]]  | 
118 | 119 | // CHECK-NEXT:    ret void  | 
119 | 120 | __attribute__((noinline)) void named_arg_packed_struct(double d0, double d1, double d2, double d3,  | 
120 | 121 |                                  double d4, double d5, double d6, double d7,  | 
@@ -168,8 +169,8 @@ struct packed_member gs_packed_member;  | 
168 | 169 | // CHECK-SAME: (double [[D0:%.*]], double [[D1:%.*]], double [[D2:%.*]], double [[D3:%.*]], double [[D4:%.*]], double [[D5:%.*]], double [[D6:%.*]], double [[D7:%.*]], double noundef [[D8:%.*]], [1 x <8 x i16>] alignstack(8) [[S_PACKED_MEMBER_COERCE:%.*]]) local_unnamed_addr #[[ATTR0]] {  | 
169 | 170 | // CHECK-NEXT:  entry:  | 
170 | 171 | // CHECK-NEXT:    [[S_PACKED_MEMBER_COERCE_FCA_0_EXTRACT:%.*]] = extractvalue [1 x <8 x i16>] [[S_PACKED_MEMBER_COERCE]], 0  | 
171 |  | -// CHECK-NEXT:    store double [[D8]], ptr @gd, align 8, !tbaa [[TBAA2]]  | 
172 |  | -// CHECK-NEXT:    store <8 x i16> [[S_PACKED_MEMBER_COERCE_FCA_0_EXTRACT]], ptr @gs_packed_member, align 1, !tbaa [[TBAA6]]  | 
 | 172 | +// CHECK-NEXT:    store double [[D8]], ptr @gd, align 8, !tbaa [[TBAA6]]  | 
 | 173 | +// CHECK-NEXT:    store <8 x i16> [[S_PACKED_MEMBER_COERCE_FCA_0_EXTRACT]], ptr @gs_packed_member, align 1, !tbaa [[TBAA8]]  | 
173 | 174 | // CHECK-NEXT:    ret void  | 
174 | 175 | __attribute__((noinline)) void named_arg_packed_member(double d0, double d1, double d2, double d3,  | 
175 | 176 |                                  double d4, double d5, double d6, double d7,  | 
@@ -223,8 +224,8 @@ struct aligned_struct_8 gs_aligned_struct_8;  | 
223 | 224 | // CHECK-SAME: (double [[D0:%.*]], double [[D1:%.*]], double [[D2:%.*]], double [[D3:%.*]], double [[D4:%.*]], double [[D5:%.*]], double [[D6:%.*]], double [[D7:%.*]], double noundef [[D8:%.*]], [1 x <8 x i16>] alignstack(16) [[S_ALIGNED_STRUCT_8_COERCE:%.*]]) local_unnamed_addr #[[ATTR0]] {  | 
224 | 225 | // CHECK-NEXT:  entry:  | 
225 | 226 | // CHECK-NEXT:    [[S_ALIGNED_STRUCT_8_COERCE_FCA_0_EXTRACT:%.*]] = extractvalue [1 x <8 x i16>] [[S_ALIGNED_STRUCT_8_COERCE]], 0  | 
226 |  | -// CHECK-NEXT:    store double [[D8]], ptr @gd, align 8, !tbaa [[TBAA2]]  | 
227 |  | -// CHECK-NEXT:    store <8 x i16> [[S_ALIGNED_STRUCT_8_COERCE_FCA_0_EXTRACT]], ptr @gs_aligned_struct_8, align 16, !tbaa [[TBAA6]]  | 
 | 227 | +// CHECK-NEXT:    store double [[D8]], ptr @gd, align 8, !tbaa [[TBAA6]]  | 
 | 228 | +// CHECK-NEXT:    store <8 x i16> [[S_ALIGNED_STRUCT_8_COERCE_FCA_0_EXTRACT]], ptr @gs_aligned_struct_8, align 16, !tbaa [[TBAA8]]  | 
228 | 229 | // CHECK-NEXT:    ret void  | 
229 | 230 | __attribute__((noinline)) void named_arg_aligned_struct_8(double d0, double d1, double d2, double d3,  | 
230 | 231 |                                  double d4, double d5, double d6, double d7,  | 
@@ -278,8 +279,8 @@ struct aligned_member_8 gs_aligned_member_8;  | 
278 | 279 | // CHECK-SAME: (double [[D0:%.*]], double [[D1:%.*]], double [[D2:%.*]], double [[D3:%.*]], double [[D4:%.*]], double [[D5:%.*]], double [[D6:%.*]], double [[D7:%.*]], double noundef [[D8:%.*]], [1 x <8 x i16>] alignstack(16) [[S_ALIGNED_MEMBER_8_COERCE:%.*]]) local_unnamed_addr #[[ATTR0]] {  | 
279 | 280 | // CHECK-NEXT:  entry:  | 
280 | 281 | // CHECK-NEXT:    [[S_ALIGNED_MEMBER_8_COERCE_FCA_0_EXTRACT:%.*]] = extractvalue [1 x <8 x i16>] [[S_ALIGNED_MEMBER_8_COERCE]], 0  | 
281 |  | -// CHECK-NEXT:    store double [[D8]], ptr @gd, align 8, !tbaa [[TBAA2]]  | 
282 |  | -// CHECK-NEXT:    store <8 x i16> [[S_ALIGNED_MEMBER_8_COERCE_FCA_0_EXTRACT]], ptr @gs_aligned_member_8, align 16, !tbaa [[TBAA6]]  | 
 | 282 | +// CHECK-NEXT:    store double [[D8]], ptr @gd, align 8, !tbaa [[TBAA6]]  | 
 | 283 | +// CHECK-NEXT:    store <8 x i16> [[S_ALIGNED_MEMBER_8_COERCE_FCA_0_EXTRACT]], ptr @gs_aligned_member_8, align 16, !tbaa [[TBAA8]]  | 
283 | 284 | // CHECK-NEXT:    ret void  | 
284 | 285 | __attribute__((noinline)) void named_arg_aligned_member_8(double d0, double d1, double d2, double d3,  | 
285 | 286 |                                  double d4, double d5, double d6, double d7,  | 
@@ -333,8 +334,8 @@ struct pragma_packed_struct_8 gs_pragma_packed_struct_8;  | 
333 | 334 | // CHECK-SAME: (double [[D0:%.*]], double [[D1:%.*]], double [[D2:%.*]], double [[D3:%.*]], double [[D4:%.*]], double [[D5:%.*]], double [[D6:%.*]], double [[D7:%.*]], double noundef [[D8:%.*]], [1 x <8 x i16>] alignstack(8) [[S_PRAGMA_PACKED_STRUCT_8_COERCE:%.*]]) local_unnamed_addr #[[ATTR0]] {  | 
334 | 335 | // CHECK-NEXT:  entry:  | 
335 | 336 | // CHECK-NEXT:    [[S_PRAGMA_PACKED_STRUCT_8_COERCE_FCA_0_EXTRACT:%.*]] = extractvalue [1 x <8 x i16>] [[S_PRAGMA_PACKED_STRUCT_8_COERCE]], 0  | 
336 |  | -// CHECK-NEXT:    store double [[D8]], ptr @gd, align 8, !tbaa [[TBAA2]]  | 
337 |  | -// CHECK-NEXT:    store <8 x i16> [[S_PRAGMA_PACKED_STRUCT_8_COERCE_FCA_0_EXTRACT]], ptr @gs_pragma_packed_struct_8, align 8, !tbaa [[TBAA6]]  | 
 | 337 | +// CHECK-NEXT:    store double [[D8]], ptr @gd, align 8, !tbaa [[TBAA6]]  | 
 | 338 | +// CHECK-NEXT:    store <8 x i16> [[S_PRAGMA_PACKED_STRUCT_8_COERCE_FCA_0_EXTRACT]], ptr @gs_pragma_packed_struct_8, align 8, !tbaa [[TBAA8]]  | 
338 | 339 | // CHECK-NEXT:    ret void  | 
339 | 340 | __attribute__((noinline)) void named_arg_pragma_packed_struct_8(double d0, double d1, double d2, double d3,  | 
340 | 341 |                                  double d4, double d5, double d6, double d7,  | 
@@ -388,8 +389,8 @@ struct pragma_packed_struct_4 gs_pragma_packed_struct_4;  | 
388 | 389 | // CHECK-SAME: (double [[D0:%.*]], double [[D1:%.*]], double [[D2:%.*]], double [[D3:%.*]], double [[D4:%.*]], double [[D5:%.*]], double [[D6:%.*]], double [[D7:%.*]], double noundef [[D8:%.*]], [1 x <8 x i16>] alignstack(8) [[S_PRAGMA_PACKED_STRUCT_4_COERCE:%.*]]) local_unnamed_addr #[[ATTR0]] {  | 
389 | 390 | // CHECK-NEXT:  entry:  | 
390 | 391 | // CHECK-NEXT:    [[S_PRAGMA_PACKED_STRUCT_4_COERCE_FCA_0_EXTRACT:%.*]] = extractvalue [1 x <8 x i16>] [[S_PRAGMA_PACKED_STRUCT_4_COERCE]], 0  | 
391 |  | -// CHECK-NEXT:    store double [[D8]], ptr @gd, align 8, !tbaa [[TBAA2]]  | 
392 |  | -// CHECK-NEXT:    store <8 x i16> [[S_PRAGMA_PACKED_STRUCT_4_COERCE_FCA_0_EXTRACT]], ptr @gs_pragma_packed_struct_4, align 4, !tbaa [[TBAA6]]  | 
 | 392 | +// CHECK-NEXT:    store double [[D8]], ptr @gd, align 8, !tbaa [[TBAA6]]  | 
 | 393 | +// CHECK-NEXT:    store <8 x i16> [[S_PRAGMA_PACKED_STRUCT_4_COERCE_FCA_0_EXTRACT]], ptr @gs_pragma_packed_struct_4, align 4, !tbaa [[TBAA8]]  | 
393 | 394 | // CHECK-NEXT:    ret void  | 
394 | 395 | __attribute__((noinline)) void named_arg_pragma_packed_struct_4(double d0, double d1, double d2, double d3,  | 
395 | 396 |                                  double d4, double d5, double d6, double d7,  | 
@@ -437,9 +438,9 @@ void test_pragma_packed_struct_4() {  | 
437 | 438 |     variadic_pragma_packed_struct_4(1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 2.0, s_pragma_packed_struct_4);  | 
438 | 439 | }  | 
439 | 440 | //.  | 
440 |  | -// CHECK: [[TBAA2]] = !{[[META3:![0-9]+]], [[META3]], i64 0}  | 
441 |  | -// CHECK: [[META3]] = !{!"double", [[META4:![0-9]+]], i64 0}  | 
442 |  | -// CHECK: [[META4]] = !{!"omnipotent char", [[META5:![0-9]+]], i64 0}  | 
 | 441 | +// CHECK: [[META4:![0-9]+]] = !{!"omnipotent char", [[META5:![0-9]+]], i64 0}  | 
443 | 442 | // CHECK: [[META5]] = !{!"Simple C/C++ TBAA"}  | 
444 |  | -// CHECK: [[TBAA6]] = !{[[META4]], [[META4]], i64 0}  | 
 | 443 | +// CHECK: [[TBAA6]] = !{[[META7:![0-9]+]], [[META7]], i64 0}  | 
 | 444 | +// CHECK: [[META7]] = !{!"double", [[META4]], i64 0}  | 
 | 445 | +// CHECK: [[TBAA8]] = !{[[META4]], [[META4]], i64 0}  | 
445 | 446 | //.  | 
0 commit comments