On Tue, Oct 15, 2019 at 11:42:12AM +0200, Tobias Burnus wrote: > OpenMP – OpenMP 4.0 and 4.5 are based on Fortran 2003 (hence: no > 'contiguous' attribute), OpenMP 5.0 is based on Fortran 2008. Hence, it > explicitly uses the contiguous attribute. It also introduces 'simply > contiguous array section' which largely matches Fortran's simply > contiguous.Several contiguous restrictions were lifted with OpenMP 5.0; one > of the few remaining ones is: > > * [OpenMP 5's map clause] "If a list item is an array section, it must > specify contiguous storage" > But this also does not require (simply) contiguous, i.e. compile-time > checking.
The function you are changing has been introduced with OpenACC and is used solely for OpenACC clauses, so I'll defer review to Thomas here. > The current check is used by OpenACC in > > * resolve_oacc_data_clauses > * resolve_oacc_deviceptr_clause > * resolve_omp_clauses for OpenACC loops/EXEC_OACC_PARALLEL > > And by OpenMP in > > * resolve_omp_clauses for OMP_LIST_USE_DEVICE/OMP_LIST_DEVICE_RESIDENT device_resident and use_device are OpenACC clauses, resolve_omp_clauses is called for both OpenMP and OpenACC, but is called only for OpenACC: if (code && (oacc_is_loop (code) || code->op == EXEC_OACC_PARALLEL)) check_array_not_assumed (n->sym, n->where, name); and for those 2 clauses. Jakub