Merge from mainline (gomp-merge-2005-02-26).
[official-gcc.git] / gcc / testsuite / g++.dg / ext / attribute-test-4.C
blob7adaf36104519dfdb1e1bc8b7dd6b6d062b741e2
1 // { dg-do run }
3 #define vector __attribute__((vector_size(16)))
5 extern "C" void abort();
7 union U {
8               float f[4];
9               vector float v;
10 } data;
12 class Star
14   public:
15         static vector float foo();
17         Star() 
18           {
19             data.f[0] = 1.0; data.f[1] = 2.0; data.f[2] = 3.0, data.f[3] = 4.0;
20           }
22   private:
23         friend vector float fTest();
26 vector float Star::foo()   // { dg-warning "vector returned by ref" "" { target { powerpc*-*-linux* && ilp32 } } }
28     return data.v;
31 vector float fTest()
33     vector float vf = Star::foo();
34     return vf;
37 int main() {
39   U data;
40   Star s;
43   data.v = fTest();
44   for (int i=0 ; i < 4; i++)
45      if (data.f[i] != (float)(i+1))
46        abort();
47   return 0;