diff options
| author | alehotsky <alehotsky@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-01-10 02:34:14 +0000 |
|---|---|---|
| committer | alehotsky <alehotsky@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-01-10 02:34:14 +0000 |
| commit | 48957ec9ac40fa69fb0b44e774c5845e48fa032f (patch) | |
| tree | a7d4908b19444ce690db058c95b6b1ac87e5b736 /gcc/reload.c | |
| parent | 92f36c8ecd5865a1b5dca4b0c47a6c8d8b96d208 (diff) | |
| download | ppe42-gcc-48957ec9ac40fa69fb0b44e774c5845e48fa032f.tar.gz ppe42-gcc-48957ec9ac40fa69fb0b44e774c5845e48fa032f.zip | |
*** empty log message ***
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@38849 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/reload.c')
| -rw-r--r-- | gcc/reload.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/gcc/reload.c b/gcc/reload.c index 11e33f05fc8..533c28c9249 100644 --- a/gcc/reload.c +++ b/gcc/reload.c @@ -4487,10 +4487,14 @@ find_reloads_address (mode, memrefloc, ad, loc, opnum, type, ind_levels, insn) { regno = REGNO (ad); - if (reg_equiv_constant[regno] != 0 - && strict_memory_address_p (mode, reg_equiv_constant[regno])) + /* If the register is equivalent to an invariant expression, substitute + the invariant, and eliminate any eliminable register references. */ + tem = reg_equiv_constant[regno]; + if (tem != 0 + && (tem = eliminate_regs (tem, mode, insn)) + && strict_memory_address_p (mode, tem)) { - *loc = ad = reg_equiv_constant[regno]; + *loc = ad = tem; return 0; } |

