https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83304
--- Comment #3 from ktkachov at gcc dot gnu.org ---
hmm, I'm getting some weird behaviour.
I see the test failing in a testsuite run.
When I try to build and run the test outside the testsuite harness it doesn't
abort.
However, the generated code between trunk (which fails in the testsuite) and
trunk with r255384 reverted (which doesn't fail) differs greatly with the
options:
-O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer
-finline-functions -mthumb -march=armv8-a -mfpu=crypto-neon-fp-armv8
-mfloat-abi=hard
clean trunk:
main:
@ args = 0, pretend = 0, frame = 0
@ frame_needed = 0, uses_anonymous_args = 0
mvn r2, #126
push {lr}
.L2:
adds r3, r2, #1
cmp r3, #129
add r2, r2, #5
bne .L2
movs r0, #0
ldr pc, [sp], #4
trunk with r255384 reverted (which fails in the testsuite):
main:
@ args = 0, pretend = 0, frame = 0
@ frame_needed = 0, uses_anonymous_args = 0
push {r3, lr}
mvn r3, #126
b .L2
.L4:
mov r1, #1
it eq
moveq r1, #0
cmp r2, #0
it ne
movne r1, #0
cbnz r1, .L22
mov r1, #1
it eq
moveq r1, #0
adds r0, r2, #1
and r0, r1, #1
it ne
movne r0, #0
cbnz r0, .L22
adds r0, r3, #3
it eq
moveq r2, #1
it ne
movne r2, #0
it eq
moveq r2, #0
cbnz r2, .L22
adds r1, r3, #4
it eq
moveq r2, #1
it ne
movne r2, #0
it eq
moveq r2, #0
cbnz r2, .L22
adds r3, r3, #5
mov r2, #1
it eq
moveq r2, #0
it ne
movne r2, #0
cbnz r2, .L22
.L2:
adds r2, r3, #1
cmp r2, #129
bne .L4
movs r0, #0
pop {r3, pc}
.L22:
bl abort