projects
/
libfirm
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
3bb99d9
)
workaround for dead CF: restart the optimization
author
Michael Beck
<beck@ipd.info.uni-karlsruhe.de>
Thu, 12 Jun 2008 11:18:29 +0000
(11:18 +0000)
committer
Michael Beck
<beck@ipd.info.uni-karlsruhe.de>
Thu, 12 Jun 2008 11:18:29 +0000
(11:18 +0000)
[r20076]
ir/opt/cfopt.c
patch
|
blob
|
history
diff --git
a/ir/opt/cfopt.c
b/ir/opt/cfopt.c
index
be03bfa
..
ddb8e53
100644
(file)
--- a/
ir/opt/cfopt.c
+++ b/
ir/opt/cfopt.c
@@
-707,6
+707,7
@@
void optimize_cf(ir_graph *irg) {
/* FIXME: is this still needed? */
edges_deactivate(irg);
/* FIXME: is this still needed? */
edges_deactivate(irg);
+restart:
env.changed = 0;
env.phis_moved = 0;
env.changed = 0;
env.phis_moved = 0;
@@
-762,11
+763,11
@@
void optimize_cf(ir_graph *irg) {
set_irg_doms_inconsistent(irg);
set_irg_extblk_inconsistent(irg);
set_irg_loopinfo_inconsistent(irg);
set_irg_doms_inconsistent(irg);
set_irg_extblk_inconsistent(irg);
set_irg_loopinfo_inconsistent(irg);
+ goto restart;
}
/* Optimize the standard code. */
env.changed = 0;
}
/* Optimize the standard code. */
env.changed = 0;
- assure_doms(irg);
irg_block_walk(get_irg_end_block(irg), optimize_blocks, remove_simple_blocks, &env);
/* Walk all keep alives, optimize them if block, add to new in-array
irg_block_walk(get_irg_end_block(irg), optimize_blocks, remove_simple_blocks, &env);
/* Walk all keep alives, optimize them if block, add to new in-array