aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2018-12-21 20:17:13 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2018-12-21 20:17:13 +0100
commitd1ffbd43e88b74563d8bdeb15451f9f0d96a328c (patch)
treee92f7fc2d860387d7fdd0add4dd5282e0ffe9e5f /gcc
parentffdcdc0b5a529a830cbde79e921960b27d69652e (diff)
downloadgcc-d1ffbd43e88b74563d8bdeb15451f9f0d96a328c.zip
gcc-d1ffbd43e88b74563d8bdeb15451f9f0d96a328c.tar.gz
gcc-d1ffbd43e88b74563d8bdeb15451f9f0d96a328c.tar.bz2
re PR middle-end/85594 (ICE during expand when compiling with -fwrapv -fopenmp)
PR middle-end/85594 PR middle-end/88553 * omp-expand.c (extract_omp_for_update_vars): Regimplify the condition if needed. (expand_omp_for_generic): Don't clobber t temporary for ordered loops. * gcc.dg/gomp/pr85594.c: New test. * gcc.dg/gomp/pr88553.c: New test. From-SVN: r267339
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/omp-expand.c20
-rw-r--r--gcc/testsuite/ChangeLog7
-rw-r--r--gcc/testsuite/gcc.dg/gomp/pr85594.c5
-rw-r--r--gcc/testsuite/gcc.dg/gomp/pr88553.c5
5 files changed, 38 insertions, 7 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index b8db488..2db37e7 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+2018-12-21 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/85594
+ PR middle-end/88553
+ * omp-expand.c (extract_omp_for_update_vars): Regimplify the condition
+ if needed.
+ (expand_omp_for_generic): Don't clobber t temporary for ordered loops.
+
2018-12-15 Jan Hubicka <hubicka@ucw.cz>
PR ipa/88561
diff --git a/gcc/omp-expand.c b/gcc/omp-expand.c
index 76c09c5..b5cb424 100644
--- a/gcc/omp-expand.c
+++ b/gcc/omp-expand.c
@@ -2076,6 +2076,11 @@ extract_omp_for_update_vars (struct omp_for_data *fd, basic_block cont_bb,
t = fold_build2 (fd->loops[i].cond_code, boolean_type_node, v, t);
stmt = gimple_build_cond_empty (t);
gsi_insert_after (&gsi, stmt, GSI_CONTINUE_LINKING);
+ if (walk_tree (gimple_cond_lhs_ptr (as_a <gcond *> (stmt)),
+ expand_omp_regimplify_p, NULL, NULL)
+ || walk_tree (gimple_cond_rhs_ptr (as_a <gcond *> (stmt)),
+ expand_omp_regimplify_p, NULL, NULL))
+ gimple_regimplify_operands (stmt, &gsi);
e = make_edge (bb, body_bb, EDGE_TRUE_VALUE);
e->probability = profile_probability::guessed_always ().apply_scale (7, 8);
}
@@ -3209,20 +3214,21 @@ expand_omp_for_generic (struct omp_region *region,
if (fd->ordered && counts[fd->collapse - 1] == NULL_TREE)
{
+ tree tem;
if (fd->collapse > 1)
- t = fd->loop.v;
+ tem = fd->loop.v;
else
{
- t = fold_build2 (MINUS_EXPR, TREE_TYPE (fd->loops[0].v),
- fd->loops[0].v, fd->loops[0].n1);
- t = fold_convert (fd->iter_type, t);
+ tem = fold_build2 (MINUS_EXPR, TREE_TYPE (fd->loops[0].v),
+ fd->loops[0].v, fd->loops[0].n1);
+ tem = fold_convert (fd->iter_type, tem);
}
tree aref = build4 (ARRAY_REF, fd->iter_type,
counts[fd->ordered], size_zero_node,
NULL_TREE, NULL_TREE);
- t = force_gimple_operand_gsi (&gsi, t, true, NULL_TREE,
- true, GSI_SAME_STMT);
- expand_omp_build_assign (&gsi, aref, t);
+ tem = force_gimple_operand_gsi (&gsi, tem, true, NULL_TREE,
+ true, GSI_SAME_STMT);
+ expand_omp_build_assign (&gsi, aref, tem);
}
t = build2 (fd->loop.cond_code, boolean_type_node,
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 0018d8b..e5928ec 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,10 @@
+2018-12-21 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/85594
+ PR middle-end/88553
+ * gcc.dg/gomp/pr85594.c: New test.
+ * gcc.dg/gomp/pr88553.c: New test.
+
2018-12-15 Jan Hubicka <hubicka@ucw.cz>
PR ipa/88561
diff --git a/gcc/testsuite/gcc.dg/gomp/pr85594.c b/gcc/testsuite/gcc.dg/gomp/pr85594.c
new file mode 100644
index 0000000..5577a33
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/gomp/pr85594.c
@@ -0,0 +1,5 @@
+/* PR middle-end/85594 */
+/* { dg-do compile } */
+/* { dg-additional-options "-fwrapv" } */
+
+#include "pr81768-2.c"
diff --git a/gcc/testsuite/gcc.dg/gomp/pr88553.c b/gcc/testsuite/gcc.dg/gomp/pr88553.c
new file mode 100644
index 0000000..6252def
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/gomp/pr88553.c
@@ -0,0 +1,5 @@
+/* PR middle-end/88553 */
+/* { dg-do compile } */
+/* { dg-additional-options "-O1 -ftree-loop-vectorize -fwrapv" } */
+
+#include "pr81768-2.c"