[Bug middle-end/32725] Unnecessary reg-reg moves
rask at sygehus dot dk
gcc-bugzilla@gcc.gnu.org
Wed Jul 11 08:53:00 GMT 2007
------- Comment #1 from rask at sygehus dot dk 2007-07-11 08:53 -------
I think (1) and (2) is just the register allocator being stupid. This sort of
thing can happen when the %rax at (1) was a different pseudo register than the
%rax at (2). The register allocator is supposed to be able to tie such pseudo
registers, but it does not take a lot to mess that up.
You should use -dp when posting asm output intended for human readers (although
in this case, I don't think you need to repost the asm output just to include
the -dp output).
movq %rax, %rbx # 95 *movdi_1_rex64/2 [length = 6]
andq %r8, %rbx # 25 *anddi_1_rex64/2 [length = 3]
movq %rbx, %rax # 96 *movdi_1_rex64/2 [length = 6]
Notice that the movq insns have much higher insn uids than the andq insn. I.e.
they were most likely emitted in a later pass.
(And those movq insn lenghts are wrong, they should be 3 instead of 6.)
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32725
More information about the Gcc-bugs
mailing list