Reverting merge from trunk
[official-gcc.git] / gcc / testsuite / g++.dg / ext / attribute-test-4.C
blob4783ee8a4068d5c11d759215c4112bc8bdb734b9
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()
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;
50 /* Ignore a warning that is irrelevant to the purpose of this test.  */
51 /* { dg-prune-output ".*GCC vector returned by reference.*" } */