Support multiple operand counts for .md @ patterns
authorRichard Sandiford <richard.sandiford@arm.com>
Fri, 12 Jul 2019 07:54:23 +0000 (07:54 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Fri, 12 Jul 2019 07:54:23 +0000 (07:54 +0000)
commitd281492de84960b5885f88fffeeb226650f5141d
tree28304a490e6a430efab5d43f9479dbef727543b4
parent1fdd6f0412922eb7438cbbadbb805fce8cc77485
Support multiple operand counts for .md @ patterns

This patch extends the support for "@..." pattern names so that
the patterns can have different numbers of operands.  This allows
things like binary and ternary operations to be handled in a
consistent way, a bit like optabs.  The generators assert that
the number of operands passed is correct for the underlying
instruction.

Also, replace_operands_with_dups iterated over the old rtx format
even after having decided to do a replacement, which broke with
match_operator.

2019-07-12  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
* doc/md.texi: Document that @ patterns can have different
numbers of operands.
* genemit.c (handle_overloaded_gen): Handle this case.
* genopinit.c (handle_overloaded_gen): Likewise.
* gensupport.c (replace_operands_with_dups): Iterate over
the new rtx's format rather than the old one's.

From-SVN: r273432
gcc/ChangeLog
gcc/doc/md.texi
gcc/genemit.c
gcc/genopinit.c
gcc/gensupport.c