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

Michael Hope <michael.hope at linaro dot org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |michael.hope at linaro dot
                   |                            |org

--- Comment #2 from Michael Hope <michael.hope at linaro dot org> 2011-07-11 
00:19:52 UTC ---
Part of the difference is that 4.5 inlines the other functions and 4.6 doesn't.
 Adding an __attribute__((always_inline)) to both gives the following:

For 4.5, main is:

main:
        movw    r3, #22136
        movt    r3, 4660
        and     r3, r0, r3
        cbnz    r3, .L10
        mvn     r3, #15
        lsls    r2, r0, r3
        ubfx    r0, r0, #30, #10
        and     r3, r0, #768
        lsrs    r0, r2, #24
        orr     r0, r3, r0
        bx      lr
.L10:
        ubfx    r3, r0, #22, #2
        lsrs    r0, r0, #24
        lsls    r3, r3, #8
        orr     r0, r3, r0
        bx      lr

For 4.6 it becomes:

main:
        movw    r3, #22136
        movt    r3, 4660
        ands    r3, r3, r0
        cbz     r3, .L13
        ubfx    r3, r0, #22, #2
        lsrs    r0, r0, #24
        lsls    r3, r3, #8
.L12:
        orrs    r0, r0, r3
        bx      lr
.L13:
        mov     r0, r3
        b       .L12

Reply via email to