From: Georg-Johann Lay Date: Wed, 10 Jul 2013 12:43:07 +0000 (+0000) Subject: backport: re PR target/57844 (ICE: unrecognizable addqi3 insn with -msp8 and frame... X-Git-Tag: releases/gcc-4.7.4~577 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a5710c842a680ceeb66e9d11bfc93dd281dab130;p=thirdparty%2Fgcc.git backport: re PR target/57844 (ICE: unrecognizable addqi3 insn with -msp8 and frame size of 128 bytes) Backport from 2013-07-10 trunk r200872. PR target/57844 * config/avr/avr.c (avr_prologue_setup_frame): Trunk -size to mode of my_fp. From-SVN: r200874 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4a31941266cb..907e3b7d4196 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2013-07-10 Georg-Johann Lay + + Backport from 2013-07-10 trunk r200872. + + PR target/57844 + * config/avr/avr.c (avr_prologue_setup_frame): Trunk -size to mode + of my_fp. + 2013-07-10 Uros Bizjak Backport from mainline diff --git a/gcc/config/avr/avr.c b/gcc/config/avr/avr.c index 40a37b3e2fa3..bac87e8e174f 100644 --- a/gcc/config/avr/avr.c +++ b/gcc/config/avr/avr.c @@ -1004,7 +1004,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 @@ -1043,6 +1043,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 ************/ @@ -1062,7 +1063,7 @@ avr_prologue_setup_frame (HOST_WIDE_INT size, HARD_REG_SET set) gen_rtx_SET (VOIDmode, fp, stack_pointer_rtx)); } - insn = emit_move_insn (my_fp, plus_constant (my_fp, -size)); + insn = emit_move_insn (my_fp, plus_constant (my_fp, neg_size)); if (frame_pointer_needed) { RTX_FRAME_RELATED_P (insn) = 1;