Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/g++.dg/opt/20050511-1.C @ 111:04ced10e8804
gcc 7
author | kono |
---|---|
date | Fri, 27 Oct 2017 22:46:09 +0900 |
parents | |
children | 84e7813d76e9 |
line wrap: on
line source
/* { dg-do run } */ /* { dg-options "-w" } */ /* { dg-options "-O3 -w" { target powerpc*-*-* } } */ #include <stdio.h> #include <stdlib.h> // The VxWorks kernel headers define their own UINT32 #if defined __vxworks && !defined __RTP__ #define UINT32 my_UINT32 #endif typedef signed short SINT16 ; typedef unsigned long UINT32 ; typedef unsigned int UINT ; class A { public: union { SINT16 xy[2]; UINT32 abXY; }; bool operator==(const A& other) const {return abXY == other.abXY;} bool operator!=(const A& other) const {return abXY != other.abXY;} }; template <int size> struct pArray { unsigned char u08[16*(((size*1)+15)/16)] __attribute__ ((aligned(16))); }; struct B { union { A mvL[2]; pArray<1> xyz; }; } ; typedef struct { UINT w; B b; }C; UINT32 bar (const C * sPtr) { UINT w = sPtr->w; A a; a.xy[0] = sPtr->b.mvL[w].xy[0]<<2; a.xy[1] = sPtr->b.mvL[w].xy[1]<<2; if (a.xy[0] != ((SINT16) 0xffff << 2)) abort (); } int main() { A a; C c; a.xy[0] = 0xffff; a.xy[1] = 0xffff; c.w=0; c.b.mvL[0].xy[0] = a.xy[0]; c.b.mvL[0].xy[1] = a.xy[1]; bar (&c); }