Ulrich Weigand wrote:

- As mentioned in http://gcc.gnu.org/ml/gcc/2005-01/msg00911.html
  there is a code path in find_reloads that sets rld[].inc to a
  nonzero value even for a platform that doesn't actually *have*
  pre-/post-increment insns, leading to an ICE later on.

  The patch below simply avoids setting .inc unless it was already
  set to a nonzero value (by find_inc_amount).

This one I'm not sure about yet.

- As mentioned in http://gcc.gnu.org/ml/gcc/2005-01/msg01112.html there are problems with reload ordering when optional reloads are disabled, leading to address reload insns being emitted after the main insn.

The patch below is the same I suggested in that mail; it considers
such address reloads to feed into both the optional reload and the main insn in scan_rtx.

This problem will probably require more invasive surgery.

- Finally, there is still a (new) problem in the latest version of
usable_for_inheritance: if an inherited register is chosen as
override-in because it is not suitable as reload register due
to HARD_REGNO_MODE_OK, it isn't even checked against the *usable_regs array.


The patch below adds back that check (using inmode, not mode).

This is OK. Would you check it in?


Bernd

Reply via email to