diff options
author | gjl <gjl@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-07-10 12:39:18 +0000 |
---|---|---|
committer | gjl <gjl@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-07-10 12:39:18 +0000 |
commit | cde06e71cf4b6bf620838e686aceee99252a2746 (patch) | |
tree | 1f7ab4a200aa9f74cfa97002a7325d6550f681e9 /gcc/config/avr | |
parent | d0c1e0598cfc1ce5fde0b923d00dbb7c648294e9 (diff) | |
download | gcc-cde06e71cf4b6bf620838e686aceee99252a2746.tar.gz |
PR target/57844
* config/avr/avr.c (avr_prologue_setup_frame): Trunk -size to mode
of my_fp.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@200872 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/avr')
-rw-r--r-- | gcc/config/avr/avr.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/gcc/config/avr/avr.c b/gcc/config/avr/avr.c index e397186398e..8a602a413f8 100644 --- a/gcc/config/avr/avr.c +++ b/gcc/config/avr/avr.c @@ -1112,7 +1112,7 @@ avr_prologue_setup_frame (HOST_WIDE_INT size, HARD_REG_SET set) leaf function and thus X has already been saved. */ int irq_state = -1; - HOST_WIDE_INT size_cfa = size; + HOST_WIDE_INT size_cfa = size, neg_size; rtx fp_plus_insns, fp, my_fp; gcc_assert (frame_pointer_needed @@ -1151,6 +1151,7 @@ avr_prologue_setup_frame (HOST_WIDE_INT size, HARD_REG_SET set) } size = trunc_int_for_mode (size, GET_MODE (my_fp)); + neg_size = trunc_int_for_mode (-size, GET_MODE (my_fp)); /************ Method 1: Adjust frame pointer ************/ @@ -1171,7 +1172,8 @@ avr_prologue_setup_frame (HOST_WIDE_INT size, HARD_REG_SET set) } insn = emit_move_insn (my_fp, plus_constant (GET_MODE (my_fp), - my_fp, -size)); + my_fp, neg_size)); + if (frame_pointer_needed) { RTX_FRAME_RELATED_P (insn) = 1; |