add a parameter to limit the maximum size of methods when inlining, otherwise some...
[libfirm] / ir / ir / irdump_grgen.c
index b301f6b..f5f6371 100644 (file)
@@ -21,7 +21,7 @@
 * @file
 * @brief   Write ir graph as a grgen construction rule
 * @author  Andreas Schoesser
-* @version $Id:$
+* @version $Id$
 */
 
 /*
@@ -157,7 +157,7 @@ static void collect_nodes(ir_node *n, void * env)
  * Starts dumping
  ************************************************************************/
 
-void dump_irg_grgen(ir_graph *irg, char *filename, int append)
+void dump_irg_grgen_file(ir_graph *irg, char *filename, int append)
 {
        FILE *fp;
        grgen_dumpinfo_t dump_info;
@@ -212,6 +212,18 @@ void dump_irg_grgen(ir_graph *irg, char *filename, int append)
 }
 
 
+void dump_irg_grgen(ir_graph *irg, char *suffix)
+{
+  char filename[100] = "";
+
+  strncat(filename, get_entity_name(get_irg_entity(irg)), 100);
+  strncat(filename, suffix, 100);
+  strncat(filename, ".grg", 100);
+
+  dump_irg_grgen_file(irg, filename, 0);
+}
+
+
 /************************************************************************
  * Dumps the left hand side of the rule
  ************************************************************************/
@@ -241,7 +253,7 @@ static int dump_pattern(grgen_dumpinfo_t *dump_info, FILE *fp)
                int i;
 
                // Dump edges
-               for(i = -1; i < get_irn_arity(n); i++)
+               for(i = is_Block(n) ? 0 : -1; i < get_irn_arity(n); i++)
                        dump_grg_egde(n, i, dump_info, fp);
        }
 
@@ -451,7 +463,7 @@ static void dump_grgen_eval(ir_node *n, grgen_dumpinfo_t *dump_info, FILE *fp)
 
                // Correlate the matched phi edges with the matched block edges
                // Caution: Position 0 in the edge_names array is the block edge, so start at 1
-               for(i = 0; i < get_irn_arity(n) + 1; i++)
+               for(i = code == iro_Block; i < get_irn_arity(n) + 1; i++)
                {
                        assert(edge_names[i] != NULL && "Some edges have not been dumped!");