rs6000.c (enum rs6000_reload_reg_type): Add new fields to the reg_addr array that...
authorMichael Meissner <meissner@linux.vnet.ibm.com>
Thu, 17 Oct 2013 19:04:37 +0000 (19:04 +0000)
committerMichael Meissner <meissner@gcc.gnu.org>
Thu, 17 Oct 2013 19:04:37 +0000 (19:04 +0000)
commit5845f602f0e7b2d423064b6871a03e4d70cf5bcd
tree53f330e07af1199f2e9e7fcf7b530ab24725b2f4
parentd5b18b0b138cc89f02f972c51c35c3bf287c9693
rs6000.c (enum rs6000_reload_reg_type): Add new fields to the reg_addr array that describes the valid addressing mode...

2013-10-07  Michael Meissner  <meissner@linux.vnet.ibm.com>

* config/rs6000/rs6000.c (enum rs6000_reload_reg_type): Add new
fields to the reg_addr array that describes the valid addressing
mode for any register, general purpose registers, floating point
registers, and Altivec registers.
(FIRST_RELOAD_REG_CLASS): Likewise.
(LAST_RELOAD_REG_CLASS): Likewise.
(struct reload_reg_map_type): Likewise.
(reload_reg_map_type): Likewise.
(RELOAD_REG_VALID): Likewise.
(RELOAD_REG_MULTIPLE): Likewise.
(RELOAD_REG_INDEXED): Likewise.
(RELOAD_REG_OFFSET): Likewise.
(RELOAD_REG_PRE_INCDEC): Likewise.
(RELOAD_REG_PRE_MODIFY): Likewise.
(reg_addr): Likewise.
(mode_supports_pre_incdec_p): New helper functions to say whether
a given mode supports PRE_INC, PRE_DEC, and PRE_MODIFY.
(mode_supports_pre_modify_p): Likewise.
(rs6000_debug_vector_unit): Rearrange the -mdebug=reg output to
print the valid address mode bits for each mode.
(rs6000_debug_print_mode): Likewise.
(rs6000_debug_reg_global): Likewise.
(rs6000_setup_reg_addr_masks): New function to set up the address
mask bits for each type.
(rs6000_init_hard_regno_mode_ok): Use memset to clear arrays.
Call rs6000_setup_reg_addr_masks to set up the address mask bits.
(rs6000_legitimate_address_p): Use mode_supports_pre_incdec_p and
mode_supports_pre_modify_p to determine if PRE_INC, PRE_DEC, and
PRE_MODIFY are supported.
(rs6000_print_options_internal): Tweak the debug output slightly.

From-SVN: r203790
gcc/ChangeLog
gcc/config/rs6000/rs6000.c