aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJohn David Anglin <dave.anglin@nrc-cnrc.gc.ca>2005-11-13 18:06:55 +0000
committerJohn David Anglin <danglin@gcc.gnu.org>2005-11-13 18:06:55 +0000
commit5dcc96058c3aba9e9c7f10cf1648c7b76d080c90 (patch)
tree564f92f4bacc337d881505488dec5b8a36778371 /gcc
parente84d8064505d56eb6c04de548160faa7acb83833 (diff)
downloadgcc-5dcc96058c3aba9e9c7f10cf1648c7b76d080c90.zip
gcc-5dcc96058c3aba9e9c7f10cf1648c7b76d080c90.tar.gz
gcc-5dcc96058c3aba9e9c7f10cf1648c7b76d080c90.tar.bz2
pa.c (store_reg): Revise generation of frame notes in large frames.
* pa.c (store_reg): Revise generation of frame notes in large frames. (set_reg_plus_d): Likewise. From-SVN: r106867
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/pa/pa.c20
2 files changed, 17 insertions, 8 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index e56b81a..37cf1ef 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2005-11-13 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ * pa.c (store_reg): Revise generation of frame notes in large frames.
+ (set_reg_plus_d): Likewise.
+
2005-11-13 Andrew MacLeod <amacleod@redhat.com>
PR tree-optimization/24709
diff --git a/gcc/config/pa/pa.c b/gcc/config/pa/pa.c
index 6f77f4f..f79d30a 100644
--- a/gcc/config/pa/pa.c
+++ b/gcc/config/pa/pa.c
@@ -3265,20 +3265,18 @@ store_reg (int reg, HOST_WIDE_INT disp, int base)
rtx tmpreg = gen_rtx_REG (Pmode, 1);
emit_move_insn (tmpreg, delta);
- emit_move_insn (tmpreg, gen_rtx_PLUS (Pmode, tmpreg, basereg));
- dest = gen_rtx_MEM (word_mode, tmpreg);
- insn = emit_move_insn (dest, src);
+ insn = emit_move_insn (tmpreg, gen_rtx_PLUS (Pmode, tmpreg, basereg));
if (DO_FRAME_NOTES)
{
REG_NOTES (insn)
= gen_rtx_EXPR_LIST (REG_FRAME_RELATED_EXPR,
- gen_rtx_SET (VOIDmode,
- gen_rtx_MEM (word_mode,
- gen_rtx_PLUS (word_mode, basereg,
- delta)),
- src),
+ gen_rtx_SET (VOIDmode, tmpreg,
+ gen_rtx_PLUS (Pmode, basereg, delta)),
REG_NOTES (insn));
+ RTX_FRAME_RELATED_P (insn) = 1;
}
+ dest = gen_rtx_MEM (word_mode, tmpreg);
+ insn = emit_move_insn (dest, src);
}
else
{
@@ -3358,6 +3356,12 @@ set_reg_plus_d (int reg, int base, HOST_WIDE_INT disp, int note)
emit_move_insn (tmpreg, delta);
insn = emit_move_insn (gen_rtx_REG (Pmode, reg),
gen_rtx_PLUS (Pmode, tmpreg, basereg));
+ if (DO_FRAME_NOTES)
+ REG_NOTES (insn)
+ = gen_rtx_EXPR_LIST (REG_FRAME_RELATED_EXPR,
+ gen_rtx_SET (VOIDmode, tmpreg,
+ gen_rtx_PLUS (Pmode, basereg, delta)),
+ REG_NOTES (insn));
}
else
{