In some large functions, where all hardware registers are "used
up" and some pseudo-register need to be allocated on stack,
EXTRA_MEMORY_CONSTRAINT will have a pessimizing effect.  Without
further analysis, it seems that it causes pseudo-registers to be
committed ("too devoted") to memory with no apparent re-use of
registers, if any free one is found later on (perhaps as part of
reload inheritance).  I compared LAST_UPDATED: "Sun Feb 27 17:43:10
UTC 2005" without (0) and with (1) the patch at <URL:> and also with
the patch applied except the EXTRA_MEMORY_CONSTRAINT definition
(2) (the removal of that line and the atomicity.h patch to avoid
build failure).  For ghostscript-5.50 (patched to submission for
current trunk) and the minimal input in the attachment named
test.ps, emitting png, the longest_match function (from zlib 1.1.3)
in the attached test-case (attachment bigfun.i) was part of an
execution path with similar other pessimizations observed.
Numbers are simulated schedulable cycles.  0, baseline:
495989262. 1, E_M_C: 498036429 (time-ratio vs baseline:
100.41%).  2, Q-fixes but no E_M_C was identical to baseline.

Note differences in between "baseline" and "fixed-Q-and-E_M_C"
in the generated assembly code (baseline and diff to be attached).
Compiled with "-O2 -march=v10 -mno-mul-bug-workaround".

-- 
           Summary: Pessimizing effects of defining EXTRA_MEMORY_CONSTRAINT
           Product: gcc
           Version: 4.1.0
            Status: UNCONFIRMED
          Keywords: missed-optimization
          Severity: normal
          Priority: P2
         Component: rtl-optimization
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: hp at gcc dot gnu dot org
                CC: gcc-bugs at gcc dot gnu dot org
  GCC host triplet: i686-pc-linux-gnu
GCC target triplet: cris-axis-elf


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20242

Reply via email to