[Bug target/69403] Wrong thumb2_ior_scc_strict_it insn pattern.
ktkachov at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Thu Jan 21 10:06:00 GMT 2016
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69403
--- Comment #2 from ktkachov at gcc dot gnu.org ---
I agree that the pattern is buggy but I can't get the bad codegen to trigger on
any of 4.9, 5 or trunk. I get a branch over lines 26 and 27:
bug:
@ args = 0, pretend = 0, frame = 0
@ frame_needed = 0, uses_anonymous_args = 0
cmp r0, r2
push {r3, r4, r5, r6, r7, lr}
bcc .L9
mvn r0, #-2147483648
pop {r3, r4, r5, r6, r7, pc}
.L9:
mov r7, r2
mov r5, r1
mov r4, r0
bl FT_MSB
rsb r2, r0, #31
adds r6, r0, #1
lsl r3, r4, r2
lsr r1, r5, r6
orrs r3, r3, r1
lsl r1, r5, r2
udiv r0, r3, r7
mls r3, r7, r0, r3
.L4:
lsrs r2, r1, #31
lsls r0, r0, #1
orr r3, r2, r3, lsl #1
lsls r1, r1, #1
cmp r7, r3
bhi .L3
subs r3, r3, r7
orr r0, r0, #1
.L3:
subs r6, r6, #1
bne .L4
pop {r3, r4, r5, r6, r7, pc}
I'll fix the *thumb2_ior_scc_strict_it.
I believe the first alternative should just be deleted and operand 0 be made an
earlyclobber, but an executable testcase triggering this problem would be
useful for the testsuite. Are there any implicit tuning options that are used?
i.e. some particular --with-tune or --with-cpu configure option?
More information about the Gcc-bugs
mailing list