Quoting Paolo Bonzini <bonz...@gnu.org>:

On 11/02/2010 10:41 AM, Georg Lay wrote:
What I do not understand is*why*  this works.
The internals "16.16 How to Split Instructions" mention two flavours of insn
splitting: One after reload for the scheduler and one during combine stage, the latter just doing single_set --> 2 * single_set splits for insns that do*not*
match during combine stage.

I think this is extremely out-of-date, I am sorry.  I read something
from Ian Lance Taylor on the mailing list recently about the history of
splits.  I cannot find it now, but basically the original purpose (help
combine to find matches for "big" patterns representing more than one
instruction) is now almost obsolete with define_insn_and_split,

define_insn_and_split is little more than syntactic sugar to avoid
re-typing the same patterns again.
combiner-splitter patterns are still relevant, as are combiner bridge
patterns, in order to do pre-reload low-level machine specific optimizations.
peephole2 operates only after register allocation, and then it might be
too late to fix up some pessimizations perpetrated by the
machine-independent passes.
Unfortunately, it seems there are currently few practicioners of the art
of GCC target port fine tuning.

split passes before and after reload have the biggest role in splitting.

... but than, splitting recognized insn patterns that is a completely
different issue than splitting non-recognized combiner patterns.

Reply via email to