projects
/
libfirm
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
reindent escape_ana.c in firm style
[libfirm]
/
ir
/
opt
/
jumpthreading.c
diff --git
a/ir/opt/jumpthreading.c
b/ir/opt/jumpthreading.c
index
34aff8a
..
7561ded
100644
(file)
--- a/
ir/opt/jumpthreading.c
+++ b/
ir/opt/jumpthreading.c
@@
-716,6
+716,10
@@
static void thread_jumps(ir_node* block, void* data)
if (copy_block == NULL)
return;
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 */
/* 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);
/* 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);
}
}
set_irg_entity_usage_state(irg, ir_entity_usage_not_computed);
}
}