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

As I understand it, this will also give combine the ability to do
two->two (and two->N) transformations, though indirectly through the
temporary insn.  Given this, could you explain further the benefits of
combiner-split define_split vs. define_insn_and_split.

A define_insn will be recognized in all contexts. (Unless you use special
 insn conditions, but the only safe place to make an insn cease to be
 valid in a machine-dependent way is TARGET_MACHINE_DEPENDENT_REORG.
 Unless you start writing extra machine-dependent passes and feed them
 to the pass manager.)
Having an insn pattern for an insn that does not actually exist can cause
all kinds of unintended consequences as the optimizers try to generate
and recognize 'optimized' patterns, or when reload does its stuff.

Reply via email to