[Bug target/70359] New: Code size increase for ARM compared to gcc-5.3.0

fredrik.hederstierna@securitas-direct.com gcc-bugzilla@gcc.gnu.org
Tue Mar 22 13:49:00 GMT 2016


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70359

            Bug ID: 70359
           Summary: Code size increase for ARM compared to gcc-5.3.0
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: fredrik.hederstierna@securitas-direct.com
  Target Milestone: ---

Created attachment 38058
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=38058&action=edit
inttostr.c

Code size increase on master for ARM target compared to gcc-5.3.0
Target: arm-none-eabi
Flags: -Os -mcpu=arm966e-s -marm

gcc 5.3.0:

00000000 <inttostr>:
   0:   e3a03000        mov     r3, #0
   4:   e92d4070        push    {r4, r5, r6, lr}
   8:   e1a06000        mov     r6, r0
   c:   e2422001        sub     r2, r2, #1
  10:   e0205fc0        eor     r5, r0, r0, asr #31
  14:   e0455fc0        sub     r5, r5, r0, asr #31
  18:   e0814002        add     r4, r1, r2
  1c:   e7c13002        strb    r3, [r1, r2]
  20:   e1a00005        mov     r0, r5
  24:   e3a0100a        mov     r1, #10
  28:   ebfffffe        bl      0 <__aeabi_uidivmod>
  2c:   e2811030        add     r1, r1, #48     ; 0x30
  30:   e5641001        strb    r1, [r4, #-1]!
  34:   e1a00005        mov     r0, r5
  38:   e3a0100a        mov     r1, #10
  3c:   ebfffffe        bl      0 <__aeabi_uidiv>
  40:   e2505000        subs    r5, r0, #0
  44:   1afffff5        bne     20 <inttostr+0x20>
  48:   e3560000        cmp     r6, #0
  4c:   b3a0302d        movlt   r3, #45 ; 0x2d
  50:   b5443001        strblt  r3, [r4, #-1]
  54:   b2444001        sublt   r4, r4, #1
  58:   e1a00004        mov     r0, r4
  5c:   e8bd8070        pop     {r4, r5, r6, pc}


gcc-6-20160313 snapshot from master:

00000000 <inttostr>:
   0:   e3a03000        mov     r3, #0
   4:   e92d41f0        push    {r4, r5, r6, r7, r8, lr}
   8:   e1a07000        mov     r7, r0
   c:   e3a0800a        mov     r8, #10
  10:   e2422001        sub     r2, r2, #1
  14:   e0206fc0        eor     r6, r0, r0, asr #31
  18:   e0466fc0        sub     r6, r6, r0, asr #31
  1c:   e0815002        add     r5, r1, r2
  20:   e7c13002        strb    r3, [r1, r2]
  24:   e1a00006        mov     r0, r6
  28:   e1a01008        mov     r1, r8
  2c:   ebfffffe        bl      0 <__aeabi_uidivmod>
  30:   e2811030        add     r1, r1, #48     ; 0x30
  34:   e5451001        strb    r1, [r5, #-1]
  38:   e1a00006        mov     r0, r6
  3c:   e1a01008        mov     r1, r8
  40:   ebfffffe        bl      0 <__aeabi_uidiv>
  44:   e2506000        subs    r6, r0, #0
  48:   e2454001        sub     r4, r5, #1
  4c:   1a000005        bne     68 <inttostr+0x68>
  50:   e3570000        cmp     r7, #0
  54:   b3a0302d        movlt   r3, #45 ; 0x2d
  58:   b5443001        strblt  r3, [r4, #-1]
  5c:   b2454002        sublt   r4, r5, #2
  60:   e1a00004        mov     r0, r4
  64:   e8bd81f0        pop     {r4, r5, r6, r7, r8, pc}
  68:   e1a05004        mov     r5, r4
  6c:   eaffffec        b       24 <inttostr+0x24>


More information about the Gcc-bugs mailing list