blob: c2f812551fac5eeb16305e717c37915117ecfdc6 [file] [log] [blame]
/* { dg-do compile } */
/* { dg-require-effective-target arm_thumb2_ok } */
/* { dg-options "-march=armv7-a -mfloat-abi=hard -mfpu=neon -O2" } */
/* { dg-skip-if "need SIMD instructions" { *-*-* } { "-mfloat-abi=soft" } { "" } } */
/* { dg-skip-if "need SIMD instructions" { *-*-* } { "-mfpu=vfp*" } { "" } } */
/* { dg-skip-if "-mpure-code supports M-profile only" { *-*-* } { "-mpure-code" } } */
#define BUF 100
long a[BUF];
typedef unsigned int size_t;
typedef unsigned int wchar_t;
void *memset (void *s, int c, size_t n);
struct printf_info
{
int prec;
int width;
wchar_t spec;
unsigned int is_long_double:1;
unsigned int is_short:1;
unsigned int is_long:1;
unsigned int alt:1;
unsigned int space:1;
unsigned int left:1;
unsigned int showsign:1;
unsigned int group:1;
unsigned int extra:1;
unsigned int is_char:1;
unsigned int wide:1;
unsigned int i18n:1;
unsigned int __pad:4;
unsigned short int user;
wchar_t pad;
};
void bar (int *alt, int *space, int *left, int *showsign,
int *group,
int *is_long_double,
int *is_short,
int *is_long,
int *width,
int *prec,
int *use_outdigits,
unsigned int *pad,
wchar_t *spec);
void __printf_fp (char *s, struct printf_info *pinfo);
int foo(char *s)
{
int alt = 0;
int space = 0;
int left = 0;
int showsign = 0;
int group = 0;
int is_long_double = 0;
int is_short = 0;
int is_long = 0;
int width = 0;
int prec = -1;
int use_outdigits = 0;
unsigned int pad = L' ';
wchar_t spec;
bar (&alt, &space, &left, &showsign, &group, &is_long_double,
&is_short, &is_long, &width, &prec, &use_outdigits, &pad, &spec);
a[1] = a[0] + a[2] + a[3] + a[4] + a[5] + a[6];
a[2] = a[1] + a[3] + a[5] + a[5] + a[6] + a[7];
a[3] = a[2] + a[5] + a[7] + a[6] + a[7] + a[8];
a[4] = a[3] + a[7] + a[11] + a[7] + a[8] + a[9];
a[5] = a[5] + a[11] + a[13] + a[8] + a[9] + a[10];
a[6] = a[7] + a[13] + a[17] + a[9] + a[10] + a[11];
a[7] = a[11] + a[17] + a[19] + a[10] + a[11] + a[12];
a[8] = a[17] + a[19] + a[23] + a[29] + a[31] + a[37];
{
struct printf_info info;
memset (&info, 0, sizeof (struct printf_info));
info.prec = prec;
info.width = width;
info.spec = spec;
info.is_long_double = is_long_double;
info.is_short = is_short;
info.is_long = is_long;
info.alt = alt;
info.space = space;
info.left = left;
info.showsign = showsign;
info.group = group;
info.pad = pad;
info.extra = 0;
info.i18n = use_outdigits;
info.wide = sizeof (wchar_t) != 1;
__printf_fp (s, &info);
}
return 0;
}