diff options
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/tree-cfg.c | 5 |
2 files changed, 8 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 46efc5d..6736648 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,10 @@ 2007-08-01 Zdenek Dvorak <ook@ucw.cz> + * tree-cfg.c (tree_merge_blocks): Preserve loop exit phi nodes only + in loop closed ssa. + +2007-08-01 Zdenek Dvorak <ook@ucw.cz> + * tree-ssa-threadupdate.c (thread_through_all_blocks): Record that the loop structures may need fixing. * tree-cfgcleanup.c (cleanup_tree_cfg_noloop, repair_loop_structures): diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c index d0c8fe9..c24b1c6 100644 --- a/gcc/tree-cfg.c +++ b/gcc/tree-cfg.c @@ -1274,9 +1274,10 @@ tree_merge_blocks (basic_block a, basic_block b) tree copy; bool may_replace_uses = may_propagate_copy (def, use); - /* In case we have loops to care about, do not propagate arguments of - loop closed ssa phi nodes. */ + /* In case we maintain loop closed ssa form, do not propagate arguments + of loop exit phi nodes. */ if (current_loops + && (current_loops->state & LOOP_CLOSED_SSA) && is_gimple_reg (def) && TREE_CODE (use) == SSA_NAME && a->loop_father != b->loop_father) |