On Tue, Jun 22, 2010 at 11:34:30AM +0200, Richard Guenther wrote: > On Mon, Jun 21, 2010 at 5:25 PM, Bernd Schmidt <ber...@codesourcery.com> > wrote: > > In PR43902, Jim has posted a patch to add support for widening > > multiply-accumulate to tree-ssa-math-opts. They are represented as a > > GIMPLE_SINGLE_RHS with a WIDEN_MULT_PLUS_EXPR tree which holds the > > actual operands of the multiply-accumulate. I've modified this a bit so > > that we now support gimple statements with a GIMPLE_TERNARY_RHS class > > (see the other patch I've added to the PR), but while testing I found > > that we already create DOT_PROD_EXPRs, which are also three-operand > > expressions, with the same GIMPLE_SINGLE_RHS representation used by > > Jim's patch. > > > > What's actually intended here? Should we add real support for > > three-operand gimple statements and change the code that generates > > DOT_PROD_EXPR, or should we add WIDEN_MULT_{PLUS,MINUS}_EXPR in the same > > way DOT_PROD_EXPR is handled at the moment? > > We should add support for a GIMPLE_TERNARY_RHS class.
It hasn't been added before because ternary ops were considered rare (primarily just COND_EXPR). If they are no longer so rare that it is worth adding handling of GIMPLE_TERNARY_RHS on all spots that need adjusting because of it, let's change it. Jakub