1 /* PR tree-optimization/84478 */ 2 3 long poolptr; 4 unsigned char *strpool; 5 static const char *poolfilearr[] = { 6 "mu", 7 "", 8 #define A "x", 9 #define B A "xx", A A "xxx", A A A A A 10 #define C B B B B B B B B B B 11 #define D C C C C C C C C C C 12 D C C C C C C C B B B 13 ((void *)0) 14 }; 15 16 __attribute__((noipa)) long makestring(void)17makestring (void) 18 { 19 return 1; 20 } 21 22 __attribute__((noipa)) long loadpoolstrings(long spare_size)23loadpoolstrings (long spare_size) 24 { 25 const char *s; 26 long g = 0; 27 int i = 0, j = 0; 28 while ((s = poolfilearr[j++])) 29 { 30 int l = __builtin_strlen (s); 31 i += l; 32 if (i >= spare_size) return 0; 33 while (l-- > 0) strpool[poolptr++] = *s++; 34 g = makestring (); 35 } 36 return g; 37 } 38 39 int main()40main () 41 { 42 strpool = __builtin_malloc (4000); 43 if (!strpool) 44 return 0; 45 asm volatile ("" : : : "memory"); 46 volatile int r = loadpoolstrings (4000); 47 __builtin_free (strpool); 48 return 0; 49 } 50