- improved is_non_null_Confirm()
[libfirm] / ir / ana / ircfscc.c
index 8feda3a..15230a9 100644 (file)
@@ -163,6 +163,12 @@ static INLINE void init_stack(void) {
        tos = 0;
 }
 
+static void finish_stack(void)
+{
+       DEL_ARR_F(stack);
+       stack = NULL;
+}
+
 /**
  * Push a node n onto the IR-node stack.
  */
@@ -296,6 +302,11 @@ static INLINE void init_scc(ir_graph *irg, struct obstack *obst) {
        irg_walk_graph(irg, init_node, NULL, obst);
 }
 
+static INLINE void finish_scc(void)
+{
+       finish_stack();
+}
+
 #ifdef INTERPROCEDURAL_VIEW
 /**
  * Initializes the scc algorithm for the interprocedural case.
@@ -335,6 +346,7 @@ static int is_outermost_StartBlock(ir_node *n) {
 static int is_head(ir_node *n, ir_node *root) {
        int i, arity;
        int some_outof_loop = 0, some_in_loop = 0;
+       (void) root;
 
        assert(is_Block(n));
 
@@ -370,6 +382,7 @@ static int is_head(ir_node *n, ir_node *root) {
 static int is_endless_head(ir_node *n, ir_node *root) {
        int i, arity;
        int none_outof_loop = 1, some_in_loop = 0;
+       (void) root;
 
        assert(is_Block(n));
        /* Test for legal loop header: Block, Phi, ... */
@@ -655,6 +668,7 @@ int construct_cf_backedges(ir_graph *irg) {
                if (is_Block(el))
                        cfscc(el);
        }
+       finish_scc();
        obstack_free(&temp, NULL);
 
        assert(head_rem == current_loop);