Amend match.pd syntax with force-simplified results
authorRichard Biener <rguenther@suse.de>
Fri, 31 Jul 2020 12:24:26 +0000 (14:24 +0200)
committerRichard Biener <rguenther@suse.de>
Fri, 31 Jul 2020 13:19:00 +0000 (15:19 +0200)
commit14c35be3bf493859b92c3c6ca7893075212169ab
treee15ade239c1f5da5effb318309783e243ab67bf6
parentc89366b12ff4f36253bae125b794cbe687f7e40b
Amend match.pd syntax with force-simplified results

This adds a ! marker to result expressions that should simplify
(and if not fail the simplification).  This can for example be
used like

(simplify
  (plus (vec_cond:s @0 @1 @2) @3)
  (vec_cond @0 (plus! @1 @3) (plus! @2 @3)))

to make the simplification only apply in case both plus operations
in the result end up simplified to a simple operand.

2020-07-31  Richard Biener  <rguenther@suse.de>

* genmatch.c (expr::force_leaf): Add and initialize.
(expr::gen_transform): Honor force_leaf by passing
NULL as sequence argument to maybe_push_res_to_seq.
(parser::parse_expr): Allow ! marker on result expression
operations.
* doc/match-and-simplify.texi: Amend.
gcc/doc/match-and-simplify.texi
gcc/genmatch.c