/* { dg-do compile } */ | |
/* { dg-require-effective-target int_eq_float } */ | |
#include <stdio.h> | |
#include <string.h> | |
inline int | |
bci (const float &source) | |
{ | |
int dest; | |
memcpy (&dest, &source, sizeof (dest)); | |
return dest; | |
} | |
inline float | |
bcf (const int &source) | |
{ | |
float dest; | |
memcpy (&dest, &source, sizeof (dest)); | |
return dest; | |
} | |
float | |
Foo () | |
{ | |
const int foo = bci (0.0f); | |
int bar = foo; | |
const int baz = foo & 1; | |
if (!baz && (foo & 2)) | |
bar = 0; | |
return bcf (bar); | |
} | |
int | |
main () | |
{ | |
printf ("Foo() = %f\n", Foo()); | |
return 0; | |
} | |