On 05/18/2015 12:15 PM, Richard Sandiford wrote:
This patch cleans up the interface to df_ref_change_reg_with_loc. The function is used only by SET_REGNO_RAW, so the old regno is always REGNO (x) and the caller always goes on to set REGNO. (And the fuction doesn't make much sense otherwise.)The patch therefore gets df_ref_change_reg_with_loc to work out the old regno itself and to install the new register number once it's done. The check for the old register being -1 was redundant. Only expr.c and postreload.c create -1 registers ("fixed" in a later patch). Both sites are just creating temporary registers in order to query backend hooks and neither site needs the check. expr.c does use SET_REGNO and so does go through this function, but only at a time when there's no df information. (And it wouldn't work if the df machinery were set up, since any change after the first would look like a "normal" change.) postreload.c uses SET_REGNO_RAW and so bypasses the code altogether. expr.c bypasses the code too by the end of the series. gcc/ * df.h (df_ref_change_reg_with_loc): Remove old_regno parameter. Change type of new_regno to unsigned int. * df-scan.c (df_ref_change_reg_with_loc_1): Change type of new_regno to unsigned int. (df_ref_change_reg_with_loc): Remove old_regno parameter. Change type of new_regno to unsigned int. Use SET_REGNO_RAW. * rtl.h (SET_REGNO): Update call to df_ref_change_reg_with_loc. (SET_REGNO_RAW): Add space after ",".
OK. jeff
