| /* PR target/59843 ICE on function taking/returning vector of one float64_t. */ |
| |
| /* { dg-do compile } */ |
| /* { dg-options "-Warray-bounds -O2 -fno-inline -std=c99" } */ |
| |
| #define TEST(BASETYPE, VECTYPE, SUFFIX) \ |
| typedef BASETYPE VECTYPE \ |
| __attribute__ ((__vector_size__ (sizeof (BASETYPE)))); \ |
| VECTYPE \ |
| test_vadd_##SUFFIX (VECTYPE a, VECTYPE b) \ |
| { \ |
| return a + b; \ |
| } \ |
| \ |
| void \ |
| test_##SUFFIX (BASETYPE val) \ |
| { \ |
| VECTYPE var = { val }; \ |
| BASETYPE v0 = var[0]; \ |
| BASETYPE v1 = var[1]; /* { dg-warning "index value is out of bound" } */ \ |
| } |
| |
| TEST (double, float64x1_t, f64) |
| |
| /* Original bug was for above type; |
| in a nod to completeness, test other types too. */ |
| |
| TEST (long long, int64x1_t, s64) |
| |
| TEST (float, float32x1_t, f32) |
| |
| TEST (long, longx1_t, l) |
| |
| TEST (int, intx1_t, i) |
| |
| TEST (short, int16x1_t, s16) |
| |
| TEST (char, int8x1_t, s8) |