PR c++/9844, PR c++/13989
[official-gcc.git] / gcc / testsuite / g++.dg / ext / attribute-test-2.C
blob95a287e7ca8bef8c0dce601decc516405e236c52
1 // { dg-do run }
2 // PR c++/9844
4 extern "C" void abort();
6 #define vector __attribute__((vector_size(16)))
8 class vector_holder
10    char __attribute__((vector_size(16))) vec;
11    char __attribute__((vector_size(16))) vec1;
12 public:
13    operator __attribute__((vector_size(16))) short (void) {
14      return (__attribute__((vector_size(16))) short) vec;
15    }
17    operator __attribute__((vector_size(16))) int (void) {
18      return (__attribute__((vector_size(16))) int) vec1;
19    }
21    vector_holder () {
22         vec = (__attribute__((vector_size(16))) char) {'a', 'b', 'c', 'd', 'a', 'b', 'c', 'd',
23                                                        'a', 'b', 'c', 'd', 'a', 'b', 'c', 'd'};
24         vec1 = (__attribute__((vector_size(16))) char) {'m', 'n', 'o', 'q', 'm', 'n', 'o', 'p',
25                                                         'm', 'n', 'o', 'q', 'm', 'n', 'o', 'p'};
26    }
29 union u {
30               char f[16];
31               vector unsigned int v;
32 } data;
35 vector_holder vh;
37 int main()
39   data.v = (__attribute__((vector_size(16))) short) vh;
40   if (data.f[0] != 'a' || data.f[15] != 'd')
41     abort(); 
42   data.v = (__attribute__((vector_size(16))) int) vh;
43   if (data.f[0] != 'm' || data.f[15] != 'p')
44     abort(); 
46   return 0;