This patch avoids multiple definitions of def_stmt in different
blocks, and moves it at
the beginning of gimple_match_and_simplify.

* genmatch.c (decision_tree::gen_gimple): Call fprintf to generate
definition of def_stmt.
   (dt_operand::gen_gimple_expr): Adjust call to fprintf to generate
assignment of def_stmt.

Thanks and Regards,
Prathamesh
Index: gcc/genmatch.c
===================================================================
--- gcc/genmatch.c	(revision 211950)
+++ gcc/genmatch.c	(working copy)
@@ -960,7 +960,7 @@ dt_operand::gen_gimple_expr (FILE *f, co
   fprintf (f, "if (TREE_CODE (%s) == SSA_NAME)\n", opname);
   fprintf (f, "{\n");
   
-  fprintf (f, "gimple def_stmt = SSA_NAME_DEF_STMT (%s);\n", opname);
+  fprintf (f, "def_stmt = SSA_NAME_DEF_STMT (%s);\n", opname);
   (e->operation->op->kind == id_base::CODE) ? gen_gimple_expr_expr (f, e) : gen_gimple_expr_fn (f, e);
 
   return e->ops.length () + 2;
@@ -1261,6 +1261,7 @@ decision_tree::gen_gimple (FILE *f)
     fprintf (f, ", tree op%d", i);
   fprintf (f, ")\n");
   fprintf (f, "{\n");
+  fprintf (f, "gimple def_stmt;\n");
 
   for (unsigned i = 0; i < root->kids.length (); i++)
     {

Reply via email to