aboutsummaryrefslogtreecommitdiff
path: root/gcc/graphite.c
diff options
context:
space:
mode:
authorSebastian Pop <sebastian.pop@amd.com>2009-02-09 20:35:09 +0000
committerSebastian Pop <spop@gcc.gnu.org>2009-02-09 20:35:09 +0000
commit01d7d2f3e674b136bc88d1b43b48a2f82c714705 (patch)
tree1980b73f47f498c9f38fbf43f839b1703f2c6076 /gcc/graphite.c
parent8deecedf4c0cf5b674040c98288e6c4b1dcb18e2 (diff)
downloadgcc-01d7d2f3e674b136bc88d1b43b48a2f82c714705.zip
gcc-01d7d2f3e674b136bc88d1b43b48a2f82c714705.tar.gz
gcc-01d7d2f3e674b136bc88d1b43b48a2f82c714705.tar.bz2
re PR tree-optimization/38953 ([graphite] loop closed SSA not maintained by graphite code generation)
2009-02-09 Sebastian Pop <sebastian.pop@amd.com> PR middle-end/38953 * graphite.c (if_region_set_false_region): After moving a region in the false branch of a condition, remove the empty dummy basic block. (gloog): Remove wrong fix for PR38953. From-SVN: r144042
Diffstat (limited to 'gcc/graphite.c')
-rw-r--r--gcc/graphite.c15
1 files changed, 4 insertions, 11 deletions
diff --git a/gcc/graphite.c b/gcc/graphite.c
index a4d5e36..13b9ad6 100644
--- a/gcc/graphite.c
+++ b/gcc/graphite.c
@@ -5024,6 +5024,7 @@ if_region_set_false_region (ifsese if_region, sese region)
{
basic_block condition = if_region_get_condition_block (if_region);
edge false_edge = get_false_edge_from_guard_bb (condition);
+ basic_block dummy = false_edge->dest;
edge entry_region = SESE_ENTRY (region);
edge exit_region = SESE_EXIT (region);
basic_block before_region = entry_region->src;
@@ -5038,11 +5039,13 @@ if_region_set_false_region (ifsese if_region, sese region)
redirect_edge_pred (entry_region, condition);
redirect_edge_pred (exit_region, before_region);
redirect_edge_pred (false_edge, last_in_region);
+ redirect_edge_succ (false_edge, single_succ (dummy));
+ delete_basic_block (dummy);
exit_region->flags = EDGE_FALLTHRU;
recompute_all_dominators ();
- SESE_EXIT (region) = single_succ_edge (false_edge->dest);
+ SESE_EXIT (region) = false_edge;
if_region->false_region = region;
if (slot)
@@ -5436,16 +5439,6 @@ gloog (scop_p scop, struct clast_stmt *stmt)
loop_p context_loop;
ifsese if_region = NULL;
- /* To maintain the loop closed SSA form, we have to keep the phi
- nodes after the last loop in the scop. */
- if (loop_depth (SESE_EXIT (SCOP_REGION (scop))->dest->loop_father)
- != loop_depth (SESE_EXIT (SCOP_REGION (scop))->src->loop_father))
- {
- basic_block bb = SESE_EXIT (SCOP_REGION (scop))->dest;
- SESE_EXIT (SCOP_REGION (scop)) = split_block_after_labels (bb);
- pointer_set_insert (SESE_REGION_BBS (SCOP_REGION (scop)), bb);
- }
-
recompute_all_dominators ();
graphite_verify ();
if_region = move_sese_in_condition (SCOP_REGION (scop));