1  /* { dg-do run } */
       2  
       3  typedef __UINT8_TYPE__ uint8_t;
       4  
       5  #define AI static __inline__ __attribute__((__always_inline__))
       6  #define NI __attribute__((__noinline__,__noclone__))
       7  
       8  AI uint8_t func1_eq (uint8_t c, unsigned x)
       9  {
      10    if (x == c)
      11      return 1;
      12    return 0;
      13  }
      14  
      15  AI uint8_t func1_ne (uint8_t c, unsigned x)
      16  {
      17    if (x != c)
      18      return 1;
      19    return 0;
      20  }
      21  
      22  AI uint8_t func1_ltu (uint8_t c, unsigned x)
      23  {
      24    if (x < c)
      25      return 1;
      26    return 0;
      27  }
      28  
      29  AI uint8_t func1_leu (uint8_t c, unsigned x)
      30  {
      31    if (x <= c)
      32      return 1;
      33    return 0;
      34  }
      35  
      36  AI uint8_t func1_gtu (uint8_t c, unsigned x)
      37  {
      38    if (x > c)
      39      return 1;
      40    return 0;
      41  }
      42  
      43  AI uint8_t func1_geu (uint8_t c, unsigned x)
      44  {
      45    if (x >= c)
      46      return 1;
      47    return 0;
      48  }
      49  
      50  NI uint8_t func2_eq (uint8_t c, unsigned x) { return func1_eq (c, x); }
      51  NI uint8_t func2_ne (uint8_t c, unsigned x) { return func1_ne (c, x); }
      52  NI uint8_t func2_ltu (uint8_t c, unsigned x) { return func1_ltu (c, x); }
      53  NI uint8_t func2_leu (uint8_t c, unsigned x) { return func1_leu (c, x); }
      54  NI uint8_t func2_gtu (uint8_t c, unsigned x) { return func1_gtu (c, x); }
      55  NI uint8_t func2_geu (uint8_t c, unsigned x) { return func1_geu (c, x); }
      56  
      57  AI void test4 (uint8_t c, unsigned x)
      58  {
      59    if (func2_eq (c, x) != func1_eq (c, x)) __builtin_abort();
      60    if (func2_ne (c, x) != func1_ne (c, x)) __builtin_abort();
      61    if (func2_ltu (c, x) != func1_ltu (c, x)) __builtin_abort();
      62    if (func2_leu (c, x) != func1_leu (c, x)) __builtin_abort();
      63    if (func2_gtu (c, x) != func1_gtu (c, x)) __builtin_abort();
      64    if (func2_geu (c, x) != func1_geu (c, x)) __builtin_abort();
      65  }
      66  
      67  int main (void)
      68  {
      69    test4 (127, 127);
      70    test4 (127, 128);
      71    test4 (128, 127);
      72  
      73    test4 (0x42, 0x142);
      74    test4 (0x0, 0x100);
      75    test4 (0x0, 0x0);
      76    test4 (0x0, 0x1);
      77  
      78    __builtin_exit (0);
      79  }