1/* { dg-do compile } */ 2/* { dg-options "-march=armv7-a -mfloat-abi=hard -mfpu=neon -O2" } */ 3 4#define BUF 100 5long a[BUF]; 6 7typedef unsigned int size_t; 8typedef unsigned int wchar_t; 9void *memset (void *s, int c, size_t n); 10struct printf_info 11{ 12 int prec; 13 int width; 14 wchar_t spec; 15 unsigned int is_long_double:1; 16 unsigned int is_short:1; 17 unsigned int is_long:1; 18 unsigned int alt:1; 19 unsigned int space:1; 20 unsigned int left:1; 21 unsigned int showsign:1; 22 unsigned int group:1; 23 unsigned int extra:1; 24 unsigned int is_char:1; 25 unsigned int wide:1; 26 unsigned int i18n:1; 27 unsigned int __pad:4; 28 unsigned short int user; 29 wchar_t pad; 30}; 31 32void bar (int *alt, int *space, int *left, int *showsign, 33 int *group, 34 int *is_long_double, 35 int *is_short, 36 int *is_long, 37 int *width, 38 int *prec, 39 int *use_outdigits, 40 unsigned int *pad, 41 wchar_t *spec); 42void __printf_fp (char *s, struct printf_info *pinfo); 43int foo(char *s) 44{ 45 int alt = 0; 46 int space = 0; 47 int left = 0; 48 int showsign = 0; 49 int group = 0; 50 int is_long_double = 0; 51 int is_short = 0; 52 int is_long = 0; 53 int width = 0; 54 int prec = -1; 55 int use_outdigits = 0; 56 unsigned int pad = L' '; 57 wchar_t spec; 58 59 bar (&alt, &space, &left, &showsign, &group, &is_long_double, 60 &is_short, &is_long, &width, &prec, &use_outdigits, &pad, &spec); 61 62 a[1] = a[0] + a[2] + a[3] + a[4] + a[5] + a[6]; 63 a[2] = a[1] + a[3] + a[5] + a[5] + a[6] + a[7]; 64 a[3] = a[2] + a[5] + a[7] + a[6] + a[7] + a[8]; 65 a[4] = a[3] + a[7] + a[11] + a[7] + a[8] + a[9]; 66 a[5] = a[5] + a[11] + a[13] + a[8] + a[9] + a[10]; 67 a[6] = a[7] + a[13] + a[17] + a[9] + a[10] + a[11]; 68 a[7] = a[11] + a[17] + a[19] + a[10] + a[11] + a[12]; 69 a[8] = a[17] + a[19] + a[23] + a[29] + a[31] + a[37]; 70 71 { 72 struct printf_info info; 73 memset (&info, 0, sizeof (struct printf_info)); 74 info.prec = prec; 75 info.width = width; 76 info.spec = spec; 77 info.is_long_double = is_long_double; 78 info.is_short = is_short; 79 info.is_long = is_long; 80 info.alt = alt; 81 info.space = space; 82 info.left = left; 83 info.showsign = showsign; 84 info.group = group; 85 info.pad = pad; 86 info.extra = 0; 87 info.i18n = use_outdigits; 88 info.wide = sizeof (wchar_t) != 1; 89 90 __printf_fp (s, &info); 91 } 92 93 return 0; 94} 95 96