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