blob: fb22b20d9deed03507c225f8a30d2ff61c6a3f22 [file] [log] [blame]
/* Check that eliminable compare-instructions are eliminated. */
/* { dg-do compile } */
/* { dg-options "-O2" } */
/* { dg-final { scan-assembler-not "\tcmp|\ttest" } } */
#ifndef t
#define t int
#endif
t feq(t *a, t *b)
{
t c = *a;
*b = c == 0;
return c;
}
t fne(t *a, t *b)
{
t c = *a;
*b = c != 0;
return c;
}
t fgt(t *a, t *b)
{
t c = *a;
*b = c > 0;
return c;
}
unsigned t fgtu(unsigned t *a, unsigned t *b)
{
unsigned t c = *a;
*b = c > 0;
return c;
}
t flt(t *a, t *b)
{
t c = *a;
*b = c < 0;
return c;
}
#if 0
/* Always false... */
unsigned t fltu(unsigned t *a, unsigned t *b)
{
unsigned t c = *a;
*b = c < 0;
return c;
}
#endif
t fge(t *a, t *b)
{
t c = *a;
*b = c >= 0;
return c;
}
#if 0
/* Always true... */
unsigned t fgeu(unsigned t *a, unsigned t *b)
{
unsigned t c = *a;
*b = c > 0;
return c;
}
#endif
t fle(t *a, t *b)
{
t c = *a;
*b = c <= 0;
return c;
}
/* Same as eq... */
unsigned t fleu(unsigned t *a, unsigned t *b)
{
unsigned t c = *a;
*b = c <= 0;
return c;
}