call optimize_cf() to delete dead-code that might arise after cond_eval
authorMichael Beck <beck@ipd.info.uni-karlsruhe.de>
Sun, 1 Jun 2008 15:32:23 +0000 (15:32 +0000)
committerMichael Beck <beck@ipd.info.uni-karlsruhe.de>
Sun, 1 Jun 2008 15:32:23 +0000 (15:32 +0000)
[r19906]

ir/opt/condeval.c

index 4f683d1..65a7de8 100644 (file)
@@ -696,14 +696,19 @@ void opt_cond_eval(ir_graph* irg)
                changed |= rerun;
        } while (rerun);
 
+       clear_using_irn_visited(irg);
+       clear_using_irn_link(irg);
+
        if (changed) {
                /* control flow changed, some blocks may become dead */
                set_irg_outs_inconsistent(irg);
                set_irg_doms_inconsistent(irg);
                set_irg_extblk_inconsistent(irg);
                set_irg_loopinfo_inconsistent(irg);
+
+               /* Dead code might be created. Optimize it away as it is dangerous
+                * to call optimize_df() an dead code. */
+               optimize_cf(irg);
        }
 
-       clear_using_irn_visited(irg);
-       clear_using_irn_link(irg);
 }