aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2015-08-04 13:55:26 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2015-08-04 13:55:26 +0000
commitc8136c3648efc126933c61e5205492c6bfecd750 (patch)
tree237f48ec5c857cc3d6f473ef773e8ad3612a1e02 /gcc
parent59c20dc74df24fa8e14ade6aecbfd4a1c6bbe30c (diff)
downloadgcc-c8136c3648efc126933c61e5205492c6bfecd750.zip
gcc-c8136c3648efc126933c61e5205492c6bfecd750.tar.gz
gcc-c8136c3648efc126933c61e5205492c6bfecd750.tar.bz2
genmatch.c (dt_node::gen_kids_1): Use gassign and gcall in generated code.
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/genmatch.c23
2 files changed, 17 insertions, 12 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 3706b672..c6dc552 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 15d257b..f48e79d 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,