1 /* { dg-do compile { target aarch64*-*-* } } */
2 /* { dg-options "-fno-lax-vector-conversions" } */
3 /* { dg-message "use '-flax-vector-conversions' to permit conversions" "" { target *-*-* } 0 } */
4 
5 typedef int v4si __attribute__((vector_size(16)));
6 typedef short v8hi __attribute__((vector_size(16)));
7 
8 struct s { __Int16x8_t x; __Int32x4_t y; };
9 union u1 { __Int16x8_t x; __Int32x4_t y; };
10 union u2 { __Int32x4_t s; __Int16x8_t y; };
11 
12 void
foo(v4si i,v8hi h)13 foo (v4si i, v8hi h)
14 {
15   struct s x1 = { i, i }; // { dg-error "incompatible types when initializing type '__Int16x8_t" }
16   struct s x2 = { h, h }; // { dg-error "incompatible types" }
17   struct s x3 = { i, h }; // { dg-error "incompatible types" }
18   struct s x4 = { h, i };
19 
20   union u1 y1 = { i }; // { dg-error "incompatible types" }
21   union u1 y2 = { h };
22   union u2 y3 = { i };
23   union u2 y4 = { h }; // { dg-error "incompatible types" }
24 
25   v4si z1[] = { i, i };
26   v4si z2[] = { i, h }; // { dg-error "incompatible types" }
27   v4si z3[] = { h, i }; // { dg-error "incompatible types" }
28   v4si z4[] = { h, h }; // { dg-error "incompatible types" }
29   v8hi z5[] = { i, i }; // { dg-error "incompatible types" }
30   v8hi z6[] = { i, h }; // { dg-error "incompatible types" }
31   v8hi z7[] = { h, i }; // { dg-error "incompatible types" }
32   v8hi z8[] = { h, h };
33 }
34