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