lp:~rsandifo/gcc-linaro/lp-758082 fixes this but the code generated is
poor:
foo:
push {r1, r2, r3}
ldr r3, [r0, #0]
push {lr}
sub sp, sp, #8
ldr r3, [r3, #8]
subs r2, r3, #6
it ne
movne r2, #1
cmp r3, #8
ite eq
moveq r3, #0
andne r3, r2, #1
cbnz r3, .L1
movw r2, #:lower16:stdout
add r3, sp, #16
movt r2, #:upper16:stdout
ldr r1, [sp, #12]
ldr r0, [r2, #0]
mov r2, r3
str r3, [sp, #4]
bl vfprintf
.L1:
add sp, sp, #8
pop {lr}
add sp, sp, #12
bx lr
r1 doesn't need to be saved. Ignoring hazards, r0 could be used instead
of r3. The epilogue is poor due to the two adds. lr could be pushed
with the initial push.
--
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/758082
Title:
[armel] segfaults in make check pass when built with optimization
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs