1/* { dg-do compile } */ 2/* { dg-require-effective-target fpic } */ 3/* { dg-options "-Os -fpic" } */ 4 5#include <string.h> 6 7typedef struct 8{ 9 char *a; 10 char *b; 11} *foo; 12 13void 14bar (foo x) 15{ 16 char *c = x->b; 17 char *d = (void *)0; 18 unsigned int e = 0, f = 0, g; 19 while (*c != ':') 20 if (*c == '%') 21 { 22 ++c; 23 switch (*c++) 24 { 25 case 'N': 26 g = strlen (x->a); 27 if (e + g >= f) { 28 char *h = d; 29 f += 256 + g; 30 d = (char *) __builtin_alloca (f); 31 memcpy (d, h, e); 32 }; 33 memcpy (&d[e], x->a, g); 34 e += g; 35 break; 36 } 37 } 38} 39