Miscellaneous code cleanup and extension.
[official-gcc.git] / gcc / fortran / ChangeLog.gomp
blob3672b5aca2e09f518d35419a7272ebba9caa30f4
1 2014-12-17  Thomas Schwinge  <thomas@codesourcery.com>
3         * types.def: Remove BT_FN_VOID_INT_PTR_INT.
5         * openmp.c (gfc_match_omp_clauses): Use include/gomp-constants.h.
7 2014-11-20  Cesar Philippidis  <cesar@codesourcery.com>
9         * openmp.c (resolve_oacc_cache): Mark the code parameter as
10         unused.
12 2014-11-13  Cesar Philippidis  <cesar@codesourcery.com>
14         * match.c (match_exit_cycle): Restructure error strings.
15         * parse.c (is_oacc): Remove bogus break.
17 2014-11-13  Cesar Philippidis  <cesar@codesourcery.com>
19         * f95-lang.c (DEF_GOACC_BUILTIN_COMPILER): Remove bogus TODO.
20         * gfortran.h (gfc_omp_clauses): Move loc out of the ext union and
21         remove the ext union.
22         * match.c (match_exit_cycle): Make the error message specific to
23         OpenMP/OpenACC.
24         * openmp.c (OMP_CLAUSE_PRIVATE, OMP_CLAUSE_FIRSTPRIVATE,
25         OMP_CLAUSE_LASTPRIVATE, OMP_CLAUSE_COPYPRIVATE, OMP_CLAUSE_SHARED
26         OMP_CLAUSE_COPYIN, OMP_CLAUSE_REDUCTION, OMP_CLAUSE_IF,
27         OMP_CLAUSE_NUM_THREADS, OMP_CLAUSE_SCHEDULE, OMP_CLAUSE_DEFAULT,
28         OMP_CLAUSE_ORDERED, OMP_CLAUSE_COLLAPSE, OMP_CLAUSE_UNTIED,
29         OMP_CLAUSE_FINAL, OMP_CLAUSE_MERGEABLE, OMP_CLAUSE_ALIGNED,
30         OMP_CLAUSE_DEPEND, OMP_CLAUSE_INBRANCH, OMP_CLAUSE_LINEAR,
31         OMP_CLAUSE_NOTINBRANCH, OMP_CLAUSE_PROC_BIND, OMP_CLAUSE_SAFELEN,
32         OMP_CLAUSE_SIMDLEN, OMP_CLAUSE_UNIFORM, OMP_CLAUSE_DEVICE,
33         OMP_CLAUSE_MAP, OMP_CLAUSE_TOOMP_CLAUSE_FROM, OMP_CLAUSE_NUM_TEAMS,
34         OMP_CLAUSE_THREAD_LIMIT, OMP_CLAUSE_DIST_SCHEDULE, OMP_CLAUSE_ASYNC,
35         OMP_CLAUSE_NUM_GANGS, OMP_CLAUSE_NUM_WORKERS, OMP_CLAUSE_VECTOR_LENGTH,
36         OMP_CLAUSE_COPY, OMP_CLAUSE_COPYOUT, OMP_CLAUSE_CREATE,
37         OMP_CLAUSE_PRESENT, OMP_CLAUSE_PRESENT_OR_COPY,
38         OMP_CLAUSE_PRESENT_OR_COPYIN, OMP_CLAUSE_PRESENT_OR_COPYOUT,
39         OMP_CLAUSE_PRESENT_OR_CREATE, OMP_CLAUSE_DEVICEPTR,
40         OMP_CLAUSE_GANG, OMP_CLAUSE_WORKER, OMP_CLAUSE_VECTOR,
41         OMP_CLAUSE_SEQ, OMP_CLAUSE_INDEPENDENT, OMP_CLAUSE_USE_DEVICE,
42         OMP_CLAUSE_DEVICE_RESIDENT, OMP_CLAUSE_HOST_SELF,
43         OMP_CLAUSE_OACC_DEVICE, OMP_CLAUSE_WAIT, OMP_CLAUSE_DELETE,
44         OMP_CLAUSE_AUTO, OMP_CLAUSE_TILE): Use unit64_t for the bitmasks.
45         (gfc_match_omp_clauses):  Use unit64_t for mask.
46         (gfc_match_oacc_declare): Update usage of omp_clause->loc.
47         (omp_code_to_statement): Fix whitespace.
48         (oacc_code_to_statement): Likewise. 
49         (resolve_oacc_loop):Likewise.
50         (resolve_oacc_cache):  Replace gfc_error with a sorry for this
51         unimplemented directive.
52         (gfc_resolve_oacc_declare): Update usage of omp_clause->loc. Remove
53         FIXME and TODO, see PR63869.
54         * parse.c (parse_critical_block): Make the error message specific to
55         OpenMP/OpenACC.
56         (is_oacc): New function.
57         * parse.h (is_oacc): Declare.
58         * scanner.c (openmp_flag, openacc_flag): Move comment.
59         (gfc_next_char_literal): Merge nested if stmts.
60         * trans-openmp.c (gfc_trans_omp_clauses): Fix whitespace.
61         (gfc_trans_oacc_declare): Fix whitespace.
63 2014-11-11  Thomas Schwinge  <thomas@codesourcery.com>
65         * gfortran.h (OMP_LIST_COPY, OMP_LIST_DATA_CLAUSE_FIRST)
66         (OMP_LIST_DATA_CLAUSE_LAST, OMP_LIST_LAST): Remove.
67         * dump-parse-tree.c (show_omp_clauses): Update.
68         * openmp.c (resolve_omp_clauses, gfc_resolve_oacc_declare):
69         Likewise.
70         * trans-openmp.c (gfc_trans_omp_clauses): Likewise.
71         (gfc_trans_omp_map_clause_list): Remove.
73         * gfortran.h (OMP_LIST_DEVICEPTR): Remove, and instead...
74         (enum gfc_omp_map_op): ... add OMP_MAP_FORCE_DEVICEPTR here.
75         * dump-parse-tree.c (show_omp_clauses): Update.
76         * openmp.c (gfc_match_omp_clauses, resolve_omp_clauses)
77         (gfc_resolve_oacc_declare): Likewise.
78         * trans-openmp.c (gfc_trans_omp_clauses): Likewise.
80 2014-11-05  Thomas Schwinge  <thomas@codesourcery.com>
82         * openmp.c (OMP_CLAUSE_HOST, OMP_CLAUSE_SELF): Merge into the new
83         OMP_CLAUSE_HOST_SELF.  Update all users.
85         * gfortran.texi: Update for OpenACC.
86         * intrinsic.texi: Likewise.
87         * invoke.texi: Likewise.
89 2014-11-04  Cesar Philippidis  <cesar@codesourcery.com>
91         * gfortran.h (ST_OACC_ROUTINE): New statement enum.
92         * match.h (gfc_match_oacc_routine): New prototype.
93         * openmp.c (gfc_match_oacc_routine): New function.
94         * parse.c (decode_oacc_directive): Handle the routine directive.
95         (next_statement): Handle ST_OACC_ROUTINE.
96         (gfc_ascii_statement): Likewise.
98 2014-11-03  Cesar Philippidis  <cesar@codesourcery.com>
100         * gfortran.h (enum OMP_LIST_HOST): Remove.
101         (enum OMP_LIST_DEVICE, OMP_LIST_DEVICE): Remove.
102         * dump-parse-tree.c (show_omp_clauses): Remove OMP_LIST_HOST and
103         OMP_LIST_DEVICE from here also.
104         * openmp.c (OMP_CLAUSE_SELF): New define.
105         (gfc_match_omp_clauses): Update handling of OMP_CLAUSE_HOST and
106         OMP_CLAUSE_DEVICE. Add support for OMP_CLAUSE_SELF.
107         * trans-openmp.c (gfc_trans_omp_clauses): Remove support for
108         OMP_LIST_HOST and OMP_LIST_DEVICE since they are treated as memory
109         maps now.
110         (gfc_trans_oacc_executable_directive): Remove stale EXEC_OACC_WAIT.
112 2014-10-31  Cesar Philippidis  <cesar@codesourcery.com>
114         * gfortran.h (struct gfc_omp_clauses): Remove non_clause_wait_expr.
115         * dump-parse-tree.c (show_omp_clauses): Likewise.
116         * openmp.c (gfc_free_omp_clauses): Likewise.
117         (gfc_match_omp_clauses): Update handling of async.
118         (OACC_WAIT_CLAUSE_MASK): New define.
119         (gfc_match_oacc_wait): Make the wait directive comply with OpenACC 2.0.
120         (resolve_omp_clauses): Use resolve_oacc_scalar_in_expr inspect
121         arguments to the wait clause.
122         (resolve_oacc_wait): Remove.
123         (gfc_resolve_oacc_directive): Handle EXEC_OACC_WAIT with
124         resolve_omp_clauses.
125         * trans-openmp.c (gfc_trans_omp_clauses): Update handling of OpenACC
126         wait arguments.
127         (gfc_trans_oacc_executable_directive): Remove EXEC_OACC_WAIT.
128         (gfc_trans_oacc_wait_directive): New function.
129         (gfc_trans_oacc_directive): Use it.
131 2014-10-15  James Norris  <jnorris@codesourcery.com>
133         * types.def (BT_FN_VOID_INT_PTR_INT): New type.
135 2014-09-23  Thomas Schwinge  <thomas@codesourcery.com>
137         * f95-lang.c (DEF_GOACC_BUILTIN_COMPILER): New macro.
138         * types.def (BT_FN_INT_INT): New type.
140 2014-09-08  Cesar Philippidis  <cesar@codesourcery.com>
142         * gfortran.h (enum OMP_LIST_FIRST, OMP_LIST_LAST): New
143         OMP enums.
144         * openmp.c (oacc_compatible_clauses): New function.
145         (resolve_omp_clauses): Use it.
146         (struct omp_context): Add is_openmp member.
147         (gfc_resolve_omp_parallel_blocks): Set is_openmp true.
148         (gfc_resolve_do_iterator): Scan for compatible clauses.
149         (typedef oacc_context): Remove.
150         (oacc_current_ctx): Remove. Use omp_current_ctx for both
151         OpenACC and OpenMP.
152         (resolve_oacc_directive_inside_omp_region): Replace
153         oacc_current_ctx with omp_current_ctx.
154         (resolve_omp_directive_inside_oacc_region): Likewise.
155         (resolve_oacc_nested_loops): Likewise.
156         (resolve_oacc_params_in_parallel): Likewise.
157         (resolve_oacc_loop_blocks): Likewise. Set is_openmp to false.
159 2014-07-28  Cesar Philippidis  <cesar@codesourcery.com>
160             Thomas Schwinge  <thomas@codesourcery.com>
161             Ilmir Usmanov  <i.usmanov@samsung.com>
163         * gfortran.h (gfc_omp_map_op): Add OMP_MAP_FORCE_ALLOC,
164         OMP_MAP_FORCE_DEALLOC, OMP_MAP_FORCE_TO, OMP_MAP_FORCE_FROM,
165         OMP_MAP_FORCE_TOFROM, OMP_MAP_FORCE_PRESENT.
166         (enum) Remove OMP_LIST_OACC_COPYIN, OMP_LIST_COPYOUT,
167         OMP_LIST_CREATE, OMP_LIST_DELETE, OMP_LIST_PRESENT,
168         OMP_LIST_PRESENT_OR_COPY, OMP_LIST_PRESENT_OR_COPYIN,
169         OMP_LIST_PRESENT_OR_COPYOUT, OMP_LIST_PRESENT_OR_CREATE.
170         * dump-parse-tree.c (show_omp_clauses): Remove handling of
171         OMP_LIST_OACC_COPYIN, OMP_LIST_COPYOUT, OMP_LIST_CREATE,
172         OMP_LIST_DELETE, OMP_LIST_PRESENT, OMP_LIST_PRESENT_OR_COPY,
173         OMP_LIST_PRESENT_OR_COPYIN, OMP_LIST_PRESENT_OR_COPYOUT,
174         OMP_LIST_PRESENT_OR_CREATE.
175         * openmp.c (OMP_CLAUSE_OACC_COPYIN): Remove define.
176         (gfc_match_omp_map_clause): New function.
177         (gfc_match_omp_clauses): New openacc argument. Treat
178         OMP_CLAUSE_COPY, OMP_CLAUSE_COPYOUT, OMP_CLAUSE_CREATE,
179         OMP_CLAUSE_DELETE, OMP_CLAUSE_PRESENT, OMP_CLAUSE_PRESENT_OR_COPY,
180         OMP_CLAUSE_PRESENT_OR_COPYIN, OMP_CLAUSE_PRESENT_OR_COPYOUT, and
181         OMP_CLAUSE_PRESENT_OR_CREATE as OpenMP memory maps. Also, remove
182         support for OMP_CLAUSE_OACC_COPYIN. Make OMP_CLAUSE_COPYIN
183         represent the COPYIN clause for both OpenACC and OpenMP.
184         (OACC_PARALLEL_CLAUSES): Replace OMP_CLAUSE_OACC_COPYIN with
185         OMC_CLAUSE_COPYIN.
186         (OACC_KERNEL_CLAUSES): Likewise.
187         (OACC_DATA_CLAUSES): Likewise.
188         (OACC_DECLARE_CLAUSES): Likewise.
189         (OACC_ENTER_DATA_CLAUSES): Likewise.
190         (gfc_match_oacc_parallel_loop): Call gfc_match_omp_clauses with
191         the openacc parameter as true.
192         (gfc_match_oacc_parallel): Likewise.
193         (gfc_match_oacc_kernels_loop): Likewise.
194         (gfc_match_oacc_kernels): Likewise.
195         (gfc_match_oacc_data): Likewise.
196         (gfc_match_oacc_host_data): Likewise.
197         (gfc_match_oacc_loop): Likewise.
198         (gfc_match_oacc_declare): Likewise.
199         (gfc_match_oacc_update): Likewise.
200         (gfc_match_oacc_enter_data): Likewise.
201         (gfc_match_oacc_exit_data): Likewise.
202         (resolve_omp_clauses): New openacc argument. Call
203         resolve_oacc_data_clauses to check additional errors.
204         (resolve_oacc_loop): Update call to resolve_omp_clauses.
205         (resolve_oacc_wait): Likewise.
206         (gfc_resolve_oacc_declare): Likewise.
207         (gfc_resolve_oacc_directive): Likewise.
208         * trans-openmp.c (gfc_trans_omp_clauses): Remove
209         OMP_LIST_OACC_COPYIN, OMP_LIST_COPYOUT, OMP_LIST_CREATE,
210         OMP_LIST_DELETE, OMP_LIST_PRESENT, OMP_LIST_PRESENT_OR_COPY,
211         OMP_LIST_PRESENT_OR_COPYIN, OMP_LIST_PRESENT_OR_COPYOUT,
212         OMP_LIST_PRESENT_OR_CREATE switch items. Handle
213         OMP_MAP_FORCE_ALLOC, OMP_MAP_FORCE_DEALLOC, OMP_MAP_FORCE_TO,
214         OMP_MAP_FORCE_FROM, OMP_MAP_FORCE_TOFROM, OMP_MAP_FORCE_PRESENT
215         clause memory mappings.
217 2014-07-08  Cesar Philippidis  <cesar@codesourcery.com>
219         * gcc/fortran/scanner.c (gfc_next_char_literal): Fix the scan for
220         *$acc.
222 2014-07-03  Cesar Philippidis  <cesar@codesourcery.com>
224         * scanner.c (skip_fixed_comments): Reset openacc_flag
225         if an openacc directive wasn't found.
227 2014-06-13  Ilmir Usmanov  <i.usmanov@samsung.com>
228             Cesar Philippidis  <cesar@codesourcery.com>
230         * trans-openmp.c (gfc_trans_oacc_combined_directive): Move under
231         gfc_trans_omp_do.
232         (gfc_trans_omp_do, gfc_trans_oacc_directive): Handle EXEC_OACC_LOOP.
234 2014-04-05  Tobias Burnus  <burnus@net-b.de>
236         PR fortran/60283
237         * parse.c (decode_oacc_directive): Use gfc_unset_implicit_pure.
239 2014-03-18  Thomas Schwinge  <thomas@codesourcery.com>
241         * f95-lang.c (DEF_FUNCTION_TYPE_10): Define.
242         * types.def
243         (BT_FN_VOID_INT_OMPFN_PTR_SIZE_PTR_PTR_PTR_INT_INT_INT): New type.
245 2014-03-13  Ilmir Usmanov  <i.usmanov@samsung.com>
247         OpenACC 1.0 support.
249         * dump-parse-tree.c
250         (show_omp_node): Dump also OpenACC executable statements.
251         (show_code_node): Call it.
252         (show_namespace): Dump !$ACC DECLARE directive.
253         * gfortran.h
254         (ST_OACC_PARALLEL_LOOP, ST_OACC_END_PARALLEL_LOOP, ST_OACC_PARALLEL,
255         ST_OACC_END_PARALLEL, ST_OACC_KERNELS, ST_OACC_END_KERNELS,
256         ST_OACC_DATA, ST_OACC_END_DATA, ST_OACC_HOST_DATA,
257         ST_OACC_END_HOST_DATA, ST_OACC_LOOP, ST_OACC_DECLARE, ST_OACC_UPDATE,
258         ST_OACC_WAIT, ST_OACC_CACHE, ST_OACC_KERNELS_LOOP,
259         ST_OACC_END_KERNELS_LOOP, ST_OACC_ENTER_DATA,
260         ST_OACC_EXIT_DATA, ST_OACC_END_LOOP): New statements.
261         (gfc_expr_list): New structure to hold list of expressions.
262         (OMP_LIST_COPY, OMP_LIST_DATA_CLAUSE_FIRST,
263         OMP_LIST_OACC_COPYIN, OMP_LIST_COPYOUT, OMP_LIST_CREATE, OMP_LIST_DELETE,
264         OMP_LIST_PRESENT, OMP_LIST_PRESENT_OR_COPY,
265         OMP_LIST_PRESENT_OR_COPYIN, OMP_LIST_PRESENT_OR_COPYOUT,
266         OMP_LIST_PRESENT_OR_CREATE, OMP_LIST_DEVICEPTR,
267         OMP_LIST_DATA_CLAUSE_LAST, OMP_LIST_USE_DEVICE,
268         OMP_LIST_DEVICE_RESIDENT, OMP_LIST_HOST, OMP_LIST_DEVICE,
269         OMP_LIST_CACHE): New types of list, allowed in clauses.
270         (gfc_omp_clauses): Add OpenACC clauses.
271         (gfc_namespace): Add OpenACC declare directive clauses.
272         (EXEC_OACC_KERNELS_LOOP, EXEC_OACC_PARALLEL_LOOP, EXEC_OACC_PARALLEL,
273         EXEC_OACC_KERNELS, EXEC_OACC_DATA, EXEC_OACC_HOST_DATA, EXEC_OACC_LOOP,
274         EXEC_OACC_UPDATE, EXEC_OACC_WAIT, EXEC_OACC_CACHE, EXEC_OACC_ENTER_DATA,
275         EXEC_OACC_EXIT_DATA): New executable statements.
276         (gfc_free_expr_list): New function declaration.
277         (gfc_resolve_oacc_directive): Likewise.
278         (gfc_resolve_oacc_parallel_loop_blocks): Likewise.
279         (gfc_resolve_oacc_blocks): Likewise.
280         * match.c (match_exit_cycle): Add support of OpenACC regions and loops.
281         * match.h (gfc_match_oacc_cache): New function declaration.
282         (gfc_match_oacc_wait, gfc_match_oacc_update): Likewise.
283         (gfc_match_oacc_declare, gfc_match_oacc_loop): Likewise.
284         (gfc_match_oacc_host_data, gfc_match_oacc_data): Likewise.
285         (gfc_match_oacc_kernels, gfc_match_oacc_kernels_loop): Likewise.
286         (gfc_match_oacc_parallel, gfc_match_oacc_parallel_loop): Likewise.
287         (gfc_match_oacc_enter_data, gfc_match_oacc_exit_data): Likewise.
288         * parse.c (decode_oacc_directive): New function.
289         (verify_token_free, verify_token_fixed): New helper functions.
290         (next_free, next_fixed): Decode !$ACC sentinel.
291         (case_executable): Add ST_OACC_UPDATE, ST_OACC_WAIT, ST_OACC_CACHE,
292         ST_OACC_ENTER_DATA and ST_OACC_EXIT_DATA directives.
293         (case_exec_markers): Add ST_OACC_PARALLEL_LOOP, ST_OACC_PARALLEL,
294         ST_OACC_KERNELS, ST_OACC_DATA, ST_OACC_HOST_DATA, ST_OACC_LOOP and
295         ST_OACC_KERNELS_LOOP directives.
296         (push_state): Initialize OpenACC declare clauses.
297         (gfc_ascii_statement): Dump names of OpenACC directives.
298         (verify_st_order): Verify OpenACC declare directive as declarative.
299         (parse_spec): Push clauses to state stack when declare directive is
300         parsed.
301         (parse_oacc_structured_block, parse_oacc_loop): New functions.
302         (parse_executable): Call them.
303         (parse_progunit): Move declare clauses from state stack to namespace.
304         * parse.h (gfc_state_data): Add declare directive's clauses.
305         * resolve.c (gfc_resolve_blocks): Resolve OpenACC directives.
306         (resolve_code): Likewise.
307         * scanner.c (openacc_flag, openacc_locus): New static variables.
308         (skip_oacc_attribute, skip_omp_attribute): New helper functions.
309         (skip_free_comments, skip_fixed_comments): Don't skip !$ACC sentinel.
310         (gfc_next_char_literal): Support OpenACC directives.
311         * st.c (gfc_free_statement): Free also OpenACC directives. 
312         * openmp.c
313         (gfc_free_omp_clauses): Remove also OpenACC clauses.
314         (gfc_free_expr_list): New function to clear expression list.
315         (match_oacc_expr_list): New function to match expression list.
316         (match_oacc_clause_gang): New function to match OpenACC 2.0 gang clauses.
317         (OMP_CLAUSE_ASYNC, OMP_CLAUSE_NUM_GANGS,
318         OMP_CLAUSE_NUM_WORKERS, OMP_CLAUSE_VECTOR_LENGTH,
319         OMP_CLAUSE_COPY, OMP_CLAUSE_OACC_COPYIN,
320         OMP_CLAUSE_COPYOUT, OMP_CLAUSE_CREATE, OMP_CLAUSE_PRESENT,
321         OMP_CLAUSE_PRESENT_OR_COPY, OMP_CLAUSE_PRESENT_OR_COPYIN,
322         OMP_CLAUSE_PRESENT_OR_COPYOUT, OMP_CLAUSE_PRESENT_OR_CREATE,
323         OMP_CLAUSE_DEVICEPTR, OMP_CLAUSE_GANG, OMP_CLAUSE_WORKER,
324         OMP_CLAUSE_VECTOR, OMP_CLAUSE_SEQ, OMP_CLAUSE_INDEPENDENT,
325         OMP_CLAUSE_USE_DEVICE, OMP_CLAUSE_HOST, OMP_CLAUSE_DEVICE_RESIDENT,
326         OMP_CLAUSE_DEVICE, OMP_CLAUSE_DEFAULT, OMP_CLAUSE_WAIT,
327         OMP_CLAUSE_DELETE, OMP_CLAUSE_AUTO, OMP_CLAUSE_TILE): New clauses.
328         (OACC_PARALLEL_CLAUSES, OACC_KERNELS_CLAUSES, OACC_DATA_CLAUSES,
329         OACC_LOOP_CLAUSES, OACC_PARALLEL_LOOP_CLAUSES,
330         OACC_KERNELS_LOOP_CLAUSES, OACC_HOST_DATA_CLAUSES, OACC_DECLARE_CLAUSES,
331         OACC_UPDATE_CLAUSES, OACC_ENTER_DATA_CLAUSES,
332         OACC_EXIT_DATA_CLAUSES): New defines.
333         (gfc_match_oacc_parallel_loop, gfc_match_oacc_parallel,
334         gfc_match_oacc_kernels_loop, gfc_match_oacc_kernels,
335         gfc_match_oacc_data, gfc_match_oacc_host_data, gfc_match_oacc_loop,
336         gfc_match_oacc_declare, gfc_match_oacc_update,
337         gfc_match_oacc_enter_data, gfc_match_oacc_exit_data,
338         gfc_match_oacc_wait, gfc_match_oacc_cache, oacc_is_loop,
339         check_symbol_not_pointer, resolve_oacc_scalar_int_expr,
340         resolve_oacc_positive_int_expr, check_array_not_assumed,
341         resolve_oacc_data_clauses, resolve_oacc_deviceptr_clause,
342         oacc_is_parallel, oacc_is_kernels, omp_code_to_statement,
343         oacc_code_to_statement, resolve_oacc_directive_inside_omp_region,
344         resolve_omp_directive_inside_oacc_region, resolve_oacc_nested_loops,
345         resolve_oacc_params_in_parallel, resolve_oacc_loop_blocks,
346         gfc_resolve_oacc_blocks, resolve_oacc_loop, resolve_oacc_cache,
347         resolve_oacc_wait, gfc_resolve_oacc_declare,
348         gfc_resolve_oacc_directive): New functions.
349         (resolve_omp_clauses): Resolve also OpenACC clauses.
350         (gfc_resolve_omp_directive): Check for enclosing OpenACC region. 
351         * trans-decl.c
352         (gfc_generate_function_code): Insert OACC_DECLARE GENERIC node.
353         * trans-openmp.c (gfc_convert_expr_to_tree): New helper function.
354         (gfc_trans_omp_array_reduction): Support also OpenACC. Add parameter.
355         (gfc_trans_omp_reduction_list): Update.
356         (gfc_trans_oacc_construct): New transform function.
357         (gfc_trans_omp_map_clause_list): Likewise.
358         (gfc_trans_oacc_executable_directive): Likewise.
359         (gfc_trans_oacc_combined_directive, gfc_trans_oacc_declare): Likewise.
360         (gfc_trans_oacc_directive): Use them.
361         (gfc_trans_oacc_loop): Stub.
362         (gfc_trans_omp_clauses): Transform OpenACC clauses.
363         * trans-stmt.h  (gfc_trans_oacc_directive): New function prototype.
364         (gfc_trans_oacc_declare): Likewise.
365         * trans.c (trans_code): Transform also OpenACC directives. 
367 2013-11-07  Thomas Schwinge  <thomas@codesourcery.com>
369         * f95-lang.c (DEF_GOACC_BUILTIN): New macro.
370         Include "../oacc-builtins.def".
372         * cpp.c (cpp_define_builtins): Conditionally define _OPENACC.
374         * lang.opt (fopenacc): New option.
375         * invoke.texi (-fopenacc): Document it.
376         * gfortran.h (gfc_option_t): New member.
377         * options.c (gfc_init_options, gfc_handle_option): Handle it.
379 2013-09-26  Jakub Jelinek  <jakub@redhat.com>
381         * types.def
382         (BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT): Remove.
383         (BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT_PTR): New.
385 2013-09-19  Jakub Jelinek  <jakub@redhat.com>
387         * types.def (BT_FN_VOID_INT_SIZE_PTR_PTR_PTR): Remove.
388         (BT_FN_VOID_INT_PTR_SIZE_PTR_PTR_PTR): New.
390 2013-09-18  Jakub Jelinek  <jakub@redhat.com>
392         * trans-openmp.c (gfc_omp_clause_default_ctor,
393         gfc_omp_clause_dtor): Return NULL for OMP_CLAUSE_REDUCTION.
395 2013-09-05  Jakub Jelinek  <jakub@redhat.com>
397         * types.def (BT_FN_VOID_UINT_UINT, BT_FN_VOID_INT_SIZE_PTR_PTR_PTR,
398         BT_FN_VOID_INT_OMPFN_PTR_SIZE_PTR_PTR_PTR): New.
400 2013-07-09  Jakub Jelinek  <jakub@redhat.com>
402         * types.def (BT_FN_BOOL_INT, BT_FN_BOOL_INT_BOOL): New.
404 2013-04-10  Jakub Jelinek  <jakub@redhat.com>
406         * f95-lang.c (DEF_FUNCTION_TYPE_8): Define.
407         * types.def (DEF_FUNCTION_TYPE_8): Document.
408         (BT_FN_VOID_OMPFN_PTR_UINT, BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG,
409         BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_LONG): Remove.
410         (BT_FN_VOID_OMPFN_PTR_UINT_UINT_UINT,
411         BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_UINT,
412         BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_LONG_UINT): New.
414 2013-03-27  Jakub Jelinek  <jakub@redhat.com>
416         * f95-lang.c (ATTR_NULL): Define.
418 Copyright (C) 2013-2014 Free Software Foundation, Inc.
420 Copying and distribution of this file, with or without modification,
421 are permitted in any medium without royalty provided the copyright
422 notice and this notice are preserved.