Unsupported OpenACC clauses: sorry message instead of aborting.
[official-gcc.git] / gcc / ChangeLog.gomp
blob6ab79c04f51417f492d3f10d0a0101c20a1dc511
1 2014-06-13  Cesar Philippidis  <cesar@codesourcery.com>
3         * omp-low.c (scan_sharing_clauses): For clauses currently not
4         supported with OpenACC directives, emit a sorry message instead of
5         aborting.
7 2014-06-12  Thomas Schwinge  <thomas@codesourcery.com>
8             James Norris  <jnorris@codesourcery.com>
10         * omp-low.c (scan_sharing_clauses): Allow OMP_CLAUSE_IF.
11         (expand_oacc_offload, expand_omp_target): Handle it.
13 2014-06-06  Thomas Schwinge  <thomas@codesourcery.com>
14             James Norris  <jnorris@codesourcery.com>
16         * gimple.h (enum gf_mask): Add GF_OMP_TARGET_KIND_OACC_UPDATE, and
17         extend mask size, GF_OMP_TARGET_KIND_MASK.
18         (is_gimple_omp_oacc_specifically): Handle
19         GF_OMP_TARGET_KIND_OACC_UPDATE.
20         * gimplify.c (gimplify_omp_target_update, gimplify_expr):
21         Likewise.
22         * gimple-pretty-print.c (dump_gimple_omp_target): Likewise.
23         * omp-low.c (scan_omp_target, expand_omp_target)
24         (build_omp_regions_1, lower_omp_target, lower_omp_1)
25         (make_gimple_omp_edges): Likewise.
26         * oacc-builtins.def (BUILT_IN_GOACC_UPDATE): New builtin.
28 2014-06-05  Thomas Schwinge  <thomas@codesourcery.com>
30         * gimplify.c (gimplify_scan_omp_clauses)
31         (gimplify_adjust_omp_clauses): Handle
32         OMP_CLAUSE_MAP_FORCE_DEVICEPTR.
33         * omp-low.c (scan_sharing_clauses, lower_oacc_offload)
34         (lower_omp_target): Likewise.
35         * tree-core.h (enum omp_clause_map_kind)
36         <OMP_CLAUSE_MAP_FORCE_DEVICEPTR>: Update comment.
38         * gimplify.c (gimplify_scan_omp_clauses) <case OMP_CLAUSE_MAP>:
39         Don't block OMP_CLAUSE_MAP_FORCE_PRESENT.
41 2014-06-04  Thomas Schwinge  <thomas@codesourcery.com>
43         * cgraphunit.c (ipa_passes, compile): Handle flag_openacc next to
44         flag_openmp.
45         * ipa-inline-analysis.c (inline_generate_summary): Likewise.
46         * lto-streamer.c (lto_streamer_init, gate_lto_out): Likewise.
47         * passes.c (ipa_write_summaries): Likewise.
49 2014-05-12  Bernd Schmidt  <bernds@codesourcery.com>
51         * lto-wrapper.c (ompbegin): New static variable.
52         (find_ompbeginend): Renamed from find_ompend.  Also look for
53         crtompbegin.o.
54         (run_gcc): Also use ompbegin.
56 2014-05-08  Thomas Schwinge  <thomas@codesourcery.com>
58         * omp-low.c (get_offload_symbol_decl): Mark __OPENMP_TARGET__ as
59         addressable.
61 2014-04-04  Bernd Schmidt  <bernds@codesourcery.com>
63         * lto-wrapper.c (replace_special_characters): Remove functions and
64         all calls to it.
66         * lto-section-names.h (OFFLOAD_VAR_TABLE_SECTION_NAME,
67         OFFLOAD_FUNC_TABLE_SECTION_NAME): Define.
68         * lto-wrapper.c (OFFLOAD_FUNC_TABLE_SECTION_NAME): Don't define.
69         (ompend): New static variable.
70         (copy_file, find_ompend): New static functions.
71         (run_gcc): Call find_ompend if we have offload images.  Add its
72         return value to the output.
73         * omp-low.c: Include "lto-section-names.h".
74         (omp_finish_file): Initialize section names from macros defined there.
76         * omp-low.c (offload_symbol_decl): New static variable.
77         (get_offload_symbol_decl): New static function.
78         (expand_oacc_offload, expand_omp_target): Use it.
80 2014-04-02  Thomas Schwinge  <thomas@codesourcery.com>
82         * omp-low.c (omp_finish_file): Use num_vars instead of num_funcs
83         when recording offload symbols v_vars.
85         * omp-low.c (expand_oacc_offload): Handle __OPENMP_TARGET__
86         symbol.
88 2014-03-20  Bernd Schmidt  <bernds@codesourcery.com>
90         Mostly by Michael Zolotukhin:
91         * lto-wrapper.c (OFFLOAD_FUNC_TABLE_SECTION_NAME,
92         OFFLOAD_TARGET_NAMES_ENV): New defines.
93         (offload_names): New static variable.
94         (free_array_of_ptrs, parse_env_var, access_check,
95         prepare_target_image, replace_special_characters,
96         compile_images_for_openmp_targets): New static functions.
97         (run_gcc): Determine whether offload sections are present.  If so,
98         run compile_images_for_openmp_targets and print the image names.
100         * Makefile.in (COLLECT2_OBJS): Add collect-utils.o.
101         (LTO_WRAPPER_OBJS): New variable.
102         (lto-wrapper$(exeext)): Use it.
103         * collect2.c: Include "collect-utils.h".
104         (vflag, debug): Remove variables.  Rename all uses of vflag to
105         verbose.
106         (at_file_supplied): No longer static.
107         (tool_name): New variable.
108         (do_wait, fork_execute, maybe_unlink): Don't declare.
109         (tool_cleanup): Renamed from collect_atexit.  New arg from_signal.
110         (collect_atexit): New static function.
111         (notice): Remove function.
112         (handler): Just call tool_cleanup.
113         (maybe_run_lto_and_relink, main, do_dsymutil): Add new arg to
114         fork_execute calls.
115         (collect_wait, do_wait, collect_execute): Remove functions.
116         (maybe_unlink): No longer static.
117         * collect2.h (vflag, debug): Don't declare.
118         (at_file_supplied): Declare.
119         * collect-utils.c (utils_cleanup): New arg from_signal.  All callers
120         changed.
121         (collect_execute): Replace with implementation from collect2, plus a
122         new arg use_atfile.  All callers changed.
123         (collect_wait): Replace with implementation from collect2.
124         (maybe_unlink_file): Remove function.
125         (fork_execute): Replace with implementation from collect2, plus a
126         new arg use_atfile.  All callers changed.
127         (do_wait): Add call to utils_cleanup to the error path.
128         * collect-utils.h (collect_execute, fork_execute, utils_cleanup,
129         tool_cleanup): Adjust declarations.
130         * lto-wrapper.c (tool_cleanup): Add unused bool argument.
131         * tlink.c: Include "collect-utils.h".
132         (tlink_execute): New arg use_atfile.  All callers changed.
133         (tlink_init, tlink_execute): Remove declarations.
135         * Makefile.in (ALL_HOST_BACKEND_OBJS): Add collect-utils.o.
136         (lto-wrapper$(exeext)): Link with collect-utils.o.
137         * collect-utils.c: New file.
138         * collect-utils.h: New file.
139         * lto-wrapper.c: Include "collect-utils.h".
140         (args_name): Delete variable.
141         (tool_name): New variable.
142         (tool_cleanup): New function.
143         (maybe_unlink): Renamed from maybe_unlink_file.  All callers changed.
144         (lto_wrapper_cleanup, fatal_signal, fatal, fatal_perror,
145         collect_execute, collect_wait, fork_execute): Remove functions.
147         Mostly by Michael Zolotukhin:
148         * omp-low.c: Include "common/common-target.h".
149         (expand_omp_target): Pass in address of __OPENMP_TARGET__.
150         (add_decls_addresses_to_decl_constructor, omp_finish_file): New
151         functions.
152         * omp-low.h (omp_finish_file): Declare.
153         * toplev.c: Include "omp-low.h".
154         (compile_file): Call omp_finish_file.
155         * target.def (record_offload_symbol): New hook.
156         * doc/tm.texi.in (TARGET_RECORD_OFFLOAD_SYMBOL): Add.
157         * doc/tm.texi: Regenerate.
158         * configure.ac (ENABLE_OFFLOADING): Define if we have offload_targets.
159         * configure: Regenerate.
160         * config.in: Regenerate.
162         * config/darwin.c: Include "lto-section-names.h".
163         (LTO_SEGMENT_NAME): Don't define.
164         * config/i386/winnt.c: Include "lto-section-names.h".
165         * lto-streamer.c: Include "lto-section-names.h".
166         * lto-streamer.h (LTO_SECTION_NAME_PREFIX, OMP_SECTION_NAME_PREFIX):
167         Don't define.
168         (section_name_prefix): Don't declare.
169         * lto-wrapper.c: Include "lto-section-names.h".
170         (LTO_SECTION_NAME_PREFIX): Don't define.
171         * lto-section-names.h: New file.
172         * cgraphunit.c: Include "lto-section-names.h".
174         * configure.ac (real_target_noncanonical, tool_prefix,
175         accel_dir_suffix, offload_targets): Compute new variables.
176         (--enable-as-accelerator-for, --enable-as-accelerator,
177         --enable-offload-targets): New options.
178         * configure: Regenerate.
179         * config.in: Regenerate.
180         * Makefile.in (real_target_noncanonical, tool_prefix,
181         accel_dir_suffix, enable_as_accelerator): New variables substituted
182         by configure.
183         (libsubdir, libexecsubdir, GCC_TARGET_INSTALL_NAME): Tweak for the
184         possibility of being configured as an offload compiler.
185         (install_driver): Likewise.
186         (DRIVER_DEFINES): Pass new defines DEFAULT_REAL_TARGET_MACHINE and
187         ACCEL_DIR_SUFFIX.
188         * gcc.c (spec_host_machine, accel_dir_suffix): New variables.
189         (process_command): Tweak path construction for the possibility
190         of being configured as an offload compiler.
191         (main): Likewise. Look up specs in just_machine_suffix only if not
192         ACCEL_COMPILER.  Construct OFFLOAD_TARGET_NAMES environment variable
193         if we have OFFLOAD_TARGETS.
195 2014-03-20  Thomas Schwinge  <thomas@codesourcery.com>
197         * gimple.h (enum gf_mask): Add GF_OMP_FOR_KIND_OACC_LOOP.
198         (is_gimple_omp_oacc_specifically): Handle it.
199         * gimple-pretty-print.c (dump_gimple_omp_for): Likewise.
200         * gimple.def (GIMPLE_OMP_FOR): Update for OpenACC loop.
201         * gimple.c (gimple_build_omp_for): Don't explicitly mention some
202         clauses.
203         (gimple_copy) <GIMPLE_OMP_FOR>: Handle GF_OMP_FOR_KIND_OACC_LOOP.
204         * omp-low.c (extract_omp_for_data, scan_sharing_clauses)
205         (check_omp_nesting_restrictions, lower_rec_input_clauses)
206         (lower_lastprivate_clauses, lower_reduction_clauses)
207         (expand_omp_for_generic, expand_omp_for_static_nochunk)
208         (expand_omp_for_static_chunk, maybe_add_implicit_barrier_cancel)
209         (lower_omp_for): Likewise.
210         * tree-inline.c (remap_gimple_stmt): Likewise.
211         * tree-nested.c (walk_gimple_omp_for)
212         (convert_nonlocal_reference_stmt, convert_local_reference_stmt)
213         (convert_gimple_call): Likewise.
214         * doc/gimple.texi (GIMPLE_OMP_FOR): Don't explicitly mention some
215         clauses.
216         * gimplify.c (gimplify_omp_for, gimplify_expr): Handle OACC_LOOP.
218         * tree.def (OACC_LOOP): Sort after OMP_DISTRIBUTE.
219         * tree.h (OMP_LOOP_CHECK): Update accordingly.
220         * gimplify.c (is_gimple_stmt): Sort OACC_LOOP after
221         OMP_DISTRIBUTE.
222         * tree-pretty-print.c (dump_generic_node): Likewise.
223         * doc/generic.texi (OACC_LOOP): Sort after OACC_HOST_DATA.
224         (OMP_FOR): Fix and extend for OACC_LOOP.
226         * gimple.h (enum gf_mask): Add and use GF_OMP_FOR_SIMD.
227         * omp-low.c: Update accordingly.
229         * gimple.h (enum gf_mask): Rewrite "<< 0" shift expressions used
230         for GF_OMP_FOR_KIND_MASK, GF_OMP_FOR_KIND_FOR,
231         GF_OMP_FOR_KIND_DISTRIBUTE, GF_OMP_FOR_KIND_SIMD,
232         GF_OMP_FOR_KIND_CILKSIMD, GF_OMP_TARGET_KIND_MASK,
233         GF_OMP_TARGET_KIND_REGION, GF_OMP_TARGET_KIND_DATA,
234         GF_OMP_TARGET_KIND_UPDATE, GF_OMP_TARGET_KIND_OACC_DATA.
236         * omp-low.c (check_omp_nesting_restrictions): Allow nesting of
237         OpenACC constructs inside of OpenACC data constructs.
239 2014-03-18  Ilmir Usmanov  <i.usmanov@samsung.com>
241         * tree.def (OACC_LOOP): New tree code.
242         * tree-pretty-print.c (dump_generic_node): Show it.
243         * tree.h (OACC_KERNELS_COMBINED, OACC_PARALLEL_COMBINED): New macros.
244         * doc/generic.texi: Document loop directive.
245         * gimplify.c (is_gimple_stmt, gimplify_expr): Stub gimplification of 
246         loop directive and combined directives.
248 2014-03-18  Thomas Schwinge  <thomas@codesourcery.com>
250         * builtin-types.def
251         (BT_FN_VOID_INT_OMPFN_PTR_SIZE_PTR_PTR_PTR_INT_INT_INT): New type.
252         * oacc-builtins.def (BUILT_IN_GOACC_KERNELS)
253         (BUILT_IN_GOACC_PARALLEL): Switch to that one.
254         * gimplify.c (gimplify_scan_omp_clauses)
255         (gimplify_adjust_omp_clauses): Handle OMP_CLAUSE_NUM_GANGS,
256         OMP_CLAUSE_NUM_WORKERS, OMP_CLAUSE_VECTOR_LENGTH.
257         * omp-low.c (scan_sharing_clauses, expand_oacc_offload): Likewise.
259 2014-03-13  Thomas Schwinge  <thomas@codesourcery.com>
261         * tree.h (OMP_CLAUSE_VECTOR_EXPR): Check for OMP_CLAUSE_VECTOR
262         instead of OMP_CLAUSE_VECTOR_LENGTH.
263         (OMP_WAIT_EXPR): Rename to OMP_CLAUSE_WAIT_EXPR.  Change
264         all users.
266 2014-03-13  Thomas Schwinge  <thomas@codesourcery.com>
268         * omp-low.c (create_omp_child_function): Use
269         is_gimple_omp_offloaded when looking for offloaded regions.
271 2014-03-12  Thomas Schwinge  <thomas@codesourcery.com>
273         * omp-low.c (scan_sharing_clauses): Move offloaded logic into...
274         * gimple.h (is_gimple_omp_offloaded): ... this new static inline
275         function.
277 2014-02-28  Thomas Schwinge  <thomas@codesourcery.com>
279         * gimple.def (GIMPLE_OACC_KERNELS): New code.
280         * doc/gimple.texi: Document it.
281         * gimple.h (gimple_has_substatements, CASE_GIMPLE_OMP)
282         (is_gimple_omp_oacc_specifically): Handle it.
283         (gimple_statement_oacc_kernels): New struct.
284         (gimple_build_oacc_kernels): New prototype.
285         (gimple_oacc_kernels_clauses, gimple_oacc_kernels_clauses_ptr)
286         (gimple_oacc_kernels_set_clauses, gimple_oacc_kernels_child_fn)
287         (gimple_oacc_kernels_child_fn_ptr)
288         (gimple_oacc_kernels_set_child_fn, gimple_oacc_kernels_data_arg)
289         (gimple_oacc_kernels_data_arg_ptr)
290         (gimple_oacc_kernels_set_data_arg): New inline functions.
291         * gimple.c (gimple_build_oacc_kernels): New function.
292         (gimple_copy): Handle GIMPLE_OACC_KERNELS.
293         * gimple-low.c (lower_stmt): Likewise.
294         * gimple-walk.c (walk_gimple_op, walk_gimple_stmt): Likewise.
295         * gimple-pretty-print.c (pp_gimple_stmt_1): Likewise.
296         (dump_gimple_oacc_parallel): Rename to dump_gimple_oacc_offload.
297         Also handle GIMPLE_OACC_KERNELS.  Update all callers.
298         * gimplify.c (gimplify_omp_workshare, gimplify_expr): Handle
299         OACC_KERNELS.
300         * oacc-builtins.def (BUILT_IN_GOACC_KERNELS): New builtin.
301         * omp-low.c (scan_oacc_parallel, expand_oacc_parallel)
302         (lower_oacc_parallel): Rename to scan_oacc_offload,
303         expand_oacc_offload, and lower_oacc_offload.  Also handle
304         GIMPLE_OACC_KERNELS.  Update all callers.
305         (scan_sharing_clauses, scan_omp_1_stmt, expand_omp, lower_omp_1)
306         (diagnose_sb_0, diagnose_sb_1, diagnose_sb_2)
307         (make_gimple_omp_edges): Handle GIMPLE_OACC_KERNELS.
308         * tree-inline.c (remap_gimple_stmt, estimate_num_insns): Likewise.
309         * tree-nested.c (convert_nonlocal_reference_stmt)
310         (convert_local_reference_stmt, convert_tramp_reference_stmt)
311         (convert_gimple_call): Likewise.
313 2014-02-27  Thomas Schwinge  <thomas@codesourcery.com>
315         * gimplify.c (gimplify_oacc_parallel): Merge into
316         gimplify_omp_workshare.  Update all callers.
318 2014-02-27  Ilmir Usmanov  <i.usmanov@samsung.com>
320         Fix OpenACC ASYNC clause: it cannot contain integer-expression-list.
322         gcc/
323         * tree.h (OMP_CLAUSE_ASYNC_EXPR): Reorder.
324         * tree.c (omp_clause_num_ops, omp_clause_code_name): Reorder clauses.
325         * tree-core.h (enum omp_clause_code): Likewise.
326         * omp-low.c (scan_sharing_clauses): Likewise.
327         * gimplify.c (gimplify_scan_omp_clauses): Likewise.
329 2014-02-21  Thomas Schwinge  <thomas@codesourcery.com>
331         * gimple.h (enum gf_mask): Add GF_OMP_TARGET_KIND_OACC_DATA.
332         (is_gimple_omp_oacc_specifically): Handle it.
333         * gimple-pretty-print.c (dump_gimple_omp_target): Likewise.
334         * gimplify.c (gimplify_omp_workshare, gimplify_expr): Likewise.
335         * omp-low.c (scan_sharing_clauses, scan_omp_target)
336         (expand_omp_target, lower_omp_target, lower_omp_1): Likewise.
337         * gimple.def (GIMPLE_OMP_TARGET): Update comment.
338         * gimple.c (gimple_build_omp_target): Likewise.
339         (gimple_copy): Catch unimplemented case.
340         * tree-inline.c (remap_gimple_stmt): Likewise.
341         * tree-nested.c (convert_nonlocal_reference_stmt)
342         (convert_local_reference_stmt, convert_gimple_call): Likewise.
343         * oacc-builtins.def (BUILT_IN_GOACC_DATA_START)
344         (BUILT_IN_GOACC_DATA_END): New builtins.
346         * omp-low.c (scan_sharing_clauses): Catch unexpected occurrences
347         of OMP_CLAUSE_TO, OMP_CLAUSE_FROM, OMP_CLAUSE_MAP.
349         * gimplify.c (enum omp_region_type): Make ORT_TARGET_OFFLOAD a
350         flag for ORT_TARGET, in its negation replacing ORT_TARGET_DATA.
351         Update all users.
353         * omp-low.c (gimple_code_is_oacc): Move to...
354         * gimple.h (is_gimple_omp_oacc_specifically): ... here.  Update
355         users, and also use it in more places where currently we've only
356         been checking for GIMPLE_OACC_PARALLEL.
358 2014-02-18  Thomas Schwinge  <thomas@codesourcery.com>
360         * omp-low.c (diagnose_sb_0, diagnose_sb_1, diagnose_sb_2): Handle
361         GIMPLE_OACC_PARALLEL.
362         * gimplify.c (gimplify_case_label_expr): Update comment.
364         * omp-low.c (diagnose_sb_0): Generalize detection which kind of
365         structured block we're in.
367 2014-02-17  Thomas Schwinge  <thomas@codesourcery.com>
369         * tree-core.h (omp_clause_code) <map>: Mention pcopy, pcopyin,
370         pcopyout, pcreate OpenACC clauses.
372 2014-02-14  Ilmir Usmanov  <i.usmanov@samsung.com>
373             Dmitry Bocharnikov  <dmitry.b@samsung.com>
374             Evgeny Gavrin  <e.gavrin@samsung.com>
376         Add OpenACC 1.0 support to GENERIC, except loop directive and subarrays.
378         gcc/
379         * gimplify.c (is_gimple_stmt, gimplify_scan_omp_clauses,
380         implify_adjust_omp_clauses, gimplify_expr): Stub OpenACC directives
381         and clauses.
382         * omp-low.c (scan_sharing_clauses): Likewise.
383         (gimple_code_is_oacc): New helper function.
384         (scan_sharing_clauses): Use it.
385         * tree-core.h (enum omp_clause_code): Add OMP_CLAUSE_HOST,
386         OMP_CLAUSE_OACC_DEVICE, OMP_CLAUSE_DEVICE_RESIDENT,
387         OMP_CLAUSE_USE_DEVICE, OMP_CLAUSE_GANG, OMP_CLAUSE_WAIT,
388         OMP_NO_CLAUSE_CACHE, OMP_CLAUSE_INDEPENDENT, OMP_CLAUSE_ASYNC,
389         OMP_CLAUSE_WORKER, OMP_CLAUSE_VECTOR, OMP_CLAUSE_NUM_GANGS,
390         OMP_CLAUSE_NUM_WORKERS and OMP_CLAUSE_VECTOR_LENGTH clauses.
391         * tree-pretty-print.c (dump_omp_clause): Print OpenACC clause.
392         (dump_generic_node): Print OpenACC directives and its clauses.
393         * tree.c (omp_clause_num_ops, omp_clause_code_name,
394         walk_tree_1): Add OpenACC clauses.
395         * tree.def (OACC_KERNELS, OACC_DATA, OACC_HOST_DATA, OACC_DECLARE,
396         OACC_UPDATE, OACC_ENTER_DATA, OACC_EXIT_DATA, OACC_WAIT,
397         OACC_CACHE): New tree node.
398         * tree.h (OACC_KERNELS_BODY, OACC_KERNELS_CLAUSES,
399         OACC_CLAUSE_NUM_GANGS_EXPR, OMP_CLAUSE_NUM_WORKERS_EXPR,
400         OMP_CLAUSE_VECTOR_LENGTH_EXPR, OMP_CLAUSE_VECTOR_EXPR,
401         OMP_CLAUSE_WORKER_EXPR, OMP_CLAUSE_GANG_EXPR, OMP_CLAUSE_ASYNC_EXPR,
402         OMP_WAIT_EXPR, OACC_DATA_BODY, OACC_DATA_CLAUSES, OACC_DECLARE_CLAUSES,
403         OACC_UPDATE_CLAUSES, OACC_WAIT_CLAUSES, OACC_CACHE_CLAUSES,
404         OACC_HOST_DATA_BODY, OACC_HOST_DATA_CLAUSES): New macros.
405         gcc/doc/
406         * generic.texi: Document OACC_KERNELS, OACC_DATA, OACC_HOST_DATA,
407         OACC_DECLARE, OACC_UPDATE, OACC_ENTER_DATA, OACC_EXIT_DATA, OACC_WAIT,
408         OACC_CACHE.
410 2014-02-07  Ilya Tocar  <ilya.tocar@intel.com>
412         * ipa-inline-analysis.c (inline_free_summary): Always remove
413         hooks.
415 2014-01-28  Thomas Schwinge  <thomas@codesourcery.com>
417         * tree-core.h (omp_clause_code): Update description for
418         OMP_CLAUSE_MAP.
420         * tree-core.h (omp_clause_map_kind): Add OMP_CLAUSE_MAP_FORCE,
421         OMP_CLAUSE_MAP_FORCE_ALLOC, OMP_CLAUSE_MAP_FORCE_TO,
422         OMP_CLAUSE_MAP_FORCE_FROM, OMP_CLAUSE_MAP_FORCE_TOFROM,
423         OMP_CLAUSE_MAP_FORCE_PRESENT, OMP_CLAUSE_MAP_FORCE_DEALLOC, and
424         OMP_CLAUSE_MAP_FORCE_DEVICEPTR.
425         * tree-pretty-print.c (dump_omp_clause): Handle these.
426         * gimplify.c (gimplify_omp_var_data): Add GOVD_MAP_FORCE.
427         (omp_region_type): Add ORT_TARGET_MAP_FORCE.
428         (omp_add_variable, omp_notice_threadprivate_variable)
429         (omp_notice_variable, gimplify_scan_omp_clauses)
430         (gimplify_adjust_omp_clauses_1): Extend accordingly.
431         (gimplify_oacc_parallel): Add ORT_TARGET_MAP_FORCE to ORT_TARGET
432         usage.
433         * omp-low.c (install_var_field, scan_sharing_clauses)
434         (lower_oacc_parallel, lower_omp_target): Extend accordingly.
436         * tree-core.h (omp_clause_map_kind): Make the identifiers' bit
437         patterns more obvious.  Add comments.
438         * omp-low.c (lower_oacc_parallel, lower_omp_target): Test for
439         omp_clause_map_kind flags set instead of for values.
441         * gimplify.c (gimplify_call_expr, gimplify_modify_expr)
442         (omp_firstprivatize_variable, omp_notice_threadprivate_variable)
443         (omp_notice_variable, gimplify_adjust_omp_clauses)
444         (gimplify_omp_workshare): Treat ORT_TARGET as a flag, not as a
445         value.
447 2013-12-18  Thomas Schwinge  <thomas@codesourcery.com>
449         * omp-low.c (lower_oacc_parallel): Switch kinds array to unsigned
450         short, and shift alignment description to begin at bit 8.
452 2013-12-04  Thomas Schwinge  <thomas@codesourcery.com>
454         * gimple.h (is_a_helper): Handle GIMPLE_OACC_PARALLEL.
456 2013-11-30  Balaji V. Iyer  <balaji.v.iyer@intel.com>
458         * config/i386/i386.c (ix86_simd_clone_compute_vecsize_and_simdlen):
459         Removed a carriage return from the warning string.
461 2013-11-21  Jakub Jelinek  <jakub@redhat.com>
463         * config/i386/i386.c (ix86_cilkplus_default_vecsize_mangle,
464         ix86_cilkplus_vecsize_for_mangle): Remove.
465         (ix86_simd_clone_compute_vecsize_and_simdlen,
466         ix86_simd_clone_adjust, ix86_simd_clone_usable): New functions.
467         (TARGET_CILKPLUS_DEFAULT_VECSIZE_MANGLE,
468         TARGET_CILKPLUS_VECSIZE_FOR_MANGLE): Remove.
469         (TARGET_SIMD_CLONE_COMPUTE_VECSIZE_AND_SIMDLEN,
470         TARGET_SIMD_CLONE_ADJUST, TARGET_SIMD_CLONE_USABLE): Define.
471         * omp-low.c (class argno_map): Remove.
472         (argno_map::argno_map): Remove.
473         (simd_clone_vector_of_formal_parm_types): New function.
474         (simd_clone_struct_alloc): Use struct cgraph_simd_clone
475         instead of struct simd_clone and struct cgraph_simd_clone_arg
476         instead of struct simd_clone_arg.
477         (simd_clone_struct_copy): Likewise.
478         (simd_clone_clauses_extract): Likewise.  Return struct
479         cgraph_simd_clone *, don't change anything in node.
480         Use simd_clone_vector_of_formal_parm_types instead of argno_map.
481         Fail if ignoring linear step.
482         (vecsize_mangle): Remove.
483         (simd_clone_compute_base_data_type): Add clone_info argument.
484         Use simd_clone_vector_of_formal_parm_types instead of argno_map.
485         (simd_clone_compute_vecsize_and_simdlen): Remove.
486         (simd_clone_mangle): Remove new_node argument, add clone_info
487         argument, return the identifier rather than changing anything in
488         node.  If mangled name doesn't already exist among simd clones,
489         fail.
490         (simd_clone_create): Handle !old_node->definition case, don't
491         ICE if cgraph_function_versioning fails.
492         (simd_clone_adjust_return_type): Handle simdlens larger than
493         what can be returned or passed in hw register.  Handle
494         !node->definition.
495         (simd_clone_adjust_argument_types): Likewise.  Use
496         ipa_get_vector_of_formal_parms or
497         simd_clone_vector_of_formal_parm_types instead of argno_map.
498         (simd_clone_init_simd_arrays): Handle simdlens larger than
499         what can be passed in hw register.
500         (ipa_simd_modify_function_body): Likewise.  Call walk_gimple_op
501         also on GIMPLE_RETURN.
502         (simd_clone_adjust): Call targetm.simd_clone.adjust.  Create
503         PHI for the iter, rather than waiting for into ssa.  Handle
504         aligned clause on uniform pointer arguments.  Handle linear
505         arguments properly.
506         (expand_simd_clones): Don't do anything if noclone attribute
507         is present.  Ignore non-prototype C declarations.  Rewritten to
508         only clone if it is possible and desirable to create the simd clone.
509         Use new target simd_clone hooks to drive the process, allow
510         creating more than two clones.  Handle !node->definition cloning.
511         (ipa_omp_simd_clone): Use FOR_EACH_FUNCTION instead of
512         FOR_EACH_DEFINED_FUNCTION.
513         (pass_omp_simd_clone::gate): Return true also for flag_openmp_simd.
514         * ipa-cp.c (determine_versionability): Use simd_clones field instead
515         of has_simd_clones.  Also fail if node->simdclone is non-NULL.
516         (initialize_node_lattices): Set disable = true for simd clones.
517         * cgraph.c (get_simd_clone): Remove.
518         * ipa.c (symtab_remove_unreachable_nodes): If node with simd clones
519         is kept, keep also the simd clones.
520         * ipa-prop.h (ipa_get_vector_of_formal_parm_types): New prototype.
521         * ipa-prop.c (get_vector_of_formal_parm_types): Renamed to ...
522         (ipa_get_vector_of_formal_parm_types): ... this.  No longer static.
523         (ipa_modify_formal_parameters): Adjust caller.
524         * target.def (TARGET_CILKPLUS_DEFAULT_VECSIZE_MANGLE,
525         TARGET_CILKPLUS_VECSIZE_FOR_MANGLE): Remove.
526         (TARGET_SIMD_CLONE_COMPUTE_VECSIZE_AND_SIMDLEN,
527         TARGET_SIMD_CLONE_ADJUST, TARGET_SIMD_CLONE_USABLE): New target
528         hooks.
529         * tree-vect-data-refs.c (vect_analyze_data_refs): Use simd_clones
530         field instead of has_simd_clones.
531         * target.h (struct cgraph_node, struct cgraph_simd_node): Declare.
532         * doc/tm.texi.in (TARGET_CILKPLUS_DEFAULT_VECSIZE_MANGLE,
533         TARGET_CILKPLUS_VECSIZE_FOR_MANGLE): Remove.
534         (TARGET_SIMD_CLONE_COMPUTE_VECSIZE_AND_SIMDLEN,
535         TARGET_SIMD_CLONE_ADJUST, TARGET_SIMD_CLONE_USABLE): Add.
536         * doc/tm.texi: Regenerated.
537         * cgraph.h (enum simd_clone_arg_type): Rename to ...
538         (enum cgraph_simd_clone_arg_type): ... this.  Add
539         SIMD_CLONE_ARG_TYPE_MASK.
540         (struct simd_clone_arg): Rename to ...
541         (struct cgraph_simd_clone_arg): ... this.  Add orig_type and
542         vector_type fields.  Adjust arg_type field's type.
543         (struct simd_clone): Rename to ...
544         (struct cgraph_simd_clone): ... this.  Remove hw_vector_size
545         field.  Add vecsize_int, vecsize_float, prev_clone, next_clone
546         and origin fields.  Adjust args field's type.
547         (struct cgraph_node): Adjust simdclone field's type.  Remove
548         simdclone_of and has_simd_clones fields.  Add simd_clones field.
549         (get_simd_clone): Remove prototype.
550         * tree-vect-stmts.c (vectorizable_simd_clone_call): Use simd_clones
551         field instead of has_simd_clones, improve walking of simd clones,
552         handle arguments and/or return types larger than corresponding
553         ISA hw vector size, use targetm.simd_clone.usable hook.
555 2013-11-21  Ilya Tocar  <ilya.tocar@intel.com>
557         * cgraph.h (symtab_node): Add need_dump.
558         * cgraphunit.c (ipa_passes): Run ipa_write_summaries for omp.
559         (compile): Intialize streamer for omp.
560         * ipa-inline-analysis.c (inline_generate_summary): Add flag_openmp.
561         * lto-cgraph.c (lto_set_symtab_encoder_in_partition): Respect
562         need_dump flag.
563         (select_what_to_dump): New.
564         * lto-streamer.c (section_name_prefix): New.
565         (lto_get_section_name): Use section_name_prefix.
566         (lto_streamer_init): Add flag_openmp.
567         * lto-streamer.h (OMP_SECTION_NAME_PREFIX): New.
568         (section_name_prefix): Ditto.
569         (select_what_to_dump): Ditto.
570         * lto/lto-partition.c (add_symbol_to_partition_1): Set need_dump.
571         (lto_promote_cross_file_statics): Dump everyhtinh.
572         * passes.c (ipa_write_summaries): Add parameter,
573         call select_what_to_dump.
574         * tree-pass.h (void ipa_write_summaries): Add parameter.
576 2013-11-15  Jakub Jelinek  <jakub@redhat.com>
578         * tree-vect-stmts.c (vectorizable_simd_clone_call): Avoid
579         -Wsign-compare warning.
581 2013-11-12  Aldy Hernandez  <aldyh@redhat.com>
583         * ipa-prop.h (enum ipa_parm_op): Adjust comment to IPA_PARM_OP_NEW
584         entry.
586 2013-11-12  Aldy Hernandez  <aldyh@redhat.com>
588         * ipa-prop.c (ipa_modify_expr): Pass expr by address.
589         (ipa_get_adjustment_candidate): Add another level of indirection
590         to expr.  Adjust comment.
591         (ipa_get_adjustment_candidate): Add another level of indirection
592         to first argument.
594 2013-11-11  Aldy Hernandez  <aldyh@redhat.com>
596         * ipa-prop.c (get_ssa_base_param): New.
597         * ipa-prop.h (ipa_modify_expr): Rename from ipa_sra_modify_expr.
598         Remove ipa_sra_modify_function_body.
599         (ipa_get_adjustment_candidate): Rename from
600         sra_ipa_get_adjustment_candidate.
601         * omp-low.c (ipa_simd_modify_stmt_ops): Rename
602         sra_ipa_get_adjustment_candidate to ipa_get_adjustment_candidate.
603         * tree-sra.c (get_ssa_base_param): Remove default_def argument.
604         (create_access): Remove lass argument to get_ssa_base_param.
605         (disqualify_base_of_expr): Same.
606         (sra_ipa_get_adjustment_candidate): Rename to
607         ipa_get_adjustment_candidate and move to ipa-prop.c.
608         (sra_ipa_modify_expr): Rename to ipa_modify_expr and move to
609         ipa-prop.c.
610         (sra_ipa_modify_assign): Rename sra_ipa_modify_expr to
611         ipa_modify_expr.
612         (ipa_sra_modify_function_body): Same.
614 2013-11-11  Jakub Jelinek  <jakub@redhat.com>
616         * tree-vect-data-refs.c (vect_analyze_data_refs): Check loop->safelen
617         rather than loop->simdlen.
618         * tree-vect-stmts.c (vectorizable_simd_clone_call): Likewise.
620 2013-11-08  Aldy Hernandez  <aldyh@redhat.com>
622         * ipa-prop.c (ipa_modify_formal_parameters): Remove
623         synth_parm_prefix argument.
624         Use operator enum instead of bit fields.
625         Add assert for properly handling vector of references.
626         (ipa_modify_call_arguments): Use operator enum instead of bit
627         fields.
628         (ipa_combine_adjustments): Same.
629         Assert that IPA_PARM_OP_NEW is not used.
630         (ipa_dump_param_adjustments): Rename reduction to new_decl.
631         Use operator enum instead of bit fields.
632         * ipa-prop.h (enum ipa_parm_op): New.
633         (struct ipa_parm_adjustment): New field op.
634         Rename reduction to new_decl.
635         Rename new_arg_prefix to arg_prefix.
636         Remove new_param, remove_param, copy_param.
637         (ipa_modify_formal_parameters): Remove argument.
638         * omp-low.c (simd_clone_adjust_argument_types): Set arg_prefix.
639         Use operator enum instead of bit fields.
640         (simd_clone_adjust_argument_types): Use operator enum instead of
641         bit fields.
642         Remove last argument to ipa_modify_formal_parameters call.
643         (simd_clone_init_simd_arrays): Use operator enum.
644         (ipa_simd_modify_stmt_ops): Rename reduction to new_decl.
645         (ipa_simd_modify_function_body): Same.
646         * tree-sra.c (turn_representatives_into_adjustments): Use operator
647         enum.  Set arg_prefix.
648         (get_adjustment_for_base): Use operator enum.
649         (sra_ipa_get_adjustment_candidate): Same.
650         (sra_ipa_modify_expr): Rename reduction to new_decl.
651         (sra_ipa_reset_debug_stmts): Use operator enum.
652         (modify_function): Do not pass prefix argument.
654 2013-11-07  Jakub Jelinek  <jakub@redhat.com>
656         * tree-vectorizer.h (enum stmt_vec_info_type): Add
657         call_simd_clone_vec_info_type.
658         * expr.c (store_constructor): Allow CONSTRUCTOR with VECTOR_TYPE
659         (same sized) elements even if the type of the CONSTRUCTOR has
660         vector mode and target is a REG.
661         * tree-vect-data-refs.c: Include cgraph.h.
662         (vect_analyze_data_refs): Inline by hand find_data_references_in_loop
663         and find_data_references_in_bb, if find_data_references_in_stmt
664         fails, still allow calls to #pragma omp declare simd functions
665         in #pragma omp simd loops unless they contain data references among
666         the call arguments or in lhs.
667         * tree-vect-loop.c (vect_determine_vectorization_factor): If a call
668         doesn't have lhs, set STMT_VINFO_VECTYPE to vector type corresponding
669         to any of the argument types and exclude it from adjustments of the
670         vectorization factor.
671         * tree-vect-stmts.c: Include tree-ssa-loop.h and
672         tree-scalar-evolution.h.
673         (vectorizable_function): Don't handle functions with simd clones here.
674         (vectorizable_call): Nor here.  Return early if call doesn't have lhs.
675         (struct simd_call_arg_info): New type.
676         (vectorizable_simd_clone_call): New function.
677         (vect_analyze_stmt, vect_transform_stmt): Call it.
679 2013-11-07  Thomas Schwinge  <thomas@codesourcery.com>
681         * gimple.def (GIMPLE_OACC_PARALLEL): New code.
682         * doc/gimple.texi: Document it.
683         * gimple.h (gimple_build_oacc_parallel): New declaration.
684         (gimple_oacc_parallel_clauses, gimple_oacc_parallel_clauses_ptr)
685         (gimple_oacc_parallel_set_clauses, gimple_oacc_parallel_child_fn)
686         (gimple_oacc_parallel_child_fn_ptr)
687         (gimple_oacc_parallel_set_child_fn, gimple_oacc_parallel_data_arg)
688         (gimple_oacc_parallel_data_arg_ptr)
689         (gimple_oacc_parallel_set_data_arg): New inline functions.
690         (CASE_GIMPLE_OMP): Add GIMPLE_OACC_PARALLEL.
691         * gimple.c (gimple_build_oacc_parallel): New function.
692         (walk_gimple_op, walk_gimple_stmt, gimple_copy): Handle
693         GIMPLE_OACC_PARALLEL.
694         * gimplify.c (is_gimple_stmt): Handle GIMPLE_OACC_PARALLEL.
695         (gimplify_oacc_parallel): New function.
696         (gimplify_expr): Handle OACC_PARALLEL.
697         * cgraphbuild.c (build_cgraph_edges): Handle GIMPLE_OACC_PARALLEL.
698         * gimple-low.c (lower_stmt): Likewise.
699         * gimple-pretty-print.c (pp_gimple_stmt_1): Likewise.
700         (dump_gimple_oacc_parallel): New function.
701         * oacc-builtins.def (BUILT_IN_GOACC_PARALLEL): New macro.
702         * omp-low.c (scan_oacc_parallel, expand_oacc_parallel)
703         (lower_oacc_parallel): New functions.
704         (use_pointer_for_field, build_outer_var_ref, scan_sharing_clauses)
705         (create_omp_child_function, check_omp_nesting_restrictions)
706         (scan_omp_1_stmt, lower_rec_simd_input_clauses)
707         (lower_lastprivate_clauses, lower_reduction_clauses)
708         (lower_copyprivate_clauses, lower_send_clauses)
709         (lower_send_shared_vars, expand_omp)
710         (maybe_add_implicit_barrier_cancel, create_task_copyfn)
711         (lower_omp_1, make_gimple_omp_edges): Handle GIMPLE_OACC_PARALLEL,
712         or catch it.
713         * tree-inline.c (remap_gimple_stmt): Likewise.
714         * tree-nested.c (convert_nonlocal_reference_stmt)
715         (convert_local_reference_stmt, convert_tramp_reference_stmt)
716         (convert_gimple_call): Likewise.
718         * tree.def (OACC_PARALLEL): New code.
719         * doc/generic.texi (OpenMP): Document it.
720         * tree.h (OMP_BODY, OMP_CLAUSES): Include it.
721         (OACC_PARALLEL_BODY, OACC_PARALLEL_CLAUSES): New macros.
722         * tree-pretty-print.c (dump_generic_node): Handle OACC_PARALLEL.
724         * doc/invoke.texi (-fopenacc): Update.
726         * gimplify.c (gimplify_body): Consider flag_openacc additionally
727         to flag_openmp.
728         * omp-low.c (execute_expand_omp, execute_lower_omp)
729         (gate_diagnose_omp_blocks): Likewise.
731         * oacc-builtins.def: New file.
732         * Makefile.in (BUILTINS_DEF): Add oacc-builtins.def.
733         * builtins.def (DEF_GOACC_BUILTIN): New macro.
734         Include "oacc-builtins.def".
736         * gcc.c (LINK_COMMAND_SPEC, GOMP_SELF_SPECS): For -fopenacc, link
737         to libgomp and its dependencies.
738         * config/arc/arc.h (LINK_COMMAND_SPEC): Likewise.
739         * config/darwin.h (LINK_COMMAND_SPEC_A): Likewise.
740         * config/i386/mingw32.h (GOMP_SELF_SPECS): Likewise.
741         * config/ia64/hpux.h (LIB_SPEC): Likewise.
742         * config/pa/pa-hpux11.h (LIB_SPEC): Likewise.
743         * config/pa/pa64-hpux.h (LIB_SPEC): Likewise.
744         * doc/invoke.texi (-fopenacc): Update.
746         * doc/invoke.texi (-fopenacc): Document it.
747         * doc/sourcebuild.texi (fopenacc): Document it.
749         Backport from trunk, r204517:
751         * config/arc/arc.h (LINK_COMMAND_SPEC): For
752         -ftree-parallelize-loops=*, link to libgomp and its dependencies.
753         * config/ia64/hpux.h (LIB_SPEC): Likewise.
754         * config/pa/pa-hpux11.h (LIB_SPEC): Likewise.
755         * config/pa/pa64-hpux.h (LIB_SPEC): Likewise.
756         * gcc.c (GOMP_SELF_SPECS): Update comment about libgomp's
757         dependencies.
759 2013-11-07  Aldy Hernandez  <aldyh@redhat.com>
761         * omp-low.c (ipa_simd_modify_function_body): Avoid
762         regimplification of GIMPLE_RETURNs.
764 2013-11-06  Aldy Hernandez  <aldyh@redhat.com>
766         * ipa-prop.h (sra_ipa_get_adjustment_candidate): Protoize.
767         * omp-low.c (struct modify_stmt_info): New.
768         (ipa_simd_modify_function_body_ops_1): Remove.
769         (ipa_simd_modify_stmt_ops): New.
770         (ipa_simd_modify_function_body_ops): Remove.
771         (ipa_simd_modify_function_body): Set new callback info.
772         Remove special casing.  Handle all operators with walk_gimple_op.
773         * tree-sra.c (get_ssa_base_param): Add new argument.  Use it.
774         (disqualify_base_of_expr): Pass new argument to
775         get_ssa_base_param.
776         (sra_ipa_modify_expr): Abstract candidate search into...
777         (sra_ipa_get_adjustment_candidate): ...here.
779 2013-11-06  Aldy Hernandez  <aldyh@redhat.com>
781         * omp-low.c (simd_clone_mangle): Linear step of 1 is mangled as
782         'l'.
784 2013-11-04  Aldy Hernandez  <aldyh@redhat.com>
786         * omp-low.c (ipa_simd_modify_function_body): Adjust tree operands
787         on the LHS of an assign.
788         (ipa_simd_modify_function_body_ops_1): New.
789         (ipa_simd_modify_function_body_ops): New.
791 2013-11-02  Aldy Hernandez  <aldyh@redhat.com>
793         * omp-low.c (ipa_simd_modify_function_body): Handle empty returns.
795 2013-11-01  Jakub Jelinek  <jakub@redhat.com>
797         * cgraph.h (enum linear_stride_type): Remove.
798         (enum simd_clone_arg_type): New.
799         (struct simd_clone_arg): Remove linear_stride, linear_stride_num
800         and uniform fields.  Add arg_type and linear_step.
801         * omp-low.c (simd_clone_struct_copy): Formatting.
802         (simd_clone_struct_alloc): Likewise.  Use size_t.
803         (simd_clone_clauses_extract, simd_clone_compute_base_data_type,
804         simd_clone_adjust_argument_types): Adjust for struct simd_clone_arg
805         changes.
806         (simd_clone_mangle): Likewise.  Handle negative linear step.
808 2013-11-01  Aldy Hernandez  <aldyh@redhat.com>
810         * tree-vect-stmts.c: Include cgraph.h.
811         (vectorizable_call): Allow > 3 arguments when a SIMD clone may be
812         available.
813         (vectorizable_function): Use SIMD clone if available.
814         * ipa-cp.c (determine_versionability): Nodes with SIMD clones are
815         not versionable.
816         * ggc.h (ggc_alloc_cleared_simd_clone_stat): New.
817         * cgraph.h (enum linear_stride_type): New.
818         (struct simd_clone_arg): New.
819         (struct simd_clone): New.
820         (struct cgraph_node): Add simdclone and simdclone_of fields.
821         (get_simd_clone): Protoize.
822         * cgraph.c (get_simd_clone): New.
823         Add `has_simd_clones' field.
824         * ipa-cp.c (determine_versionability): Disallow functions with
825         simd clones.
826         * ipa-prop.h (ipa_sra_modify_function_body): Protoize.
827         (sra_ipa_modify_expr): Same.
828         (struct ipa_parm_adjustment): Add new_arg_prefix and new_param
829         fields.  Document their use.
830         * ipa-prop.c (ipa_modify_formal_parameters): Handle creating brand
831         new parameters and minor cleanups.
832         * omp-low.c: Add new pass_omp_simd_clone support code.
833         (make_pass_omp_simd_clone): New.
834         (pass_data_omp_simd_clone): Declare.
835         (class pass_omp_simd_clone): Declare.
836         (vecsize_mangle): New.
837         (ipa_omp_simd_clone): New.
838         (simd_clone_clauses_extract): New.
839         (simd_clone_compute_base_data_type): New.
840         (simd_clone_compute_vecsize_and_simdlen): New.
841         (simd_clone_create): New.
842         (simd_clone_adjust_return_type): New.
843         (simd_clone_adjust_return_types): New.
844         (simd_clone_adjust): New.
845         (simd_clone_init_simd_arrays): New.
846         (ipa_simd_modify_function_body): New.
847         (simd_clone_mangle): New.
848         (simd_clone_struct_alloc): New.
849         (simd_clone_struct_copy): New.
850         (class argno_map): New.
851         (argno_map::argno_map(tree)): New.
852         (argno_map::~argno_map): New.
853         (argno_map::operator []): New.
854         (argno_map::length): New.
855         (expand_simd_clones): New.
856         (create_tmp_simd_array): New.
857         * tree.h (OMP_CLAUSE_LINEAR_VARIABLE_STRIDE): New.
858         * tree-core.h (OMP_CLAUSE_LINEAR_VARIABLE_STRIDE): Document.
859         * tree-pass.h (make_pass_omp_simd_clone): New.
860         * passes.def (pass_omp_simd_clone): New.
861         * target.def: Define new hook prefix "TARGET_CILKPLUS_".
862         (default_vecsize_mangle): New.
863         (vecsize_for_mangle): New.
864         * doc/tm.texi.in: Add placeholder for
865         TARGET_CILKPLUS_DEFAULT_VECSIZE_MANGLE and
866         TARGET_CILKPLUS_VECSIZE_FOR_MANGLE.
867         * tree-sra.c (sra_ipa_modify_expr): Remove static modifier.
868         (ipa_sra_modify_function_body): Same.
869         * tree.h (OMP_CLAUSE_LINEAR_VARIABLE_STRIDE): Define.
870         * doc/tm.texi: Regenerate.
871         * config/i386/i386.c (ix86_cilkplus_default_vecsize_mangle): New.
872         (ix86_cilkplus_vecsize_for_mangle): New.
873         (TARGET_CILKPLUS_DEFAULT_VECSIZE_MANGLE): New.
874         (TARGET_CILKPLUS_VECSIZE_FOR_MANGLE): New.
876 2013-10-10  Jakub Jelinek  <jakub@redhat.com>
878         * tree.c (omp_remove_redundant_declare_simd_attrs): Adjust
879         for the clauses being stored into TREE_VALUE of an extra TREE_LIST
880         pointed out by TREE_VALUE of the attribute.
882 2013-10-04  Jakub Jelinek  <jakub@redhat.com>
884         * omp-low.c (expand_omp_target): When handling IF clause on
885         #pragma omp target, split new_bb rather than entry_bb.  If
886         not GF_OMP_TARGET_KIND_REGION, split new_bb right before
887         the GOMP_TARGET stmt, rather than after labels.
889 2013-09-26  Jakub Jelinek  <jakub@redhat.com>
891         * omp-low.c (expand_task_call): If there are depend clauses,
892         pass bit 8 in 7th argument and pass pointer to depend array
893         as 8th argument.
894         (lower_depend_clauses): New function.
895         (lower_omp_taskreg): Handle depend clauses.
896         * omp-builtins.def (BUILT_IN_GOMP_TASK): Use
897         BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT_PTR
898         instead of BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT.
899         * builtin-types.def
900         (BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT): Remove.
901         (BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT_PTR): New.
903 2013-09-25  Jakub Jelinek  <jakub@redhat.com>
905         * omp-low.c (lower_omp_sections, lower_omp_for, lower_omp_taskreg):
906         Emit ctx->cancel_label before destructors.
908         * gimple-pretty-print.c (dump_gimple_omp_block,
909         pp_gimple_stmt_1): Handle GIMPLE_OMP_TASKGROUP.
910         * tree-nested.c (convert_nonlocal_reference_stmt,
911         convert_local_reference_stmt, convert_gimple_call): Likewise.
912         * tree-cfg.c (make_edges): Likewise.
913         * gimple.h (gimple_build_omp_taskgroup): New prototype.
914         (gimple_has_substatement): Handle GIMPLE_OMP_TASKGROUP.
915         (CASE_GIMPLE_OMP): Likewise.
916         * gimplify.c (is_gimple_stmt, gimplify_expr): Handle OMP_TASKGROUP.
917         * omp-low.c (check_omp_nesting_restrictions): Warn if #pragma omp
918         cancel is used in nowait loop or sections construct.
919         (scan_omp_1_stmt, expand_omp_synch, expand_omp, lower_omp_1): Handle
920         GIMPLE_OMP_TASKGROUP.
921         (diagnose_sb_1, diagnose_sb_2): Likewise.  Handle GIMPLE_OMP_TARGET
922         and GIMPLE_OMP_TEAMS.
923         (lower_omp_taskgroup): New function.
924         * tree-inline.c (remap_gimple_stmt, estimate_num_insns): Handle
925         GIMPLE_OMP_TASKGROUP.
926         * gimple-low.c (lower_stmt): Likewise.
927         * tree.h (OMP_TASKGROUP_BODY): Define.
928         * tree.def (OMP_TASKGROUP): New tree.
929         * tree-pretty-print.c (dump_generic_node): Handle OMP_TASKGROUP.
930         * gimple.c (gimple_build_omp_taskgroup): New function.
931         (walk_gimple_stmt, gimple_copy): Handle GIMPLE_OMP_TASKGROUP.
932         * gimple.def (GIMPLE_OMP_TASKGROUP): New GIMPLE code.
934 2013-09-19  Jakub Jelinek  <jakub@redhat.com>
936         * omp-builtins.def (BUILT_IN_GOMP_TARGET_DATA,
937         BUILT_IN_GOMP_TARGET_UPDATE): Use BT_FN_VOID_INT_PTR_SIZE_PTR_PTR_PTR
938         rather than BT_FN_VOID_INT_SIZE_PTR_PTR_PTR.
939         * builtin-types.def (BT_FN_VOID_INT_SIZE_PTR_PTR_PTR): Remove.
940         (BT_FN_VOID_INT_PTR_SIZE_PTR_PTR_PTR): New.
941         * omp-low.c (expand_omp_target): Remove fnname argument from
942         GOMP_target, add openmp_target argument to GOMP_target,
943         GOMP_target_data and GOMP_target_update calls.
945 2013-09-18  Jakub Jelinek  <jakub@redhat.com>
947         * tree.h (OMP_CLAUSE_REDUCTION_OMP_ORIG_REF): Define.
948         * tree-core.h (OMP_CLAUSE_REDUCTION_OMP_ORIG_REF): Document.
949         * omp-low.c (lower_rec_simd_input_clauses): Don't set DECL_VALUE_EXPR
950         on new_var if it is not a DECL_P.
951         (lower_rec_input_clauses): Don't force max_vf = 1
952         if OMP_CLAUSE_REDUCTION_PLACEHOLDER.  Add barrier also if any
953         OMP_CLAUSE_REDUCTION_OMP_ORIG_REF is seen.  For OMP_CLAUSE_PRIVATE
954         in simd, fix last argument to omp_clause_default_ctor langhook.
955         Handle OMP_CLAUSE_REDUCTION_PLACEHOLDER in simd loops, if
956         OMP_CLAUSE_REDUCTION_GIMPLE_INIT is NULL, emit omp_clause_default_ctor
957         if any and emit omp_clause_dtor if any.  Handle C++ references in
958         OMP_CLAUSE_REDUCTION clauses.
959         (lower_reduction_clauses): Adjust comment for UDRs.  Handle
960         C++ references in OMP_CLAUSE_REDUCTION clauses.
961         (lower_omp_taskreg): Emit reduction merges before destructors.
962         * tree-pretty-print.c (dump_omp_clause): Don't emit any reduction
963         operator name if OMP_CLAUSE_REDUCTION_CODE is ERROR_MARK.
964         * gimplify.c (omp_add_variable): Ignore GOVD_LOCAL decls for which
965         privatize_by_reference returns true.
967         * tree-core.h (OMP_CLAUSE_DEPEND_KIND, OMP_CLAUSE_MAP_KIND,
968         OMP_CLAUSE_MAP_ZERO_BIAS_ARRAY_SECTION, OMP_CLAUSE_PROC_BIND_KIND):
969         Move definitions...
970         * tree.h (OMP_CLAUSE_DEPEND_KIND, OMP_CLAUSE_MAP_KIND,
971         OMP_CLAUSE_MAP_ZERO_BIAS_ARRAY_SECTION, OMP_CLAUSE_PROC_BIND_KIND):
972         ... here.
974 2013-09-16  Jakub Jelinek  <jakub@redhat.com>
976         * omp-low.c (install_var_field): Use (mask & 4) to request double
977         indirection.
978         (scan_sharing_clauses): For OMP_CLAUSE_MAP_POINTER arrays pass
979         7 instead of 3 to install_var_field.
980         (lower_omp_target): For OMP_CLAUSE_MAP_POINTER arrays add extra
981         indirection.
983 2013-09-06  Jakub Jelinek  <jakub@redhat.com>
985         * omp-low.c (scan_sharing_clauses): Handle VLAs in
986         OMP_CLAUSE_{MAP,TO,FROM}.  Set DECL_ALIGN (field) before
987         calling insert_field_into_struct.
988         (scan_omp_target): Reverse TYPE_FIELDS, verify that
989         all field alignments are the same.
990         (lower_omp_target): Use maybe_lookup_field instead of
991         lookup_sfield to check if field is present.  Handle VLAs.
992         * tree-pretty-print.c (dump_omp_clause): Only check
993         OMP_CLAUSE_MAP_KIND on OMP_CLAUSE_MAP clauses.
994         * gimplify.c (enum gimplify_omp_var_data): Add GOVD_MAP_TO_ONLY.
995         (omp_firstprivatize_variable, omp_add_variable,
996         gimplify_adjust_omp_clauses_1, gimplify_adjust_omp_clauses): Handle
997         VLAs in OMP_CLAUSE_{MAP,TO,FROM}.
999 2013-09-05  Jakub Jelinek  <jakub@redhat.com>
1001         * gimplify.c (gimplify_call_expr): Don't call fold_stmt
1002         inside of #pragma omp target construct.
1003         (gimplify_modify_expr): Likewise.
1004         * omp-low.c (target_nesting_level): New variable.
1005         (lower_omp_target): Increase/restore target_nesting_level
1006         around lowering #pragma omp target body.  Use TYPE_SIZE_UNIT
1007         instead of TYPE_SIZE if OMP_CLAUSE_SIZE is missing.
1008         Or log2 of needed alignment into high 5 bits of kind.
1009         (lower_omp): Call fold_stmt on all stmts inside of
1010         #pragma omp target construct.
1012         * tree-cfg.c (make_edges): For GIMPLE_OMP_TARGET
1013         with GF_OMP_TARGET_KIND_UPDATE, don't look for
1014         GIMPLE_OMP_RETURN and immediately restore previous
1015         region.
1016         * langhooks.c (lhd_omp_mappable_type): New function.
1017         * omp-low.c (scan_sharing_clauses): Ignore OMP_CLAUSE_SHARED
1018         in GIMPLE_OMP_TEAMS constructs.  Handle OMP_CLAUSE_NUM_TEAMS,
1019         OMP_CLAUSE_THREAD_LIMIT, OMP_CLAUSE_DEVICE, OMP_CLAUSE_MAP,
1020         OMP_CLAUSE_TO and OMP_CLAUSE_FROM.
1021         (create_omp_child_function): If current function has
1022         "omp declare target" attribute or if current region
1023         is OMP_TARGET or lexically nested in it, add that
1024         attribute to the omp child function.
1025         (scan_omp_target, scan_omp_teams): New functions.
1026         (check_omp_nesting_restrictions): Fix a typo in TEAMS nesting
1027         check.
1028         (scan_omp_1_stmt): Handle GIMPLE_OMP_TARGET and GIMPLE_OMP_TEAMS.
1029         (lower_rec_input_clauses): Ignore OMP_CLAUSE_SHARED
1030         in GIMPLE_OMP_TEAMS constructs.
1031         (expand_omp_synch): Handle GIMPLE_OMP_TEAMS.
1032         (expand_omp_target): New function.
1033         (expand_omp): Handle GIMPLE_OMP_TARGET and GIMPLE_OMP_TEAMS.
1034         (build_omp_regions_1): For GIMPLE_OMP_TARGET with
1035         GF_OMP_TARGET_KIND_UPDATE, don't look for GIMPLE_OMP_RETURN and
1036         immediately restore previous region.
1037         (lower_omp_single): Emit a CLOBBER stmt after GIMPLE_OMP_RETURN.
1038         (lower_omp_taskreg): Likewise.
1039         (lower_omp_target, lower_omp_teams): New functions.
1040         (lower_omp_1): Handle GIMPLE_OMP_TARGET and GIMPLE_OMP_TEAMS.
1041         * tree.h (enum omp_clause_map_kind): Improve description of
1042         OMP_CLAUSE_MAP_POINTER.
1043         (OMP_CLAUSE_MAP_ZERO_BIAS_ARRAY_SECTION): Define.
1044         * gimple.def (GIMPLE_OMP_TARGET): Use GSS_OMP_PARALLEL instead
1045         of GSS_OMP_SINGLE.
1046         * langhooks.h (struct lang_hooks_for_types): Add
1047         omp_mappable_type hook.
1048         * langhooks-def.h (lhd_omp_mappable_type): New prototype.
1049         (LANG_HOOKS_OMP_MAPPABLE_TYPE): Define.
1050         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Use it.
1051         * gimple.h (gimple_omp_target_clauses, gimple_omp_target_clauses_ptr,
1052         gimple_omp_target_set_clauses): Use gimple_omp_parallel
1053         instead of gimple_omp_single.
1054         (gimple_omp_target_child_fn, gimple_omp_target_child_fn_ptr,
1055         gimple_omp_target_set_child_fn, gimple_omp_target_data_arg,
1056         gimple_omp_target_data_arg_ptr, gimple_omp_target_set_data_arg): New
1057         inlines.
1058         * omp-builtins.def (BUILT_IN_GOMP_TARGET, BUILT_IN_GOMP_TARGET_DATA,
1059         BUILT_IN_GOMP_TARGET_END_DATA, BUILT_IN_GOMP_TARGET_UPDATE,
1060         BUILT_IN_GOMP_TEAMS): New builtins.
1061         * gimple-pretty-print.c (dump_gimple_omp_target): Print child_fn
1062         for #pragma omp target.
1063         * gimplify.c (omp_notice_variable): Diagnose if implicitly mapped
1064         decl doesn't have mappable type.
1065         (gimplify_scan_omp_clauses): For OMP_CLAUSE_MAP don't clear
1066         notice_outer.
1067         (gimplify_adjust_omp_clauses_1): Add OMP_CLAUSE_MAP even if the same
1068         decl is already referenced in target data construct surrounding it.
1069         (gimplify_adjust_omp_clauses): Likewise.  Handle
1070         OMP_CLAUSE_THREAD_LIMIT.
1071         (gimplify_omp_workshare): Fix up gimplification of target or target
1072         data construct body.  For target data add GOMP_target_end_data
1073         call in a try/finally cleanup.
1074         * builtin-types.def (BT_FN_VOID_UINT_UINT,
1075         BT_FN_VOID_INT_SIZE_PTR_PTR_PTR,
1076         BT_FN_VOID_INT_OMPFN_PTR_SIZE_PTR_PTR_PTR): New.
1078 2013-07-14  Jakub Jelinek  <jakub@redhat.com>
1080         * tree.h (omp_declare_simd_clauses_equal): Remove prototype.
1081         (omp_remove_redundant_declare_simd_attrs): New prototype.
1082         * tree.c (omp_declare_simd_clauses_equal): Make static.
1083         (omp_remove_redundant_declare_simd_attrs): New function.
1085 2013-07-09  Jakub Jelinek  <jakub@redhat.com>
1087         * gimple-pretty-print.c (dump_gimple_omp_return): Print
1088         gimple_omp_return_lhs if non-NULL.
1089         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1,
1090         call_may_clobber_ref_p_1): Handle BUILT_IN_GOMP_BARRIER_CANCEL,
1091         BUILT_IN_GOMP_LOOP_END_CANCEL, BUILT_IN_GOMP_SECTIONS_END_CANCEL.
1092         * gimple.h (gimple_omp_return_set_lhs, gimple_omp_return_lhs,
1093         gimple_omp_return_lhs_ptr): New inlines.
1094         * gimple.def (GIMPLE_OMP_RETURN): Use GSS_OMP_ATOMIC_STORE
1095         instead of GSS_BASE.
1096         * gimple.c (walk_gimple_op) <case GIMPLE_OMP_RETURN>: Walk lhs.
1097         * builtin-types.def (BT_FN_BOOL_INT, BT_FN_BOOL_INT_BOOL): New.
1098         * omp-builtins.def (BUILT_IN_GOMP_CANCELLATION_POINT): Use
1099         ATTR_NOTHROW_LEAF_LIST instead of ATTR_NULL.  Return type is now
1100         bool.
1101         (BUILT_IN_GOMP_CANCEL): Likewise.  Add second argument with bool type.
1102         (BUILT_IN_BARRIER_CANCEL, BUILT_IN_GOMP_LOOP_END_CANCEL,
1103         BUILT_IN_GOMP_SECTIONS_END_CANCEL): New builtins.
1104         * omp-low.c (struct omp_context): Add cancel_label and cancellable
1105         fields.
1106         (extract_omp_for_data): Set have_nowait even for simd implicitly.
1107         (check_omp_nesting_restrictions): Verify nesting restrictions for
1108         #pragma omp cancel and #pragma omp cancellation point.
1109         Set ctx->cancellable for regions that can be cancelled or also
1110         for any task region that contains #pragma omp cancellation point.
1111         (scan_omp_1_stmt): Check nesting restrictions even if ctx == NULL.
1112         (build_omp_barrier): Return gimple instead of tree, add lhs argument,
1113         if non-NULL, build GOMP_barrier_cancel builtin instead and set its 
1114         call lhs to lhs.
1115         (lower_rec_input_clauses): Adjust build_omp_barrier caller.
1116         (expand_omp_for_static_nochunk, expand_omp_for_static_chunk,
1117         expand_omp_single): Likewise.  If OMP_RETURN has lhs, pass it to
1118         build_omp_barrier.
1119         (expand_omp_for_generic): If OMP_RETURN has lhs, use
1120         GOMP_loop_end_cancel libcall instead of GOMP_loop_end and set its
1121         lhs from OMP_RETURN's lhs.
1122         (expand_omp_sections): If OMP_RETURN has lhs, use
1123         GOMP_sections_end_cancel libcall instead of GOMP_sections_end and set
1124         its lhs from OMP_RETURN's lhs.
1125         (maybe_add_implicit_barrier_cancel): New function.
1126         (lower_omp_sections): If ctx->cancellable, emit cancel_label before
1127         OMP_RETURN.  Call maybe_add_implicit_barrier_cancel.
1128         (lower_omp_for): Likewise.
1129         (lower_omp_single): Call maybe_add_implicit_barrier_cancel.
1130         (lower_omp_taskreg): If ctx->cancellable, emit cancel_label before
1131         OMP_RETURN.
1132         (lower_omp_1): If ctx->cancellable, create ctx->cancel_label.
1133         Adjust GOMP_barrier libcalls to GOMP_barrier_cancel plus conditional
1134         branch in cancellable regions, adjust GOMP_cancel and
1135         GOMP_cancellation_point in cancellable regions or remove
1136         GOMP_cancellation_point in non-cancellable regions.
1138 2013-07-03  Jakub Jelinek  <jakub@redhat.com>
1140         * omp-low.c (expand_omp_single): Don't force barrier for
1141         copyprivate.
1143 2013-06-28  Jakub Jelinek  <jakub@redhat.com>
1144             Aldy Hernandez  <aldyh@redhat.com>
1146         * internal-fn.def (GOMP_SIMD_LANE, GOMP_SIMD_VF,
1147         GOMP_SIMD_LAST_LANE): New internal functions.
1148         * omp-low.c (omp_max_vf, lower_rec_simd_input_clauses): New
1149         functions.
1150         (lower_rec_input_clauses): Add fd argument.  Enforce max_vf = 1
1151         if any data sharing clauses mention VLAs or for array reductions.
1152         Handle OMP_CLAUSE__LOOPTEMP_ clause.  For
1153         OMP_CLAUSE_{{FIRST,LAST,}PRIVATE,LINEAR,REDUCTION} on SIMD
1154         constructs use "omp simd array" temporaries.  For OMP_CLAUSE_LINEAR
1155         adjust initial value in combined constructs.  Don't emit any
1156         barriers for #pragma omp distribute.  If max_vf is lower than
1157         current safelen, prepend an OMP_CLAUSE_SAFELEN clause.
1158         (lower_lastprivate_clauses): Handle "omp simd array" temporaries.
1159         (lower_reduction_clauses): Exit early for #pragma omp simd.
1160         (expand_omp_simd): Set loop->simduid from OMP_CLAUSE__SIMDUID_
1161         and cfun->has_simduid_loops if set.
1162         If OMP_CLAUSE_SAFELEN (1) is present, don't set loop->safelen
1163         nor loop->force_vect.
1164         (lower_omp_sections, lower_omp_single, lower_omp_taskreg): Adjust
1165         lower_rec_input_clauses callers.
1166         (lower_omp_for_lastprivate): Unshare vinit.
1167         (lower_omp_for): Add OMP_CLAUSE__LOOPTEMP_ clauses before calling
1168         lower_rec_input_clauses.  Adjust lower_rec_input_clauses caller.
1169         Always call lower_omp_for_lastprivate at the same place, even for
1170         #pragma omp simd.
1171         * tree.h (enum clause_code): Add OMP_CLAUSE__SIMDUID_.
1172         (OMP_CLAUSE__SIMDUID__DECL): Define.
1173         * tree-vectorizer.c: Include hash-table.h and tree-ssa-propagate.h.
1174         (simduid_to_vf, decl_to_simduid): New classes.
1175         (simduid_to_vf::hash, simduid_to_vf::equal, decl_to_simduid::hash,
1176         decl_to_simduid::equal): New methods.
1177         (note_simd_array_uses_struct): New struct.
1178         (adjust_simduid_builtins, note_simd_array_uses_cb,
1179         note_simd_array_uses): New functions.
1180         (vectorize_loops): Adjust "omp simd array" temporary array sizes
1181         and fold GOMP_SIMD_{LANE,VF,LAST_LANE} builtins.
1182         * tree-vectorizer.h (struct _stmt_vec_info): Add simd_lane_access_p
1183         field.
1184         (STMT_VINFO_SIMD_LANE_ACCESS_P): Define.
1185         * tree-data-ref.c (get_references_in_stmt): Allow GOMP_SIMD_LANE
1186         builtins in their own loops.
1187         * tree-inline.c (copy_cfg_body): Propagate has_force_vect_loops
1188         and has_simduid_loops.
1189         * function.h (struct function): Add has_simduid_loops field.
1190         * tree-ssa-ccp.c (likely_value): For GOMP_SIMD_{LANE,LAST_LANE,VF}
1191         builtins ignore the undefined magic argument.
1192         * tree-pretty-print.c (dump_omp_clause): Handle OMP_CLAUSE__SIMDUID_
1193         clause.
1194         * cfgloop.h (struct loop): Add simduid field.
1195         * Makefile.in (tree-vectorizer.o): Depend on $(HASH_TABLE_H)
1196         and tree-ssa-propagate.h.
1197         * tree-vect-data-refs.c (vect_analyze_data_refs): Check for SIMD
1198         lane access.
1199         * gimplify.c (omp_add_variable): Handle combination of aligned
1200         clause and some data sharing clause for the same decl.
1201         (gimplify_omp_for): For collapse (2) and above simd loops
1202         predetermine loop iteration vars as lastprivate instead of
1203         linear.
1204         * tree.c (omp_clause_num_ops, omp_clause_code_name): Add
1205         entries for OMP_CLAUSE__SIMDUID_.
1206         (walk_tree_1): Handle OMP_CLAUSE__SIMDUID_.
1207         * tree-vect-loop.c (vectorizable_live_operation): Handle live
1208         GOMP_SIMD_LANE result.
1209         * tree-vect-stmts.c (vectorizable_call): Vectorize GOMP_SIMD_LANE
1210         builtin.
1211         (vectorizable_store, vectorizable_load): Handle
1212         STMT_VINFO_SIMD_LANE_ACCESS_P.
1213         * internal-fn.c (expand_GOMP_SIMD_LANE, expand_GOMP_SIMD_VF,
1214         expand_GOMP_SIMD_LAST_LANE): New functions.
1216 2013-06-21  Jakub Jelinek  <jakub@redhat.com>
1218         * gimple.h (enum gf_mask): Adjust GF_OMP_FOR_COMBINED
1219         value representation, add GF_OMP_FOR_COMBINED_INTO.
1220         (gimple_omp_for_combined_into_p,
1221         gimple_omp_for_set_combined_into_p): New inlines.
1222         * gimplify.c (enum omp_region_type): Remove outdated
1223         ORT_SIMD comment.
1224         (struct gimplify_omp_ctx): Add combined_loop field.
1225         (gimplify_omp_for): Call gimple_omp_for_set_combined_into_p
1226         for inner for/simd constructs combined with an outer
1227         loop construct (for or distribute).
1228         * tree.c (omp_clause_num_ops): Add OMP_CLAUSE__LOOPTEMP_
1229         entry.
1230         (omp_clause_code_name): Likewise.
1231         (walk_tree_1): Handle OMP_CLAUSE__LOOPTEMP_.
1232         * tree-pretty-print.c (dump_omp_clause): Handle OMP_CLAUSE__LOOPTEMP_.
1233         * tree.h (enum omp_clause_code): Add OMP_CLAUSE__LOOPTEMP_.
1234         (OMP_CLAUSE_DECL): Allow also on OMP_CLAUSE__LOOPTEMP_.
1235         * omp-low.c (extract_omp_for_data): Rename non_ws to simd.  Don't set
1236         fd->chunk_size for non-chunk OMP_CLAUSE_SCHEDULE_STATIC, unless
1237         fd->have_ordered.  For OMP_CLAUSE_SCHEDULE_STATIC non-ordered loops
1238         compute fd->iter_type the same as for simd.
1239         (get_ws_args_for): Add par_stmt argument, if
1240         gimple_omp_for_combined_into_p, use first two _looptemp_ clauses
1241         temporaries instead of fd->loop.n{1,2}.
1242         (determine_parallel_type): Adjust caller.
1243         (scan_sharing_clauses): Handle OMP_CLAUSE__LOOPTEMP_.
1244         (find_combined_for): New function.
1245         (scan_omp_parallel): If gimple_omp_parallel_combined_p and
1246         it is combined with gimple_omp_for_combined_into_p OMP_FOR,
1247         add OMP_CLAUSE__LOOPTEMP_ clauses to the parallel.
1248         (check_omp_nesting_restrictions): Don't insist that the only construct
1249         nested in OMP_DISTRIBUTE must be OMP_PARALLEL.
1250         (lower_rec_input_clauses, lower_send_clauses): Handle
1251         OMP_CLAUSE__LOOPTEMP_.
1252         (expand_omp_for_init_counts, expand_omp_for_init_vars,
1253         extract_omp_for_update_vars): New functions.
1254         (expand_omp_for_generic): Add inner_stmt argument.  Use
1255         expand_omp_for_{init,update}* helper functions.  Handle combined loop
1256         constructs.
1257         (expand_omp_for_static_nochunk, expand_omp_for_static_chunk):
1258         Likewise.  Handle fd->collapse > 1 and broken_loop cases.
1259         (expand_omp_simd): Use expand_omp_for_init* helper functions.  Handle
1260         combined loop constructs.
1261         (expand_omp_for): Add inner_stmt argument.  Pass it through to
1262         expand_omp_for_{generic,static_{,no}chunk}.  Use
1263         expand_omp_for_static* even for fd->collapse > 1 and/or broken_loop
1264         cases, just not when fd->have_ordered.
1265         (expand_omp): Adjust expand_omp_for caller.
1266         (lower_omp_for): If gimple_omp_parallel_combined_p, add
1267         OMP_CLAUSE__LOOPTEMP_ clauses to the GIMPLE_FOR stmt.
1269 2013-06-14  Jakub Jelinek  <jakub@redhat.com>
1271         * gimple-pretty-print.c (dump_gimple_omp_for): Don't handle
1272         GF_OMP_FOR_KIND_FOR_SIMD.
1273         * gimple.h (GF_OMP_FOR_KIND_FOR_SIMD): Remove.
1274         (GF_OMP_FOR_COMBINED): New.
1275         (gimple_omp_for_combined_p, gimple_omp_for_set_combined_p): New
1276         inline functions.
1277         * gimplify.c (is_gimple_stmt): Don't handle OMP_FOR_SIMD.
1278         (find_combined_omp_for): New function.
1279         (gimplify_omp_for): Handle combined OMP_DISTRIBUTE and OMP_FOR
1280         loops.
1281         * Makefile.in (c-family/c-omp.o): Depend on $(C_PRAGMA_H).
1282         * omp-low.c (build_outer_var_ref): Fix up simd handling.
1283         (check_omp_nesting_restrictions): Don't handle
1284         GF_OMP_FOR_KIND_FOR_SIMD.
1285         * tree.def (OMP_FOR_SIMD): Remove.
1286         * tree-pretty-print.c (dump_generic_node): Don't handle OMP_FOR_SIMD.
1287         Handle NULL OMP_FOR_INIT.
1289 2013-06-12  Jakub Jelinek  <jakub@redhat.com>
1291         * gimplify.c (gimplify_scan_omp_clauses): Handle
1292         OMP_CLAUSE_THREAD_LIMIT.
1293         * tree-pretty-print.c (dump_omp_clause): Likewise.
1294         * tree.c (omp_clause_num_ops, omp_clause_code_name): Add entries for
1295         OMP_CLAUSE_THREAD_LIMIT.
1296         * tree.h (enum omp_clause_code): Add OMP_CLAUSE_THREAD_LIMIT.
1297         (OMP_CLAUSE_THREAD_LIMIT_EXPR): Define.
1299 2013-06-04  Jakub Jelinek  <jakub@redhat.com>
1301         * gimplify.c (gimplify_scan_omp_clauses): Handle array
1302         sections on OMP_CLAUSE_{MAP,TO,FROM} clauses, handle
1303         OMP_CLAUSE_DEPEND clause.
1304         (gimplify_adjust_omp_clauses): Handle array sections on
1305         OMP_CLAUSE_MAP, handle OMP_CLAUSE_DEPEND clause.
1306         * tree.c (omp_clause_num_ops): OMP_CLAUSE_{MAP,TO,FROM}
1307         now have 2 arguments, move OMP_CLAUSE_UNIFORM before these
1308         3.
1309         (omp_clause_code_name): Adjust for OMP_CLAUSE_UNIFORM movement.
1310         (walk_tree_1): Adjust to handle 2 arguments of
1311         OMP_CLAUSE_{MAP,TO,FROM}.
1312         * tree-pretty-print.c (dump_omp_clause): For OMP_CLAUSE_{MAP,TO,FROM}
1313         print OMP_CLAUSE_SIZE, and for OMP_CLAUSE_MAP handle
1314         OMP_CLAUSE_MAP_POINTER.
1315         * tree.h (enum omp_clause_code): Move OMP_CLAUSE_UNIFORM before
1316         OMP_CLAUSE_{MAP,TO,FROM}.
1317         (OMP_CLAUSE_SIZE): Define.
1318         (enum omp_clause_map_kind): Add OMP_CLAUSE_MAP_POINTER.
1319         * omp-low.c (scan_sharing_clauses): Handle OMP_CLAUSE_DEPEND.
1321 2013-05-29  Jakub Jelinek  <jakub@redhat.com>
1323         * omp-builtins.def (BUILT_IN_OMP_GET_TEAM_NUM,
1324         BUILT_IN_OMP_GET_NUM_TEAMS): New built-ins.
1325         * omp-low.c (extract_omp_for_data, expand_omp_for_static_nochunk,
1326         expand_omp_for_static_chunk): Handle #pragma omp distribute.
1327         (expand_omp_for): Add assertion for non-finished distribute collapse
1328         > 1 support.
1329         (check_omp_nesting_restrictions): Allow orphaned distribute construct.
1331         * omp-low.c (check_omp_nesting_restrictions): Add some
1332         accelerator related nesting restrictions.
1333         (scan_omp_1_stmt): Call check_omp_nesting_restrictions
1334         even for GOMP_taskgroup_{start,end}.
1335         * gimplify.c (omp_notice_threadprivate_variable): Fix a typo.
1336         (gimplify_body): For functions with "omp declare target" attribute
1337         add ORT_TARGET region around the body.
1339 2013-05-27  Jakub Jelinek  <jakub@redhat.com>
1341         * tree.def (OMP_TEAMS, OMP_TARGET_DATA, OMP_TARGET,
1342         OMP_TARGET_UPDATE): New tree codes.
1343         * tree-cfg.c (make_edges): Handle GIMPLE_OMP_TARGET
1344         and GIMPLE_OMP_TEAMS.
1345         * omp-low.c (scan_sharing_clauses): Handle OMP_CLAUSE_DIST_SCHEDULE.
1346         * gimple-low.c (lower_stmt): Handle GIMPLE_OMP_TARGET
1347         and GIMPLE_OMP_TEAMS.
1348         * tree.h (OMP_TEAMS_BODY, OMP_TEAMS_CLAUSES, OMP_TARGET_DATA_BODY,
1349         OMP_TARGET_DATA_CLAUSES, OMP_TARGET_BODY, OMP_TARGET_CLAUSES,
1350         OMP_TARGET_UPDATE_CLAUSES): Define.
1351         * tree-nested.c (convert_nonlocal_reference_stmt,
1352         convert_local_reference_stmt, convert_gimple_call): Handle
1353         GIMPLE_OMP_TARGET and GIMPLE_OMP_TEAMS.
1354         * tree-inline.c (estimate_num_insns): Likewise.
1355         (remap_gimple_stmt): Likewise.  Adjust gimple_build_omp_for
1356         caller.
1357         * gimple.def: Adjust comments describing OMP_CLAUSEs.
1358         (GIMPLE_OMP_TARGET, GIMPLE_OMP_TEAMS): New GIMPLE stmts.
1359         * tree-parloops.c (create_parallel_loop): Adjust gimple_build_omp_for
1360         caller.
1361         * tree-pretty-print.c (dump_generic_node): Handle OMP_TEAMS,
1362         OMP_TARGET, OMP_TARGET_DATA and OMP_TARGET_UPDATE.
1363         * gimple.h (GF_OMP_TARGET_KIND_MASK, GF_OMP_TARGET_KIND_REGION,
1364         GF_OMP_TARGET_KIND_DATA, GF_OMP_TARGET_KIND_UPDATE): New.
1365         (gimple_build_omp_for): Add kind argument to prototype.
1366         (gimple_build_omp_target, gimple_build_omp_teams): New prototypes.
1367         (gimple_has_substatements): Handle GIMPLE_OMP_TARGET and
1368         GIMPLE_OMP_TEAMS.
1369         (gimple_omp_subcode): Change GIMPLE_OMP_SINGLE to GIMPLE_OMP_TEAMS.
1370         (gimple_omp_target_clauses, gimple_omp_target_clauses_ptr,
1371         gimple_omp_target_set_clauses, gimple_omp_target_kind,
1372         gimple_omp_target_set_kind, gimple_omp_teams_clauses,
1373         gimple_omp_teams_clauses_ptr, gimple_omp_teams_set_clauses): New
1374         inline functions.
1375         (gimple_return_set_retval): Handle GIMPLE_OMP_TARGET and
1376         GIMPLE_OMP_TEAMS.
1377         * gimple.c (gimple_build_omp_for): Add kind argument, call
1378         gimple_omp_for_set_kind.
1379         (gimple_build_omp_target, gimple_build_omp_teams): New functions.
1380         (walk_gimple_op, walk_gimple_stmt, gimple_copy): Handle
1381         GIMPLE_OMP_TARGET and GIMPLE_OMP_TEAMS.
1382         * gimple-pretty-print.c (dump_gimple_omp_target,
1383         dump_gimple_omp_teams): New functions.
1384         (pp_gimple_stmt_1): Handle GIMPLE_OMP_TARGET and GIMPLE_OMP_TEAMS.
1385         * gimplify.c (enum gimplify_omp_var_data): Add GOVD_MAP.
1386         (enum omp_region_type): Add ORT_TEAMS, ORT_TARGET and ORT_TARGET_DATA.
1387         (omp_add_variable): Add temporary assertions.
1388         (omp_notice_threadprivate_variable): Complain if threadprivate vars
1389         appear in target region.
1390         (omp_notice_variable): ORT_TARGET, ORT_TARGET_DATA and ORT_TEAMS
1391         handling.
1392         (omp_check_private): Ignore ORT_TARGET and ORT_TARGET_DATA regions.
1393         (gimplify_scan_omp_clauses): Handle OMP_CLAUSE_MAP, OMP_CLAUSE_TO,
1394         OMP_CLAUSE_FROM, OMP_CLAUSE_NUM_TEAMS, OMP_CLAUSE_DIST_SCHEDULE
1395         and OMP_CLAUSE_DEVICE.
1396         (gimplify_adjust_omp_clauses): Likewise.
1397         (gimplify_adjust_omp_clauses_1): Handle GOVD_MAP.  Fix up
1398         check for privatization by also testing for GOVD_LINEAR.
1399         (gimplify_omp_for): Adjust gimple_build_omp_for caller.
1400         Clear *expr_p.
1401         (gimplify_omp_workshare): Handle also OMP_TARGET, OMP_TARGET_DATA
1402         and OMP_TEAMS.  Clear *expr_p.
1403         (gimplify_omp_target_update): New function.
1404         (gimplify_expr): Handle OMP_TARGET, OMP_TARGET_DATA, OMP_TARGET_UPDATE
1405         and OMP_TEAMS.
1407 2013-05-20  Jakub Jelinek  <jakub@redhat.com>
1409         * omp-low.c (expand_omp_simd): For collapse > 1 loops,
1410         if some loop condition might be not true initially, add runtime
1411         test and skip the whole loop.
1413 2013-05-14  Jakub Jelinek  <jakub@redhat.com>
1415         * cfgloop.h (struct loop): Add safelen and force_vect fields.
1416         * function.h (struct function): Add has_force_vect_loops field.
1417         * omp-low.c (expand_omp_simd): If !broken_loop, create loop for
1418         the simd region and set safelen and force_vect fields in it.
1419         * tree-vectorizer.c (vectorize_loops): If loop has force_vect set,
1420         vectorize it even if flag_vectorize isn't set.  Clear loop->force_vect
1421         after vectorization.
1422         * tree-ssa-loop.c (gate_tree_vectorize): Return true even
1423         cfun->has_force_vect_loops.
1424         * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely_1): Don't
1425         unroll loops with loop->force_vect.
1426         * tree-vect-data-refs.c (vect_analyze_data_ref_dependence): For
1427         unknown or bad data dependency, if loop->safelen is non-zero, just
1428         decrease *max_vf to loop->safelen if needed and return false.
1429         * tree-if-conv.c (main_tree_if_conversion): If-convert also loops with
1430         loop->force_vect.
1431         (gate_tree_if_conversion): Return true even if
1432         cfun->has_force_vect_loops.
1434 2013-05-09  Jakub Jelinek  <jakub@redhat.com>
1436         * tree.c (omp_declare_simd_clauses_equal): New function.
1437         (attribute_value_equal): Call it for -fopenmp if
1438         TREE_VALUE of the attributes are both OMP_CLAUSEs.
1439         * tree.h (omp_declare_simd_clauses_equal): Declare.
1441 2013-04-30  Jakub Jelinek  <jakub@redhat.com>
1443         * gimple-pretty-print.c (dump_gimple_omp_atomic_load,
1444         dump_gimple_omp_atomic_store): Handle gimple_omp_atomic_seq_cst_p.
1445         * gimple.h (enum gf_mask): Add GF_OMP_ATOMIC_SEQ_CST.
1446         (gimple_omp_atomic_set_seq_cst, gimple_omp_atomic_seq_cst_p): New
1447         inline functions.
1448         * omp-low.c (expand_omp_atomic_load, expand_omp_atomic_store,
1449         expand_omp_atomic_fetch_op): If gimple_omp_atomic_seq_cst_p,
1450         pass MEMMODEL_SEQ_CST instead of MEMMODEL_RELAXED to the builtin.
1451         * gimplify.c (gimplify_omp_atomic): Handle OMP_ATOMIC_SEQ_CST.
1452         * tree-pretty-print.c (dump_generic_node): Handle OMP_ATOMIC_SEQ_CST.
1453         * tree.def (OMP_ATOMIC): Add comment that OMP_ATOMIC* must stay
1454         consecutive.
1455         * tree.h (OMP_ATOMIC_SEQ_CST): Define.
1457         * omp-low.c (check_omp_nesting_restrictions): Diagnose
1458         OpenMP constructs nested inside simd region.  Don't treat
1459         #pragma omp simd as work-sharing region.  Disallow work-sharing
1460         constructs inside of critical region.  Complain if ordered
1461         region is nested inside of parallel region without loop
1462         region in between.
1463         (scan_omp_1_stmt): Call check_omp_nesting_restrictions even
1464         for GOMP_{cancel{,lation_point},taskyield,taskwait} calls.
1466 2013-04-23  Jakub Jelinek  <jakub@redhat.com>
1468         * Makefile.in (omp-low.o): Depend on $(TARGET_H).
1469         * gimplify.c (gimplify_adjust_omp_clauses): For linear clauses
1470         if outer_context is non-NULL, but not ORT_COMBINED_PARALLEL,
1471         call omp_notice_variable.  Remove aligned clauses that can't
1472         be handled yet.
1473         * omp-low.c: Include target.h.
1474         (scan_sharing_clauses): For aligned clauses with global arrays
1475         register local replacement.
1476         (omp_clause_aligned_alignment): New function.
1477         (lower_rec_input_clauses): For aligned clauses for global
1478         arrays or automatic pointers emit __builtin_assume_aligned
1479         before the loop if possible.
1480         (expand_omp_regimplify_p, expand_omp_build_assign): New functions.
1481         (expand_omp_simd): Use them.  Handle pointer iterators and broken
1482         loops.
1483         (lower_omp_for): Call lower_omp on gimple_omp_body_ptr after
1484         calling lower_rec_input_clauses, not before it.
1486 2013-04-19  Jakub Jelinek  <jakub@redhat.com>
1488         * tree.h (OMP_CLAUSE_LINEAR_NO_COPYIN,
1489         OMP_CLAUSE_LINEAR_NO_COPYOUT): Define.
1490         * omp-low.c (extract_omp_for_data): Handle #pragma omp simd.
1491         (build_outer_var_ref): For #pragma omp simd allow linear etc.
1492         clauses to bind even to private vars.
1493         (scan_sharing_clauses): Handle OMP_CLAUSE_LINEAR, OMP_CLAUSE_ALIGNED
1494         and OMP_CLAUSE_SAFELEN.
1495         (lower_rec_input_clauses): Handle OMP_CLAUSE_LINEAR.  Don't emit
1496         a GOMP_barrier call for firstprivate/lastprivate in #pragma omp simd.
1497         (lower_lastprivate_clauses): Handle also OMP_CLAUSE_LINEAR.
1498         (expand_omp_simd): New function.
1499         (expand_omp_for): Handle #pragma omp simd.
1500         * gimplify.c (enum gimplify_omp_var_data): Add GOVD_LINEAR and
1501         GOVD_ALIGNED, add GOVD_LINEAR into GOVD_DATA_SHARE_CLASS.
1502         (enum omp_region_type): Add ORT_SIMD.
1503         (gimple_add_tmp_var, gimplify_var_or_parm_decl, omp_check_private,
1504         omp_firstprivatize_variable, omp_notice_variable): Handle ORT_SIMD
1505         like ORT_WORKSHARE.
1506         (omp_is_private): Likewise.  Add SIMD argument, tweak diagnostics
1507         and add extra errors in simd constructs.
1508         (gimplify_scan_omp_clauses, gimplify_adjust_omp_clauses): Handle
1509         OMP_CLAUSE_LINEAR, OMP_CLAUSE_ALIGNED and OMP_CLAUSE_SAFELEN.
1510         (gimplify_adjust_omp_clauses_1): Handle GOVD_LASTPRIVATE and
1511         GOVD_ALIGNED.
1512         (gimplify_omp_for): Handle #pragma omp simd.
1514 2013-04-10  Jakub Jelinek  <jakub@redhat.com>
1516         * builtin-types.def (DEF_FUNCTION_TYPE_8): Document.
1517         (BT_FN_VOID_OMPFN_PTR_UINT, BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG,
1518         BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_LONG): Remove.
1519         (BT_FN_VOID_OMPFN_PTR_UINT_UINT_UINT,
1520         BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_UINT,
1521         BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_LONG_UINT): New.
1522         * gimplify.c (gimplify_scan_omp_clauses, gimplify_adjust_omp_clauses):
1523         Handle OMP_CLAUSE_PROC_BIND.
1524         * omp-builtins.def (BUILT_IN_GOMP_TASKGROUP_START,
1525         BUILT_IN_GOMP_TASKGROUP_END, BUILT_IN_GOMP_PARALLEL_LOOP_STATIC,
1526         BUILT_IN_GOMP_PARALLEL_LOOP_DYNAMIC,
1527         BUILT_IN_GOMP_PARALLEL_LOOP_GUIDED,
1528         BUILT_IN_GOMP_PARALLEL_LOOP_RUNTIME, BUILT_IN_GOMP_PARALLEL,
1529         BUILT_IN_GOMP_PARALLEL_SECTIONS): New built-ins.
1530         (BUILT_IN_GOMP_PARALLEL_LOOP_STATIC_START,
1531         BUILT_IN_GOMP_PARALLEL_LOOP_DYNAMIC_START,
1532         BUILT_IN_GOMP_PARALLEL_LOOP_GUIDED_START,
1533         BUILT_IN_GOMP_PARALLEL_LOOP_RUNTIME_START,
1534         BUILT_IN_GOMP_PARALLEL_START, BUILT_IN_GOMP_PARALLEL_END,
1535         BUILT_IN_GOMP_PARALLEL_SECTIONS_START): Remove.
1536         * omp-low.c (scan_sharing_clauses): Handle OMP_CLAUSE_PROC_BIND.
1537         (expand_parallel_call): Expand #pragma omp parallel* as
1538         calls to the new GOMP_parallel_* APIs without _start at the end,
1539         instead of GOMP_parallel_*_start followed by fn.omp_fn.N call,
1540         followed by GOMP_parallel_end.  Handle OMP_CLAUSE_PROC_BIND.
1541         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1,
1542         call_may_clobber_ref_p_1): Handle BUILT_IN_GOMP_TASKGROUP_END
1543         instead of BUILT_IN_GOMP_PARALLEL_END.
1545 2013-03-27  Jakub Jelinek  <jakub@redhat.com>
1547         * gimple-pretty-print.c (dump_gimple_omp_for): Handle different
1548         GIMPLE_OMP_FOR kinds.
1549         * tree.def (OMP_SIMD, OMP_FOR_SIMD, OMP_DISTRIBUTE): New tree codes.
1550         * gimple.h (enum gf_mask): Add GF_OMP_FOR_KIND_MASK,
1551         GF_OMP_FOR_KIND_FOR, GF_OMP_FOR_KIND_SIMD, GF_OMP_FOR_KIND_FOR_SIMD
1552         and GF_OMP_FOR_KIND_DISTRIBUTE.
1553         (gimple_omp_for_kind, gimple_omp_for_set_kind): New inline functions.
1554         * gimplify.c (is_gimple_stmt, gimplify_omp_for, gimplify_expr): Handle
1555         OMP_SIMD, OMP_FOR_SIMD and OMP_DISTRIBUTE.
1556         * tree.c (omp_clause_num_ops, omp_clause_code_name, walk_tree_1):
1557         Handle new OpenMP 4.0 clauses.
1558         * tree-pretty-print.c (dump_omp_clause): Likewise.
1559         (dump_generic_node): Handle OMP_SIMD, OMP_FOR_SIMD and OMP_DISTRIBUTE.
1560         * tree.h (enum omp_clause_code): Add OMP_CLAUSE_LINEAR,
1561         OMP_CLAUSE_ALIGNED, OMP_CLAUSE_DEPEND, OMP_CLAUSE_FROM, OMP_CLAUSE_TO,
1562         OMP_CLAUSE_UNIFORM, OMP_CLAUSE_MAP, OMP_CLAUSE_DEVICE,
1563         OMP_CLAUSE_DIST_SCHEDULE, OMP_CLAUSE_INBRANCH, OMP_CLAUSE_NOTINBRANCH,
1564         OMP_CLAUSE_NUM_TEAMS, OMP_CLAUSE_PROC_BIND, OMP_CLAUSE_SAFELEN,
1565         OMP_CLAUSE_SIMDLEN, OMP_CLAUSE_FOR, OMP_CLAUSE_PARALLEL,
1566         OMP_CLAUSE_SECTIONS and OMP_CLAUSE_TASKGROUP.
1567         (OMP_LOOP_CHECK): Define.
1568         (OMP_FOR_BODY, OMP_FOR_CLAUSES, OMP_FOR_INIT, OMP_FOR_COND,
1569         OMP_FOR_INCR, OMP_FOR_PRE_BODY): Use OMP_LOOP_CHECK instead of
1570         OMP_FOR_CHECK.
1571         (OMP_CLAUSE_DECL): Extend check range up to OMP_CLAUSE_MAP.
1572         (OMP_CLAUSE_LINEAR_STEP, OMP_CLAUSE_ALIGNED_ALIGNMENT,
1573         OMP_CLAUSE_NUM_TEAMS_EXPR, OMP_CLAUSE_DEVICE_ID,
1574         OMP_CLAUSE_DIST_SCHEDULE_CHUNK_EXPR, OMP_CLAUSE_SAFELEN_EXPR,
1575         OMP_CLAUSE_SIMDLEN_EXPR): Define.
1576         (enum omp_clause_depend_kind, enum omp_clause_map_kind,
1577         enum omp_clause_proc_bind_kind): New enums.
1578         (OMP_CLAUSE_DEPEND_KIND, OMP_CLAUSE_MAP_KIND,
1579         OMP_CLAUSE_PROC_BIND_KIND): Define.
1580         (struct tree_omp_clause): Add subcode.depend_kind, subcode.map_kind
1581         and subcode.proc_bind_kind.
1582         (find_omp_clause): New prototype.
1583         * omp-builtins.def (BUILT_IN_GOMP_CANCEL,
1584         BUILT_IN_GOMP_CANCELLATION_POINT): New built-ins.
1585         * tree-flow.h (find_omp_clause): Remove prototype.
1587 Copyright (C) 2013-2014 Free Software Foundation, Inc.
1589 Copying and distribution of this file, with or without modification,
1590 are permitted in any medium without royalty provided the copyright
1591 notice and this notice are preserved.