blob: fbce5185e16602f1d432302305e1e66fd8446607 [file] [log] [blame]
/* 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;
}