From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id 08A483854814; Sun, 9 May 2021 10:43:56 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 08A483854814 From: "fredrik.hederstierna@securitas-direct.com" To: gcc-bugs@gcc.gnu.org Subject: [Bug c/100491] New: Code generation get worse when including function prototype on ARM Date: Sun, 09 May 2021 10:43:55 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: new X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: c X-Bugzilla-Version: 11.1.0 X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: fredrik.hederstierna@securitas-direct.com 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: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: bug_id short_desc product version bug_status bug_severity priority component assigned_to reporter target_milestone attachments.created Message-ID: 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 X-BeenThere: gcc-bugs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-bugs mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 09 May 2021 10:43:56 -0000 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D100491 Bug ID: 100491 Summary: Code generation get worse when including function prototype on ARM Product: gcc Version: 11.1.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: fredrik.hederstierna@securitas-direct.com Target Milestone: --- Created attachment 50779 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=3D50779&action=3Dedit sym.c New in arm-none-eabi-gcc-11.1.0 I found that code generated when including a function prototype was getting worse. I've in the past tested gcc 4-10, and these didn't show this behavior. Attach example from CSiBE Flex. (Code was getting +17% size both with -O2 and -Os.) Target: arm-none-eabi, cortex-m3, softfloat GCC-10.2.0 00000000 : 0: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} 4: 4689 mov r9, r1 6: 2165 movs r1, #101 ; 0x65 8: 461c mov r4, r3 a: 4607 mov r7, r0 c: 4690 mov r8, r2 e: f7ff fffe bl 0 12: 4605 mov r5, r0 14: f854 6020 ldr.w r6, [r4, r0, lsl #2] 18: b98e cbnz r6, 3e 1a: 2014 movs r0, #20 1c: f7ff fffe bl 0 20: f854 3025 ldr.w r3, [r4, r5, lsl #2] 24: b19b cbz r3, 4e 26: 6043 str r3, [r0, #4] 28: 6018 str r0, [r3, #0] 2a: 2300 movs r3, #0 2c: e9c0 7902 strd r7, r9, [r0, #8] 30: 6003 str r3, [r0, #0] 32: f8c0 8010 str.w r8, [r0, #16] 36: f844 0025 str.w r0, [r4, r5, lsl #2] 3a: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} 3e: 4638 mov r0, r7 40: 68b1 ldr r1, [r6, #8] 42: f7ff fffe bl 0 46: 2800 cmp r0, #0 48: d0f7 beq.n 3a 4a: 6876 ldr r6, [r6, #4] 4c: e7e4 b.n 18 4e: 6046 str r6, [r0, #4] 50: e7eb b.n 2a 00000052 : 52: b510 push {r4, lr} 54: 460c mov r4, r1 56: f7ff fffe bl 0 5a: 4622 mov r2, r4 5c: e8bd 4010 ldmia.w sp!, {r4, lr} 60: 2100 movs r1, #0 62: 4b01 ldr r3, [pc, #4] ; (68 ) 64: e7cc b.n 0 66: bf00 nop 68: 00000000 .word 0x00000000 0000006c : 6c: b570 push {r4, r5, r6, lr} 6e: 460d mov r5, r1 70: f7ff fffe bl 0 74: 4604 mov r4, r0 76: 4628 mov r0, r5 78: f7ff fffe bl 0 7c: 2200 movs r2, #0 7e: 4601 mov r1, r0 80: 4b02 ldr r3, [pc, #8] ; (8c ) 82: 4620 mov r0, r4 84: e8bd 4070 ldmia.w sp!, {r4, r5, r6, lr} 88: e7ba b.n 0 8a: bf00 nop 8c: 00000194 .word 0x00000194 GCC-11.1.0 00000000 : 0: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} 4: 4689 mov r9, r1 6: 2165 movs r1, #101 ; 0x65 8: 461d mov r5, r3 a: 4607 mov r7, r0 c: 4690 mov r8, r2 e: f7ff fffe bl 0 12: 4606 mov r6, r0 14: f855 a020 ldr.w sl, [r5, r0, lsl #2] 18: f1ba 0f00 cmp.w sl, #0 1c: d112 bne.n 44 1e: 2014 movs r0, #20 20: f7ff fffe bl 0 24: f855 3026 ldr.w r3, [r5, r6, lsl #2] 28: 4604 mov r4, r0 2a: b1a3 cbz r3, 56 2c: 6043 str r3, [r0, #4] 2e: 6018 str r0, [r3, #0] 30: 2000 movs r0, #0 32: e9c4 7902 strd r7, r9, [r4, #8] 36: 6020 str r0, [r4, #0] 38: f8c4 8010 str.w r8, [r4, #16] 3c: f845 4026 str.w r4, [r5, r6, lsl #2] 40: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} 44: 4638 mov r0, r7 46: f8da 1008 ldr.w r1, [sl, #8] 4a: f7ff fffe bl 0 4e: b128 cbz r0, 5c 50: f8da a004 ldr.w sl, [sl, #4] 54: e7e0 b.n 18 56: f8c0 a004 str.w sl, [r0, #4] 5a: e7e9 b.n 30 5c: f04f 30ff mov.w r0, #4294967295 ; 0xffffffff 60: e7ee b.n 40 00000062 : 62: b513 push {r0, r1, r4, lr} 64: 460c mov r4, r1 66: f7ff fffe bl 0 6a: 2365 movs r3, #101 ; 0x65 6c: 4622 mov r2, r4 6e: 9300 str r3, [sp, #0] 70: 2100 movs r1, #0 72: 4b02 ldr r3, [pc, #8] ; (7c ) 74: f7ff ffc4 bl 0 78: b002 add sp, #8 7a: bd10 pop {r4, pc} 7c: 00000000 .word 0x00000000 00000080 : 80: b537 push {r0, r1, r2, r4, r5, lr} 82: 460d mov r5, r1 84: f7ff fffe bl 0 88: 4604 mov r4, r0 8a: 4628 mov r0, r5 8c: f7ff fffe bl 0 90: 2365 movs r3, #101 ; 0x65 92: 4601 mov r1, r0 94: 9300 str r3, [sp, #0] 96: 2200 movs r2, #0 98: 4620 mov r0, r4 9a: 4b02 ldr r3, [pc, #8] ; (a4 ) 9c: f7ff ffb0 bl 0 a0: b003 add sp, #12 a2: bd30 pop {r4, r5, pc} a4: 00000194 .word 0x00000194=