1 2014-04-05 Tobias Burnus <burnus@net-b.de>
4 * parse.c (decode_oacc_directive): Use gfc_unset_implicit_pure.
6 2014-03-18 Thomas Schwinge <thomas@codesourcery.com>
8 * f95-lang.c (DEF_FUNCTION_TYPE_10): Define.
10 (BT_FN_VOID_INT_OMPFN_PTR_SIZE_PTR_PTR_PTR_INT_INT_INT): New type.
12 2014-03-13 Ilmir Usmanov <i.usmanov@samsung.com>
17 (show_omp_node): Dump also OpenACC executable statements.
18 (show_code_node): Call it.
19 (show_namespace): Dump !$ACC DECLARE directive.
21 (ST_OACC_PARALLEL_LOOP, ST_OACC_END_PARALLEL_LOOP, ST_OACC_PARALLEL,
22 ST_OACC_END_PARALLEL, ST_OACC_KERNELS, ST_OACC_END_KERNELS,
23 ST_OACC_DATA, ST_OACC_END_DATA, ST_OACC_HOST_DATA,
24 ST_OACC_END_HOST_DATA, ST_OACC_LOOP, ST_OACC_DECLARE, ST_OACC_UPDATE,
25 ST_OACC_WAIT, ST_OACC_CACHE, ST_OACC_KERNELS_LOOP,
26 ST_OACC_END_KERNELS_LOOP, ST_OACC_ENTER_DATA,
27 ST_OACC_EXIT_DATA, ST_OACC_END_LOOP): New statements.
28 (gfc_expr_list): New structure to hold list of expressions.
29 (OMP_LIST_COPY, OMP_LIST_DATA_CLAUSE_FIRST,
30 OMP_LIST_OACC_COPYIN, OMP_LIST_COPYOUT, OMP_LIST_CREATE, OMP_LIST_DELETE,
31 OMP_LIST_PRESENT, OMP_LIST_PRESENT_OR_COPY,
32 OMP_LIST_PRESENT_OR_COPYIN, OMP_LIST_PRESENT_OR_COPYOUT,
33 OMP_LIST_PRESENT_OR_CREATE, OMP_LIST_DEVICEPTR,
34 OMP_LIST_DATA_CLAUSE_LAST, OMP_LIST_USE_DEVICE,
35 OMP_LIST_DEVICE_RESIDENT, OMP_LIST_HOST, OMP_LIST_DEVICE,
36 OMP_LIST_CACHE): New types of list, allowed in clauses.
37 (gfc_omp_clauses): Add OpenACC clauses.
38 (gfc_namespace): Add OpenACC declare directive clauses.
39 (EXEC_OACC_KERNELS_LOOP, EXEC_OACC_PARALLEL_LOOP, EXEC_OACC_PARALLEL,
40 EXEC_OACC_KERNELS, EXEC_OACC_DATA, EXEC_OACC_HOST_DATA, EXEC_OACC_LOOP,
41 EXEC_OACC_UPDATE, EXEC_OACC_WAIT, EXEC_OACC_CACHE, EXEC_OACC_ENTER_DATA,
42 EXEC_OACC_EXIT_DATA): New executable statements.
43 (gfc_free_expr_list): New function declaration.
44 (gfc_resolve_oacc_directive): Likewise.
45 (gfc_resolve_oacc_parallel_loop_blocks): Likewise.
46 (gfc_resolve_oacc_blocks): Likewise.
47 * match.c (match_exit_cycle): Add support of OpenACC regions and loops.
48 * match.h (gfc_match_oacc_cache): New function declaration.
49 (gfc_match_oacc_wait, gfc_match_oacc_update): Likewise.
50 (gfc_match_oacc_declare, gfc_match_oacc_loop): Likewise.
51 (gfc_match_oacc_host_data, gfc_match_oacc_data): Likewise.
52 (gfc_match_oacc_kernels, gfc_match_oacc_kernels_loop): Likewise.
53 (gfc_match_oacc_parallel, gfc_match_oacc_parallel_loop): Likewise.
54 (gfc_match_oacc_enter_data, gfc_match_oacc_exit_data): Likewise.
55 * parse.c (decode_oacc_directive): New function.
56 (verify_token_free, verify_token_fixed): New helper functions.
57 (next_free, next_fixed): Decode !$ACC sentinel.
58 (case_executable): Add ST_OACC_UPDATE, ST_OACC_WAIT, ST_OACC_CACHE,
59 ST_OACC_ENTER_DATA and ST_OACC_EXIT_DATA directives.
60 (case_exec_markers): Add ST_OACC_PARALLEL_LOOP, ST_OACC_PARALLEL,
61 ST_OACC_KERNELS, ST_OACC_DATA, ST_OACC_HOST_DATA, ST_OACC_LOOP and
62 ST_OACC_KERNELS_LOOP directives.
63 (push_state): Initialize OpenACC declare clauses.
64 (gfc_ascii_statement): Dump names of OpenACC directives.
65 (verify_st_order): Verify OpenACC declare directive as declarative.
66 (parse_spec): Push clauses to state stack when declare directive is
68 (parse_oacc_structured_block, parse_oacc_loop): New functions.
69 (parse_executable): Call them.
70 (parse_progunit): Move declare clauses from state stack to namespace.
71 * parse.h (gfc_state_data): Add declare directive's clauses.
72 * resolve.c (gfc_resolve_blocks): Resolve OpenACC directives.
73 (resolve_code): Likewise.
74 * scanner.c (openacc_flag, openacc_locus): New static variables.
75 (skip_oacc_attribute, skip_omp_attribute): New helper functions.
76 (skip_free_comments, skip_fixed_comments): Don't skip !$ACC sentinel.
77 (gfc_next_char_literal): Support OpenACC directives.
78 * st.c (gfc_free_statement): Free also OpenACC directives.
80 (gfc_free_omp_clauses): Remove also OpenACC clauses.
81 (gfc_free_expr_list): New function to clear expression list.
82 (match_oacc_expr_list): New function to match expression list.
83 (match_oacc_clause_gang): New function to match OpenACC 2.0 gang clauses.
84 (OMP_CLAUSE_ASYNC, OMP_CLAUSE_NUM_GANGS,
85 OMP_CLAUSE_NUM_WORKERS, OMP_CLAUSE_VECTOR_LENGTH,
86 OMP_CLAUSE_COPY, OMP_CLAUSE_OACC_COPYIN,
87 OMP_CLAUSE_COPYOUT, OMP_CLAUSE_CREATE, OMP_CLAUSE_PRESENT,
88 OMP_CLAUSE_PRESENT_OR_COPY, OMP_CLAUSE_PRESENT_OR_COPYIN,
89 OMP_CLAUSE_PRESENT_OR_COPYOUT, OMP_CLAUSE_PRESENT_OR_CREATE,
90 OMP_CLAUSE_DEVICEPTR, OMP_CLAUSE_GANG, OMP_CLAUSE_WORKER,
91 OMP_CLAUSE_VECTOR, OMP_CLAUSE_SEQ, OMP_CLAUSE_INDEPENDENT,
92 OMP_CLAUSE_USE_DEVICE, OMP_CLAUSE_HOST, OMP_CLAUSE_DEVICE_RESIDENT,
93 OMP_CLAUSE_DEVICE, OMP_CLAUSE_DEFAULT, OMP_CLAUSE_WAIT,
94 OMP_CLAUSE_DELETE, OMP_CLAUSE_AUTO, OMP_CLAUSE_TILE): New clauses.
95 (OACC_PARALLEL_CLAUSES, OACC_KERNELS_CLAUSES, OACC_DATA_CLAUSES,
96 OACC_LOOP_CLAUSES, OACC_PARALLEL_LOOP_CLAUSES,
97 OACC_KERNELS_LOOP_CLAUSES, OACC_HOST_DATA_CLAUSES, OACC_DECLARE_CLAUSES,
98 OACC_UPDATE_CLAUSES, OACC_ENTER_DATA_CLAUSES,
99 OACC_EXIT_DATA_CLAUSES): New defines.
100 (gfc_match_oacc_parallel_loop, gfc_match_oacc_parallel,
101 gfc_match_oacc_kernels_loop, gfc_match_oacc_kernels,
102 gfc_match_oacc_data, gfc_match_oacc_host_data, gfc_match_oacc_loop,
103 gfc_match_oacc_declare, gfc_match_oacc_update,
104 gfc_match_oacc_enter_data, gfc_match_oacc_exit_data,
105 gfc_match_oacc_wait, gfc_match_oacc_cache, oacc_is_loop,
106 check_symbol_not_pointer, resolve_oacc_scalar_int_expr,
107 resolve_oacc_positive_int_expr, check_array_not_assumed,
108 resolve_oacc_data_clauses, resolve_oacc_deviceptr_clause,
109 oacc_is_parallel, oacc_is_kernels, omp_code_to_statement,
110 oacc_code_to_statement, resolve_oacc_directive_inside_omp_region,
111 resolve_omp_directive_inside_oacc_region, resolve_oacc_nested_loops,
112 resolve_oacc_params_in_parallel, resolve_oacc_loop_blocks,
113 gfc_resolve_oacc_blocks, resolve_oacc_loop, resolve_oacc_cache,
114 resolve_oacc_wait, gfc_resolve_oacc_declare,
115 gfc_resolve_oacc_directive): New functions.
116 (resolve_omp_clauses): Resolve also OpenACC clauses.
117 (gfc_resolve_omp_directive): Check for enclosing OpenACC region.
119 (gfc_generate_function_code): Insert OACC_DECLARE GENERIC node.
120 * trans-openmp.c (gfc_convert_expr_to_tree): New helper function.
121 (gfc_trans_omp_array_reduction): Support also OpenACC. Add parameter.
122 (gfc_trans_omp_reduction_list): Update.
123 (gfc_trans_oacc_construct): New transform function.
124 (gfc_trans_omp_map_clause_list): Likewise.
125 (gfc_trans_oacc_executable_directive): Likewise.
126 (gfc_trans_oacc_combined_directive, gfc_trans_oacc_declare): Likewise.
127 (gfc_trans_oacc_directive): Use them.
128 (gfc_trans_oacc_loop): Stub.
129 (gfc_trans_omp_clauses): Transform OpenACC clauses.
130 * trans-stmt.h (gfc_trans_oacc_directive): New function prototype.
131 (gfc_trans_oacc_declare): Likewise.
132 * trans.c (trans_code): Transform also OpenACC directives.
134 2013-11-07 Thomas Schwinge <thomas@codesourcery.com>
136 * f95-lang.c (DEF_GOACC_BUILTIN): New macro.
137 Include "../oacc-builtins.def".
139 * cpp.c (cpp_define_builtins): Conditionally define _OPENACC.
141 * lang.opt (fopenacc): New option.
142 * invoke.texi (-fopenacc): Document it.
143 * gfortran.h (gfc_option_t): New member.
144 * options.c (gfc_init_options, gfc_handle_option): Handle it.
146 2013-09-26 Jakub Jelinek <jakub@redhat.com>
149 (BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT): Remove.
150 (BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT_PTR): New.
152 2013-09-19 Jakub Jelinek <jakub@redhat.com>
154 * types.def (BT_FN_VOID_INT_SIZE_PTR_PTR_PTR): Remove.
155 (BT_FN_VOID_INT_PTR_SIZE_PTR_PTR_PTR): New.
157 2013-09-18 Jakub Jelinek <jakub@redhat.com>
159 * trans-openmp.c (gfc_omp_clause_default_ctor,
160 gfc_omp_clause_dtor): Return NULL for OMP_CLAUSE_REDUCTION.
162 2013-09-05 Jakub Jelinek <jakub@redhat.com>
164 * types.def (BT_FN_VOID_UINT_UINT, BT_FN_VOID_INT_SIZE_PTR_PTR_PTR,
165 BT_FN_VOID_INT_OMPFN_PTR_SIZE_PTR_PTR_PTR): New.
167 2013-07-09 Jakub Jelinek <jakub@redhat.com>
169 * types.def (BT_FN_BOOL_INT, BT_FN_BOOL_INT_BOOL): New.
171 2013-04-10 Jakub Jelinek <jakub@redhat.com>
173 * f95-lang.c (DEF_FUNCTION_TYPE_8): Define.
174 * types.def (DEF_FUNCTION_TYPE_8): Document.
175 (BT_FN_VOID_OMPFN_PTR_UINT, BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG,
176 BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_LONG): Remove.
177 (BT_FN_VOID_OMPFN_PTR_UINT_UINT_UINT,
178 BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_UINT,
179 BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_LONG_UINT): New.
181 2013-03-27 Jakub Jelinek <jakub@redhat.com>
183 * f95-lang.c (ATTR_NULL): Define.
185 Copyright (C) 2013-2014 Free Software Foundation, Inc.
187 Copying and distribution of this file, with or without modification,
188 are permitted in any medium without royalty provided the copyright
189 notice and this notice are preserved.