(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
aarch64/
aapcs64/
rec_align_vaarg-1.c
       1  /* Test AAPCS layout (alignment of varargs) for callee.  */
       2  
       3  /* { dg-do run { target aarch64*-*-* } } */
       4  
       5  #include <stdarg.h>
       6  
       7  extern void abort (void);
       8  
       9  typedef __attribute__ ((__aligned__ (16))) long alignedlong;
      10  
      11  void
      12  test_pass_overaligned_long_vaargs (long l, ...)
      13  {
      14    va_list va;
      15    va_start (va, l);
      16    /* Arguments should be passed in the same registers as if they were ints.  */
      17    while (l-- > 0)
      18      if (va_arg (va, long) != l)
      19        abort ();
      20    va_end (va);
      21  }
      22  
      23  int
      24  main (int argc, char **argv)
      25  {
      26    alignedlong a = 9;
      27    alignedlong b = 8;
      28    alignedlong c = 7;
      29    alignedlong d = 6;
      30    alignedlong e = 5;
      31    alignedlong f = 4;
      32    alignedlong g = 3;
      33    alignedlong h = 2;
      34    alignedlong i = 1;
      35    alignedlong j = 0;
      36    test_pass_overaligned_long_vaargs (a, b, c, d, e, f, g, h, i, j);
      37    return 0;
      38  }