[PATCH 1/6] [GOMP4] OpenACC 1.0+ support in fortran front-end

Ilmir Usmanov i.usmanov@samsung.com
Fri Jan 31 11:16:00 GMT 2014


     OpenACC 1.0 support to fortran FE -- core.

     gcc/fortran/
     * dump-parse-tree.c
     (show_omp_node): Dump also OpenACC executable statements.
     (show_code_node): Call it.
     * gfortran.h
     (ST_OACC_PARALLEL_LOOP, ST_OACC_END_PARALLEL_LOOP, ST_OACC_PARALLEL,
     ST_OACC_END_PARALLEL, ST_OACC_KERNELS, ST_OACC_END_KERNELS,
     ST_OACC_DATA, ST_OACC_END_DATA, ST_OACC_HOST_DATA,
     ST_OACC_END_HOST_DATA, ST_OACC_LOOP, ST_OACC_DECLARE, ST_OACC_UPDATE,
     ST_OACC_WAIT, ST_OACC_CACHE, ST_OACC_KERNELS_LOOP,
     ST_OACC_END_KERNELS_LOOP, ST_OACC_ENTER_DATA,
     ST_OACC_EXIT_DATA): New statements.
     (gfc_exprlist): New structure to hold list of expressions.
     (OMP_LIST_COPY, OMP_LIST_DATA_CLAUSE_FIRST,
     OMP_LIST_OACC_COPYIN, OMP_LIST_COPYOUT, OMP_LIST_CREATE, 
OMP_LIST_DELETE,
     OMP_LIST_PRESENT, OMP_LIST_PRESENT_OR_COPY,
     OMP_LIST_PRESENT_OR_COPYIN, OMP_LIST_PRESENT_OR_COPYOUT,
     OMP_LIST_PRESENT_OR_CREATE, OMP_LIST_DEVICEPTR,
     OMP_LIST_DATA_CLAUSE_LAST, OMP_LIST_USE_DEVICE,
     OMP_LIST_DEVICE_RESIDENT, OMP_LIST_HOST, OMP_LIST_DEVICE,
     OMP_LIST_CACHE): New types of list, allowed in clauses.
     (gfc_omp_clauses): Add OpenACC clauses.
     (gfc_namespace): Add OpenACC declare directive clauses.
     (EXEC_OACC_KERNELS_LOOP, EXEC_OACC_PARALLEL_LOOP, EXEC_OACC_PARALLEL,
     EXEC_OACC_KERNELS, EXEC_OACC_DATA, EXEC_OACC_HOST_DATA, EXEC_OACC_LOOP,
     EXEC_OACC_UPDATE, EXEC_OACC_WAIT, EXEC_OACC_CACHE, 
EXEC_OACC_ENTER_DATA,
     EXEC_OACC_EXIT_DATA): New executable statements.
     (gfc_free_exprlist): New function declaration.
     (gfc_resolve_oacc_directive): Likewise.
     (gfc_resolve_oacc_parallel_loop_blocks): Likewise.
     (gfc_resolve_oacc_blocks): Likewise.
     * match.c (match_exit_cycle): Add support of OpenACC regions and loops.
     * match.h (gfc_match_oacc_cache): New function declaration.
     (gfc_match_oacc_wait, gfc_match_oacc_update): Likewise.
     (gfc_match_oacc_declare, gfc_match_oacc_loop): Likewise.
     (gfc_match_oacc_host_data, gfc_match_oacc_data): Likewise.
     (gfc_match_oacc_kernels, gfc_match_oacc_kernels_loop): Likewise.
     (gfc_match_oacc_parallel, gfc_match_oacc_parallel_loop): Likewise.
     (gfc_match_oacc_enter_data, gfc_match_oacc_exit_data): Likewise.
     * parse.c (decode_oacc_directive): New function.
     (verify_token_free, verify_token_fixed): New helper functions.
     (next_free, next_fixed): Decode !$ACC sentinel.
     (case_executable): Add ST_OACC_UPDATE, ST_OACC_WAIT, ST_OACC_CACHE,
     ST_OACC_ENTER_DATA and ST_OACC_EXIT_DATA directives.
     (case_exec_markers): Add ST_OACC_PARALLEL_LOOP, ST_OACC_PARALLEL,
     ST_OACC_KERNELS, ST_OACC_DATA, ST_OACC_HOST_DATA, ST_OACC_LOOP and
     ST_OACC_KERNELS_LOOP directives.
     (push_state): Initialize OpenACC declare clauses.
     (gfc_ascii_statement): Dump names of OpenACC directives.
     (verify_st_order): Verify OpenACC declare directive as declarative.
     (parse_spec): Push clauses to state stack when declare directive is
     parsed.
     (parse_oacc_structured_block, parse_oacc_loop): New functions.
     (parse_executable): Call them.
     (parse_progunit): Move declare clauses from state stack to namespace.
     * parse.h (gfc_state_data): Add declare directive's clauses.
     * resolve.c (gfc_resolve_blocks): Resolve OpenACC directives.
     (resolve_code): Likewise.
     * scanner.c (openacc_flag, openacc_locus): New static variables.
     (skip_oacc_attribute, skip_omp_attribute): New helper functions.
     (skip_free_comments, skip_fixed_comments): Don't skip !$ACC sentinel.
     (gfc_next_char_literal): Support OpenACC directives.
     * st.c (gfc_free_statement): Free also OpenACC directives.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-OpenACC-fortran-front-end-part-1.patch
Type: text/x-diff
Size: 47991 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20140131/70dfb33d/attachment.bin>


More information about the Gcc-patches mailing list