111
|
1 /* PR target/59843 ICE on function taking/returning vector of one float64_t. */
|
|
2
|
|
3 /* { dg-do compile } */
|
|
4 /* { dg-options "-Warray-bounds -O2 -fno-inline -std=c99" } */
|
|
5
|
|
6 #define TEST(BASETYPE, VECTYPE, SUFFIX) \
|
|
7 typedef BASETYPE VECTYPE \
|
|
8 __attribute__ ((__vector_size__ (sizeof (BASETYPE)))); \
|
|
9 VECTYPE \
|
|
10 test_vadd_##SUFFIX (VECTYPE a, VECTYPE b) \
|
|
11 { \
|
|
12 return a + b; \
|
|
13 } \
|
|
14 \
|
|
15 void \
|
|
16 test_##SUFFIX (BASETYPE val) \
|
|
17 { \
|
|
18 VECTYPE var = { val }; \
|
|
19 BASETYPE v0 = var[0]; \
|
|
20 BASETYPE v1 = var[1]; /* { dg-warning "index value is out of bound" } */ \
|
|
21 }
|
|
22
|
|
23 TEST (double, float64x1_t, f64)
|
|
24
|
|
25 /* Original bug was for above type;
|
|
26 in a nod to completeness, test other types too. */
|
|
27
|
|
28 TEST (long long, int64x1_t, s64)
|
|
29
|
|
30 TEST (float, float32x1_t, f32)
|
|
31
|
|
32 TEST (long, longx1_t, l)
|
|
33
|
|
34 TEST (int, intx1_t, i)
|
|
35
|
|
36 TEST (short, int16x1_t, s16)
|
|
37
|
|
38 TEST (char, int8x1_t, s8)
|