| /* { 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; |
| } |
| |