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