diff options
author | J"orn Rennecke <joern.rennecke@arc.com> | 2009-07-06 13:28:22 +0000 |
---|---|---|
committer | Kaz Kojima <kkojima@gcc.gnu.org> | 2009-07-06 13:28:22 +0000 |
commit | 83f63251d92b61d083e7801e762089b372cbcf8e (patch) | |
tree | 035a4c63678bcbdbee8bf0517b6aa1b9f6cc97a7 /gcc/postreload.c | |
parent | 172d54e01fa1a14b659988de3dc616e84d1a8fed (diff) | |
download | gcc-83f63251d92b61d083e7801e762089b372cbcf8e.zip gcc-83f63251d92b61d083e7801e762089b372cbcf8e.tar.gz gcc-83f63251d92b61d083e7801e762089b372cbcf8e.tar.bz2 |
re PR rtl-optimization/30807 (postreload bug (might be generic in trunk))
PR rtl-optimization/30807
* postreload.c (reload_combine): For every new use of REG_SUM,
record the use of BASE.
Co-Authored-By: Kaz Kojima <kkojima@gcc.gnu.org>
From-SVN: r149282
Diffstat (limited to 'gcc/postreload.c')
-rw-r--r-- | gcc/postreload.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/gcc/postreload.c b/gcc/postreload.c index cf165ec..d23ae0b 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); |