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: optimization/8165: builtin string functions SEGV on alpha-pc-linux-gnu at -O2


On Fri, Oct 11, 2002 at 05:51:43PM -0700, Richard Henderson wrote:
> I guess your original patch is probably correct.  I was 
> focused so much on the LO_SUM/HIGH simplification that
> I missed the fact that we were failing to process the
> internal regs of the LO_SUM at all.

Looking at try_replace_reg() again, I noticed that the REG_EQUAL note
isn't always replaced.  Is the "else" really okay?


static int
try_replace_reg (from, to, insn)
     rtx from, to, insn;
{
  rtx note = find_reg_equal_equiv_note (insn);
  ...

  if (!success && set && reg_mentioned_p (from, SET_SRC (set)))
    {
      ...

      /* If we've failed to do replacement, have a single SET, and don't already
	 have a note, add a REG_EQUAL note to not lose information.  */
      if (!success && note == 0 && set != 0)
	note = set_unique_reg_note (insn, REG_EQUAL, copy_rtx (src));
    }

  /* If there is already a NOTE, update the expression in it with our
     replacement.  */
  else if (note != 0)
  ^^^^
    XEXP (note, 0) = simplify_replace_rtx (XEXP (note, 0), from, to);


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