aboutsummaryrefslogtreecommitdiff
path: root/gcc/omp-low.c
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2014-09-08 14:28:51 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2014-09-08 14:28:51 +0000
commit33d9078ac5134dce037632da60cde27145193f5a (patch)
treed829261fc020863ce018b35b3e289c94c57db1bb /gcc/omp-low.c
parentefe295f2379ac8fe80a29880c0f31dd13dcca03f (diff)
downloadgcc-33d9078ac5134dce037632da60cde27145193f5a.zip
gcc-33d9078ac5134dce037632da60cde27145193f5a.tar.gz
gcc-33d9078ac5134dce037632da60cde27145193f5a.tar.bz2
re PR ipa/63196 (FAIL: g++.dg/torture/pr57140.C -O3 -fomit-frame-pointer (internal compiler error))
2014-09-08 Richard Biener <rguenther@suse.de> PR ipa/63196 * tree-inline.c (copy_loops): The source loop header should always be non-NULL. (tree_function_versioning): If loops need fixup after removing unreachable blocks fix them. * omp-low.c (simd_clone_adjust): Do not add incr block to loop under construction. From-SVN: r215016
Diffstat (limited to 'gcc/omp-low.c')
-rw-r--r--gcc/omp-low.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/gcc/omp-low.c b/gcc/omp-low.c
index 22a8fca..be882f7 100644
--- a/gcc/omp-low.c
+++ b/gcc/omp-low.c
@@ -11900,6 +11900,7 @@ simd_clone_adjust (struct cgraph_node *node)
iteration increment and the condition/branch. */
basic_block orig_exit = EDGE_PRED (EXIT_BLOCK_PTR_FOR_FN (cfun), 0)->src;
basic_block incr_bb = create_empty_bb (orig_exit);
+ add_bb_to_loop (incr_bb, body_bb->loop_father);
/* The succ of orig_exit was EXIT_BLOCK_PTR_FOR_FN (cfun), with an empty
flag. Set it now to be a FALLTHRU_EDGE. */
gcc_assert (EDGE_COUNT (orig_exit->succs) == 1);
@@ -11924,7 +11925,6 @@ simd_clone_adjust (struct cgraph_node *node)
loop->safelen = node->simdclone->simdlen;
loop->force_vectorize = true;
loop->header = body_bb;
- add_bb_to_loop (incr_bb, loop);
/* Branch around the body if the mask applies. */
if (node->simdclone->inbranch)
@@ -11965,7 +11965,7 @@ simd_clone_adjust (struct cgraph_node *node)
gsi_insert_after (&gsi, g, GSI_CONTINUE_LINKING);
e = split_block (incr_bb, gsi_stmt (gsi));
basic_block latch_bb = e->dest;
- basic_block new_exit_bb = e->dest;
+ basic_block new_exit_bb;
new_exit_bb = split_block (latch_bb, NULL)->dest;
loop->latch = latch_bb;