------- Comment #6 from sliao at google dot com  2010-01-07 09:18 -------
For the trunk snapshot of 20100102, GCC 4.5.0 indeed removes most of the
redundancy. However, -O1 and -Os still produce an extra instruction, while -O2
doesn't. Do we care about an extra instruction below? Thanks.

The instruction is marked as "redundant" below.

GCC trunk's -Os:
Disassembly of section .text:
00000000 <test>:
   0:   e59f3024        ldr     r3, [pc, #36]   ; 2c <test+0x2c>
   4:   e3a02000        mov     r2, #0
   8:   e5832000        str     r2, [r3]
   c:   e59f301c        ldr     r3, [pc, #28]   ; 30 <test+0x30>
  10:   e5932000        ldr     r2, [r3]
  14:   e59f3018        ldr     r3, [pc, #24]   ; 34 <test+0x34>
  18:   e3520000        cmp     r2, #0
  1c:   13a02002        movne   r2, #2 
  20:   03a02000        moveq   r2, #0 ;redundant
  24:   e5c32000        strb    r2, [r3]
  28:   e12fff1e        bx      lr
        ...

GCC trunk's -O1:
Disassembly of section .text:
00000000 <test>:
   0:   e3a02000        mov     r2, #0
   4:   e59f3020        ldr     r3, [pc, #32]   ; 2c <test+0x2c>
   8:   e5832000        str     r2, [r3]
   c:   e59f301c        ldr     r3, [pc, #28]   ; 30 <test+0x30>
  10:   e5932000        ldr     r2, [r3]
  14:   e3520000        cmp     r2, #0
  18:   13a02002        movne   r2, #2
  1c:   03a02000        moveq   r2, #0  ;redundant
  20:   e59f300c        ldr     r3, [pc, #12]   ; 34 <test+0x34>
  24:   e5c32000        strb    r2, [r3]
  28:   e12fff1e        bx      lr
        ...

Below, GCC trunk's -O2 doesn't produce the redundant instruction.
-O2:
Disassembly of section .text:
00000000 <test>:
   0:   e59f3020        ldr     r3, [pc, #32]   ; 28 <test+0x28>
   4:   e59f2020        ldr     r2, [pc, #32]   ; 2c <test+0x2c>
   8:   e5933000        ldr     r3, [r3]
   c:   e3a01000        mov     r1, #0
  10:   e3530000        cmp     r3, #0
  14:   e5821000        str     r1, [r2]
  18:   e59f2010        ldr     r2, [pc, #16]   ; 30 <test+0x30>
  1c:   13a03002        movne   r3, #2
  20:   e5c23000        strb    r3, [r2]
  24:   e12fff1e        bx      lr
        ...


-- 

sliao at google dot com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jingyu at google dot com,
                   |                            |dougkwan at google dot com,
                   |                            |carrot at google dot com
             Status|RESOLVED                    |REOPENED
         Resolution|WONTFIX                     |


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42494

Reply via email to