This fixes a bug where cfgexpand would ICE when using far pointers, because the SImode pointers weren't "valid" with the default macro. Committed.
* config/rl78/rl78.c (rl78_valid_pointer_mode): New, implements TARGET_VALID_POINTER_MODE. Index: gcc/config/rl78/rl78.c =================================================================== --- gcc/config/rl78/rl78.c (revision 199776) +++ gcc/config/rl78/rl78.c (working copy) @@ -644,12 +644,21 @@ rl78_addr_space_pointer_mode (addr_space return SImode; default: gcc_unreachable (); } } +/* Returns TRUE for valid addresses. */ +#undef TARGET_VALID_POINTER_MODE +#define TARGET_VALID_POINTER_MODE rl78_valid_pointer_mode +static bool +rl78_valid_pointer_mode (enum machine_mode m) +{ + return (m == HImode || m == SImode); +} + /* Return the appropriate mode for a named address address. */ #undef TARGET_ADDR_SPACE_ADDRESS_MODE #define TARGET_ADDR_SPACE_ADDRESS_MODE rl78_addr_space_address_mode static enum machine_mode rl78_addr_space_address_mode (addr_space_t addrspace) {