On 8/16/18 5:46 PM, Julian Brown wrote: > On Wed, 15 Aug 2018 21:56:54 +0200 > Bernhard Reutner-Fischer <rep.dot....@gmail.com> wrote: > >> On 15 August 2018 18:46:37 CEST, Julian Brown >> <jul...@codesourcery.com> wrote: >>> On Mon, 13 Aug 2018 12:06:21 -0700 >>> Cesar Philippidis <ce...@codesourcery.com> wrote: >> >> atttribute has more t than strictly necessary. >> Don't like signed integer levels where they should be some unsigned. >> Also don't like single switch cases instead of if. >> And omitting function comments even if the hook way above is >> documented may be ok ish but is a bit lazy ;) > > Here's a new version with those comments addressed. I also changed the > logic around a little to avoid adding decls to the vec in omp_context > which would never be given the gang-private attribute. > > Re-tested with offloading to NVPTX. > > OK?
As far as the nvptx part is concerned, I see: ... === ERROR type #4: trailing operator (1 error(s)) === gcc/config/nvptx/nvptx.c:5946:27: gangprivate_shared_size = ... Otherwise, the nvptx part is OK. Thanks, - Tom > > Julian > > 2018-08-10 Julian Brown <jul...@codesourcery.com> > Chung-Lin Tang <clt...@codesourcery.com> > > gcc/ > * config/nvptx/nvptx.c (tree-hash-traits.h): Include. > (gangprivate_shared_size): New global variable. > (gangprivate_shared_align): Likewise. > (gangprivate_shared_sym): Likewise. > (gangprivate_shared_hmap): Likewise. > (nvptx_option_override): Initialize gangprivate_shared_sym, > gangprivate_shared_align. > (nvptx_file_end): Output gangprivate_shared_sym. > (nvptx_goacc_expand_accel_var): New function. > (nvptx_set_current_function): New function. > (TARGET_SET_CURRENT_FUNCTION): Define hook. > (TARGET_GOACC_EXPAND_ACCEL): Likewise. > * doc/tm.texi (TARGET_GOACC_EXPAND_ACCEL_VAR): Document new hook. > * doc/tm.texi.in (TARGET_GOACC_EXPAND_ACCEL_VAR): Likewise. > * expr.c (expand_expr_real_1): Remap decls marked with the > "oacc gangprivate" attribute. > * omp-low.c (omp_context): Add oacc_partitioning_level and > oacc_addressable_var_decls fields. > (new_omp_context): Initialize oacc_addressable_var_decls in new > omp_context. > (delete_omp_context): Delete oacc_addressable_var_decls in old > omp_context. > (lower_oacc_head_tail): Record partitioning-level count in omp > context. > (oacc_record_private_var_clauses, oacc_record_vars_in_bind) > (mark_oacc_gangprivate): New functions. > (lower_omp_for): Call oacc_record_private_var_clauses with "for" > clauses. Call mark_oacc_gangprivate for gang-partitioned loops. > (lower_omp_target): Call oacc_record_private_var_clauses with "target" > clauses. > Call mark_oacc_gangprivate for offloaded target regions. > (lower_omp_1): Call vars_in_bind for GIMPLE_BIND within OMP regions. > * target.def (expand_accel_var): New hook. > > libgomp/ > * testsuite/libgomp.oacc-c-c++-common/gang-private-1.c: New test. > * testsuite/libgomp.oacc-c-c++-common/loop-gwv-2.c: New test. > * testsuite/libgomp.oacc-c/pr85465.c: New test. > * testsuite/libgomp.oacc-fortran/gangprivate-attrib-1.f90: New test. >