This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: reload problem:
On Jan 22, 2002, dimmy <diwil@mail.ru> wrote:
> I meant gcc does not look at the condition of nameless insn patterns.
The `condition' of a pattern is that separate test you put in the
define_insn to decide whether the pattern is available. GCC does look
at such conditions whenever it attempts to recognize such a pattern,
generated by combine or otherwise. You still seem to be referring to
constraints, such as `0', `r', etc.
> If it does, why reload fails then to satisfy "0" ?
Because the insn does not accept inputs or outputs in a register.
Perhaps you should try to combine the three subhi3_[123] patterns into
a single one, such that reload can do its job properly. Failing at
that, try to combine the first two patterns, such that reload can use
registers for the first two operands. subhi3_2 can't really be fixed
up by reload, since there's so little reload can do to make the
pattern match. In truth, it could allocate stack slots and copy
memory around so that all inputs and outputs were in the stack, then
copy stuff back to registers or so, but this would generate poor code,
and I think reload doesn't have code to do this kind of stuff (i.e.,
turn arbitrary memory into memory in stack slots; it's generally
pointless).
--
Alexandre Oliva Enjoy Guarana', see http://www.ic.unicamp.br/~oliva/
Red Hat GCC Developer aoliva@{cygnus.com, redhat.com}
CS PhD student at IC-Unicamp oliva@{lsd.ic.unicamp.br, gnu.org}
Free Software Evangelist *Please* write to mailing lists, not to me