blob: 36df852a012f565c3a901b099fd0722795e9f34d [file] [log] [blame]
/* { dg-do run } */
/* { dg-options "-std=gnu99" } */
#include <stdlib.h>
#include <stdarg.h>
#ifndef __FLASH
#define __flash /* empty */
#define __memx /* empty */
#endif
#define NC __attribute__((noinline,noclone))
void NC vfun (char n, ...)
{
va_list ap;
va_start (ap, n);
switch (n)
{
default:
abort();
case 1:
if (11 != va_arg (ap, int))
abort();
break;
case 2:
if (2222 != va_arg (ap, int))
abort();
break;
case 3:
if (333333 != va_arg (ap, __int24))
abort();
break;
case 4:
if (44444444 != va_arg (ap, long))
abort();
break;
case 8:
if (8888888888888888 != va_arg (ap, long long))
abort();
break;
}
va_end (ap);
}
void NC boo_qi (const __flash char *p)
{
vfun (1, *p);
}
void NC boox_qi (const __memx char *p)
{
vfun (1, *p);
}
void NC boo_hi (const __flash int *p)
{
vfun (2, *p);
}
void NC boox_hi (const __memx int *p)
{
vfun (2, *p);
}
void NC boo_psi (const __flash __int24 *p)
{
vfun (3, *p);
}
void NC boox_psi (const __memx __int24 *p)
{
vfun (3, *p);
}
void NC boo_si (const __flash long *p)
{
vfun (4, *p);
}
void NC boox_si (const __memx long *p)
{
vfun (4, *p);
}
void NC boo_di (const __flash long long *p)
{
vfun (8, *p);
}
void NC boox_di (const __memx long long *p)
{
vfun (8, *p);
}
const __flash char f_qi = 11;
const __flash int f_hi = 2222;
const __flash __int24 f_psi = 333333;
const __flash long f_si = 44444444;
const __flash long long f_di = 8888888888888888;
const __memx char x_qi = 11;
const __memx int x_hi = 2222;
const __memx __int24 x_psi = 333333;
const __memx long x_si = 44444444;
const __memx long long x_di = 8888888888888888;
char r_qi = 11;
int r_hi = 2222;
__int24 r_psi = 333333;
long r_si = 44444444;
long long r_di = 8888888888888888;
int main (void)
{
boo_qi (&f_qi);
boo_hi (&f_hi);
boo_psi (&f_psi);
boo_si (&f_si);
boo_di (&f_di);
boox_qi (&x_qi);
boox_hi (&x_hi);
boox_psi (&x_psi);
boox_si (&x_si);
boox_di (&x_di);
boox_qi (&r_qi);
boox_hi (&r_hi);
boox_psi (&r_psi);
boox_si (&r_si);
boox_di (&r_di);
exit (0);
}