| /* PR tree-optimization/56064 */ |
| /* { dg-do run } */ |
| /* { dg-options "-std=gnu99 -O2" } */ |
| |
| extern void abort (void); |
| extern void exit (int); |
| |
| void test_k (void) |
| { |
| _Accum a; |
| __INT32_TYPE__ i = -__INT32_MAX__; |
| |
| if (sizeof (a) != sizeof (i)) |
| return; |
| |
| __builtin_memcpy (&a, &i, sizeof (a)); |
| |
| if (a >= 0k) |
| abort(); |
| } |
| |
| void test_0k (void) |
| { |
| _Accum a; |
| __INT32_TYPE__ i = 0; |
| |
| if (sizeof (a) != sizeof (i)) |
| return; |
| |
| __builtin_memcpy (&a, &i, sizeof (a)); |
| |
| if (a != 0k) |
| abort(); |
| } |
| |
| |
| void test_hr (void) |
| { |
| short _Fract a; |
| __INT8_TYPE__ i = -__INT8_MAX__; |
| |
| if (sizeof (a) != sizeof (i)) |
| return; |
| |
| __builtin_memcpy (&a, &i, sizeof (a)); |
| |
| if (a >= 0hr) |
| abort(); |
| } |
| |
| void test_0hr (void) |
| { |
| short _Fract a; |
| __INT8_TYPE__ i = 0; |
| |
| if (sizeof (a) != sizeof (i)) |
| return; |
| |
| __builtin_memcpy (&a, &i, sizeof (a)); |
| |
| if (a != 0hr) |
| abort(); |
| } |
| |
| |
| void test_si (void) |
| { |
| _Accum a = __ACCUM_MIN__; |
| __INT32_TYPE__ i; |
| |
| if (sizeof (a) != sizeof (i)) |
| return; |
| |
| __builtin_memcpy (&i, &a, sizeof (i)); |
| |
| if (i >= 0) |
| abort(); |
| } |
| |
| void test_0si (void) |
| { |
| _Accum a = 0; |
| __INT32_TYPE__ i; |
| |
| if (sizeof (a) != sizeof (i)) |
| return; |
| |
| __builtin_memcpy (&i, &a, sizeof (i)); |
| |
| if (i != 0) |
| abort(); |
| } |
| |
| |
| void test_qi (void) |
| { |
| short _Fract a = __SFRACT_MIN__; |
| __INT8_TYPE__ i; |
| |
| if (sizeof (a) != sizeof (i)) |
| return; |
| |
| __builtin_memcpy (&i, &a, sizeof (i)); |
| |
| if (i >= 0) |
| abort(); |
| } |
| |
| void test_0qi (void) |
| { |
| short _Fract a = 0hr; |
| __INT8_TYPE__ i; |
| |
| if (sizeof (a) != sizeof (i)) |
| return; |
| |
| __builtin_memcpy (&i, &a, sizeof (i)); |
| |
| if (i != 0) |
| abort(); |
| } |
| |
| |
| int main (void) |
| { |
| test_hr(); |
| test_k(); |
| test_qi(); |
| test_si(); |
| |
| test_0hr(); |
| test_0k(); |
| test_0qi(); |
| test_0si(); |
| |
| exit (0); |
| |
| return 0; |
| } |