4 GCC regressions, 2 new, with your patch on 2002-05-02T18:01:59Z.
Jan Hubicka
jh@suse.cz
Fri May 3 02:53:00 GMT 2002
> > With your recent patch, GCC has some regression test failures, which
> > used to pass. There are 2 new failures, and 2
> > failures that existed before and after that patch; 0 failures
> > have been fixed.
> >
> > The new failures are:
> > powerpc-eabisim gcc.sum gcc.c-torture/execute/20011219-1.c
> > native gcc.sum gcc.c-torture/execute/20011219-1.c
Hi,
the problem is that elliminable tablejump is not elliminated anymore
and later, killed by merge_blocks in wrong way. The attached
patch restrict merge_blocks to simplejumps. This should not lose valid
optimizations as the jump will get converted to simplejump by other
optimization.
Bootstrapped/regtested i386 mainline
Honza
Fri May 3 11:12:24 CEST 2002 Jan Hubicka <jh@suse.cz>
* cfgcleanup.c (try_optimize_cfg): Call merge_block only when
jump is simplejump.
Index: cfgcleanup.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/cfgcleanup.c,v
retrieving revision 1.49
diff -c -3 -p -r1.49 cfgcleanup.c
*** cfgcleanup.c 1 May 2002 20:20:19 -0000 1.49
--- cfgcleanup.c 3 May 2002 09:04:01 -0000
*************** try_optimize_cfg (mode)
*** 1684,1690 ****
/* If the jump insn has side effects,
we can't kill the edge. */
&& (GET_CODE (b->end) != JUMP_INSN
! || onlyjump_p (b->end))
&& merge_blocks (s, b, c, mode))
changed_here = true;
--- 1684,1690 ----
/* If the jump insn has side effects,
we can't kill the edge. */
&& (GET_CODE (b->end) != JUMP_INSN
! || simplejump_p (b->end))
&& merge_blocks (s, b, c, mode))
changed_here = true;
More information about the Gcc-regression
mailing list