Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/g++.dg/opt/20050511-1.C @ 131:84e7813d76e9
gcc-8.2
author | mir3636 |
---|---|
date | Thu, 25 Oct 2018 07:37:49 +0900 |
parents | 04ced10e8804 |
children |
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 (); return 0; } 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); }