/* PR middle-end/37870 */ | |
/* { dg-do run } */ | |
/* { dg-options "-O2 -mlong-double-80" } */ | |
unsigned int | |
foo (long double x) | |
{ | |
struct { char a[8]; unsigned int b:7; } c; | |
__builtin_memcpy (&c, &x, sizeof (c)); | |
return c.b; | |
} | |
unsigned int | |
bar (long double x) | |
{ | |
union { struct { char a[8]; unsigned int b:7; } c; long double d; } u; | |
u.d = x; | |
return u.c.b; | |
} | |
int | |
main (void) | |
{ | |
if (foo (1.245L) != bar (1.245L) | |
|| foo (245.67L) != bar (245.67L) | |
|| foo (0.00567L) != bar (0.00567L)) | |
__builtin_abort (); | |
return 0; | |
} |