This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: 'fix' for 11350 causes bootstrap hang on Darwin
- From: Matthias Klose <doko at cs dot tu-berlin dot de>
- To: Andreas Tobler <toa at pop dot agri dot ch>
- Cc: Geoff Keating <geoffk at desire dot geoffk dot org>, Jan Hubicka <jh at suse dot cz>, gcc-regression at gcc dot gnu dot org, rth at redhat dot com, gcc-patches at gcc dot gnu dot org, Gabriel Dos Reis <gdr at integrable-solutions dot net>
- Date: Sat, 17 Jan 2004 12:54:57 +0100
- Subject: Re: 'fix' for 11350 causes bootstrap hang on Darwin
- References: <200401170623.i0H6Netu012594@desire.geoffk.org><4008EEA2.3070301@pop.agri.ch><40091FB3.2080507@pop.agri.ch>
Andreas Tobler writes:
> Andreas Tobler wrote:
>
> > Geoff Keating wrote:
> >
> >> Hi Jan,
> >>
> >> This patch:
> >>
> >> 2004-01-16 Jan Hubicka <jh@suse.cz>
> >>
> >> PR opt/11350
> >> * cfgcleanup.c (try_optimize_cfg): Suppress tablejump removal
> >> after reload.
> >> * cfgrtl.c (rtl_can_merge_blocks, cfglayout_can_merge_blocks,
> >> rtl_try_redirect_by_replacing_branch): Likewise.
> >>
> >> causes bootstrap to hang on powerpc-darwin. The sequence is:
> >
> >
> > testing it on ppc linux too sine it hangs also.
>
> Passed the hanger, building now runtimelibs.
Here is the update for 3.3 branch:
--- gcc/cfgrtl.c~ 2004-01-16 13:40:47.000000000 +0100
+++ gcc/cfgrtl.c 2004-01-17 11:01:11.000000000 +0100
@@ -688,7 +688,7 @@
if (tmp || !onlyjump_p (insn))
return false;
- if (reload_completed && JUMP_LABEL (insn)
+ if (flow2_completed && JUMP_LABEL (insn)
&& (table = NEXT_INSN (JUMP_LABEL (insn))) != NULL_RTX
&& GET_CODE (table) == JUMP_INSN
&& (GET_CODE (PATTERN (table)) == ADDR_VEC
@@ -758,7 +758,7 @@
/* Recognize a tablejump that we are converting to a
simple jump and remove its associated CODE_LABEL
and ADDR_VEC or ADDR_DIFF_VEC. */
- if ((tmp = JUMP_LABEL (insn)) != NULL_RTX
+ if (! reload_completed && (tmp = JUMP_LABEL (insn)) != NULL_RTX
&& (tmp = NEXT_INSN (tmp)) != NULL_RTX
&& GET_CODE (tmp) == JUMP_INSN
&& (GET_CODE (PATTERN (tmp)) == ADDR_VEC