This is the mail archive of the
mailing list for the GCC project.
Re: birthpoints in rtl.
"Steven Bosscher" <firstname.lastname@example.org> writes:
> For the location of the extra instructions, I would *not* keep them on
> the side. If you have something special going on, my motto is: "Make
> it explicit".
Going back to something discussed upthread: would you expect to use this
for hard regs as well as pseudos? No-op moves aren't necessarily supported
for all hard registers. E.g. MIPS doesn't have patterns for LO <- LO,
even though LO is a normal non-fixed register. You can also have hard
registers that only appear in fixed patterns, such as condition code REGs.
If we went for an explicit move, I assume we would either have to
(a) discount hard regs that can't be moved, (b) force backends to
allow all no-op moves or (c) circumvent the backend somehow.
(Jan suggested a USE for (c), but I assume we'd want some sort
of definition too.)
Kenny said that pseudos-only was better than nothing, and I can't
disagree with that. But one of the nice things about the on-the-side
idea is that you have none of these problems. There should be nothing
special about hard regs.
I take your point about not wanting something special going on behind
the scenes. But these insns seem pretty special in their own right,
especially if we go for (a) or (c). Even if we go for (b), wouldn't
optimisers need to know that they shouldn't just delete the moves?