1 /* { dg-require-effective-target alloca } */ 2 __re_compile_fastmap(unsigned char * p)3int __re_compile_fastmap(unsigned char *p) 4 { 5 unsigned char **stack; 6 unsigned size; 7 unsigned avail; 8 9 stack = __builtin_alloca(5 * sizeof(unsigned char*)); 10 if (stack == 0) 11 return -2; 12 size = 5; 13 avail = 0; 14 15 for (;;) { 16 switch (*p++) { 17 case 0: 18 if (avail == size) 19 return -2; 20 stack[avail++] = p; 21 } 22 } 23 24 return 0; 25 } 26 27