111
|
1 /* { dg-lto-do run } */
|
|
2 extern "C" { extern void *memcpy (void *, const void *, __SIZE_TYPE__); }
|
|
3
|
|
4 inline int
|
|
5 bci (const float &source)
|
|
6 {
|
|
7 int dest;
|
|
8 memcpy (&dest, &source, sizeof (dest));
|
|
9 return dest;
|
|
10 }
|
|
11
|
|
12 inline float
|
|
13 bcf (const int &source)
|
|
14 {
|
|
15 float dest;
|
|
16 memcpy (&dest, &source, sizeof (dest));
|
|
17 return dest;
|
|
18 }
|
|
19
|
|
20 float
|
|
21 Foo ()
|
|
22 {
|
|
23 const int foo = bci (0.0f);
|
|
24 int bar = foo;
|
|
25 const int baz = foo & 1;
|
|
26 if (!baz && (foo & 2))
|
|
27 bar = 0;
|
|
28 return bcf (bar);
|
|
29 }
|
|
30
|
|
31 int main ()
|
|
32 {
|
|
33 if (Foo () != 0.0)
|
|
34 return 1;
|
|
35 return 0;
|
|
36 }
|