From: Michael Beck Date: Wed, 3 May 2006 08:54:20 +0000 (+0000) Subject: assure_irg_outs() added X-Git-Url: http://nsz.repo.hu/git/?a=commitdiff_plain;h=ca63c180b7cc9b93f63877bf69e298bad45de6f1;p=libfirm assure_irg_outs() added [r7687] --- diff --git a/ir/ana/irouts.c b/ir/ana/irouts.c index 0a1954f33..726f52ebc 100644 --- a/ir/ana/irouts.c +++ b/ir/ana/irouts.c @@ -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) diff --git a/ir/ana/irouts.h b/ir/ana/irouts.h index 9bafc3730..5bf7cd6af 100644 --- a/ir/ana/irouts.h +++ b/ir/ana/irouts.h @@ -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". */