/* Test AAPCS64 layout and __builtin_va_arg. Pass by reference. */ /* { dg-do run { target aarch64*-*-* } } */ #ifndef IN_FRAMEWORK #define AAPCS64_TEST_STDARG #define TESTFILE "va_arg-12.c" struct z { char c; short s; int ia[4]; }; struct z a, b, c; #define HAS_DATA_INIT_FUNC void init_data () { a.c = 0x11; a.s = 0x2222; a.ia[0] = 0x33333333; a.ia[1] = 0x44444444; a.ia[2] = 0x55555555; a.ia[3] = 0x66666666; b.c = 0x77; b.s = 0x8888; b.ia[0] = 0x99999999; b.ia[1] = 0xaaaaaaaa; b.ia[2] = 0xbbbbbbbb; b.ia[3] = 0xcccccccc; c.c = 0xdd; c.s = 0xeeee; c.ia[0] = 0xffffffff; c.ia[1] = 0x12121212; c.ia[2] = 0x23232323; c.ia[3] = 0x34343434; } #include "abitest.h" #else PTR(struct z, a, X0, 0) ARG(int, 0xdeadbeef, X1, 1) ARG(int, 0xcafebabe, X2, 2) ARG(int, 0xdeadbabe, X3, 3) ARG(int, 0xcafebeef, X4, 4) ARG(int, 0xbeefdead, X5, 5) ARG(int, 0xbabecafe, X6, LAST_NAMED_ARG_ID) DOTS PTR_ANON(struct z, b, X7, 7) PTR_ANON(struct z, c, STACK, 8) ANON(int, 0xbabedead, STACK+8, 9) LAST_ANON(double, 123.45, D0, 10) #endif