Use df_read_modify_subreg_p in cprop.c
local_cprop_find_used_regs punted on all multiword registers, with the comment: /* Setting a subreg of a register larger than word_mode leaves the non-written words unchanged. */ But this only applies if the outer mode is smaller than the inner mode. If they're the same size then writes to the subreg are a normal full update. This patch uses df_read_modify_subreg_p instead. A later patch adds more uses of the same routine, but this part had a (positive) effect on code generation for the testsuite whereas the others seemed to be simple clean-ups. gcc/ 2016-11-15 Richard Sandiford <richard.sandiford@arm.com> Alan Hayward <alan.hayward@arm.com> David Sherwood <david.sherwood@arm.com> * cprop.c (local_cprop_find_used_regs): Use df_read_modify_subreg_p. Co-Authored-By: Alan Hayward <alan.hayward@arm.com> Co-Authored-By: David Sherwood <david.sherwood@arm.com> From-SVN: r242488
This commit is contained in:
parent
d964ba07c7
commit
41c7cac56c
2 changed files with 7 additions and 3 deletions
|
@ -1,3 +1,9 @@
|
|||
2016-11-16 Richard Sandiford <richard.sandiford@arm.com>
|
||||
Alan Hayward <alan.hayward@arm.com>
|
||||
David Sherwood <david.sherwood@arm.com>
|
||||
|
||||
* cprop.c (local_cprop_find_used_regs): Use df_read_modify_subreg_p.
|
||||
|
||||
2016-11-16 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR middle-end/78333
|
||||
|
|
|
@ -1161,9 +1161,7 @@ local_cprop_find_used_regs (rtx *xptr, void *data)
|
|||
return;
|
||||
|
||||
case SUBREG:
|
||||
/* Setting a subreg of a register larger than word_mode leaves
|
||||
the non-written words unchanged. */
|
||||
if (GET_MODE_BITSIZE (GET_MODE (SUBREG_REG (x))) > BITS_PER_WORD)
|
||||
if (df_read_modify_subreg_p (x))
|
||||
return;
|
||||
break;
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue