aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorDavid Edelsohn <edelsohn@gnu.org>2005-09-02 01:52:37 +0000
committerDavid Edelsohn <dje@gcc.gnu.org>2005-09-01 21:52:37 -0400
commit13e2e16e7b08bb772ac59c2b239157609252cde2 (patch)
tree750606cc1454a90a0200395299b334042b7c2f55 /gcc
parentbef7d862e2c46d1ada78db24c97b2b7badd416f7 (diff)
downloadgcc-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/ChangeLog6
-rw-r--r--gcc/config/rs6000/rs6000.c14
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));