1 2014-06-12 Thomas Schwinge <thomas@codesourcery.com>
2 James Norris <jnorris@codesourcery.com>
4 * c-parser.c (c_parser_oacc_all_clauses): Handle
6 (OACC_DATA_CLAUSE_MASK, OACC_KERNELS_CLAUSE_MASK)
7 (OACC_PARALLEL_CLAUSE_MASK, OACC_UPDATE_CLAUSE_MASK): Add it.
9 2014-06-06 Thomas Schwinge <thomas@codesourcery.com>
10 James Norris <jnorris@codesourcery.com>
12 * c-parser.c (c_parser_pragma): Handle PRAGMA_OACC_UPDATE.
13 (c_parser_omp_clause_name, c_parser_oacc_data_clause)
14 (c_parser_oacc_all_clauses): Handle PRAGMA_OMP_CLAUSE_DEVICE,
15 PRAGMA_OMP_CLAUSE_HOST, PRAGMA_OMP_CLAUSE_SELF.
16 (c_parser_oacc_update): New function.
18 2014-06-05 Thomas Schwinge <thomas@codesourcery.com>
20 * c-typeck.c (handle_omp_array_sections, c_finish_omp_clauses):
21 Handle OMP_CLAUSE_MAP_FORCE_DEVICEPTR.
23 2014-03-20 Thomas Schwinge <thomas@codesourcery.com>
25 * c-parser.c: Update comments.
26 (c_parser_oacc_loop): Move.
27 (c_parser_omp_for_loop): Catch some unsupported cases.
28 (c_parser_omp_construct) <case PRAGMA_OACC_LOOP>: Sort
31 2014-03-18 Ilmir Usmanov <i.usmanov@samsung.com>
33 * c-parser.c (c_parser_oacc_loop): New function.
34 (c_parser_oacc_kernels): Parse OpenACC combined directive.
35 (c_parser_oacc_parallel): Likewise.
36 (c_parser_omp_construct): Parse OpenACC loop directive.
38 2014-04-18 Thomas Schwinge <thomas@codesourcery.com>
40 * c-parser.c (c_parser_omp_clause_num_gangs)
41 (c_parser_omp_clause_num_workers)
42 (c_parser_omp_clause_vector_length): New functions.
43 (c_parser_omp_clause_name, c_parser_oacc_all_clauses): Handle
44 PRAGMA_OMP_CLAUSE_NUM_GANGS, PRAGMA_OMP_CLAUSE_NUM_WORKERS,
45 PRAGMA_OMP_CLAUSE_VECTOR_LENGTH.
46 (OACC_PARALLEL_CLAUSE_MARK): Add these.
47 * c-typeck.c (c_finish_omp_clauses): Handle these.
49 2014-02-28 Thomas Schwinge <thomas@codesourcery.com>
51 * c-parser.c (OACC_KERNELS_CLAUSE_MASK): New macro definition.
52 (c_parser_oacc_kernels): New function.
53 (c_parser_omp_construct): Handle PRAGMA_OACC_KERNELS.
54 * c-tree.h (c_finish_oacc_kernels): New prototype.
55 * c-typeck.c (c_finish_oacc_kernels): New function.
57 2014-02-21 Thomas Schwinge <thomas@codesourcery.com>
59 * c-parser.c (OACC_DATA_CLAUSE_MASK): New macro definition.
60 (c_parser_oacc_data): New function.
61 (c_parser_omp_construct): Handle PRAGMA_OACC_DATA.
62 * c-tree.h (c_finish_oacc_data): New prototype.
63 * c-typeck.c (c_finish_oacc_data): New function.
65 2014-02-17 Thomas Schwinge <thomas@codesourcery.com>
67 * c-parser.c (c_parser_omp_clause_name): Accept pcopy, pcopyin,
68 pcopyout, pcreate clauses.
69 (c_parser_oacc_data_clause): Update comment.
71 2014-01-28 Thomas Schwinge <thomas@codesourcery.com>
73 * c-parser.c (OACC_PARALLEL_CLAUSE_MASK): Add
74 PRAGMA_OMP_CLAUSE_COPY, PRAGMA_OMP_CLAUSE_COPYIN,
75 PRAGMA_OMP_CLAUSE_COPYOUT, PRAGMA_OMP_CLAUSE_CREATE,
76 PRAGMA_OMP_CLAUSE_DEVICEPTR, PRAGMA_OMP_CLAUSE_PRESENT,
77 PRAGMA_OMP_CLAUSE_PRESENT_OR_COPY,
78 PRAGMA_OMP_CLAUSE_PRESENT_OR_COPYIN,
79 PRAGMA_OMP_CLAUSE_PRESENT_OR_COPYOUT, and
80 PRAGMA_OMP_CLAUSE_PRESENT_OR_CREATE.
82 * c-parser.c (c_parser_omp_clause_name): Handle these.
83 (c_parser_oacc_data_clause, c_parser_oacc_data_clause_deviceptr):
85 (c_parser_oacc_all_clauses): Handle PRAGMA_OMP_CLAUSE_COPY,
86 PRAGMA_OMP_CLAUSE_COPYIN, PRAGMA_OMP_CLAUSE_COPYOUT,
87 PRAGMA_OMP_CLAUSE_CREATE, PRAGMA_OMP_CLAUSE_DELETE,
88 PRAGMA_OMP_CLAUSE_DEVICEPTR, PRAGMA_OMP_CLAUSE_PRESENT,
89 PRAGMA_OMP_CLAUSE_PRESENT_OR_COPY,
90 PRAGMA_OMP_CLAUSE_PRESENT_OR_COPYIN,
91 PRAGMA_OMP_CLAUSE_PRESENT_OR_COPYOUT, and
92 PRAGMA_OMP_CLAUSE_PRESENT_OR_CREATE.
94 * c-parser.c (c_parser_oacc_all_clauses): New function.
95 (c_parser_oacc_parallel): Use it.
96 * c-typeck.c (c_finish_omp_clauses): Update comment. Remove
97 duplicated variable initialization.
99 2013-11-21 Jakub Jelinek <jakub@redhat.com>
101 * c-decl.c (c_builtin_function_ext_scope): Don't bind if
102 external_scope is NULL.
104 2013-11-07 Thomas Schwinge <thomas@codesourcery.com>
106 * c-tree.h (c_finish_oacc_parallel): New declaration.
107 * c-typeck.c (c_finish_oacc_parallel): New function.
109 * c-parser.c (c_parser_omp_structured_block): Update comment.
110 (c_parser_oacc_parallel): New function.
111 (c_parser_omp_construct): Handle PRAGMA_OACC_PARALLEL.
113 * c-parser.c (c_parser_omp_all_clauses): Make a parser error
114 message suitable for OpenACC, too.
116 2013-10-10 Jakub Jelinek <jakub@redhat.com>
118 * c-parser.c (c_parser_binary_expression): Document omp_atomic_lhs
119 argument in function comment and drop prec argument description.
121 * c-typeck.c (handle_omp_array_sections_1): Change wording
122 of errors requesting specification of length.
123 (c_finish_omp_clauses): For error about non-integral non-pointer
124 linear clause include type in the diagnostic message.
125 * c-parser.c (c_finish_omp_declare_simd): If
126 c_omp_declare_simd_clauses_to_numbers returned non-NULL, store
127 the clauses into TREE_VALUE of an extra TREE_LIST pointed out
128 by TREE_VALUE of the attribute.
130 2013-10-08 Jakub Jelinek <jakub@redhat.com>
132 * c-typeck.c (c_finish_omp_clauses): Remove name variable, use
133 omp_clause_code_name[OMP_CLAUSE_CODE (c) instead.
135 2013-09-25 Jakub Jelinek <jakub@redhat.com>
137 * c-parser.c (c_parser_omp_taskgroup): Return tree.
138 Don't call c_begin_omp_taskgroup.
139 (c_parser_omp_construct): Adjust caller.
140 * c-typeck.c (c_begin_omp_taskgroup, c_finish_omp_taskgroup): Remove.
141 * c-tree.h (c_begin_omp_taskgroup, c_finish_omp_taskgroup): Remove.
143 2013-09-19 Jakub Jelinek <jakub@redhat.com>
145 * c-tree.h (c_omp_reduction_id, c_omp_reduction_decl,
146 c_omp_reduction_lookup, c_check_omp_declare_reduction_r): New
148 * c-typeck.c: Include tree-inline.h.
149 (c_clone_udr, c_find_omp_placeholder_r): New functions.
150 (c_finish_omp_clauses): Handle user defined reductions.
151 * Make-lang.in (c-typeck.o): Depend on $(TREE_INLINE_H).
152 * c-parser.c (c_parser_omp_clause_reduction): Handle user
154 (c_parser_omp_declare_reduction): New function.
155 (c_parser_omp_declare): Call it.
156 * c-decl.c (c_omp_reduction_id, c_omp_reduction_decl,
157 c_omp_reduction_lookup, c_check_omp_declare_reduction_r): New
160 2013-09-05 Jakub Jelinek <jakub@redhat.com>
162 * c-typeck.c (handle_omp_array_sections_1): Remove pointer_based_p
163 argument. Do c_save_expr on low bound unconditionally.
164 (handle_omp_array_sections): Adjust caller. Call c_fully_fold when
165 needed. Add OMP_CLAUSE_MAP_POINTER map clause even for array based
167 (c_finish_omp_clauses): Don't complain about non-mappable types
168 for OMP_CLAUSE_MAP_POINTER. Check for duplicates even for map
169 clauses. Handle OMP_CLAUSE_NUM_TEAMS.
170 * c-parser.c (c_parser_omp_target_data, c_parser_omp_target): Call
173 2013-07-20 Jakub Jelinek <jakub@redhat.com>
175 * c-typeck.c (c_finish_omp_declare_simd): Moved to...
176 * c-parser.c (c_finish_omp_declare_simd): ... here. Add
177 first c_parser * argument and change last argument to vec<c_token>.
178 Parse clauses here from the saved c_tokens.
179 (struct c_parser): Change tokens to c_token *.
180 Add tokens_buf field. Change tokens_avail type to unsigned int.
181 (c_parser_consume_token): If parser->tokens isn't
182 &parser->tokens_buf[0], increment parser->tokens.
183 (c_parser_consume_pragma): Likewise
184 (c_parser_declaration_or_fndef): Change last argument to vec<c_token>.
185 Pass parser as first argument to c_finish_omp_declare_simd. For
186 prototypes, fix code indentation and call temp_store_parm_decls
187 and temp_pop_parm_decls around c_finish_omp_declare_simd.
188 (c_parser_omp_variable_list): Remove declare_simd argument, call
189 lookup_name unconditionally.
190 (c_parser_omp_var_list_parens, c_parser_omp_clause_reduction,
191 c_parser_omp_clause_depend, c_parser_omp_clause_map,
192 c_parser_omp_clause_uniform): Adjust c_parser_omp_variable_list
194 (c_parser_omp_clause_aligned, c_parser_omp_clause_linear): Likewise.
195 Remove declare_simd argument.
196 (c_parser_omp_all_clauses): Remove declare_simd argument. Adjust
197 c_parser_omp_clause_aligned and c_parser_omp_clause_linear callers.
198 (c_parser_omp_declare_simd): Don't parse declare simd clauses here,
199 instead push the clause c_tokens starting with simd token up to
200 CPP_PRAGMA_EOL for each #pragma omp declare simd into a vector.
201 (c_parser_omp_declare): Don't consume simd token here.
202 (c_parse_file): Initialize tparser.tokens and the_parser->tokens here.
203 * c-decl.c (temp_store_parm_decls, temp_pop_parm_decls): New
205 * c-tree.h (temp_store_parm_decls, temp_pop_parm_decls): New
207 (c_finish_omp_declare_simd): Remove prototype.
209 2013-07-14 Jakub Jelinek <jakub@redhat.com>
211 * c-typeck.c (c_finish_omp_declare_simd): Don't remove
212 redundant "omp declare simd" clauses here. Adjust
213 c_omp_declare_simd_clauses_to_numbers caller.
215 2013-07-09 Jakub Jelinek <jakub@redhat.com>
217 * c-typeck.c (c_finish_omp_cancel): Pass two arguments to GOMP_cancel
218 rather than just one, if no OMP_CLAUSE_IF, pass true, otherwise pass
219 if clause argument. Emit the call unconditionally.
221 2013-07-06 Jakub Jelinek <jakub@redhat.com>
223 * c-lang.h (current_omp_declare_target_attribute): New extern
225 * Make-lang.in (c/c-parser.o): Depend on c/c-lang.h.
226 * c-parser.c: Include c-lang.h.
227 (c_parser_pragma): Handle PRAGMA_OMP_TARGET and
228 PRAGMA_OMP_END_DECLARE_TARGET.
229 (c_parser_omp_clause_name): Handle thread_limit clause.
230 (c_parser_omp_variable_list): Parse array sections for
231 OMP_CLAUSE_{DEPEND,MAP,TO,FROM} clauses.
232 (c_parser_omp_clause_reduction): Remove declare_simd argument.
233 Pass false instead of declare_simd to c_parser_omp_variable_list.
234 (c_parser_omp_clause_cancelkind): Remove diagnostics.
235 (c_parser_omp_clause_thread_limit): New function.
236 (c_parser_omp_all_clauses): Add finish_p argument. Don't call
237 c_finish_omp_clauses if it is false. Require that
238 OMP_CLAUSE_{PARALLEL,FOR,SECTIONS,TASKGROUP} must be first in
239 the list of clauses. Adjust c_parser_omp_clause_reduction
241 (c_parser_omp_for_loop): Change last argument to cclauses,
242 and adjust uses to grab parallel clauses from the array of all
244 (omp_split_clauses): New function.
245 (c_parser_omp_simd): Add p_name, mask and cclauses arguments.
246 Allow the function to be called also when parsing combined constructs.
247 (c_parser_omp_sections): Likewise.
248 (c_parser_omp_for): Add p_name, mask and cclauses arguments.
249 Allow the function to be called also when parsing combined constructs,
250 and call cp_parser_omp_simd when parsing for simd.
251 (c_parser_omp_parallel): Likewise.
252 (c_parser_omp_single, c_parser_omp_task, c_parser_omp_cancel,
253 c_parser_omp_cancellation_point, c_parser_omp_declare_simd): Adjust
254 c_parser_omp_all_clauses callers.
255 (OMP_TEAMS_CLAUSE_MASK, OMP_TARGET_CLAUSE_MASK,
256 OMP_TARGET_DATA_CLAUSE_MASK, OMP_TARGET_UPDATE_CLAUSE_MASK,
257 OMP_DISTRIBUTE_CLAUSE_MASK): Define.
258 (c_parser_omp_teams, c_parser_omp_target, c_parser_omp_target_data,
259 c_parser_omp_target_update, c_parser_omp_distribute): New
261 (c_parser_omp_construct): Handle PRAGMA_OMP_DISTRIBUTE and
262 PRAGMA_OMP_TEAMS. Adjust callers of c_parser_omp_simd,
263 c_parser_omp_sections, c_parser_omp_for and c_parser_omp_parallel.
264 (OMP_DECLARE_SIMD_CLAUSE_MASK): Remove OMP_CLAUSE_REDUCTION.
265 (c_parser_omp_declare_target, c_parser_omp_end_declare_target): New
267 (c_parser_omp_declare): For target keyword call
268 c_parser_omp_declare_target. Adjust expected keyword diagnostics.
269 * c-decl.c (current_omp_declare_target_attribute): New variable.
270 (c_decl_attributes): New function.
271 (start_decl, start_function): Use it instead of decl_attributes.
272 * c-typeck.c (handle_omp_array_sections_1, handle_omp_array_sections):
274 (c_finish_omp_clauses): Handle array sections on
275 OMP_CLAUSE_{MAP,TO,FROM,DEPEND}. If not array sections, mark the
276 decl addressable. Complain if OMP_CLAUSE_{MAP,TO,FROM}
277 decls or array sections don't have complete type. Handle
278 OMP_CLAUSE_THREAD_LIMIT.
280 2013-07-03 Jakub Jelinek <jakub@redhat.com>
282 * c-parser.c (c_parser_omp_atomic): Disallow seq_cst before
283 atomic-clause, disallow comma in between atomic-clause and
285 (c_parser_omp_sections_scope): If section-sequence doesn't
286 start with #pragma omp section, require exactly one structured-block
287 instead of sequence of statements.
288 * c-typeck.c (c_finish_omp_clauses): Diagnose copyprivate clause
289 appearing together with nowait clause.
291 2013-06-14 Jakub Jelinek <jakub@redhat.com>
293 * c-parser.c (c_parser_omp_for): Comment out OMP_FOR_SIMD uses.
294 (c_parser_omp_parallel): Call c_omp_split_clauses instead of
295 c_split_parallel_clauses, adjust the code for different API
298 2013-05-13 Jakub Jelinek <jakub@redhat.com>
300 * c-tree.h (c_finish_omp_declare_simd): New prototype.
301 * c-typeck.c (c_finish_omp_clauses): Handle OMP_CLAUSE_LINEAR_STEP
302 adjustments for pointer-types here. Diagnose inbranch notinbranch
304 (c_finish_omp_declare_simd): New function.
305 * c-parser.c (enum pragma_context): Add pragma_struct and
307 (c_parser_declaration_or_fndef): Add omp_declare_simd_clauses
308 argument. Call c_finish_omp_declare_simd if needed.
309 (c_parser_external_declaration, c_parser_compound_statement_nostart,
310 c_parser_label, c_parser_for_statement, c_parser_objc_methodprotolist,
311 c_parser_omp_for_loop): Adjust c_parser_declaration_or_fndef callers.
312 (c_parser_struct_or_union_specifier): Use pragma_struct instead of
314 (c_parser_parameter_declaration): Use pragma_param instead of
316 (c_parser_pragma): Handle PRAGMA_OMP_DECLARE_REDUCTION.
317 Replace == pragma_external with != pragma_stmt && != pragma_compound
319 (c_parser_omp_variable_list): Add declare_simd argument. Don't lookup
320 vars if it is true, just store identifiers.
321 (c_parser_omp_var_list_parens, c_parser_omp_clause_depend,
322 c_parser_omp_clause_map): Adjust callers.
323 (c_parser_omp_clause_reduction, c_parser_omp_clause_aligned): Add
324 declare_simd argument, pass it through to c_parser_omp_variable_list.
325 (c_parser_omp_clause_linear): Likewise. Don't handle
326 OMP_CLAUSE_LINEAR_STEP adjustements for pointer-types here.
327 (c_parser_omp_clause_uniform): Call c_parser_omp_variable_list
328 instead of c_parser_omp_var_list_parens to pass true as declare_simd.
329 (c_parser_omp_all_clauses): Add declare_simd argument, pass it through
330 clause parsing routines as needed. Don't call c_finish_omp_clauses if
332 (c_parser_omp_simd, c_parser_omp_for, c_parser_omp_sections,
333 c_parser_omp_parallel, c_parser_omp_single, c_parser_omp_task,
334 c_parser_omp_cancel, c_parser_omp_cancellation_point): Adjust callers.
335 (OMP_DECLARE_SIMD_CLAUSE_MASK): Define.
336 (c_parser_omp_declare_simd, c_parser_omp_declare): New functions.
338 2013-04-30 Jakub Jelinek <jakub@redhat.com>
340 * c-parser.c (c_parser_omp_atomic): Parse seq_cst clause, pass
341 true if it is present to c_finish_omp_atomic.
343 2013-04-24 Jakub Jelinek <jakub@redhat.com>
345 * c-parser.c (c_parser_compound_statement,
346 c_parser_statement): Adjust comments for OpenMP 3.0+
348 (c_parser_pragma): Handle PRAGMA_OMP_CANCEL and
349 PRAGMA_OMP_CANCELLATION_POINT.
350 (c_parser_omp_clause_name): Handle new OpenMP 4.0 clauses.
351 (c_parser_omp_clause_collapse): Fully fold collapse
353 (c_parser_omp_clause_branch, c_parser_omp_clause_cancelkind,
354 c_parser_omp_clause_num_teams, c_parser_omp_clause_aligned,
355 c_parser_omp_clause_linear, c_parser_omp_clause_safelen,
356 c_parser_omp_clause_simdlen, c_parser_omp_clause_depend,
357 c_parser_omp_clause_map, c_parser_omp_clause_device,
358 c_parser_omp_clause_dist_schedule, c_parser_omp_clause_proc_bind,
359 c_parser_omp_clause_to, c_parser_omp_clause_from,
360 c_parser_omp_clause_uniform): New functions.
361 (c_parser_omp_all_clauses): Handle new OpenMP 4.0 clauses.
362 (c_parser_omp_for_loop): Add CODE argument, pass it through
364 (OMP_SIMD_CLAUSE_MASK): Define.
365 (c_parser_omp_simd): New function.
366 (c_parser_omp_for): Parse #pragma omp for simd.
367 (OMP_PARALLEL_CLAUSE_MASK): Add OMP_CLAUSE_PROC_BIND.
368 (c_parser_omp_parallel): Parse #pragma omp parallel for simd.
369 (OMP_TASK_CLAUSE_MASK): Add OMP_CLAUSE_DEPEND.
370 (c_parser_omp_taskgroup): New function.
371 (OMP_CANCEL_CLAUSE_MASK, OMP_CANCELLATION_POINT_CLAUSE_MASK): Define.
372 (c_parser_omp_cancel, c_parser_omp_cancellation_point): New functions.
373 (c_parser_omp_construct): Handle PRAGMA_OMP_SIMD and
374 PRAGMA_OMP_TASKGROUP.
375 (c_parser_transaction_cancel): Formatting fix.
376 * c-tree.h (c_begin_omp_taskgroup, c_finish_omp_taskgroup,
377 c_finish_omp_cancel, c_finish_omp_cancellation_point): New prototypes.
378 * c-typeck.c (c_begin_omp_taskgroup, c_finish_omp_taskgroup,
379 c_finish_omp_cancel, c_finish_omp_cancellation_point): New functions.
380 (c_finish_omp_clauses): Handle new OpenMP 4.0 clauses.
382 2013-03-27 Jakub Jelinek <jakub@redhat.com>
384 * c-parser.c (c_parser_omp_all_clauses): Change mask argument type
385 from unsigned to omp_clause_mask.
386 (c_parser_omp_for_loop): Adjust c_finish_omp_for caller.
387 (OMP_FOR_CLAUSE_MASK, OMP_SECTIONS_CLAUSE_MASK,
388 OMP_PARALLEL_CLAUSE_MASK, OMP_SINGLE_CLAUSE_MASK,
389 OMP_TASK_CLAUSE_MASK): Use OMP_CLAUSE_MASK_1 instead of 1.
390 (c_parser_omp_parallel): Use omp_clause_mask type instead of unsigned
391 for mask, use OMP_CLAUSE_MASK_1 instead of 1 for masks.
393 2013-03-20 Jakub Jelinek <jakub@redhat.com>
395 * c-parser.c (c_parser_expr_no_commas): Add omp_atomic_lhs argument
396 with default value, pass it down to c_parser_conditional_expression.
397 (c_parser_conditional_expression): Add omp_atomic_lhs argument, pass
398 it down to c_parser_binary_expression. Don't pass PREC_NONE to
399 it. Adjust recursive call.
400 (c_parser_binary_expression): Remove prec argument, add omp_atomic_lhs
401 argument. Always start from PREC_NONE, if omp_atomic_lhs is non-NULL
402 and one of the arguments of toplevel binop matches it, use build2
403 instead of parser_build_binary_op.
404 (c_parser_omp_atomic): Handle OpenMP 4.0 atomics.
405 (c_parser_omp_for_loop): Adjust c_parser_binary_expression caller.
406 * c-tree.h (c_tree_equal): New prototype.
407 * c-typeck.c (c_tree_equal): New function.
409 * c-parser.c (c_parser_omp_atomic): Adjust comment.
410 Add another argument to c_finish_omp_atomic.
412 Copyright (C) 2013-2014 Free Software Foundation, Inc.
414 Copying and distribution of this file, with or without modification,
415 are permitted in any medium without royalty provided the copyright
416 notice and this notice are preserved.