[Bug target/52412] another unnecessary register move on arm
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52412 ktkachov at gcc dot gnu.org changed: What|Removed |Added Status|NEW |RESOLVED CC||ktkachov at gcc dot gnu.org Resolution|--- |FIXED --- Comment #3 from ktkachov at gcc dot gnu.org --- Both trunk 4.10 and 4.8.3 generate: t0m: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 ldr r3, [r0, #4] movsr1, #10 push{r4, r5, lr} ldr r5, .L8 uxtbr2, r3 .L2: ldr r4, [r0, #268] subsr1, r1, #1 eor r4, r4, r2 ldr r4, [r5, r4, lsl #2] str r4, [r0, #268] bne .L2 add r3, r3, r0 movsr1, #1 strbr1, [r3, #12] ldr r3, [r0, #8] cmp r3, r1 beq .L5 cmp r3, #2 beq .L5 pop {r4, r5, pc} .L5: ldr r3, [r0] strbr2, [r3] pop {r4, r5, pc} .L9: .align 2 .L8: .word Table No superfluous mov appears, so I think this can be closed now...
[Bug target/52412] another unnecessary register move on arm
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52412 amker.cheng amker.cheng at gmail dot com changed: What|Removed |Added CC||amker.cheng at gmail dot ||com --- Comment #2 from amker.cheng amker.cheng at gmail dot com 2012-07-31 14:12:54 UTC --- The register move insn is generated by cse2 pass, and after that, there is no cprop pass till ira. The two allocnos for r6/r3(the original pseudos) are conflict with each other, though they contains same value and connected by move insn, IRA cannot allocate same hard register for them. Moveover, the case is compile with Os, where gcc does IRA in whole single region, and live range cannot be split either.
[Bug target/52412] another unnecessary register move on arm
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52412 Ramana Radhakrishnan ramana at gcc dot gnu.org changed: What|Removed |Added Status|UNCONFIRMED |NEW Last reconfirmed||2012-02-29 CC||ramana at gcc dot gnu.org Ever Confirmed|0 |1 Known to fail||4.7.0 --- Comment #1 from Ramana Radhakrishnan ramana at gcc dot gnu.org 2012-02-29 11:41:00 UTC --- Confirmed - looks like 4.6 gets this right. ramana