Bootstrapped & regtested on i686-pc-linux-gnu.

Committed, as reviewed by Richard Biener:
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57027
and also arguably obvious.
2013-05-03  Joern Rennecke <joern.renne...@embecosm.com>

        PR tree-optimization/57027
        * tree-ssa-math-opts.c (convert_mult_to_fma): When checking for
        fnms opportunity, check we got the prerequisite kind of tree / gimple
        before using accessor functions.

Index: tree-ssa-math-opts.c
===================================================================
--- tree-ssa-math-opts.c        (revision 198552)
+++ tree-ssa-math-opts.c        (working copy)
@@ -2581,11 +2581,15 @@ convert_mult_to_fma (gimple mul_stmt, tr
          && optab_handler (fnma_optab, TYPE_MODE (type)) != CODE_FOR_nothing)
        {
          tree rhs2 = gimple_assign_rhs2 (use_stmt);
-         gimple stmt2 = SSA_NAME_DEF_STMT (rhs2);
 
-         if (has_single_use (rhs2)
-             && gimple_assign_rhs_code (stmt2) == MULT_EXPR)
-           return false;
+         if (TREE_CODE (rhs2) == SSA_NAME)
+           {
+             gimple stmt2 = SSA_NAME_DEF_STMT (rhs2);
+             if (has_single_use (rhs2)
+                 && is_gimple_assign (stmt2)
+                 && gimple_assign_rhs_code (stmt2) == MULT_EXPR)
+             return false;
+           }
        }
 
       /* We can't handle a * b + a * b.  */

Reply via email to