(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
pr94899.c
       1  /* { dg-do compile } */
       2  /* { dg-options "-O2 -fdump-tree-optimized" } */
       3  
       4  typedef __INT16_TYPE__ int16_t;
       5  typedef __INT32_TYPE__ int32_t;
       6  typedef __UINT16_TYPE__ uint16_t;
       7  typedef __UINT32_TYPE__ uint32_t;
       8  
       9  #define MAGIC (~ (uint32_t) 0 / 2 + 1)
      10  
      11  int
      12  f_i16_i16 (int16_t x, int16_t y)
      13  {
      14    return x + MAGIC < y + MAGIC;
      15  }
      16  
      17  int
      18  f_i16_i32 (int16_t x, int32_t y)
      19  {
      20    return x + MAGIC < y + MAGIC;
      21  }
      22  
      23  int
      24  f_i32_i32 (int32_t x, int32_t y)
      25  {
      26    return x + MAGIC < y + MAGIC;
      27  }
      28  
      29  int
      30  f_u32_i32 (uint32_t x, int32_t y)
      31  {
      32    return x + MAGIC < y + MAGIC;
      33  }
      34  
      35  int
      36  f_u32_u32 (uint32_t x, uint32_t y)
      37  {
      38    return x + MAGIC < y + MAGIC;
      39  }
      40  
      41  int
      42  f_i32_i32_sub (int32_t x, int32_t y)
      43  {
      44    return x - MAGIC < y - MAGIC;
      45  }
      46  
      47  /* The addition/subtraction of constants should be optimized away.  */
      48  /* { dg-final { scan-tree-dump-not " \\+ " "optimized"} } */
      49  /* { dg-final { scan-tree-dump-not " \\- " "optimized"} } */