From: Georg-Johann Lay Date: Sat, 2 Mar 2024 09:03:06 +0000 (+0100) Subject: AVR: target/114100 - Factor in -mtiny-stack in frame pointer adjustments X-Git-Tag: basepoints/gcc-15~868 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=96bad6c06d0108014a2b0e5d0921cb18066bb789;p=thirdparty%2Fgcc.git AVR: target/114100 - Factor in -mtiny-stack in frame pointer adjustments gcc/ PR target/114100 * config/avr/avr.cc (avr_out_plus_1) [-mtiny-stack]: Only adjust the low part of the frame pointer with 8-bit stack pointer. --- diff --git a/gcc/config/avr/avr.cc b/gcc/config/avr/avr.cc index 94ef7c591a9f..d39d6707c977 100644 --- a/gcc/config/avr/avr.cc +++ b/gcc/config/avr/avr.cc @@ -8983,14 +8983,17 @@ avr_out_plus_1 (rtx *xop, int *plen, enum rtx_code code, int *pcc, && frame_pointer_needed && REGNO (xop[0]) == FRAME_POINTER_REGNUM) { - rtx xval16 = simplify_gen_subreg (HImode, xval, imode, i); - if (xval16 == const1_rtx || xval16 == constm1_rtx) + if (AVR_HAVE_8BIT_SP) + { + avr_asm_len ("subi %A0,%n2", xop, plen, 1); + return; + } + else if (xop[2] == const1_rtx || xop[2] == constm1_rtx) { - avr_asm_len ((code == PLUS) == (xval16 == const1_rtx) + avr_asm_len (xop[2] == const1_rtx ? "ld __tmp_reg__,%a0+" : "ld __tmp_reg__,-%a0", xop, plen, 1); - i++; - continue; + return; } }