1/* Test for cross x86_64<->w64 abi va_list calls. 2*/ 3/* Origin: Kai Tietz <kai.tietz@onevision.com> */ 4/* { dg-do run } */ 5/* { dg-options "-std=gnu99" } */ 6#include "callabi.h" 7 8extern void abort (void); 9 10#define SZ_ARGS 1ll,2ll,3ll,4ll,5ll,6ll,7ll,0ll 11 12static 13int fct1 (CROSS_VA_LIST argp, ...) 14{ 15 long long p1,p2; 16 int ret = 1; 17 va_list argp_2; 18 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; 28} 29 30static 31int CALLABI_CROSS fct2 (int dummy, ...) 32{ 33 CROSS_VA_LIST argp; 34 int ret = dummy; 35 36 CROSS_VA_START (argp, dummy); 37 ret += fct1 (argp, SZ_ARGS); 38 CROSS_VA_END (argp); 39 return ret; 40} 41 42int main() 43{ 44 if (fct2 (-1, SZ_ARGS) != 0) 45 abort (); 46 return 0; 47} 48