This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH 1/4] [GOMP4] [Fortran] OpenACC 1.0+ support in fortran front-end


On March 7, 2014 11:45, Ilmir Usmanov wrote:
OpenACC 1.0 support to fortran FE -- core.

Looks good to me. As Thomas is also fine with the patch set [1], the patch can now go into the branch :-)

Previously and still approved are Part 3 and 4 [2] of the series. I will separately reply to Part 2.

Tobias

[1] http://gcc.gnu.org/ml/gcc-patches/2014-03/msg00472.html
[2] http://gcc.gnu.org/ml/gcc-patches/2014-03/msg00399.html , http://gcc.gnu.org/ml/gcc-patches/2014-03/msg00400.html

gcc/fortran/
    * dump-parse-tree.c
    (show_omp_node): Dump also OpenACC executable statements.
    (show_code_node): Call it.
    (show_namespace): Dump !$ACC DECLARE directive.
    * 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, ST_OACC_END_LOOP): New statements.
    (gfc_expr_list): 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_expr_list): 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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]