(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
analyzer/
infinite-recursion-variadic.c
       1  int test_variadic_1 (int n, ...)
       2  {
       3    __builtin_va_list args;
       4    int total =0;
       5    int i;
       6  
       7    __builtin_va_start(args, n);
       8  
       9    for (i = 0; i < n; i++)
      10      total += __builtin_va_arg(args, int);
      11  
      12    __builtin_va_end(args);
      13  
      14    return total;  
      15  }
      16  
      17  int test_variadic_2 (int n, ...)
      18  {
      19    return test_variadic_2 (n, 42); /* { dg-warning "-Wanalyzer-infinite-recursion" } */
      20  }
      21  
      22  int test_variadic_3 (int n, ...)
      23  {
      24    if (n > 0) /* { dg-message "when 'n > 0'" } */
      25      return test_variadic_3 (n, 42); /* { dg-warning "-Wanalyzer-infinite-recursion" } */
      26    return 0;
      27  }
      28  
      29  int test_variadic_4 (int n, ...)
      30  {
      31    if (n > 0)
      32      return test_variadic_4 (n - 1, 42);
      33    return 0;
      34  }