diff options
author | John David Anglin <dave.anglin@nrc-cnrc.gc.ca> | 2005-11-13 18:06:55 +0000 |
---|---|---|
committer | John David Anglin <danglin@gcc.gnu.org> | 2005-11-13 18:06:55 +0000 |
commit | 5dcc96058c3aba9e9c7f10cf1648c7b76d080c90 (patch) | |
tree | 564f92f4bacc337d881505488dec5b8a36778371 /gcc | |
parent | e84d8064505d56eb6c04de548160faa7acb83833 (diff) | |
download | gcc-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/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/pa/pa.c | 20 |
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 { |