From 8221c30b09f406fdab07df228e4bad4d3da7b1fe Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 30 May 2019 23:19:39 +0200 Subject: gimplify.c (enum gimplify_omp_var_data): Add GOVD_CONDTEMP. * gimplify.c (enum gimplify_omp_var_data): Add GOVD_CONDTEMP. (gimplify_adjust_omp_clauses_1): Handle GOVD_CONDTEMP. (gimplify_omp_for): If worksharing loop with lastprivate conditional is nested inside of parallel region, add _condtemp_ clause to both. * tree-nested.c (convert_nonlocal_omp_clauses, convert_local_omp_clauses): Ignore OMP_CLAUSE__CONDTEMP_ instead of assertion failure. * omp-general.h (struct omp_for_data): Add have_pointer_condtemp member. * omp-general.c (omp_extract_for_data): Compute it. * omp-low.c (scan_sharing_clauses): Handle OMP_CLAUSE__CONDTEMP_. (lower_rec_input_clauses): Likewise. (lower_lastprivate_conditional_clauses): If OMP_CLAUSE__CONDTEMP_ clause is already present, just add one further one after it. (lower_lastprivate_clauses): Handle cond_ptr with array type. (lower_send_shared_vars): Clear _condtemp_ vars. (lower_omp_1) : Handle target data like critical or section or taskgroup. * omp-expand.c (determine_parallel_type): Disallow combining only if first OMP_CLAUSE__CONDTEMP_ has pointer type. Disallow combining of parallel sections if OMP_CLAUSE__CONDTEMP_ is present. (expand_omp_for_generic, expand_omp_for_static_nochunk, expand_omp_for_static_chunk, expand_omp_for): Use fd->have_pointer_condtemp instead of fd->lastprivate_conditional to determine if a special set of API routines are needed and if condtemp needs to be initialized, while always initialize cond_var if fd->lastprivate_conditional is non-zero. From-SVN: r271791 --- gcc/omp-general.h | 1 + 1 file changed, 1 insertion(+) (limited to 'gcc/omp-general.h') diff --git a/gcc/omp-general.h b/gcc/omp-general.h index b89c131..6ce891f 100644 --- a/gcc/omp-general.h +++ b/gcc/omp-general.h @@ -63,6 +63,7 @@ struct omp_for_data int collapse; /* Collapsed loops, 1 for a non-collapsed loop. */ int ordered; bool have_nowait, have_ordered, simd_schedule, have_reductemp; + bool have_pointer_condtemp; int lastprivate_conditional; unsigned char sched_modifiers; enum omp_clause_schedule_kind sched_kind; -- cgit v1.1