------- 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