roy rosen <roy.1ro...@gmail.com> writes:

> How are they split before register allocation or scheduling. We've
> said that in any case only the combiner does the splitting.

No, we haven't said that.  Or, if we did, we made a mistake.  The
documentation I see says "There are two cases where you should specify
how to split a pattern into multiple insns" and "[t]he insn combiner
phase also splits putative insns."

The first case, the case in which the combiner does not split insns, is
the primary use case for define_split.  I believe that we could remove
the combiner's use of define_split with minimal or zero performance
effect.

> And another thing: gccint says that the define_split is used only if
> there is no define_insn that matches - but you say now that 'people
> just write the complex pattern using define_insn, and then write a
> define_split (or a define_insn_and_split) which splits up the insn' so
> I don't understand: if they write a define_insn then the pattern
> matches and the split would not be used. I am confused...

It is only when the combiner is splitting insns that the define_split is
used only if there is no define_insn that matches.  In the more typical
case of splitting an insn, there is no such restriction.

> Also, how do I build gccint from the current sources. Currently I just
> use something I found in the internet.

http://gcc.gnu.org/install/

Ian

Reply via email to