diff options
author | David Edelsohn <edelsohn@gnu.org> | 2005-09-02 01:52:37 +0000 |
---|---|---|
committer | David Edelsohn <dje@gcc.gnu.org> | 2005-09-01 21:52:37 -0400 |
commit | 13e2e16e7b08bb772ac59c2b239157609252cde2 (patch) | |
tree | 750606cc1454a90a0200395299b334042b7c2f55 /gcc | |
parent | bef7d862e2c46d1ada78db24c97b2b7badd416f7 (diff) | |
download | gcc-13e2e16e7b08bb772ac59c2b239157609252cde2.zip gcc-13e2e16e7b08bb772ac59c2b239157609252cde2.tar.gz gcc-13e2e16e7b08bb772ac59c2b239157609252cde2.tar.bz2 |
rs6000.c (setup_incoming_varargs): Set MEM_NOTRAP_P.
* config/rs6000/rs6000.c (setup_incoming_varargs): Set MEM_NOTRAP_P.
(rs6000_split_multireg_move): Use replace_equiv_address instead of
gen_rtx_MEM.
From-SVN: r103760
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.c | 14 |
2 files changed, 13 insertions, 7 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2ca4920..bf777a4 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2005-09-01 David Edelsohn <edelsohn@gnu.org> + + * config/rs6000/rs6000.c (setup_incoming_varargs): Set MEM_NOTRAP_P. + (rs6000_split_multireg_move): Use replace_equiv_address instead of + gen_rtx_MEM. + 2005-09-01 Craig Rodrigues <rodrigc@gcc.gnu.org> * c-decl.c (diagnose_mismatched_decls): With -Wredundant-decls, diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index ca58f30..43c0532 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -5459,7 +5459,8 @@ setup_incoming_varargs (CUMULATIVE_ARGS *cum, enum machine_mode mode, mem = gen_rtx_MEM (BLKmode, plus_constant (save_area, - first_reg_offset * reg_size)), + first_reg_offset * reg_size)); + MEM_NOTRAP_P (mem) = 1; set_mem_alias_set (mem, set); set_mem_align (mem, BITS_PER_WORD); @@ -5494,6 +5495,7 @@ setup_incoming_varargs (CUMULATIVE_ARGS *cum, enum machine_mode mode, fregno++, off += UNITS_PER_FP_WORD, nregs++) { mem = gen_rtx_MEM (DFmode, plus_constant (save_area, off)); + MEM_NOTRAP_P (mem) = 1; set_mem_alias_set (mem, set); set_mem_align (mem, GET_MODE_ALIGNMENT (DFmode)); emit_move_insn (mem, gen_rtx_REG (DFmode, fregno)); @@ -12249,16 +12251,14 @@ rs6000_split_multireg_move (rtx dst, rtx src) emit_insn (TARGET_32BIT ? gen_addsi3 (breg, breg, delta_rtx) : gen_adddi3 (breg, breg, delta_rtx)); - src = gen_rtx_MEM (mode, breg); + src = replace_equiv_address (src, breg); } else if (! offsettable_memref_p (src)) { - rtx newsrc, basereg; + rtx basereg; basereg = gen_rtx_REG (Pmode, reg); emit_insn (gen_rtx_SET (VOIDmode, basereg, XEXP (src, 0))); - newsrc = gen_rtx_MEM (GET_MODE (src), basereg); - MEM_COPY_ATTRIBUTES (newsrc, src); - src = newsrc; + src = replace_equiv_address (src, basereg); } breg = XEXP (src, 0); @@ -12303,7 +12303,7 @@ rs6000_split_multireg_move (rtx dst, rtx src) emit_insn (TARGET_32BIT ? gen_addsi3 (breg, breg, delta_rtx) : gen_adddi3 (breg, breg, delta_rtx)); - dst = gen_rtx_MEM (mode, breg); + dst = replace_equiv_address (dst, breg); } else gcc_assert (offsettable_memref_p (dst)); |