From c8136c3648efc126933c61e5205492c6bfecd750 Mon Sep 17 00:00:00 2001 From: Richard Biener Date: Tue, 4 Aug 2015 13:55:26 +0000 Subject: [PATCH] genmatch.c (dt_node::gen_kids_1): Use gassign and gcall in generated code. 2015-08-04 Richard Biener * 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 | 6 ++++++ gcc/genmatch.c | 23 +++++++++++------------ 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3706b6729a9..c6dc552e755 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2015-08-04 Richard Biener + + * 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 * gimple-fold.c (gimple_fold_stmt_to_constant_1): Canonicalize diff --git a/gcc/genmatch.c b/gcc/genmatch.c index 15d257b9653..f48e79d0b95 100644 --- a/gcc/genmatch.c +++ b/gcc/genmatch.c @@ -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 (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 (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, -- 2.30.2