Do not wrap pragma simd for loop condition in a CLEANUP_POINT_EXPR.
Instead, use cp_truthvalue_conversion().
Allow alternate error message for return out of a pragma simd for loop.
Error correctly in the C++ FE for invalid storage classes specified in
a pragma simd loop.
Handle NE_EXPR in extract_omp_for_data, but only when -fcilkplus is used.
Add new Cilk Plus pragma simd execution tests.

testsuite/c-c++-common/cilk-plus/PS/p_simd_test1.c is currently
failing due to missing reduction functionality for OMP_SIMD.
	* omp_lib.f90.in (omp_get_dynamic, omp_get_nested,
	omp_in_parallel, omp_get_max_threads, omp_get_num_procs,
	omp_get_num_threads, omp_get_thread_num, omp_get_thread_limit,
	omp_set_max_active_levels, omp_get_max_active_levels,
	omp_get_level, omp_get_ancestor_thread_num,
	omp_get_team_size, omp_get_active_level, omp_in_final,
	omp_get_cancellation, omp_get_default_device,
	omp_get_num_devices, omp_get_num_teams, omp_get_team_num): Remove
	useless use omp_lib_kinds.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gomp-4_0-branch@199994 138bc75d-0d04-0410-961f-82ee72b054a4
	* fortran.c (omp_is_initial_device): Add ialias_redirect.
	(omp_is_initial_device_): New function.
	* omp_lib.f90.in (omp_is_initial_device): New interface.
	* omp.h.in (omp_is_initial_device): New prototype.
	* libgomp.map (omp_is_initial_device, omp_is_initial_device_):
	Export @@OMP_4.0.
	* env.c (omp_is_initial_device): New function.  Add ialias for it.
	* omp_lib.h.in (omp_is_initial_device): New external.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gomp-4_0-branch@199995 138bc75d-0d04-0410-961f-82ee72b054a4
	* gimplify.c (gimplify_scan_omp_clauses): Handle
	OMP_CLAUSE_THREAD_LIMIT.
	* tree-pretty-print.c (dump_omp_clause): Likewise.
	* tree.c (omp_clause_num_ops, omp_clause_code_name): Add entries for
	OMP_CLAUSE_THREAD_LIMIT.
	* tree.h (enum omp_clause_code): Add OMP_CLAUSE_THREAD_LIMIT.
	(OMP_CLAUSE_THREAD_LIMIT_EXPR): Define.
cp/
	* semantics.c (finish_omp_clauses): Handle OMP_CLAUSE_THREAD_LIMIT.
	* parser.c (cp_parser_omp_clause_name): Handle thread_limit clause.
	(cp_parser_omp_clause_thread_limit): New function.
	(cp_parser_omp_all_clauses): Handle PRAGMA_OMP_CLAUSE_THREAD_LIMIT.
	(OMP_TEAMS_CLAUSE_MASK): Replace PRAGMA_OMP_CLAUSE_NUM_THREADS
	with PRAGMA_OMP_CLAUSE_THREAD_LIMIT.
	* pt.c (tsubst_omp_clauses): Handle OMP_CLAUSE_THREAD_LIMIT.
c-family/
	* c-pragma.h (enum pragma_omp_clause): Add
	PRAGMA_OMP_CLAUSE_THREAD_LIMIT.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gomp-4_0-branch@199997 138bc75d-0d04-0410-961f-82ee72b054a4
	* semantics.c (finish_omp_clause): Don't mark references addressable.
	For OMP_CLAUSE_{TO,FROM} detect same decl appearing more than once
	in motion clauses.
	* parser.c (cp_parser_omp_var_list_no_open): Handle [ expression ]
	notation in array section specification.
	(cp_parser_omp_all_clauses): Don't require to/from clauses to be
	first.
	(cp_parser_omp_target_update): Adjust diagnostics.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gomp-4_0-branch@199998 138bc75d-0d04-0410-961f-82ee72b054a4
Merge remote-tracking branch 'origin/gomp-4_0-branch' into cilk-in-gomp
New reduction tests for Cilk Plus pragma simd.
Remove some unneeded FIXMEs.
	* decl2.c (cp_omp_mappable_type): No longer static.  Handle array
	types and recurse for FIELD_DECL types.
	* semantics.c (handle_omp_array_sections_1): Call
	convert_from_reference before testing for pointer_based_p.
	(finish_omp_clauses): Complain if OMP_CLAUSE_{MAP,TO,FROM}
	decls or array sections don't have cp_omp_mappable_type.
	* cp-tree.h (cp_omp_mappable_type): New prototype.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gomp-4_0-branch@200094 138bc75d-0d04-0410-961f-82ee72b054a4
	* gimple-pretty-print.c (dump_gimple_omp_for): Don't handle
	GF_OMP_FOR_KIND_FOR_SIMD.
	* gimple.h (GF_OMP_FOR_KIND_FOR_SIMD): Remove.
	(GF_OMP_FOR_COMBINED): New.
	(gimple_omp_for_combined_p, gimple_omp_for_set_combined_p): New
	inline functions.
	* gimplify.c (is_gimple_stmt): Don't handle OMP_FOR_SIMD.
	(find_combined_omp_for): New function.
	(gimplify_omp_for): Handle combined OMP_DISTRIBUTE and OMP_FOR
	loops.
	* Makefile.in (c-family/c-omp.o): Depend on $(C_PRAGMA_H).
	* omp-low.c (build_outer_var_ref): Fix up simd handling.
	(check_omp_nesting_restrictions): Don't handle
	GF_OMP_FOR_KIND_FOR_SIMD.
	* tree.def (OMP_FOR_SIMD): Remove.
	* tree-pretty-print.c (dump_generic_node): Don't handle OMP_FOR_SIMD.
	Handle NULL OMP_FOR_INIT.
c/
	* c-parser.c (c_parser_omp_for): Comment out OMP_FOR_SIMD uses.
	(c_parser_omp_parallel): Call c_omp_split_clauses instead of
	c_split_parallel_clauses, adjust the code for different API
	of the new function.
cp/
	* parser.c (cp_parser_omp_all_clauses): Add defaulted finish_p
	argument.  Don't call finish_omp_clauses if it is false.
	(cp_parser_omp_for_loop): Change last argument to cclauses,
	and adjust uses to grab parallel clauses from the array of all
	the split clauses.
	(cp_omp_split_clauses): New function.
	(cp_parser_omp_simd): Add p_name, mask and cclauses arguments.
	Allow the function to be called also when parsing combined constructs.
	(cp_parser_omp_sections): Likewise.
	(cp_parser_omp_for): Add p_name, mask and cclauses arguments.
	Allow the function to be called also when parsing combined constructs,
	and call cp_parser_omp_simd when parsing for simd.
	(cp_parser_omp_parallel): Likewise.
	(cp_parser_omp_distribute): Likewise.
	(cp_parser_omp_teams): Likewise.
	(cp_parser_omp_target): If next token is teams, call
	cp_parser_omp_teams and parse it as combined construct.
	(cp_parser_omp_declare_simd): Pass false as last argument to
	cp_parser_omp_all_clauses.
	(cp_parser_omp_construct): Adjust callers of cp_parser_omp_simd,
	cp_parser_omp_sections, cp_parser_omp_for, cp_parser_omp_parallel,
	cp_parser_omp_distribute and cp_parser_omp_teams.
	* pt.c (tsubst_expr): Don't handle OMP_FOR_SIMD.  Handle NULL
	OMP_FOR_INIT.
	* semantics.c (finish_omp_for): Don't handle OMP_FOR_SIMD.
	* cp-tree.h (OMP_FOR_GIMPLIFYING_P): Adjust comment.
	* cp-gimplify.c (cp_gimplify_expr, cp_genericize_r): Don't handle
	OMP_FOR_SIMD.
c-family/
	* c-common.h: Move omp_clause_mask code earlier in the file.
	(c_omp_split_clauses): New prototype.
	(c_split_parallel_clauses): Removed.
	* c-pragma.h (enum pragma_kind): Add
	PRAGMA_OMP_DISTRIBUTE_PARALLEL_FOR,
	PRAGMA_OMP_DISTRIBUTE_PARALLEL_FOR_SIMD,
	PRAGMA_OMP_DISTRIBUTE_SIMD, PRAGMA_OMP_TARGET_TEAMS,
	PRAGMA_OMP_TARGET_TEAMS_DISTRIBUTE,
	PRAGMA_OMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR,
	PRAGMA_OMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD,
	PRAGMA_OMP_TEAMS_DISTRIBUTE,
	PRAGMA_OMP_TEAMS_DISTRIBUTE_PARALLEL_FOR,
	and PRAGMA_OMP_TEAMS_DISTRIBUTE_PARALLEL_FOR_SIMD.
	* c-omp.c: Include c-pragma.h.
	(c_omp_split_clauses): New function.
	(c_split_parallel_clauses): Remove.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gomp-4_0-branch@200095 138bc75d-0d04-0410-961f-82ee72b054a4
Merge remote-tracking branch 'origin/gomp-4_0-branch' into cilk-in-gomp

Conflicts:
	gcc/c-family/c-common.h
Remove OMP_FOR_SIMD to fix gomp-4_0-branch merge fallout.