On Thu, Nov 19, 2015 at 10:22:16AM -0600, James Norris wrote: > 2015-XX-XX James Norris <jnor...@codesourcery.com> > Cesar Philippidis <ce...@codesourcery.com> > > gcc/fortran/ > * dump-parse-tree.c (show_namespace): Handle declares. > * gfortran.h (struct symbol_attribute): New fields. > (enum gfc_omp_map_map): Add OMP_MAP_DEVICE_RESIDENT and OMP_MAP_LINK. > (OMP_LIST_LINK): New enum. > (struct gfc_oacc_declare): New structure. > (gfc_get_oacc_declare): New definition. > (struct gfc_namespace): Change type. > (enum gfc_exec_op): Add EXEC_OACC_DECLARE. > (struct gfc_code): New field. > * module.c (enum ab_attribute): Add AB_OACC_DECLARE_CREATE, > AB_OACC_DECLARE_COPYIN, AB_OACC_DECLARE_DEVICEPTR, > AB_OACC_DECLARE_DEVICE_RESIDENT, AB_OACC_DECLARE_LINK > (attr_bits): Add new initializers. > (mio_symbol_attribute): Handle new atributes. > * openmp.c (gfc_free_oacc_declare_clauses): New function. > (gfc_match_oacc_clause_link: Likewise. > (OMP_CLAUSE_LINK): New definition. > (gfc_match_omp_clauses): Handle OMP_CLAUSE_LINK. > (OACC_DECLARE_CLAUSES): Add OMP_CLAUSE_LINK > (gfc_match_oacc_declare): Add checking and module handling. > (gfc_resolve_oacc_declare): Reimplement. > * parse.c (case_decl): Add ST_OACC_DECLARE. > (parse_spec): Remove handling. > (parse_progunit): Remove handling. > * parse.h (struct gfc_state_data): Change type. > * resolve.c (gfc_resolve_blocks): Handle EXEC_OACC_DECLARE. > * st.c (gfc_free_statement): Handle EXEC_OACC_DECLARE. > * symbol.c (check_conflict): Add conflict checks. > (gfc_add_oacc_declare_create, gfc_add_oacc_declare_copyin, > gfc_add_oacc_declare_deviceptr, gfc_add_oacc_declare_device_resident): > New functions. > (gfc_copy_attr): Handle new symbols. > * trans-decl.c (add_clause, find_module_oacc_declare_clauses, > finish_oacc_declare): New functions. > (gfc_generate_function_code): Replace with call. > * trans-openmp.c (gfc_trans_oacc_declare): Reimplement. > (gfc_trans_oacc_directive): Handle EXEC_OACC_DECLARE. > * trans-stmt.c (gfc_trans_block_construct): Replace with call. > * trans-stmt.h (gfc_trans_oacc_declare): Remove argument. > * trans.c (trans_code): Handle EXEC_OACC_DECLARE. > > gcc/testsuite > * gfortran.dg/goacc/declare-1.f95: Update test. > * gfortran.dg/goacc/declare-2.f95: New test. > > libgomp/ > * testsuite/libgomp.oacc-fortran/declare-1.f90: New test. > * testsuite/libgomp.oacc-fortran/declare-2.f90: Likewise. > * testsuite/libgomp.oacc-fortran/declare-3.f90: Likewise. > * testsuite/libgomp.oacc-fortran/declare-4.f90: Likewise. > * testsuite/libgomp.oacc-fortran/declare-5.f90: Likewise. > * testsuite/libgomp.oacc-fortran/declare-5.f90: Likewise.
Ok. Jakub