diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/gimplify.c | 5 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/c-c++-common/gomp/pr71371.c | 25 |
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); + } +} |