diff options
author | rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2015-08-04 13:55:26 +0000 |
---|---|---|
committer | rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2015-08-04 13:55:26 +0000 |
commit | 666772860865cadbdde817e128ebc6cb256f31b2 (patch) | |
tree | 237f48ec5c857cc3d6f473ef773e8ad3612a1e02 /gcc | |
parent | 373bcaaf86394d849e7a8294fb0fd06e6395c8c4 (diff) | |
download | gcc-666772860865cadbdde817e128ebc6cb256f31b2.tar.gz |
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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@226577 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | 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,5 +1,11 @@ 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 bool compares on RHS. * match.pd: Add X ==/!= !X is false/true pattern. 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 <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, |