This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]