| // { dg-do compile } |
| |
| struct S { short a, b; }; |
| struct T { float a[16]; }; |
| struct U { int b[16]; }; |
| |
| #if __SIZEOF_FLOAT__ == __SIZEOF_INT__ |
| int |
| f1 (float x) |
| { |
| return __builtin_bit_cast (int, x); |
| } |
| #endif |
| |
| #if 2 * __SIZEOF_SHORT__ == __SIZEOF_INT__ |
| S |
| f2 (int x) |
| { |
| return __builtin_bit_cast (S, x); |
| } |
| |
| int |
| f3 (S x) |
| { |
| return __builtin_bit_cast (int, x); |
| } |
| #endif |
| |
| #if __SIZEOF_FLOAT__ == __SIZEOF_INT__ |
| U |
| f4 (T &x) |
| { |
| return __builtin_bit_cast (U, x); |
| } |
| |
| T |
| f5 (int (&x)[16]) |
| { |
| return __builtin_bit_cast (T, x); |
| } |
| #endif |
| |
| int |
| f6 () |
| { |
| return __builtin_bit_cast (unsigned char, (signed char) 0); |
| } |