optimization/8165: builtin string functions SEGV on alpha-pc-linux-gnu at -O2

Glen Nakamura glen@imodulo.com
Sat Oct 12 11:39:00 GMT 2002


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);



More information about the Gcc-bugs mailing list