assure_irg_outs() added
authorMichael Beck <beck@ipd.info.uni-karlsruhe.de>
Wed, 3 May 2006 08:54:20 +0000 (08:54 +0000)
committerMichael Beck <beck@ipd.info.uni-karlsruhe.de>
Wed, 3 May 2006 08:54:20 +0000 (08:54 +0000)
[r7687]

ir/ana/irouts.c
ir/ana/irouts.h

index 0a1954f..726f52e 100644 (file)
@@ -417,7 +417,6 @@ void compute_irg_outs(ir_graph *irg) {
 
   if (current_ir_graph->outs_state != outs_none)
     free_irg_outs(current_ir_graph);
-  current_ir_graph->outs_state = outs_consistent;
 
   /* This first iteration counts the overall number of out edges and the
      number of out edges for each node. */
@@ -441,9 +440,15 @@ void compute_irg_outs(ir_graph *irg) {
      the out block walker. */
   fix_start_proj(irg);
 
+  current_ir_graph->outs_state = outs_consistent;
   current_ir_graph = rem;
 }
 
+void assure_irg_outs(ir_graph *irg) {
+  if (get_irg_outs_state(irg) != outs_consistent)
+    compute_irg_outs(irg);
+}
+
 void compute_irp_outs(void) {
   int i, n_irgs = get_irp_n_irgs();
   for (i = 0; i < n_irgs; ++i)
index 9bafc37..5bf7cd6 100644 (file)
@@ -83,6 +83,9 @@ void irg_out_block_walk(ir_node *node,
    "op_pin_state_floats".   Optimizes Tuple nodes. */
 void compute_irg_outs(ir_graph *irg);
 void compute_irp_outs(void);
+
+void assure_irg_outs(ir_graph *irg);
+
 /** Computes the out edges in interprocedural view */
 void compute_ip_outs(void);
 /** Frees the out datastructures.  Sets the flag in irg to "outs_none". */