From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id AE1DF3858D1E; Tue, 22 Aug 2023 14:25:17 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org AE1DF3858D1E DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1692714317; bh=1m2qMZLsVJjM6sBne0LtVetyEnZ8MvohZvTIaS6neZ0=; h=From:To:Subject:Date:In-Reply-To:References:From; b=MVLeGxlVOCr85M/6qGI//t5kgDXmL+WnyLFEtrw44ntKaX4Kh9nt78JcQABKGW3nb EhkP5xF6pDJ2d3R+LpyDtOD6i72RvaA2ewg7FswS7dz2dlX/lIHp652a4l6BadfzBo y1OFMo8YjaXnTBj7pIrYgyMN7h9eJcTyrv5CoAVA= From: "gjl at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug rtl-optimization/110093] [12/13/14 Regression][avr] Move frenzy leading to code bloat Date: Tue, 22 Aug 2023 14:25:16 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: rtl-optimization X-Bugzilla-Version: 14.0 X-Bugzilla-Keywords: missed-optimization, needs-bisection, ra X-Bugzilla-Severity: normal X-Bugzilla-Who: gjl at gcc dot gnu.org X-Bugzilla-Status: UNCONFIRMED X-Bugzilla-Resolution: X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: 12.4 X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: Message-ID: In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 List-Id: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D110093 --- Comment #2 from Georg-Johann Lay --- Meanwhile (2023-08-22) the generated code from above got worse once again a= nd even pops a frame: long add (long aa, long bb, long cc) { if (cc < 0) return aa - cc; return aa + bb; } > avr-gcc -Os -S -dp add: push r4 ; 83 [c=3D4 l=3D1] pushqi1/0 push r5 ; 84 [c=3D4 l=3D1] pushqi1/0 push r6 ; 85 [c=3D4 l=3D1] pushqi1/0 push r7 ; 86 [c=3D4 l=3D1] pushqi1/0 push r8 ; 87 [c=3D4 l=3D1] pushqi1/0 push r9 ; 88 [c=3D4 l=3D1] pushqi1/0 push r10 ; 89 [c=3D4 l=3D1] pushqi1/0 push r11 ; 90 [c=3D4 l=3D1] pushqi1/0 push r14 ; 91 [c=3D4 l=3D1] pushqi1/0 push r15 ; 92 [c=3D4 l=3D1] pushqi1/0 push r16 ; 93 [c=3D4 l=3D1] pushqi1/0 push r17 ; 94 [c=3D4 l=3D1] pushqi1/0 push r28 ; 95 [c=3D4 l=3D1] pushqi1/0 push r29 ; 96 [c=3D4 l=3D1] pushqi1/0 ; SP -=3D 4 ; 100 [c=3D4 l=3D2] *addhi3_sp rcall .=20 rcall .=20 in r28,__SP_L__ ; 126 [c=3D4 l=3D2] *movhi/7 in r29,__SP_H__ /* prologue: function */ /* frame size =3D 4 */ /* stack size =3D 18 */ .L__stack_usage =3D 18 mov r8,r22 ; 69 [c=3D4 l=3D1] movqi_insn/0 mov r9,r23 ; 70 [c=3D4 l=3D1] movqi_insn/0 mov r10,r24 ; 71 [c=3D4 l=3D1] movqi_insn/0 mov r11,r25 ; 72 [c=3D4 l=3D1] movqi_insn/0 std Y+1,r18 ; 73 [c=3D4 l=3D1] movqi_insn/2 std Y+2,r19 ; 74 [c=3D4 l=3D1] movqi_insn/2 std Y+3,r20 ; 75 [c=3D4 l=3D1] movqi_insn/2 std Y+4,r21 ; 76 [c=3D4 l=3D1] movqi_insn/2 mov r4,r14 ; 77 [c=3D4 l=3D1] movqi_insn/0 mov r5,r15 ; 78 [c=3D4 l=3D1] movqi_insn/0 mov r6,r16 ; 79 [c=3D4 l=3D1] movqi_insn/0 mov r7,r17 ; 80 [c=3D4 l=3D1] movqi_insn/0 sbrs r7,7 ; 123 [c=3D4 l=3D2] *sbrx_branchhi rjmp .L2=20=20=20=20=20=20=20=20 mov r25,r11 ; 67 [c=3D4 l=3D4] *movsi/0 mov r24,r10 mov r23,r9 mov r22,r8 sub r22,r4 ; 68 [c=3D16 l=3D4] *subsi3/0 sbc r23,r5 sbc r24,r6 sbc r25,r7 .L1: /* epilogue start */ ; SP +=3D 4 ; 106 [c=3D4 l=3D4] *addhi3_sp pop __tmp_reg__ pop __tmp_reg__ pop __tmp_reg__ pop __tmp_reg__ pop r29 ; 107 [c=3D4 l=3D1] popqi pop r28 ; 108 [c=3D4 l=3D1] popqi pop r17 ; 109 [c=3D4 l=3D1] popqi pop r16 ; 110 [c=3D4 l=3D1] popqi pop r15 ; 111 [c=3D4 l=3D1] popqi pop r14 ; 112 [c=3D4 l=3D1] popqi pop r11 ; 113 [c=3D4 l=3D1] popqi pop r10 ; 114 [c=3D4 l=3D1] popqi pop r9 ; 115 [c=3D4 l=3D1] popqi pop r8 ; 116 [c=3D4 l=3D1] popqi pop r7 ; 117 [c=3D4 l=3D1] popqi pop r6 ; 118 [c=3D4 l=3D1] popqi pop r5 ; 119 [c=3D4 l=3D1] popqi pop r4 ; 120 [c=3D4 l=3D1] popqi ret ; 121 [c=3D0 l=3D1] return_from_epilogue .L2: ldd r22,Y+1 ; 65 [c=3D16 l=3D4] *movsi/2 ldd r23,Y+2 ldd r24,Y+3 ldd r25,Y+4 add r22,r8 ; 66 [c=3D16 l=3D4] *addsi3/0 adc r23,r9 adc r24,r10 adc r25,r11 rjmp .L1 ; 124 [c=3D4 l=3D1] jump .ident "GCC: (GNU) 14.0.0 20230822 (experimental)"=