------- Comment #1 from wilson at gcc dot gnu dot org  2010-04-27 01:17 -------
Some further investigation shows that there is code in expand_expr_real_2 that
is supposed to be able to generate multiply-accumulate instructions, but it
isn't general enough.  In my gimple, I have
  D.1999_10 = D.1998_9 * D.1996_7;
  total_11 = total_19 + D.1999_10;
The code in expr.c does
-      if ((TREE_CODE (type) == INTEGER_TYPE                                    
-          || TREE_CODE (type) == FIXED_POINT_TYPE)                             
-         && (subexp0_def = get_def_for_expr (treeop0,  
-                                             MULT_EXPR)))
which fails because the multiply operand is treeop1 not treeop0.  We need to
check both operands for the multiply here.  I have an initial patch that needs
testing.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43902

Reply via email to