(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.c-torture/
execute/
pr64979.c
       1  /* PR target/64979 */
       2  
       3  #include <stdarg.h>
       4  
       5  void __attribute__((noinline, noclone))
       6  bar (int x, va_list *ap)
       7  {
       8    if (ap)
       9      {
      10        int i;
      11        for (i = 0; i < 10; i++)
      12  	if (i != va_arg (*ap, int))
      13  	  __builtin_abort ();
      14        if (va_arg (*ap, double) != 0.5)
      15  	__builtin_abort ();
      16      }
      17  }
      18  
      19  void __attribute__((noinline, noclone))
      20  foo (int x, ...)
      21  {
      22    va_list ap;
      23    int n;
      24  
      25    va_start (ap, x);
      26    n = va_arg (ap, int);
      27    bar (x, (va_list *) ((n == 0) ? ((void *) 0) : &ap));
      28    va_end (ap);
      29  }
      30  
      31  int
      32  main ()
      33  {
      34    foo (100, 1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0.5);
      35    return 0;
      36  }