1 
2 /* { dg-do compile } */
3 /* { dg-options "-O2 -fno-strict-aliasing" } */
4 
5 
6 unsigned int *foo (void);
7 
8 char *
bar(double * d)9 bar (double *d)
10 {
11   return (char *) (d + 1) - sizeof (unsigned int);
12 }
13 
14 char
baz(double x)15 baz (double x)
16 {
17   unsigned int h = *foo ();
18   unsigned int l = *(unsigned int *) bar (&x);
19 
20   return (h & ~0x80000000L) == 0x7FF00000 && l == 0;
21 }
22 
23 
24