diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ad617117cd9..a490e33668e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2009-07-06 J"orn Rennecke + Kaz Kojima + + PR rtl-optimization/30807 + * postreload.c (reload_combine): For every new use of REG_SUM, + record the use of BASE. + 2009-07-06 Jan Hubicka * params.def: Revert my accidental commit at 2009-06-30. diff --git a/gcc/postreload.c b/gcc/postreload.c index cf165ec5f0f..d23ae0b990a 100644 --- a/gcc/postreload.c +++ b/gcc/postreload.c @@ -886,6 +886,19 @@ reload_combine (void) if (apply_change_group ()) { + /* For every new use of REG_SUM, we have to record the use + of BASE therein, i.e. operand 1. */ + for (i = reg_state[regno].use_index; + i < RELOAD_COMBINE_MAX_USES; i++) + reload_combine_note_use + (&XEXP (*reg_state[regno].reg_use[i].usep, 1), + reg_state[regno].reg_use[i].insn); + + if (reg_state[REGNO (base)].use_ruid + > reg_state[regno].use_ruid) + reg_state[REGNO (base)].use_ruid + = reg_state[regno].use_ruid; + /* Delete the reg-reg addition. */ delete_insn (insn);