(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
avr/
torture/
pr109650-1.c
       1  /* { dg-do run } */
       2  /* { dg-options { -std=c99 } } */
       3  
       4  typedef _Bool bool;
       5  typedef __UINT8_TYPE__ uint8_t;
       6  
       7  static inline __attribute__((__always_inline__))
       8  bool func1a (bool p1, uint8_t p2)
       9  {
      10    if (p1)
      11      return p2 <= 8;
      12    return p2 <= 2;
      13  }
      14  
      15  __attribute__((__noinline__, __noclone__))
      16  bool func1b (bool p1, uint8_t p2)
      17  {
      18    return func1a (p1, p2);
      19  }
      20  
      21  static inline __attribute__((__always_inline__))
      22  bool func2a (bool p1, unsigned p2)
      23  {
      24    if (p1)
      25      return p2 <= 8;
      26    return p2 <= 2;
      27  }
      28  
      29  __attribute__((__noinline__, __noclone__))
      30  bool func2b (bool p1, unsigned p2)
      31  {
      32    return func2a (p1, p2);
      33  }
      34  
      35  void test1 (void)
      36  {
      37    if (func1a (0, 1) != func1b (0, 1)) __builtin_abort();
      38    if (func1a (0, 2) != func1b (0, 2)) __builtin_abort();
      39    if (func1a (0, 3) != func1b (0, 3)) __builtin_abort();
      40  
      41    if (func1a (1, 7) != func1b (1, 7)) __builtin_abort();
      42    if (func1a (1, 8) != func1b (1, 8)) __builtin_abort();
      43    if (func1a (1, 9) != func1b (1, 9)) __builtin_abort();
      44  }
      45  
      46  void test2 (void)
      47  {
      48    if (func2a (0, 1) != func2b (0, 1)) __builtin_abort();
      49    if (func2a (0, 2) != func2b (0, 2)) __builtin_abort();
      50    if (func2a (0, 3) != func2b (0, 3)) __builtin_abort();
      51  
      52    if (func2a (1, 7) != func2b (1, 7)) __builtin_abort();
      53    if (func2a (1, 8) != func2b (1, 8)) __builtin_abort();
      54    if (func2a (1, 9) != func2b (1, 9)) __builtin_abort();
      55  }
      56  
      57  int main (void)
      58  {
      59    test1();
      60    test2();
      61  
      62    __builtin_exit (0);
      63  }