[PATCH] Fix cond-expr handling in genmatch

Richard Biener rguenther@suse.de
Tue Oct 18 07:13:00 GMT 2016


On Mon, 17 Oct 2016, Richard Biener wrote:

> 
> This fixes matching of toplevel (cond (lt @1 @2) ...) as reported by
> Bin to me privately.
> 
> Bootstrapped on x86_64-unknown-linux-gnu, testing in progress.

This is what I applied.

Richard.

2016-10-18  Richard Biener  <rguenther@suse.de>

	* genmatch.c (dt_operand::gen_gimple_expr): Use get_name to
	get at the operand to look at with TREE_OPERAND for generic
	sub-nodes.

Index: gcc/genmatch.c
===================================================================
--- gcc/genmatch.c	(revision 241228)
+++ gcc/genmatch.c	(working copy)
@@ -2644,9 +2644,19 @@ dt_operand::gen_gimple_expr (FILE *f, in
 	      /* ???  If this is a memory operation we can't (and should not)
 		 match this.  The only sensible operand types are
 		 SSA names and invariants.  */
-	      fprintf_indent (f, indent,
-			      "tree %s = TREE_OPERAND (gimple_assign_rhs1 (def), %i);\n",
-			      child_opname, i);
+	      if (e->is_generic)
+		{
+		  char opname[20];
+		  get_name (opname);
+		  fprintf_indent (f, indent,
+				  "tree %s = TREE_OPERAND (%s, %i);\n",
+				  child_opname, opname, i);
+		}
+	      else
+		fprintf_indent (f, indent,
+				"tree %s = TREE_OPERAND "
+				"(gimple_assign_rhs1 (def), %i);\n",
+				child_opname, i);
 	      fprintf_indent (f, indent,
 			      "if ((TREE_CODE (%s) == SSA_NAME\n",
 			      child_opname);



More information about the Gcc-patches mailing list