2008-07-06 Kai Tietz <kai.tietz@onevision.com>
[official-gcc.git] / gcc / testsuite / gcc.dg / callabi / vaarg-3.c
blobd0d068754e1e0b5b3a9a941ac467004ee2ca2aa8
1 /* Test for cross x86_64<->w64 abi va_list calls.
2 */
3 /* Origin: Kai Tietz <kai.tietz@onevision.com> */
4 /* { dg-do run { target { x86_64-*-* } } } */
5 /* { dg-options "-std=gnu99" } */
6 #include "callabi.h"
8 extern void abort (void);
10 #define SZ_ARGS 1ll,2ll,3ll,4ll,5ll,6ll,7ll,0ll
12 static
13 int fct1 (CROSS_VA_LIST argp, ...)
15 long long p1,p2;
16 int ret = 1;
17 va_list argp_2;
19 __va_start (argp_2,argp);
20 do {
21 p1 = __va_arg (argp_2, long long);
22 p2 = CROSS_VA_ARG (argp, long long);
23 if (p1 != p2)
24 ret = 0;
25 } while (ret && p1 != 0);
26 __va_end (argp_2);
27 return ret;
30 static
31 int CALLABI_CROSS fct2 (int dummy, ...)
33 CROSS_VA_LIST argp;
34 int ret = dummy;
36 CROSS_VA_START (argp, dummy);
37 ret += fct1 (argp, SZ_ARGS);
38 CROSS_VA_END (argp);
39 return ret;
42 int main()
44 if (fct2 (-1, SZ_ARGS) != 0)
45 abort ();
46 return 0;