This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]