This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: Fix nested functions
- From: Ulrich Weigand <weigand at i1 dot informatik dot uni-erlangen dot de>
- To: jh at suse dot cz (Jan Hubicka)
- Cc: weigand at i1 dot informatik dot uni-erlangen dot de (Ulrich Weigand), jh at suse dot cz, gcc-patches at gcc dot gnu dot org
- Date: Sun, 26 Sep 2004 01:23:22 +0200 (CEST)
- Subject: Re: Fix nested functions
Jan Hubicka wrote:
> Actually at least at first glance it seems to me that modifying in place
> is OK (my problem was that LABEL_REF has nonlocal flag on it and that
> flag gets lost when insn is re-emit).
> Perhaps the predicate in the pattern can be tweaked to not allow this
> particular form of insn?
The predicate *does* not allow a label_ref here, but it is never checked
because the insn isn't re-recognized any longer after your change.
B.t.w. why do you say the nonlocal flag gets lost after re-emitting?
It would appear the code takes care to copy it:
/* Make sure to copy over REG_NON_LOCAL_GOTO. */
note = find_reg_note (insn, REG_NON_LOCAL_GOTO, 0);
if (note)
{
XEXP (note, 1) = NULL_RTX;
REG_NOTES (new) = note;
}
Bye,
Ulrich
--
Dr. Ulrich Weigand
weigand@informatik.uni-erlangen.de