/* { dg-do compile } */ /* { dg-options "-O2 -fno-strict-aliasing" } */ unsigned int *foo (void); char * bar (double *d) { return (char *) (d + 1) - sizeof (unsigned int); } char baz (double x) { unsigned int h = *foo (); unsigned int l = *(unsigned int *) bar (&x); return (h & ~0x80000000L) == 0x7FF00000 && l == 0; }