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

--- Comment #2 from Ramana Radhakrishnan <ramana at gcc dot gnu.org> ---
The ARM port does not use frame pointers unless specified on the command line
or an actual need in the program (read alloca). 

With 4.8.5 I get with the command line options suggested *and*
-fno-omit-frame-pointer which seems to be missed in the options provided in the
PR, a number of which are completely redundant :

readStream:
        @ args = 0, pretend = 0, frame = 8
        @ frame_needed = 1, uses_anonymous_args = 0
        stmfd   sp!, {fp, lr}
        add     fp, sp, #4
        sub     sp, sp, #16
        mov     lr, #0
        sub     r1, fp, #4
        mov     r2, #22
        movw    ip, #:lower16:doStreamReadBlock
        ldr     r3, [r0]
        movt    ip, #:upper16:doStreamReadBlock
        strb    lr, [r1, #-1]!
        str     r2, [sp]
        mov     r2, #1
        blx     ip
        ldrb    r0, [fp, #-5]   @ zero_extendqisi2
        sub     sp, fp, #4
        @ sp needed
        ldmfd   sp!, {fp, pc}

Not sure what's going on yet, probably worth a bisect / search between versions
of the compiler in the 4.8 tree ... 

Note also that I don't see the problem on the 4.9, 5.X and trunk with the
testcase provided.

Reply via email to