(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
cris/
pr93372-11.c
       1  /* Check that eliminable compare-instructions are eliminated. */
       2  /* { dg-do compile } */
       3  /* { dg-options "-O2" } */
       4  /* { dg-final { scan-assembler-not "\tcmp|\ttest" } } */
       5  
       6  #ifndef t
       7  #define t short int
       8  #endif
       9  #ifndef t2
      10  #define t2 int
      11  #endif
      12  
      13  #define eq_op(x) ((x) == 0)
      14  #define ne_op(x) ((x) != 0)
      15  #define gt_op(x) ((x) > 0)
      16  #define gtu_op(x) ((x) > 0)
      17  #define lt_op(x) ((x) < 0)
      18  #define ltu_op(x) ((x) < 0)
      19  #define ge_op(x) ((x) >= 0)
      20  #define geu_op(x) ((x) >= 0)
      21  #define le_op(x) ((x) <= 0)
      22  #define leu_op(x) ((x) <= 0)
      23  
      24  #define f(n, T, T2) \
      25  T2 f ## n(T *a, T *b, T2 *d) \
      26  { \
      27    T2 c = *a; \
      28    *d = c; \
      29    *b = n ## _op (c); \
      30    return c; \
      31  }
      32  
      33  f(eq, t, t2)
      34  f(ne, t, t2)
      35  f(gt, t, t2)
      36  f(gtu, unsigned t, unsigned t2)
      37  f(lt, t, t2)
      38  #if 0
      39  f(ltu, unsigned t, unsigned t2)
      40  #endif
      41  f(ge, t, t2)
      42  #if 0
      43  f(geu, t, t2)
      44  #endif
      45  f(le, t, t2)
      46  f(leu, t, t2)