genmatch.c (dt_node::gen_kids_1): Use gassign and gcall in generated code.
authorRichard Biener <rguenther@suse.de>
Tue, 4 Aug 2015 13:55:26 +0000 (13:55 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Tue, 4 Aug 2015 13:55:26 +0000 (13:55 +0000)
2015-08-04  Richard Biener  <rguenther@suse.de>

* genmatch.c (dt_node::gen_kids_1): Use gassign and gcall in
generated code.
(dt_operand::gen_gimple_expr): Adjust.

From-SVN: r226577

gcc/ChangeLog
gcc/genmatch.c

index 3706b6729a9d118cd923ca4c91260bf8e5c22eba..c6dc552e7556a9b38484bc099e42888d1d8003a9 100644 (file)
@@ -1,3 +1,9 @@
+2015-08-04  Richard Biener  <rguenther@suse.de>
+
+       * genmatch.c (dt_node::gen_kids_1): Use gassign and gcall in
+       generated code.
+       (dt_operand::gen_gimple_expr): Adjust.
+
 2015-08-04  Richard Biener  <rguenther@suse.de>
 
        * gimple-fold.c (gimple_fold_stmt_to_constant_1): Canonicalize
index 15d257b9653ae533c687dee0ca8521fbea360d1c..f48e79d0b95f512f0867fdbaa8a46ac22237a9d4 100644 (file)
@@ -2396,7 +2396,7 @@ dt_operand::gen_gimple_expr (FILE *f, int indent)
                 match this.  The only sensible operand types are
                 SSA names and invariants.  */
              fprintf_indent (f, indent,
-                             "tree %s = TREE_OPERAND (gimple_assign_rhs1 (def_stmt), %i);\n",
+                             "tree %s = TREE_OPERAND (gimple_assign_rhs1 (def), %i);\n",
                              child_opname, i);
              fprintf_indent (f, indent,
                              "if ((TREE_CODE (%s) == SSA_NAME\n",
@@ -2414,12 +2414,12 @@ dt_operand::gen_gimple_expr (FILE *f, int indent)
            }
          else
            fprintf_indent (f, indent,
-                           "tree %s = gimple_assign_rhs%u (def_stmt);\n",
+                           "tree %s = gimple_assign_rhs%u (def);\n",
                            child_opname, i + 1);
        }
       else
        fprintf_indent (f, indent,
-                       "tree %s = gimple_call_arg (def_stmt, %u);\n",
+                       "tree %s = gimple_call_arg (def, %u);\n",
                        child_opname, i);
       fprintf_indent (f, indent,
                      "if ((%s = do_valueize (valueize, %s)))\n",
@@ -2600,9 +2600,9 @@ dt_node::gen_kids_1 (FILE *f, int indent, bool gimple,
       if (exprs_len)
        {
          fprintf_indent (f, indent,
-                         "if (is_gimple_assign (def_stmt))\n");
+                         "if (gassign *def = dyn_cast <gassign *> (def_stmt))\n");
          fprintf_indent (f, indent,
-                         "  switch (gimple_assign_rhs_code (def_stmt))\n");
+                         "  switch (gimple_assign_rhs_code (def))\n");
          indent += 4;
          fprintf_indent (f, indent, "{\n");
          for (unsigned i = 0; i < exprs_len; ++i)
@@ -2625,16 +2625,15 @@ dt_node::gen_kids_1 (FILE *f, int indent, bool gimple,
 
       if (fns_len)
        {
-         if (exprs_len)
-           fprintf_indent (f, indent, "else ");
-         else
-           fprintf_indent (f, indent, " ");
-
-         fprintf (f, "if (gimple_call_builtin_p (def_stmt, BUILT_IN_NORMAL))\n");
+         fprintf_indent (f, indent,
+                         "%sif (gimple_call_builtin_p (def_stmt, BUILT_IN_NORMAL))\n",
+                         exprs_len ? "else " : "");
          fprintf_indent (f, indent,
                          "  {\n");
          fprintf_indent (f, indent,
-                         "    tree fndecl = gimple_call_fndecl (def_stmt);\n");
+                         "    gcall *def = as_a <gcall *> (def_stmt);\n");
+         fprintf_indent (f, indent,
+                         "    tree fndecl = gimple_call_fndecl (def);\n");
          fprintf_indent (f, indent,
                          "    switch (DECL_FUNCTION_CODE (fndecl))\n");
          fprintf_indent (f, indent,