Looking at tree dumps, most variables used are compiler generated temporaries and they have names like pretmp.DECIMAL_NUMBER
If instead of DECIMAL_NUMBER the same number bug in hex was used, this would reduce the memory used for those temporary names. This simple patch (that does not take care of all the temporaries, only a subset): Index: defaults.h =================================================================== --- defaults.h (revision 158360) +++ defaults.h (working copy) @@ -46,12 +46,12 @@ #ifndef ASM_PN_FORMAT # ifndef NO_DOT_IN_LABEL -# define ASM_PN_FORMAT "%s.%lu" +# define ASM_PN_FORMAT "%s.%lx" # else # ifndef NO_DOLLAR_IN_LABEL -# define ASM_PN_FORMAT "%s$%lu" +# define ASM_PN_FORMAT "%s$%lx" # else -# define ASM_PN_FORMAT "__%s_%lu" +# define ASM_PN_FORMAT "__%s_%lx" # endif # endif #endif /* ! ASM_PN_FORMAT */ has this effect on the string pool (for an average size C file (dispnew.c from emacs): Before: avg. entry 17.04 bytes (+/- 8.46) after: avg. entry 16.99 bytes (+/- 8.50) so it's something given how small the change was. The difference would be even bigger if instead of base 32 or base 64 were used instead of hex, but that's a larger change... Also "pretmp" "prehitmp" and "ivtmp" prefixes are too long, they could be one or two letters... -- Summary: names for compiler generated temporaries are too long Product: gcc Version: 4.6.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: dann at godzilla dot ics dot uci dot edu GCC host triplet: i686-pc-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43854