------- Comment #12 from jakub at gcc dot gnu dot org 2010-03-17 10:58 ------- Reduced testcase at -g -O2 on x86_64 grows during var-tracking get_max_uid () from ~ 22000 to over a 1000000. Adding ten X4's instead of 1 of course eats even more memory.
extern void *f1 (void *, void *, void *); extern void *f2 (const char *, int, int, int, void *(*) ()); extern void *f3 (const char *); extern void *f4 (void *s); extern void *f5 (void *); void test (void) { #define X1 f1 (f2 ("a", 1, 0, 0, f5), \ f4 (({ const char *a = "b"; f3 (a); })), \ ({ const char *a = "c"; f3 (a); })); #define X2 X1 X1 X1 X1 X1 X1 X1 X1 X1 X1 #define X3 X2 X2 X2 X2 X2 X2 X2 X2 X2 X2 #define X4 X3 X3 X3 X3 X3 X3 X3 X3 X3 X3 X4 } -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43058