On 03/21/2011 08:18 PM, Nathan Froyd wrote: > +/* Insert PATTERN before BEFORE, setting its INSN_LOCATION to LOC. > + MAKE_RAW indicates how to turn PATTERN into a real insn. INSNP > + indicates if PATTERN is meant for an INSN as opposed to a JUMP_INSN, > + CALL_INSN, etc. */ > + > +static rtx > +emit_pattern_before_setloc (rtx pattern, rtx before, int loc, bool insnp, > + rtx (*make_raw) (rtx)) > { > rtx first = PREV_INSN (before); > - rtx last = emit_insn_before_noloc (pattern, before, NULL); > + rtx last = emit_pattern_before_noloc (pattern, before, > + insnp ? before : NULL_RTX, > + NULL, make_raw); > > - if (pattern == NULL_RTX || !loc) > + if (pattern == NULL_RTX || (!loc && insnp)) > return last; > > - if (!first) > + if (!first && insnp) > first = get_insns ();
Is this not merely indicative of a bug in one or more of the functions? Why would recording LOC be dependent on INSNP? r~