Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/g++.dg/opt/20050511-1.C @ 158:494b0b89df80 default tip
...
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 25 May 2020 18:13:55 +0900 |
parents | 84e7813d76e9 |
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); }