Unsupported OpenACC clauses: sorry message instead of aborting.
[official-gcc.git] / gcc / fortran / ChangeLog.gomp
blobaff672e4c33fc75334269c3f6ac61cd1d52bd372
1 2014-04-05  Tobias Burnus  <burnus@net-b.de>
3         PR fortran/60283
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.
9         * types.def
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>
14         OpenACC 1.0 support.
16         * dump-parse-tree.c
17         (show_omp_node): Dump also OpenACC executable statements.
18         (show_code_node): Call it.
19         (show_namespace): Dump !$ACC DECLARE directive.
20         * gfortran.h
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
67         parsed.
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. 
79         * openmp.c
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. 
118         * trans-decl.c
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>
148         * types.def
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.