diff --git a/test/C++Frontend/2003-05-21-UnionBitfields.c b/test/C++Frontend/2003-05-21-UnionBitfields.c new file mode 100644 index 00000000000..b9d954a0ac2 --- /dev/null +++ b/test/C++Frontend/2003-05-21-UnionBitfields.c @@ -0,0 +1,22 @@ +#include +#include + +int target_isinf(double x) { + union { + double d; + struct { + unsigned mantissa2; + unsigned mantissa1 : 20; + unsigned exponent : 11; + unsigned sign : 1; + } big_endian; + } u; + + u.d = x; + return (u.big_endian.exponent == 2047 && u.big_endian.mantissa1 == 0 && u.big_endian.mantissa2 == 0); +} + +int main() { + printf("%d %d\n", target_isinf(1234.42), target_isinf(INFINITY)); + return 0; +}