| /* PR tree-optimization/84478 */ |
| |
| long poolptr; |
| unsigned char *strpool; |
| static const char *poolfilearr[] = { |
| "mu", |
| "", |
| #define A "x", |
| #define B A "xx", A A "xxx", A A A A A |
| #define C B B B B B B B B B B |
| #define D C C C C C C C C C C |
| D C C C C C C C B B B |
| ((void *)0) |
| }; |
| |
| __attribute__((noipa)) long |
| makestring (void) |
| { |
| return 1; |
| } |
| |
| __attribute__((noipa)) long |
| loadpoolstrings (long spare_size) |
| { |
| const char *s; |
| long g = 0; |
| int i = 0, j = 0; |
| while ((s = poolfilearr[j++])) |
| { |
| int l = __builtin_strlen (s); |
| i += l; |
| if (i >= spare_size) return 0; |
| while (l-- > 0) strpool[poolptr++] = *s++; |
| g = makestring (); |
| } |
| return g; |
| } |
| |
| int |
| main () |
| { |
| strpool = __builtin_malloc (4000); |
| if (!strpool) |
| return 0; |
| asm volatile ("" : : : "memory"); |
| volatile int r = loadpoolstrings (4000); |
| __builtin_free (strpool); |
| return 0; |
| } |