------- Additional Comments From anton at mips dot complang dot tuwien dot ac 
dot at  2005-02-27 10:47 -------
Subject: Re:  [3.3/3.4/4.0 regression] pessimization of "goto *"

steven at gcc dot gnu dot org wrote:
> Updated patch for this problem

Ok, I have now tried it with gcc-4.0-20050220 and gforth-0.6.2 on i386
and it works ok.  There is a minor remaining regression related to this
issue:

gcc-4.0 compiles "goto **(ip-1);" into

0x804b50d <engine+1341>:        mov    0xfffffffc(%ebx),%eax
0x804b510 <engine+1344>:        jmp    *%eax

gcc-2.95 compiles it into

0x804b103 <engine+227>: jmp    *0xfffffffc(%ebx)

which looks better.

Maybe there should be another combining pass after the duplication of the 
indirect jumps.  Should I create another PR for this?

Here are updated timing results (gforth-0.6.2 configured with
--enable-force-reg):

Pentium 4 2.26GHz; numbers are times in seconds user time
                                                  gcc-4.0-20050220 
           gcc-2.95.3      gcc-3.3      gcc-3.4.0 default no-reorder-blocks
        dynamic no-dyn  dynamic no-dyn  no-dyn    dynamic dynamic
siev    0.24    0.48    0.31    0.47    0.50      0.37    0.28
bubble  0.30    0.78    0.36    0.77    0.78      0.40    0.36
matrix  0.19    0.94    0.17    0.92    0.96      0.18    0.18
fib     0.34    0.57    0.41    0.58    0.59      0.43    0.40

- anton




-- 


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

Reply via email to