aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2016-06-01 16:24:02 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2016-06-01 16:24:02 +0200
commitab62397a1b51a925abf062999a96556241dc3478 (patch)
tree52005cd238123006b231cc7107a8b48143b7cd2f /gcc
parentb66af6ed30d4bfa930e7afa30d078d7e83af42a0 (diff)
downloadgcc-ab62397a1b51a925abf062999a96556241dc3478.zip
gcc-ab62397a1b51a925abf062999a96556241dc3478.tar.gz
gcc-ab62397a1b51a925abf062999a96556241dc3478.tar.bz2
re PR middle-end/71371 (ICE with OpenMP taskloop and addressable iterator)
PR middle-end/71371 * gimplify.c (gimplify_omp_for): Temporarily clear gimplify_omp_ctxp around creation of the temporary. * c-c++-common/gomp/pr71371.c: New test. From-SVN: r236994
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/gimplify.c5
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/c-c++-common/gomp/pr71371.c25
4 files changed, 41 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 0c4aa2d..128c2e4 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2016-06-01 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/71371
+ * gimplify.c (gimplify_omp_for): Temporarily clear gimplify_omp_ctxp
+ around creation of the temporary.
+
2016-06-01 Richard Biener <rguenther@suse.de>
PR tree-optimization/71366
diff --git a/gcc/gimplify.c b/gcc/gimplify.c
index 131fa24..f12c6a1 100644
--- a/gcc/gimplify.c
+++ b/gcc/gimplify.c
@@ -9009,7 +9009,12 @@ gimplify_omp_for (tree *expr_p, gimple_seq *pre_p)
|| (ort == ORT_SIMD
&& TREE_VEC_LENGTH (OMP_FOR_INIT (for_stmt)) > 1))
{
+ struct gimplify_omp_ctx *ctx = gimplify_omp_ctxp;
+ /* Make sure omp_add_variable is not called on it prematurely.
+ We call it ourselves a few lines later. */
+ gimplify_omp_ctxp = NULL;
var = create_tmp_var (TREE_TYPE (decl), get_name (decl));
+ gimplify_omp_ctxp = ctx;
TREE_OPERAND (t, 0) = var;
gimplify_seq_add_stmt (&for_body, gimple_build_assign (decl, var));
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index cb2f8c6..e8e8e3b 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2016-06-01 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/71371
+ * c-c++-common/gomp/pr71371.c: New test.
+
2016-06-01 Richard Biener <rguenther@suse.de>
PR tree-optimization/71366
diff --git a/gcc/testsuite/c-c++-common/gomp/pr71371.c b/gcc/testsuite/c-c++-common/gomp/pr71371.c
new file mode 100644
index 0000000..da6e842
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/gomp/pr71371.c
@@ -0,0 +1,25 @@
+/* PR middle-end/71371 */
+/* { dg-do compile } */
+
+void baz (int *);
+
+void
+foo (void)
+{
+ int i;
+ #pragma omp taskloop
+ for (i = 0; i < 100; i++)
+ baz (&i);
+}
+
+void
+bar (void)
+{
+ int i;
+ #pragma omp parallel
+ {
+ #pragma omp for
+ for (i = 0; i < 100; i++)
+ baz (&i);
+ }
+}