2015-02-25 18:56 GMT+03:00 Georg-Johann Lay <a...@gjlay.de>:
> The current avr-gcc ICEs in avr.c::tiny_valid_direct_memory_access_range
> because XEXP (op, 0) is used on op which are not MEM_P (e.g. REG or SUBREG).
>
> If op is MEM_P then INTVAL might be used for on RTXes which are not
> CONST_INT, e.g. CONST.
>
> Anyway, using such functions in insn conditions is not the right approach to
> get valid addresses.  The right place is targetm.legitimate_address_p.
> Taking away move insns from reload by means of such conditions is not
> robust; reload knows how to make addresses legitimate if told so...
>
> Ok for trunk?
>
> Johann
>
>
>         PR target/65192
>         * config/avr/avr.c (tiny_valid_direct_memory_access_range): Remove.
>         (avr_legitimate_address_p) <AVR_TINY, CONSTANT_ADDRESS_P>:
>         Refuse any constant address not in 0..0xbf.
>         * config/avr/avr-protos.h: Same.
>         * config/avr/avr.md (*mov<mode>, *movsf): Remove
>         tiny_valid_direct_memory_access_range from insn conditions.
>         (mov<mode>): Don't special-case expansion of avrtiny addresses.


Please apply.

Denis.

Reply via email to