This is the mail archive of the gcc-bugs@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]

[Bug optimization/12630] [3.4 regression] Various unrecognizable insns and ICEs at -O3


PLEASE REPLY TO gcc-bugzilla@gcc.gnu.org ONLY, *NOT* gcc-bugs@gcc.gnu.org.

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=12630



------- Additional Comments From danglin at gcc dot gnu dot org  2003-11-05 17:39 -------
I have looked at the problem some more.  Using match_scratch fails because
it requires a secondary reload.  The secondary reload uses the equivalent
MEM for X when it is a pseudo register:

  /* If X is a pseudo-register that has an equivalent MEM (actually, if it
     is still a pseudo-register by now, it *must* have an equivalent MEM
     but we don't want to assume that), use that equivalent when seeing if
     a secondary reload is needed since whether or not a reload is needed
     might be sensitive to the form of the MEM.  */

  if (GET_CODE (x) == REG && REGNO (x) >= FIRST_PSEUDO_REGISTER
      && reg_equiv_mem[REGNO (x)] != 0)
    x = reg_equiv_mem[REGNO (x)];

When the MEM is symbolic, we need to use %r1 for the reload (this is
absolutely required in pic code and desireable in non-pic code).  As there
are two inputs for the movstr pattern, we fail when both memory references
are symbolic.  See the rtl shown in comment #12.

The possible fixes are:

1) Delete the PA movstr pattern :(
2) Use two additional registers for the movstr operation and do a split
   after reload to allow unnecessary copies to be deleted.  I'm not
   particularly in favor of doing this as it seems like a hack.
3) Revert and/or fix the regrename.c patch so that the clobber match_dup
   semantic works again.
4) Somehow fix reload to not generate secondary reloads when we have
   numeric constraints.  I don't understand reload well enough to know
   whether this is a viable option.


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