diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/gimplify.c | 16 |
2 files changed, 24 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c946bba..2932538 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2019-07-31 Jakub Jelinek <jakub@redhat.com> + + PR middle-end/91301 + * gimplify.c (gimplify_omp_for): If for class iterator on + distribute parallel for there is no data sharing clause + on inner_for_stmt, look for private clause on combined + parallel too and if found, move it to inner_for_stmt. + 2019-07-31 Richard Sandiford <richard.sandiford@arm.com> * lra-int.h (lra_operand_data): Remove early_clobber field. diff --git a/gcc/gimplify.c b/gcc/gimplify.c index a40c7ce..6a1a7f0 100644 --- a/gcc/gimplify.c +++ b/gcc/gimplify.c @@ -10663,6 +10663,22 @@ gimplify_omp_for (tree *expr_p, gimple_seq *pre_p) && OMP_CLAUSE_DECL (*pc) == orig_decl) break; if (*pc == NULL_TREE) + { + tree *spc; + for (spc = &OMP_PARALLEL_CLAUSES (*data[1]); + *spc; spc = &OMP_CLAUSE_CHAIN (*spc)) + if (OMP_CLAUSE_CODE (*spc) == OMP_CLAUSE_PRIVATE + && OMP_CLAUSE_DECL (*spc) == orig_decl) + break; + if (*spc) + { + tree c = *spc; + *spc = OMP_CLAUSE_CHAIN (c); + OMP_CLAUSE_CHAIN (c) = NULL_TREE; + *pc = c; + } + } + if (*pc == NULL_TREE) ; else if (OMP_CLAUSE_CODE (*pc) == OMP_CLAUSE_PRIVATE) { |