cfopt must maintain Bad structure
[libfirm] / ir / opt / jumpthreading.c
index 34aff8a..7561ded 100644 (file)
@@ -716,6 +716,10 @@ static void thread_jumps(ir_node* block, void* data)
        if (copy_block == NULL)
                return;
 
+       /* We might thread the condition block of an infinite loop,
+        * such that there is no path to End anymore. */
+       keep_alive(block);
+
        /* we have to remove the edge towards the pred as the pred now
         * jumps into the true_block. We also have to shorten Phis
         * in our block because of this */
@@ -768,7 +772,6 @@ void opt_jumpthreading(ir_graph* irg)
                /* control flow changed, some blocks may become dead */
                set_irg_doms_inconsistent(irg);
                set_irg_extblk_inconsistent(irg);
-               set_irg_loopinfo_inconsistent(irg);
                set_irg_entity_usage_state(irg, ir_entity_usage_not_computed);
        }
 }