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

Reply via email to