1 /* { dg-do run { target m68k-*-* fido-*-* sparc-*-* } } */ 2 /* { dg-options { -O2 } } */ 3 4 extern void abort (void); 5 6 typedef float SFtype __attribute__ ((mode (SF))); 7 typedef float DFtype __attribute__ ((mode (DF))); 8 9 typedef int HItype __attribute__ ((mode (HI))); 10 typedef int SItype __attribute__ ((mode (SI))); 11 typedef int DItype __attribute__ ((mode (DI))); 12 13 typedef unsigned int UHItype __attribute__ ((mode (HI))); 14 typedef unsigned int USItype __attribute__ ((mode (SI))); 15 typedef unsigned int UDItype __attribute__ ((mode (DI))); 16 17 typedef UDItype fractype; 18 typedef USItype halffractype; 19 typedef DFtype FLO_type; 20 typedef DItype intfrac; 21 22 23 typedef union 24 { 25 long long foo; 26 FLO_type value; 27 struct 28 { 29 fractype fraction:52 __attribute__ ((packed)); 30 unsigned int exp:11 __attribute__ ((packed)); 31 unsigned int sign:1 __attribute__ ((packed)); 32 } 33 bits; 34 } FLO_union_type; 35 36 void foo (long long a); 37 long long x; 38 39 void pack_d()40pack_d () 41 { 42 FLO_union_type dst = { 0x0123456789abcdefLL }; 43 44 x = dst.bits.fraction; 45 } 46 47 int main()48main () 49 { 50 pack_d (); 51 foo (x); 52 return 0; 53 } 54 55 void foo(long long a)56foo (long long a) 57 { 58 if (a != 0x0123456789abcLL) 59 abort (); 60 } 61