No empty .Rs/.Re
[netbsd-mini2440.git] / gnu / dist / gcc4 / gcc / testsuite / g++.dg / opt / 20050511-1.C
blob2fbd3e1be5e998d84726b20ac1ef2d91d0537818
1 /* { dg-do run } */
2 /* { dg-options "-w" } */
3 /* { dg-options "-O3 -w" { target powerpc*-*-* } } */
4 #include <stdio.h>
5 #include <stdlib.h>
7 typedef signed short SINT16 ;
8 typedef unsigned long UINT32 ;
9 typedef unsigned int UINT ;
11 class A
13 public:
14     union   
15     {
16       SINT16 xy[2];
17       UINT32 abXY;
18     };
19   bool operator==(const A& other) const {return abXY == other.abXY;}
20   bool operator!=(const A& other) const {return abXY != other.abXY;}
23 template <int size> struct pArray { unsigned char u08[16*(((size*1)+15)/16)] __attribute__ ((aligned(16))); };
25 struct B
27   union {
28     A mvL[2];
29     pArray<1> xyz;
30   };
31 } ;
33 typedef struct
35   UINT w;
36   B b;
38 }C;
41 UINT32 bar (const C * sPtr)
43   UINT w = sPtr->w;
44   A a;
46   a.xy[0] = sPtr->b.mvL[w].xy[0]<<2;
47   a.xy[1] = sPtr->b.mvL[w].xy[1]<<2;
49   if (a.xy[0] != ((SINT16) 0xffff << 2))
50         abort ();
53 int main()
55         A a;
56         C c;
57         a.xy[0] = 0xffff;
58         a.xy[1] = 0xffff;
59         c.w=0;
60         c.b.mvL[0].xy[0] = a.xy[0];
61         c.b.mvL[0].xy[1] = a.xy[1];
63         bar (&c);
65