1. 08 Nov, 2013 1 commit
    • common.opt (fcheck-pointer-bounds): Move to ... · 05ff7470
              * common.opt (fcheck-pointer-bounds): Move to ...
              * c-family/c.opt: ... here.
              * langhooks-def.h (LANG_HOOKS_CHKP_SUPPORTED): Remove.
              (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_CHKP_SUPPORTED.
              * langhooks.h (lang_hooks): Remove chkp_supported field.
              * toplev.c (process_options): Remove chkp_supported check.
      
      From-SVN: r204563
      Ilya Enkovich committed
  2. 30 Oct, 2013 1 commit
    • target.def (builtin_chkp_function): New. · f481a2ce
              * target.def (builtin_chkp_function): New.
              (chkp_bound_type): New.
              (chkp_bound_mode): New.
              (fn_abi_va_list_bounds_size): New.
              (load_bounds_for_arg): New.
              (store_bounds_for_arg): New.
              * targhooks.h (default_load_bounds_for_arg): New.
              (default_store_bounds_for_arg): New.
              (default_fn_abi_va_list_bounds_size): New.
              (default_chkp_bound_type): New.
              (default_chkp_bound_mode): New.
              (default_builtin_chkp_function): New.
              * targhooks.c (default_load_bounds_for_arg): New.
              (default_store_bounds_for_arg): New.
              (default_fn_abi_va_list_bounds_size): New.
              (default_chkp_bound_type): New.
              (default_chkp_bound_mode); New.
              (default_builtin_chkp_function): New.
              * doc/tm.texi.in (TARGET_FN_ABI_VA_LIST_BOUNDS_SIZE): New.
              (TARGET_LOAD_BOUNDS_FOR_ARG): New.
              (TARGET_STORE_BOUNDS_FOR_ARG): New.
              (TARGET_BUILTIN_CHKP_FUNCTION): New.
              (TARGET_CHKP_BOUND_TYPE): New.
              (TARGET_CHKP_BOUND_MODE): New.
              * doc/tm.texi: Regenerated.
              * langhooks.h (lang_hooks): Add chkp_supported field.
              * langhooks-def.h (LANG_HOOKS_CHKP_SUPPORTED): New.
              (LANG_HOOKS_INITIALIZER); Add LANG_HOOKS_CHKP_SUPPORTED.
      
      From-SVN: r204195
      Ilya Enkovich committed
  3. 29 Oct, 2013 1 commit
    • Added _Cilk_spawn and _Cilk_sync (2 cilk keywords) for C. · 939b37da
      gcc/ChangeLog:
      2013-10-29  Balaji V. Iyer  <balaji.v.iyer@intel.com>
      
      	* builtins.c (is_builtin_name): Added a check for __cilkrts_detach and
      	__cilkrts_pop_frame.  If matched, then return true for built-in
      	function name.
      	(expand_builtin): Added BUILT_IN_CILK_DETACH and
      	BUILT_IN_CILK_POP_FRAME case.
      	* langhooks-def.h (lhd_install_body_with_frame_cleanup): New prototype.
      	(lhs_cilk_detect_spawn): Likewise.
      	(LANG_HOOKS_DECLS): Added LANG_HOOKS_CILKPLUS.
      	(LANG_HOOKS_CILKPLUS_DETECT_SPAWN_AND_UNWRAP): New #define.
      	(LANG_HOOKS_CILKPLUS_FRAME_CLEANUP): Likewise.
      	(LANG_HOOKS_CILKPLUS_GIMPLIFY_SPAWN): Likewise.
      	(LANG_HOOKS_CILKPLUS): Likewise.
      	* tree.h (CILK_SPAWN_FN): Likewise.
      	* builtin.def (DEF_CILK_BUILTIN_STUB): Likewise.
      	* Makefile.in (C_COMMON_OBJS): Added c-family/cilk.o.
      	(OBJS): Added cilk-common.o.
      	(CILK_H): Added a new define.
      	(gimplify.o): Added CILK_H into dependency list.
      	(builtins.o): Likewise.
      	(ipa-inline.o): Likewise.
      	(ipa-inline-analysis.o): Likewise.
      	(BUILTINS_DEF): Added cilk-builtins.def.
      	* langhooks.c (lhd_install_body_with_frame_cleanup): New function.
      	(lhd_cilk_detect_spawn): Likewise.
      	* langhooks.h (lang_hooks_for_cilkplus): New struct.
      	(struct lang_hooks): Added new field called "cilkplus."
      	* cilk-common.c: New file.
      	* cilk.h: Likewise.
      	* cilk-builtins.def: Likewise.
      	* cppbuiltin.c (define_builtin_macros_for_compilation_flags): Added
      	"__cilk" macro and set it to 200.
      	* function.h (struct function::cilk_frame_decl): New field.
      	(struct function::is_cilk_function): Likewise.
      	(struct function::calls_cilk_spawn): Likewise.
      	* gimplify.c (gimplify_call_expr): Added a check if the function call
      	being gimplified is a spawn detach point.  If so, then add pop_frame
      	and detach function calls.
      	(gimplify_expr): Added a CILK_SPAWN_STMT and CILK_SYNC_STMT case
      	for gimplifying _Cilk_spawn and _Cilk_sync statements.
      	(gimplify_return_expr): Added a check for _Cilk_spawn usage in
      	function.  If so, added a _Cilk_sync and gimplified it.
      	(gimplify_modify_expr): Added a check for _Cilk_spawn in MODIFY and
      	INIT_EXPRs.  If so, then call gimplify_cilk_spawn.
      	* ipa-inline-analysis (initialize_inline_failed): Prevent inlining of
      	spawner function.
      	(can_inline_edge_p): Prevent inling of spawnee function.
      	* ira.c (ira_setup_eliminable_regset): Force usage of frame pointer
      	for functions that use Cilk keywords.
      	* tree-inline.h (struct copy_body_data::remap_var_for_cilk): New field.
      	* tree-pretty-print.c (dump_generic_node): Added CILK_SPAWN_STMT and
      	CILK_SYNC_STMT cases.
      	* tree.def (DEFTREECODE): Added CILK_SPAWN_STMT and CILK_SYNC_STMT
      	trees.
      	* generic.texi (CILK_SPAWN_STMT): Added documentation for _Cilk_spawn.
      	(CILK_SYNC_STMT): Added documentation for _Cilk_sync.
      	* passes.texi (Cilk Keywords): New section that describes the compiler
      	code changes for handling Cilk Keywords.
      
      gcc/c/ChangeLog:
      2013-10-29  Balaji V. Iyer  <balaji.v.iyer@intel.com>
      
      	* c-decl.c (finish_function): Added a call for insert_cilk_frame when
      	a spawning function is found.
      	* c-objc-common.h (LANG_HOOKS_CILKPLUS_GIMPLIFY_SPAWN): New #define.
      	(LANG_HOOKS_CILKPLUS_FRAME_CLEANUP): Likewise.
      	(LANG_HOOKS_CILKPLUS_DETECT_SPAWN_AND_UNWRAP): Likewise.
      	* c-parser.c (c_parser_statement_after_labels): Added RID_CILK_SYNC
      	case.
      	(c_parser_postfix_expression): Added RID_CILK_SPAWN case.
      	* c-typeck.c (build_compound_expr): Reject _Cilk_spawn in a comma
      	expr.
      	(c_finish_return): Added a check to reject _Cilk_spawn in return
      	expression.
      	(build_cilk_spawn): New function.
      	(build_cilk_sync): Likewise.
      	* Makefile.in (c-decl.o): Added cilk.h in dependency list.
      
      gcc/c-family/ChangeLog
      2013-10-29  Balaji V. Iyer  <balaji.v.iyer@intel.com>
      
      	* c-common.c (c_common_reswords[]): Added _Cilk_spawn and _Cilk_sync
      	fields.
      	(c_define_builtins): Called cilk_init_builtins if Cilk Plus is
      	enabled.
      	* c-common.h (enum rid): Added RID_CILK_SPAWN and RID_CILK_SYNC.
      	(insert_cilk_frame): New prototype.
      	(cilk_init_builtins): Likewise.
      	(gimplify_cilk_spawn): Likewise.
      	(c_cilk_install_body_w_frame_cleanup): Likewise.
      	(cilk_detect_spawn_and_unwrap): Likewise.
      	(cilk_set_spawn_marker): Likewise.
      	(build_cilk_sync): Likewise.
      	(build_cilk_spawn): Likewise.
      	* cilk.c: New file.
      
      gcc/lto/ChangeLog
      2013-10-29  Balaji V. Iyer  <balaji.v.iyer@intel.com>
      
      	* Make-lang.in (lto/lto-lang.o): Added cilk.h in dependency list.
      	* lto-lang.c (lto_init): Added a call to cilk_init_builtins if Cilk
      	Plus is enabled.
      
      gcc/testsuite/ChangeLog
      2013-10-29  Balaji V. Iyer  <balaji.v.iyer@intel.com>
      
      	* c-c++-common/cilk-plus/CK/compound_cilk_spawn.c: New test.
      	* c-c++-common/cilk-plus/CK/concec_cilk_spawn.c: Likewise.
      	* c-c++-common/cilk-plus/CK/fib.c: Likewise.
      	* c-c++-common/cilk-plus/CK/no_args_error.c: Likewise.
      	* c-c++-common/cilk-plus/CK/spawnee_inline.c: Likewise.
      	* c-c++-common/cilk-plus/CK/spawner_inline.c: Likewise.
      	* c-c++-common/cilk-plus/CK/spawning_arg.c: Likewise.
      	* c-c++-common/cilk-plus/CK/steal_check.c: Likewise.
      	* c-c++-common/cilk-plus/CK/test__cilk.c: Likewise.
      	* c-c++-common/cilk-plus/CK/varargs_test.c: Likewise.
      	* c-c++-common/cilk-plus/CK/sync_wo_spawn.c: Likewise.
      	* c-c++-common/cilk-plus/CK/invalid_spawn.c: Likewise.
      	* c-c++-common/cilk-plus/CK/spawn_in_return.c: Likewise.
      	* c-c++-common/cilk-plus/CK/fib_init_expr_xy.c: Likewise.
      	* c-c++-common/cilk-plus/CK/fib_no_sync.c: Likewise.
      	* c-c++-common/cilk-plus/CK/fib_no_return.c: Likewise.
      	* gcc.dg/cilk-plus/cilk-plus.exp: Added support to run Cilk Keywords
      	test stored in c-c++-common.  Also, added the Cilk runtime's library
      	to the ld_library_path.
      
      From-SVN: r204172
      Balaji V. Iyer committed
  4. 11 Oct, 2013 1 commit
    • target.c: New file. · acf0174b
      libgomp/
      	* target.c: New file.
      	* Makefile.am (libgomp_la_SOURCES): Add target.c.
      	* Makefile.in: Regenerated.
      	* libgomp_g.h (GOMP_task): Add depend argument.
      	(GOMP_barrier_cancel, GOMP_loop_end_cancel,
      	GOMP_sections_end_cancel, GOMP_target, GOMP_target_data,
      	GOMP_target_end_data, GOMP_target_update, GOMP_teams,
      	GOMP_parallel_loop_static, GOMP_parallel_loop_dynamic,
      	GOMP_parallel_loop_guided, GOMP_parallel_loop_runtime,
      	GOMP_parallel, GOMP_cancel, GOMP_cancellation_point,
      	GOMP_taskgroup_start, GOMP_taskgroup_end,
      	GOMP_parallel_sections): New prototypes.
      	* fortran.c (omp_is_initial_device): Add ialias_redirect.
      	(omp_is_initial_device_): New function.
      	(ULP, STR1, STR2, ialias_redirect): Removed.
      	(omp_get_cancellation_, omp_get_proc_bind_, omp_set_default_device_,
      	omp_set_default_device_8_, omp_get_default_device_,
      	omp_get_num_devices_, omp_get_num_teams_, omp_get_team_num_): New
      	functions.
      	* libgomp.map (GOMP_barrier_cancel, GOMP_loop_end_cancel,
      	GOMP_sections_end_cancel, GOMP_target, GOMP_target_data,
      	GOMP_target_end_data, GOMP_target_update, GOMP_teams): Export
      	@@GOMP_4.0.
      	(omp_is_initial_device, omp_is_initial_device_, omp_get_cancellation,
      	omp_get_cancellation_, omp_get_proc_bind, omp_get_proc_bind_,
      	omp_set_default_device, omp_set_default_device_,
      	omp_set_default_device_8_, omp_get_default_device,
      	omp_get_default_device_, omp_get_num_devices, omp_get_num_devices_,
      	omp_get_num_teams, omp_get_num_teams_, omp_get_team_num,
      	omp_get_team_num_): Export @@OMP_4.0.
      	* team.c (struct gomp_thread_start_data): Add place field.
      	(gomp_thread_start): Clear thr->thread_pool and
      	thr->task before returning.  Use gomp_team_barrier_wait_final
      	instead of gomp_team_barrier_wait.  Initialize thr->place.
      	(gomp_new_team): Initialize work_shares_to_free, work_share_cancelled,
      	team_cancelled and task_queued_count fields.
      	(gomp_free_pool_helper): Clear thr->thread_pool and thr->task
      	before calling pthread_exit.
      	(gomp_free_thread): No longer static.  Use
      	gomp_managed_threads_lock instead of gomp_remaining_threads_lock.
      	(gomp_team_start): Add flags argument.  Set
      	thr->thread_pool->threads_busy to nthreads immediately after creating
      	new pool.  Use gomp_managed_threads_lock instead of
      	gomp_remaining_threads_lock.  Handle OpenMP 4.0 affinity.
      	(gomp_team_end): Use gomp_managed_threads_lock instead of
      	gomp_remaining_threads_lock.  Use gomp_team_barrier_wait_final instead
      	of gomp_team_barrier_wait.  If team->team_cancelled, call
      	gomp_fini_worshare on ws chain starting at team->work_shares_to_free
      	rather than thr->ts.work_share.
      	(initialize_team): Don't call gomp_sem_init here.
      	* sections.c (GOMP_parallel_sections_start): Adjust gomp_team_start
      	caller.
      	(GOMP_parallel_sections, GOMP_sections_end_cancel): New functions.
      	* env.c (gomp_global_icv): Add default_device_var, target_data and
      	bind_var initializers.
      	(gomp_cpu_affinity, gomp_cpu_affinity_len): Remove.
      	(gomp_bind_var_list, gomp_bind_var_list_len, gomp_places_list,
      	gomp_places_list_len): New variables.
      	(parse_bind_var, parse_one_place, parse_places_var): New functions.
      	(parse_affinity): Rewritten to construct OMP_PLACES list with unit
      	sized places.
      	(gomp_cancel_var): New global variable.
      	(parse_int): New function.
      	(handle_omp_display_env): New function.
      	(initialize_env): Use it.  Initialize default_device_var.
      	Parse OMP_CANCELLATION env var.  Use parse_bind_var to parse
      	OMP_PROC_BIND instead of parse_boolean.  Use parse_places_var for
      	OMP_PLACES parsing.  Don't call parse_affinity if OMP_PLACES has
      	been successfully parsed (and call gomp_init_affinity in that case).
      	(omp_get_cancellation, omp_get_proc_bind, omp_set_default_device,
      	omp_get_default_device, omp_get_num_devices, omp_get_num_teams,
      	omp_get_team_num, omp_is_initial_device): New functions.
      	* libgomp.h: Include stdlib.h.
      	(ialias_ulp, ialias_str1, ialias_str2, ialias_redirect, ialias_call):
      	Define.
      	(struct target_mem_desc): Forward declare.
      	(struct gomp_task_icv): Add default_device_var, target_data, bind_var
      	and thread_limit_var fields.
      	(gomp_get_num_devices): New prototype.
      	(gomp_cancel_var): New extern decl.
      	(struct gomp_team): Add work_shares_to_free, work_share_cancelled,
      	team_cancelled and task_queued_count fields.  Add comments about
      	task_{,queued_,running_}count.
      	(gomp_cancel_kind): New enum.
      	(gomp_work_share_end_cancel): New prototype.
      	(struct gomp_task): Add next_taskgroup, prev_taskgroup, taskgroup,
      	copy_ctors_done, dependers, depend_hash, depend_count, num_dependees
      	and depend fields.
      	(struct gomp_taskgroup): New type.
      	(struct gomp_task_depend_entry,
      	struct gomp_dependers_vec): New types.
      	(gomp_finish_task): Free depend_hash if non-NULL.
      	(struct gomp_team_state): Add place_partition_off
      	and place_partition_len fields.
      	(gomp_bind_var_list, gomp_bind_var_list_len, gomp_places_list,
      	gomp_places_list_len): New extern decls.
      	(struct gomp_thread): Add place field.
      	(gomp_cpu_affinity, gomp_cpu_affinity_len): Remove.
      	(gomp_init_thread_affinity): Add place argument.
      	(gomp_affinity_alloc, gomp_affinity_init_place, gomp_affinity_add_cpus,
      	gomp_affinity_remove_cpu, gomp_affinity_copy_place,
      	gomp_affinity_same_place, gomp_affinity_finalize_place_list,
      	gomp_affinity_init_level, gomp_affinity_print_place): New
      	prototypes.
      	(gomp_team_start): Add flags argument.
      	(gomp_thread_limit_var, gomp_remaining_threads_count,
      	gomp_remaining_threads_lock): Remove.
      	(gomp_managed_threads_lock): New variable.
      	(struct gomp_thread_pool): Add threads_busy field.
      	(gomp_free_thread): New prototype.
      	* task.c: Include hashtab.h.
      	(hash_entry_type): New typedef.
      	(htab_alloc, htab_free, htab_hash, htab_eq): New inlines.
      	(gomp_init_task): Clear dependers, depend_hash, depend_count,
      	copy_ctors_done and taskgroup fields.
      	(GOMP_task): Add depend argument, handle depend clauses.  If
      	gomp_team_barrier_cancelled or if it's taskgroup has been
      	cancelled, don't queue or start new tasks.  Set copy_ctors_done
      	field if needed.  Initialize taskgroup field.  If copy_ctors_done
      	and already cancelled, don't discard the task.  If taskgroup is
      	non-NULL, enqueue the task into taskgroup queue.  Increment
      	num_children field in taskgroup.  Increment task_queued_count.
      	(gomp_task_run_pre, gomp_task_run_post_remove_parent,
      	gomp_task_run_post_remove_taskgroup): New inline functions.
      	(gomp_task_run_post_handle_depend_hash,
      	gomp_task_run_post_handle_dependers,
      	gomp_task_run_post_handle_depend): New functions.
      	(GOMP_taskwait): Use them.  If more than one new tasks
      	have been queued, wake other threads if needed.
      	(gomp_barrier_handle_tasks): Likewise.  If
      	gomp_team_barrier_cancelled, don't start any new tasks, just free
      	all tasks.
      	(GOMP_taskgroup_start, GOMP_taskgroup_end): New functions.
      	* omp_lib.f90.in
      	(omp_proc_bind_kind, omp_proc_bind_false,
      	omp_proc_bind_true, omp_proc_bind_master, omp_proc_bind_close,
      	omp_proc_bind_spread): New params.
      	(omp_get_cancellation, omp_get_proc_bind, omp_set_default_device,
      	omp_get_default_device, omp_get_num_devices, omp_get_num_teams,
      	omp_get_team_num, omp_is_initial_device): New interfaces.
      	(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): Remove
      	useless use omp_lib_kinds.
      	* omp.h.in (omp_proc_bind_t): New typedef.
      	(omp_get_cancellation, omp_get_proc_bind, omp_set_default_device,
      	omp_get_default_device, omp_get_num_devices, omp_get_num_teams,
      	omp_get_team_num, omp_is_initial_device): New prototypes.
      	* loop.c (gomp_parallel_loop_start): Add flags argument, pass it
      	through to gomp_team_start.
      	(GOMP_parallel_loop_static_start, GOMP_parallel_loop_dynamic_start,
      	GOMP_parallel_loop_guided_start, GOMP_parallel_loop_runtime_start):
      	Adjust gomp_parallel_loop_start callers.
      	(GOMP_parallel_loop_static, GOMP_parallel_loop_dynamic,
      	GOMP_parallel_loop_guided, GOMP_parallel_loop_runtime,
      	GOMP_loop_end_cancel): New functions.
      	(GOMP_parallel_end): Add ialias_redirect.
      	* hashtab.h: New file.
      	* libgomp.texi (Environment Variables): Minor cleanup,
      	update section refs to OpenMP 4.0rc2.
      	(OMP_DISPLAY_ENV, GOMP_SPINCOUNT): Document these
      	environment variables.
      	* work.c (gomp_work_share_end, gomp_work_share_end_nowait): Set
      	team->work_shares_to_free to thr->ts.work_share before calling
      	free_work_share.
      	(gomp_work_share_end_cancel): New function.
      	* config/linux/proc.c: Include errno.h.
      	(gomp_get_cpuset_size, gomp_cpuset_size, gomp_cpusetp): New variables.
      	(gomp_cpuset_popcount): Add cpusetsize argument, use it instead of
      	sizeof (cpu_set_t) to determine number of iterations.  Fix up check
      	extern decl.  Use CPU_COUNT_S if available, or CPU_COUNT if
      	gomp_cpuset_size is sizeof (cpu_set_t).
      	(gomp_init_num_threads): Initialize gomp_cpuset_size,
      	gomp_get_cpuset_size and gomp_cpusetp here, use gomp_cpusetp instead
      	of &cpuset and pass gomp_cpuset_size instead of sizeof (cpu_set_t)
      	to pthread_getaffinity_np.  Free and clear gomp_cpusetp if it didn't
      	contain any logical CPUs.
      	(get_num_procs): Don't call pthread_getaffinity_np if gomp_cpusetp
      	is NULL.  Use gomp_cpusetp instead of &cpuset and pass
      	gomp_get_cpuset_size instead of sizeof (cpu_set_t) to
      	pthread_getaffinity_np.  Check gomp_places_list instead of
      	gomp_cpu_affinity.  Adjust gomp_cpuset_popcount caller.
      	* config/linux/bar.c (gomp_barrier_wait_end,
      	gomp_barrier_wait_last): Use BAR_* defines.
      	(gomp_team_barrier_wait_end): Likewise.  Clear BAR_CANCELLED
      	from state where needed.  Set work_share_cancelled to 0 on last
      	thread.
      	(gomp_team_barrier_wait_final, gomp_team_barrier_wait_cancel_end,
      	gomp_team_barrier_wait_cancel, gomp_team_barrier_cancel): New
      	functions.
      	* config/linux/proc.h (gomp_cpuset_popcount): Add attribute_hidden.
      	Add cpusetsize argument.
      	(gomp_cpuset_size, gomp_cpusetp): Declare.
      	* config/linux/affinity.c: Include errno.h, stdio.h and string.h.
      	(affinity_counter): Remove.
      	(CPU_ISSET_S, CPU_ZERO_S, CPU_SET_S, CPU_CLR_S): Define
      	if CPU_ALLOC_SIZE isn't defined.
      	(gomp_init_affinity): Rewritten, if gomp_places_list is NULL, try
      	silently create OMP_PLACES=threads, if it is non-NULL afterwards,
      	bind current thread to the first place.
      	(gomp_init_thread_affinity): Rewritten.  Add place argument, just
      	pthread_setaffinity_np to gomp_places_list[place].
      	(gomp_affinity_alloc, gomp_affinity_init_place, gomp_affinity_add_cpus,
      	gomp_affinity_remove_cpu, gomp_affinity_copy_place,
      	gomp_affinity_same_place, gomp_affinity_finalize_place_list,
      	gomp_affinity_init_level, gomp_affinity_print_place): New functions.
      	* config/linux/bar.h (BAR_TASK_PENDING, BAR_WAS_LAST,
      	BAR_WAITING_FOR_TASK, BAR_INCR, BAR_CANCELLED): Define.
      	(gomp_barrier_t): Add awaited_final field.
      	(gomp_barrier_init): Initialize awaited_final field.
      	(gomp_team_barrier_wait_final, gomp_team_barrier_wait_cancel,
      	gomp_team_barrier_wait_cancel_end, gomp_team_barrier_cancel): New
      	prototypes.
      	(gomp_barrier_wait_start): Preserve BAR_CANCELLED bit.  Use BAR_*
      	defines.
      	(gomp_barrier_wait_cancel_start, gomp_team_barrier_wait_final_start,
      	gomp_team_barrier_cancelled): New inline functions.
      	(gomp_barrier_last_thread,
      	gomp_team_barrier_set_task_pending,
      	gomp_team_barrier_clear_task_pending,
      	gomp_team_barrier_set_waiting_for_tasks,
      	gomp_team_barrier_waiting_for_tasks,
      	gomp_team_barrier_done): Use BAR_* defines.
      	* config/posix/bar.c (gomp_barrier_init): Clear cancellable field.
      	(gomp_barrier_wait_end): Use BAR_* defines.
      	(gomp_team_barrier_wait_end): Clear BAR_CANCELLED from state.
      	Set work_share_cancelled to 0 on last thread, use __atomic_load_n.
      	Use BAR_* defines.
      	(gomp_team_barrier_wait_cancel_end, gomp_team_barrier_wait_cancel,
      	gomp_team_barrier_cancel): New functions.
      	* config/posix/affinity.c (gomp_init_thread_affinity): Add place
      	argument.
      	(gomp_affinity_alloc, gomp_affinity_init_place, gomp_affinity_add_cpus,
      	gomp_affinity_remove_cpu, gomp_affinity_copy_place,
      	gomp_affinity_same_place, gomp_affinity_finalize_place_list,
      	gomp_affinity_init_level, gomp_affinity_print_place): New stubs.
      	* config/posix/bar.h (BAR_TASK_PENDING, BAR_WAS_LAST,
      	BAR_WAITING_FOR_TASK, BAR_INCR, BAR_CANCELLED): Define.
      	(gomp_barrier_t): Add cancellable field.
      	(gomp_team_barrier_wait_cancel, gomp_team_barrier_wait_cancel_end,
      	gomp_team_barrier_cancel): New prototypes.
      	(gomp_barrier_wait_start): Preserve BAR_CANCELLED bit.
      	(gomp_barrier_wait_cancel_start, gomp_team_barrier_wait_final,
      	gomp_team_barrier_cancelled): New inline functions.
      	(gomp_barrier_wait_start, gomp_barrier_last_thread,
      	gomp_team_barrier_set_task_pending,
      	gomp_team_barrier_clear_task_pending,
      	gomp_team_barrier_set_waiting_for_tasks,
      	gomp_team_barrier_waiting_for_tasks,
      	gomp_team_barrier_done): Use BAR_* defines.
      	* barrier.c (GOMP_barrier_cancel): New function.
      	* omp_lib.h.in (omp_proc_bind_kind, omp_proc_bind_false,
      	omp_proc_bind_true, omp_proc_bind_master, omp_proc_bind_close,
      	omp_proc_bind_spread): New params.
      	(omp_get_cancellation, omp_get_proc_bind, omp_set_default_device,
      	omp_get_default_device, omp_get_num_devices, omp_get_num_teams,
      	omp_get_team_num, omp_is_initial_device): New externals.
      	* parallel.c (GOMP_parallel, GOMP_cancel, GOMP_cancellation_point):
      	New functions.
      	(gomp_resolve_num_threads): Adjust for thread_limit now being in
      	icv->thread_limit_var.  Use UINT_MAX instead of ULONG_MAX as
      	infinity.  If not nested, just return minimum of max_num_threads
      	and icv->thread_limit_var and if thr->thread_pool, set threads_busy
      	to the returned value.  Otherwise, don't update atomically
      	gomp_remaining_threads_count, but instead thr->thread_pool->threads_busy.
      	(GOMP_parallel_end): Adjust for thread_limit now being in
      	icv->thread_limit_var.  Use UINT_MAX instead of ULONG_MAX as
      	infinity.  Adjust threads_busy in the pool rather than
      	gomp_remaining_threads_count.  Remember team->nthreads and call
      	gomp_team_end before adjusting threads_busy, if not nested
      	afterwards, just set it to 1 non-atomically.  Add ialias.
      	(GOMP_parallel_start): Adjust gomp_team_start caller.
      	* testsuite/libgomp.c/atomic-14.c: Add parens to make it valid.
      	* testsuite/libgomp.c/affinity-1.c: New test.
      	* testsuite/libgomp.c/atomic-15.c: New test.
      	* testsuite/libgomp.c/atomic-16.c: New test.
      	* testsuite/libgomp.c/atomic-17.c: New test.
      	* testsuite/libgomp.c/cancel-for-1.c: New test.
      	* testsuite/libgomp.c/cancel-for-2.c: New test.
      	* testsuite/libgomp.c/cancel-parallel-1.c: New test.
      	* testsuite/libgomp.c/cancel-parallel-2.c: New test.
      	* testsuite/libgomp.c/cancel-parallel-3.c: New test.
      	* testsuite/libgomp.c/cancel-sections-1.c: New test.
      	* testsuite/libgomp.c/cancel-taskgroup-1.c: New test.
      	* testsuite/libgomp.c/cancel-taskgroup-2.c: New test.
      	* testsuite/libgomp.c/depend-1.c: New test.
      	* testsuite/libgomp.c/depend-2.c: New test.
      	* testsuite/libgomp.c/depend-3.c: New test.
      	* testsuite/libgomp.c/depend-4.c: New test.
      	* testsuite/libgomp.c/for-1.c: New test.
      	* testsuite/libgomp.c/for-1.h: New file.
      	* testsuite/libgomp.c/for-2.c: New test.
      	* testsuite/libgomp.c/for-2.h: New file.
      	* testsuite/libgomp.c/for-3.c: New test.
      	* testsuite/libgomp.c/pr58392.c: New test.
      	* testsuite/libgomp.c/simd-1.c: New test.
      	* testsuite/libgomp.c/simd-2.c: New test.
      	* testsuite/libgomp.c/simd-3.c: New test.
      	* testsuite/libgomp.c/simd-4.c: New test.
      	* testsuite/libgomp.c/simd-5.c: New test.
      	* testsuite/libgomp.c/simd-6.c: New test.
      	* testsuite/libgomp.c/target-1.c: New test.
      	* testsuite/libgomp.c/target-2.c: New test.
      	* testsuite/libgomp.c/target-3.c: New test.
      	* testsuite/libgomp.c/target-4.c: New test.
      	* testsuite/libgomp.c/target-5.c: New test.
      	* testsuite/libgomp.c/target-6.c: New test.
      	* testsuite/libgomp.c/target-7.c: New test.
      	* testsuite/libgomp.c/taskgroup-1.c: New test.
      	* testsuite/libgomp.c/thread-limit-1.c: New test.
      	* testsuite/libgomp.c/thread-limit-2.c: New test.
      	* testsuite/libgomp.c/thread-limit-3.c: New test.
      	* testsuite/libgomp.c/udr-1.c: New test.
      	* testsuite/libgomp.c/udr-2.c: New test.
      	* testsuite/libgomp.c/udr-3.c: New test.
      	* testsuite/libgomp.c++/affinity-1.C: New test.
      	* testsuite/libgomp.c++/atomic-10.C: New test.
      	* testsuite/libgomp.c++/atomic-11.C: New test.
      	* testsuite/libgomp.c++/atomic-12.C: New test.
      	* testsuite/libgomp.c++/atomic-13.C: New test.
      	* testsuite/libgomp.c++/atomic-14.C: New test.
      	* testsuite/libgomp.c++/atomic-15.C: New test.
      	* testsuite/libgomp.c++/cancel-for-1.C: New test.
      	* testsuite/libgomp.c++/cancel-for-2.C: New test.
      	* testsuite/libgomp.c++/cancel-parallel-1.C: New test.
      	* testsuite/libgomp.c++/cancel-parallel-2.C: New test.
      	* testsuite/libgomp.c++/cancel-parallel-3.C: New test.
      	* testsuite/libgomp.c++/cancel-sections-1.C: New test.
      	* testsuite/libgomp.c++/cancel-taskgroup-1.C: New test.
      	* testsuite/libgomp.c++/cancel-taskgroup-2.C: New test.
      	* testsuite/libgomp.c++/cancel-taskgroup-3.C: New test.
      	* testsuite/libgomp.c++/cancel-test.h: New file.
      	* testsuite/libgomp.c++/for-9.C: New test.
      	* testsuite/libgomp.c++/for-10.C: New test.
      	* testsuite/libgomp.c++/for-11.C: New test.
      	* testsuite/libgomp.c++/simd-1.C: New test.
      	* testsuite/libgomp.c++/simd-2.C: New test.
      	* testsuite/libgomp.c++/simd-3.C: New test.
      	* testsuite/libgomp.c++/simd-4.C: New test.
      	* testsuite/libgomp.c++/simd-5.C: New test.
      	* testsuite/libgomp.c++/simd-6.C: New test.
      	* testsuite/libgomp.c++/simd-7.C: New test.
      	* testsuite/libgomp.c++/simd-8.C: New test.
      	* testsuite/libgomp.c++/target-1.C: New test.
      	* testsuite/libgomp.c++/target-2.C: New test.
      	* testsuite/libgomp.c++/target-2-aux.cc: New file.
      	* testsuite/libgomp.c++/target-3.C: New test.
      	* testsuite/libgomp.c++/taskgroup-1.C: New test.
      	* testsuite/libgomp.c++/udr-1.C: New test.
      	* testsuite/libgomp.c++/udr-2.C: New test.
      	* testsuite/libgomp.c++/udr-3.C: New test.
      	* testsuite/libgomp.c++/udr-4.C: New test.
      	* testsuite/libgomp.c++/udr-5.C: New test.
      	* testsuite/libgomp.c++/udr-6.C: New test.
      	* testsuite/libgomp.c++/udr-7.C: New test.
      	* testsuite/libgomp.c++/udr-8.C: New test.
      	* testsuite/libgomp.c++/udr-9.C: New test.
      gcc/
      	* tree-pretty-print.c (dump_omp_clause): Handle OMP_CLAUSE__LOOPTEMP_
      	and new OpenMP 4.0 clauses, handle UDR OMP_CLAUSE_REDUCTION,
      	formatting fixes, use pp_colon instead of pp_character (..., ':'),
      	similarly pp_right_paren.
      	(dump_generic_node): Handle OMP_DISTRIBUTE, OMP_TEAMS,
      	OMP_TARGET_DATA, OMP_TARGET, OMP_TARGET_UPDATE, OMP_TASKGROUP,
      	allow OMP_FOR_INIT to be NULL, handle OMP_ATOMIC_SEQ_CST.
      	* tree.c (omp_clause_num_ops, omp_clause_code_name): Add OpenMP 4.0
      	clauses.
      	(omp_declare_simd_clauses_equal,
      	omp_remove_redundant_declare_simd_attrs): New functions.
      	(attribute_value_equal): Use omp_declare_simd_clauses_equal.
      	(walk_tree_1): Handle new OpenMP 4.0 clauses.
      	* tree.h (OMP_LOOP_CHECK): Define.
      	(OMP_FOR_BODY, OMP_FOR_CLAUSES, OMP_FOR_INIT, OMP_FOR_COND,
      	OMP_FOR_INCR, OMP_FOR_PRE_BODY): Use it.
      	(OMP_TASKGROUP_BODY, OMP_TEAMS_BODY, OMP_TEAMS_CLAUSES,
      	OMP_TARGET_DATA_BODY, OMP_TARGET_DATA_CLAUSES, OMP_TARGET_BODY,
      	OMP_TARGET_CLAUSES, OMP_TARGET_UPDATE_CLAUSES, OMP_CLAUSE_SIZE,
      	OMP_ATOMIC_SEQ_CST, OMP_CLAUSE_DEPEND_KIND, OMP_CLAUSE_MAP_KIND,
      	OMP_CLAUSE_MAP_ZERO_BIAS_ARRAY_SECTION, OMP_CLAUSE_PROC_BIND_KIND,
      	OMP_CLAUSE_REDUCTION_OMP_ORIG_REF, OMP_CLAUSE_ALIGNED_ALIGNMENT,
      	OMP_CLAUSE_NUM_TEAMS_EXPR, OMP_CLAUSE_THREAD_LIMIT_EXPR,
      	OMP_CLAUSE_DEVICE_ID, OMP_CLAUSE_DIST_SCHEDULE_CHUNK_EXPR,
      	OMP_CLAUSE_SIMDLEN_EXPR): Define.
      	(OMP_CLAUSE_DECL): Change range up to OMP_CLAUSE__LOOPTEMP_.
      	(omp_remove_redundant_declare_simd_attrs): New prototype.
      	* gimple.def (GIMPLE_OMP_TASKGROUP, GIMPLE_OMP_TARGET,
      	GIMPLE_OMP_TEAMS): New codes.
      	(GIMPLE_OMP_RETURN): Use GSS_OMP_ATOMIC_STORE instead of GSS_BASE.
      	* omp-low.c (struct omp_context): Add cancel_label and cancellable
      	fields.
      	(target_nesting_level): New variable.
      	(extract_omp_for_data): Handle GF_OMP_FOR_KIND_DISTRIBUTE and
      	OMP_CLAUSE_DIST_SCHEDULE.  Don't fallback to library implementation
      	for collapse > 1 static schedule unless ordered.
      	(get_ws_args_for): Add par_stmt argument.  Handle combined loops.
      	(determine_parallel_type): Adjust get_ws_args_for caller.
      	(install_var_field): Handle mask & 4 for double indirection.
      	(scan_sharing_clauses): Ignore shared clause on teams construct.
      	Handle OMP_CLAUSE__LOOPTEMP_ and new OpenMP 4.0 clauses.
      	(create_omp_child_function): If inside target or declare target
      	constructs, set "omp declare target" attribute on the child
      	function.
      	(find_combined_for): New function.
      	(scan_omp_parallel): Handle combined loops.
      	(scan_omp_target, scan_omp_teams): New functions.
      	(check_omp_nesting_restrictions): Check new OpenMP 4.0 nesting
      	restrictions and set ctx->cancellable for cancellable constructs.
      	(scan_omp_1_stmt): Call check_omp_nesting_restrictions also on
      	selected builtin calls.  Handle GIMPLE_OMP_TASKGROUP,
      	GIMPLE_OMP_TARGET, GIMPLE_OMP_TEAMS.
      	(build_omp_barrier): Add lhs argument, return gimple rather than
      	tree.
      	(omp_clause_aligned_alignment): New function.
      	(lower_rec_simd_input_clauses): Only call SET_DECL_VALUE_EXPR
      	on decls.
      	(lower_rec_input_clauses): Add FD argument.  Ignore shared clauses
      	on teams constructs.  Handle user defined reductions and new
      	OpenMP 4.0 clauses.
      	(lower_reduction_clauses): Don't set placeholder to address of ref
      	if it has already the right type.
      	(lower_send_clauses): Handle OMP_CLAUSE__LOOPTEMP_.
      	(expand_parallel_call): Use the new non-_start suffixed builtins,
      	handle OMP_CLAUSE_PROC_BIND, don't call the outlined function
      	and GOMP_parallel_end after the call.
      	(expand_task_call): Handle OMP_CLAUSE_DEPEND.
      	(expand_omp_for_init_counts): Handle combined loops.
      	(expand_omp_for_init_vars): Add inner_stmt argument, handle combined
      	loops.
      	(expand_omp_for_generic): Likewise.  Use GOMP_loop_end_cancel at the
      	end of cancellable loops.
      	(expand_omp_for_static_nochunk, expand_omp_for_static_chunk):
      	Likewise.  Handle collapse > 1 loops.
      	(expand_omp_simd): Handle combined loops.
      	(expand_omp_for): Add inner_stmt argument, adjust callers of
      	expand_omp_for* functions, use expand_omp_for_static*chunk even
      	for collapse > 1 unless ordered.
      	(expand_omp_sections): Use GOMP_sections_end_cancel at the end
      	of cancellable sections.
      	(expand_omp_single): Remove need_barrier variable, just rely on
      	gimple_omp_return_nowait_p.  Adjust build_omp_barrier caller.
      	(expand_omp_synch): Allow GIMPLE_OMP_TASKGROUP and GIMPLE_OMP_TEAMS.
      	(expand_omp_atomic_load, expand_omp_atomic_store,
      	expand_omp_atomic_fetch_op): Handle gimple_omp_atomic_seq_cst_p.
      	(expand_omp_target): New function.
      	(expand_omp): Handle combined loops.  Handle GIMPLE_OMP_TASKGROUP,
      	GIMPLE_OMP_TEAMS, GIMPLE_OMP_TARGET.
      	(build_omp_regions_1): Immediately close region for
      	GF_OMP_TARGET_KIND_UPDATE.
      	(maybe_add_implicit_barrier_cancel): New function.
      	(lower_omp_sections): Adjust lower_rec_input_clauses caller.  Handle
      	cancellation.
      	(lower_omp_single): Likewise.  Add clobber after the barrier.
      	(lower_omp_taskgroup): New function.
      	(lower_omp_for): Handle combined loops.  Adjust
      	lower_rec_input_clauses caller.  Handle cancellation.
      	(lower_depend_clauses): New function.
      	(lower_omp_taskreg): Lower depend clauses.  Adjust
      	lower_rec_input_clauses caller.  Add clobber after the call.  Handle
      	cancellation.
      	(lower_omp_target, lower_omp_teams): New functions.
      	(lower_omp_1): Handle cancellation.  Handle GIMPLE_OMP_TASKGROUP,
      	GIMPLE_OMP_TARGET, GIMPLE_OMP_TEAMS and GOMP_barrier, GOMP_cancel
      	and GOMP_cancellation_point calls.
      	(lower_omp): Fold stmts inside of target region.
      	(diagnose_sb_1, diagnose_sb_2): Handle GIMPLE_OMP_TASKGROUP,
      	GIMPLE_OMP_TARGET and GIMPLE_OMP_TEAMS.
      	* builtin-types.def (DEF_FUNCTION_TYPE_8): Document.
      	(BT_FN_VOID_OMPFN_PTR_UINT,
      	BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG,
      	BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_LONG,
      	BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT): Remove.
      	(BT_FN_VOID_OMPFN_PTR_UINT_UINT_UINT,
      	BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_UINT,
      	BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_LONG_UINT,
      	BT_FN_BOOL_INT, BT_FN_BOOL_INT_BOOL, BT_FN_VOID_UINT_UINT,
      	BT_FN_VOID_INT_PTR_SIZE_PTR_PTR_PTR,
      	BT_FN_VOID_INT_OMPFN_PTR_SIZE_PTR_PTR_PTR,
      	BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT_PTR): New.
      	* tree-ssa-alias.c (ref_maybe_used_by_call_p_1,
      	call_may_clobber_ref_p_1): Handle BUILT_IN_GOMP_BARRIER_CANCEL,
      	BUILT_IN_GOMP_TASKGROUP_END, BUILT_IN_GOMP_LOOP_END_CANCEL,
      	BUILT_IN_GOMP_SECTIONS_END_CANCEL.  Don't handle
      	BUILT_IN_GOMP_PARALLEL_END.
      	* gimple-low.c (lower_stmt): Handle GIMPLE_OMP_TASKGROUP,
      	GIMPLE_OMP_TARGET and GIMPLE_OMP_TEAMS.
      	* gimple-pretty-print.c (dump_gimple_omp_for): Handle
      	GF_OMP_FOR_KIND_DISTRIBUTE.
      	(dump_gimple_omp_target, dump_gimple_omp_teams): New functions.
      	(dump_gimple_omp_block): Handle GIMPLE_OMP_TASKGROUP.
      	(dump_gimple_omp_return): Print lhs if it has any.
      	(dump_gimple_omp_atomic_load, dump_gimple_omp_atomic_store): Handle
      	gimple_omp_atomic_seq_cst_p.
      	(pp_gimple_stmt_1): Handle GIMPLE_OMP_TASKGROUP, GIMPLE_OMP_TARGET
      	and GIMPLE_OMP_TEAMS.
      	* langhooks.c (lhd_omp_mappable_type): New function.
      	* tree-vectorizer.c (struct simd_array_to_simduid): Fix up comment.
      	* langhooks.h (struct lang_hooks_for_types): Add omp_mappable_type
      	hook.
      	* gimplify.c (enum gimplify_omp_var_data): Add GOVD_MAP,
      	GOVD_ALIGNED and GOVD_MAP_TO_ONLY.
      	(enum omp_region_type): Add ORT_TEAMS, ORT_TARGET_DATA and
      	ORT_TARGET.
      	(struct gimplify_omp_ctx): Add combined_loop field.
      	(gimplify_call_expr, gimplify_modify_expr): Don't call fold_stmt
      	on stmts inside of target region.
      	(is_gimple_stmt): Return true for OMP_DISTRIBUTE and OMP_TASKGROUP.
      	(omp_firstprivatize_variable): Handle GOVD_MAP, GOVD_ALIGNED,
      	ORT_TARGET and ORT_TARGET_DATA.
      	(omp_add_variable): Avoid checks on readding var for GOVD_ALIGNED.
      	Handle GOVD_MAP.
      	(omp_notice_threadprivate_variable): Complain about threadprivate
      	variables in target region.
      	(omp_notice_variable): Complain about vars with non-mappable type
      	in target region.  Handle ORT_TEAMS, ORT_TARGET and ORT_TARGET_DATA.
      	(omp_check_private): Ignore ORT_TARGET* regions.
      	(gimplify_scan_omp_clauses, gimplify_adjust_omp_clauses_1,
      	gimplify_adjust_omp_clauses): Handle new OpenMP 4.0 clauses.
      	(find_combined_omp_for): New function.
      	(gimplify_omp_for): Handle gimplification of combined loops.
      	(gimplify_omp_workshare): Gimplify also OMP_TARGET, OMP_TARGET_DATA,
      	OMP_TEAMS.
      	(gimplify_omp_target_update): New function.
      	(gimplify_omp_atomic): Handle OMP_ATOMIC_SEQ_CST.
      	(gimplify_expr): Handle OMP_DISTRIBUTE, OMP_TARGET, OMP_TARGET_DATA,
      	OMP_TARGET_UPDATE, OMP_TEAMS, OMP_TASKGROUP.
      	(gimplify_body): If fndecl has "omp declare target" attribute, add
      	implicit ORT_TARGET context around it.
      	* tree.def (OMP_DISTRIBUTE, OMP_TEAMS, OMP_TARGET_DATA, OMP_TARGET,
      	OMP_TASKGROUP, OMP_TARGET_UPDATE): New tree codes.
      	* tree-nested.c (convert_nonlocal_reference_stmt,
      	convert_local_reference_stmt, convert_gimple_call): Handle
      	GIMPLE_OMP_TARGET, GIMPLE_OMP_TEAMS and GIMPLE_OMP_TASKGROUP.
      	* omp-builtins.def (BUILT_IN_GOMP_TASK): Use
      	BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT_PTR
      	instead of BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT.
      	(BUILT_IN_GOMP_TARGET, BUILT_IN_GOMP_TARGET_DATA,
      	BUILT_IN_GOMP_TARGET_END_DATA, BUILT_IN_GOMP_TARGET_UPDATE,
      	BUILT_IN_GOMP_TEAMS, BUILT_IN_BARRIER_CANCEL,
      	BUILT_IN_GOMP_LOOP_END_CANCEL,
      	BUILT_IN_GOMP_SECTIONS_END_CANCEL, BUILT_IN_OMP_GET_TEAM_NUM,
      	BUILT_IN_OMP_GET_NUM_TEAMS, BUILT_IN_GOMP_TASKGROUP_START,
      	BUILT_IN_GOMP_TASKGROUP_END, BUILT_IN_GOMP_PARALLEL_LOOP_STATIC,
      	BUILT_IN_GOMP_PARALLEL_LOOP_DYNAMIC,
      	BUILT_IN_GOMP_PARALLEL_LOOP_GUIDED,
      	BUILT_IN_GOMP_PARALLEL_LOOP_RUNTIME, BUILT_IN_GOMP_PARALLEL,
      	BUILT_IN_GOMP_PARALLEL_SECTIONS, BUILT_IN_GOMP_CANCEL,
      	BUILT_IN_GOMP_CANCELLATION_POINT): New built-ins.
      	(BUILT_IN_GOMP_PARALLEL_LOOP_STATIC_START,
      	BUILT_IN_GOMP_PARALLEL_LOOP_DYNAMIC_START,
      	BUILT_IN_GOMP_PARALLEL_LOOP_GUIDED_START,
      	BUILT_IN_GOMP_PARALLEL_LOOP_RUNTIME_START,
      	BUILT_IN_GOMP_PARALLEL_START, BUILT_IN_GOMP_PARALLEL_END,
      	BUILT_IN_GOMP_PARALLEL_SECTIONS_START): Remove.
      	* tree-inline.c (remap_gimple_stmt, estimate_num_insns):
      	Handle GIMPLE_OMP_TARGET, GIMPLE_OMP_TEAMS and GIMPLE_OMP_TASKGROUP.
      	* gimple.c (gimple_build_omp_taskgroup, gimple_build_omp_target,
      	gimple_build_omp_teams): New functions.
      	(walk_gimple_op): Handle GIMPLE_OMP_TARGET, GIMPLE_OMP_TEAMS and
      	GIMPLE_OMP_TASKGROUP.  Walk optional lhs on GIMPLE_OMP_RETURN.
      	(walk_gimple_stmt, gimple_copy): Handle GIMPLE_OMP_TARGET,
      	GIMPLE_OMP_TEAMS and GIMPLE_OMP_TASKGROUP.
      	* gimple.h (enum gf_mask): GF_OMP_FOR_KIND_DISTRIBUTE,
      	GF_OMP_FOR_COMBINED, GF_OMP_FOR_COMBINED_INTO,
      	GF_OMP_TARGET_KIND_MASK, GF_OMP_TARGET_KIND_REGION,
      	GF_OMP_TARGET_KIND_DATA, GF_OMP_TARGET_KIND_UPDATE,
      	GF_OMP_ATOMIC_SEQ_CST): New.
      	(gimple_build_omp_taskgroup, gimple_build_omp_target,
      	gimple_build_omp_teams): New prototypes.
      	(gimple_has_substatements): Handle GIMPLE_OMP_TARGET,
      	GIMPLE_OMP_TEAMS and GIMPLE_OMP_TASKGROUP.
      	(gimple_omp_subcode): Use GIMPLE_OMP_TEAMS instead of
      	GIMPLE_OMP_SINGLE as end of range.
      	(gimple_omp_return_set_lhs, gimple_omp_return_lhs,
      	gimple_omp_return_lhs_ptr, gimple_omp_atomic_seq_cst_p,
      	gimple_omp_atomic_set_seq_cst, gimple_omp_for_combined_p,
      	gimple_omp_for_set_combined_p, gimple_omp_for_combined_into_p,
      	gimple_omp_for_set_combined_into_p, gimple_omp_target_clauses,
      	gimple_omp_target_clauses_ptr, gimple_omp_target_set_clauses,
      	gimple_omp_target_kind, gimple_omp_target_set_kind,
      	gimple_omp_target_child_fn, gimple_omp_target_child_fn_ptr,
      	gimple_omp_target_set_child_fn, gimple_omp_target_data_arg,
      	gimple_omp_target_data_arg_ptr, gimple_omp_target_set_data_arg,
      	gimple_omp_teams_clauses, gimple_omp_teams_clauses_ptr,
      	gimple_omp_teams_set_clauses): New inlines.
      	(CASE_GIMPLE_OMP): Add GIMPLE_OMP_TARGET, GIMPLE_OMP_TEAMS
      	and GIMPLE_OMP_TASKGROUP.
      	* tree-core.h (enum omp_clause_code): Add new OpenMP 4.0 clause
      	codes.
      	(enum omp_clause_depend_kind, enum omp_clause_map_kind,
      	enum omp_clause_proc_bind_kind): New.
      	(union omp_clause_subcode): Add depend_kind, map_kind and
      	proc_bind_kind fields.
      	* tree-cfg.c (make_edges): Handle GIMPLE_OMP_TARGET,
      	GIMPLE_OMP_TEAMS and GIMPLE_OMP_TASKGROUP.
      	* langhooks-def.h (lhd_omp_mappable_type): New prototype.
      	(LANG_HOOKS_OMP_MAPPABLE_TYPE): Define.
      	(LANG_HOOKS_FOR_TYPES_INITIALIZER): Add it.
      gcc/c-family/
      	* c-cppbuiltin.c (c_cpp_builtins): Predefine _OPENMP to
      	201307 instead of 201107.
      	* c-common.c (DEF_FUNCTION_TYPE_8): Define.
      	(c_common_attribute_table): Add "omp declare target" and
      	"omp declare simd" attributes.
      	(handle_omp_declare_target_attribute,
      	handle_omp_declare_simd_attribute): New functions.
      	* c-omp.c: Include c-pragma.h.
      	(c_finish_omp_taskgroup): New function.
      	(c_finish_omp_atomic): Add swapped argument, if true,
      	build the operation first with rhs, lhs arguments and use NOP_EXPR
      	build_modify_expr.
      	(c_finish_omp_for): Add code argument, pass it down to make_code.
      	(c_omp_split_clauses): New function.
      	(c_split_parallel_clauses): Removed.
      	(c_omp_declare_simd_clause_cmp, c_omp_declare_simd_clauses_to_numbers,
      	c_omp_declare_simd_clauses_to_decls): New functions.
      	* c-common.h (omp_clause_mask): New type.
      	(OMP_CLAUSE_MASK_1): Define.
      	(omp_clause_mask::omp_clause_mask, omp_clause_mask::operator &=,
      	omp_clause_mask::operator |=, omp_clause_mask::operator ~,
      	omp_clause_mask::operator |, omp_clause_mask::operator &,
      	omp_clause_mask::operator <<, omp_clause_mask::operator >>,
      	omp_clause_mask::operator ==): New methods.
      	(enum c_omp_clause_split): New.
      	(c_finish_omp_taskgroup): New prototype.
      	(c_finish_omp_atomic): Add swapped argument.
      	(c_finish_omp_for): Add code argument.
      	(c_omp_split_clauses): New prototype.
      	(c_split_parallel_clauses): Removed.
      	(c_omp_declare_simd_clauses_to_numbers,
      	c_omp_declare_simd_clauses_to_decls): New prototypes.
      	* c-pragma.c (omp_pragmas): Add new OpenMP 4.0 constructs.
      	* c-pragma.h (enum pragma_kind): Add PRAGMA_OMP_CANCEL,
      	PRAGMA_OMP_CANCELLATION_POINT, PRAGMA_OMP_DECLARE_REDUCTION,
      	PRAGMA_OMP_DISTRIBUTE, PRAGMA_OMP_END_DECLARE_TARGET, PRAGMA_OMP_SIMD,
      	PRAGMA_OMP_TARGET, PRAGMA_OMP_TASKGROUP and PRAGMA_OMP_TEAMS.
      	Remove PRAGMA_OMP_PARALLEL_FOR and PRAGMA_OMP_PARALLEL_SECTIONS.
      	(enum pragma_omp_clause): Add PRAGMA_OMP_CLAUSE_ALIGNED,
      	PRAGMA_OMP_CLAUSE_DEPEND, PRAGMA_OMP_CLAUSE_DEVICE,
      	PRAGMA_OMP_CLAUSE_DIST_SCHEDULE, PRAGMA_OMP_CLAUSE_FOR,
      	PRAGMA_OMP_CLAUSE_FROM, PRAGMA_OMP_CLAUSE_INBRANCH,
      	PRAGMA_OMP_CLAUSE_LINEAR, PRAGMA_OMP_CLAUSE_MAP,
      	PRAGMA_OMP_CLAUSE_NOTINBRANCH, PRAGMA_OMP_CLAUSE_NUM_TEAMS,
      	PRAGMA_OMP_CLAUSE_PARALLEL, PRAGMA_OMP_CLAUSE_PROC_BIND,
      	PRAGMA_OMP_CLAUSE_SAFELEN, PRAGMA_OMP_CLAUSE_SECTIONS,
      	PRAGMA_OMP_CLAUSE_SIMDLEN, PRAGMA_OMP_CLAUSE_TASKGROUP,
      	PRAGMA_OMP_CLAUSE_THREAD_LIMIT, PRAGMA_OMP_CLAUSE_TO and
      	PRAGMA_OMP_CLAUSE_UNIFORM.
      gcc/ada/
      	* gcc-interface/utils.c (DEF_FUNCTION_TYPE_8): Define.
      gcc/fortran/
      	* trans-openmp.c (gfc_omp_clause_default_ctor,
      	gfc_omp_clause_dtor): Return NULL for OMP_CLAUSE_REDUCTION.
      	* f95-lang.c (ATTR_NULL, DEF_FUNCTION_TYPE_8): Define.
      	* types.def (DEF_FUNCTION_TYPE_8): Document.
      	(BT_FN_VOID_OMPFN_PTR_UINT,
      	BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG,
      	BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_LONG,
      	BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT): Remove.
      	(BT_FN_VOID_OMPFN_PTR_UINT_UINT_UINT,
      	BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_UINT,
      	BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_LONG_UINT,
      	BT_FN_BOOL_INT, BT_FN_BOOL_INT_BOOL, BT_FN_VOID_UINT_UINT,
      	BT_FN_VOID_INT_PTR_SIZE_PTR_PTR_PTR,
      	BT_FN_VOID_INT_OMPFN_PTR_SIZE_PTR_PTR_PTR,
      	BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT_PTR): New.
      gcc/lto/
      	* lto-lang.c (DEF_FUNCTION_TYPE_8): Define.
      gcc/c/
      	* c-lang.h (current_omp_declare_target_attribute): New extern
      	decl.
      	* c-parser.c: Include c-lang.h.
      	(struct c_parser): Change tokens to c_token *.
      	Add tokens_buf field.  Change tokens_avail type to unsigned int.
      	(c_parser_consume_token): If parser->tokens isn't
      	&parser->tokens_buf[0], increment parser->tokens.
      	(c_parser_consume_pragma): Likewise.
      	(enum pragma_context): Add pragma_struct and pragma_param.
      	(c_parser_external_declaration): Adjust
      	c_parser_declaration_or_fndef caller.
      	(c_parser_declaration_or_fndef): Add omp_declare_simd_clauses
      	argument, if it is non-vNULL vector, call c_finish_omp_declare_simd.
      	Adjust recursive call.
      	(c_parser_struct_or_union_specifier): Use pragma_struct instead
      	of pragma_external.
      	(c_parser_parameter_declaration): Use pragma_param instead of
      	pragma_external.
      	(c_parser_compound_statement_nostart, c_parser_label,
      	c_parser_for_statement): Adjust
      	c_parser_declaration_or_fndef callers.
      	(c_parser_expr_no_commas): Add omp_atomic_lhs argument, pass
      	it through to c_parser_conditional_expression.
      	(c_parser_conditional_expression): Add omp_atomic_lhs argument,
      	pass it through to c_parser_binary_expression.  Adjust recursive
      	call.
      	(c_parser_binary_expression): Remove prec argument, add
      	omp_atomic_lhs argument instead.  Always start from PREC_NONE, if
      	omp_atomic_lhs is non-NULL and one of the arguments of toplevel
      	binop matches it, use build2 instead of parser_build_binary_op.
      	(c_parser_pragma): Handle PRAGMA_OMP_CANCEL,
      	PRAGMA_OMP_CANCELLATION_POINT, PRAGMA_OMP_TARGET,
      	PRAGMA_OMP_END_DECLARE_TARGET, PRAGMA_OMP_DECLARE_REDUCTION.
      	Handle pragma_struct and pragma_param the same as pragma_external.
      	(c_parser_omp_clause_name): Parse new OpenMP 4.0 clause names.
      	(c_parser_omp_variable_list): Parse array sections for
      	OMP_CLAUSE_{DEPEND,MAP,TO,FROM} clauses.
      	(c_parser_omp_clause_collapse): Fully fold collapse expression.
      	(c_parser_omp_clause_reduction): Handle user defined reductions.
      	(c_parser_omp_clause_branch, c_parser_omp_clause_cancelkind,
      	c_parser_omp_clause_num_teams, c_parser_omp_clause_thread_limit,
      	c_parser_omp_clause_aligned, c_parser_omp_clause_linear,
      	c_parser_omp_clause_safelen, c_parser_omp_clause_simdlen,
      	c_parser_omp_clause_depend, c_parser_omp_clause_map,
      	c_parser_omp_clause_device, c_parser_omp_clause_dist_schedule,
      	c_parser_omp_clause_proc_bind, c_parser_omp_clause_to,
      	c_parser_omp_clause_from, c_parser_omp_clause_uniform): New functions.
      	(c_parser_omp_all_clauses): Add finish_p argument.  Don't call
      	c_finish_omp_clauses if it is false.  Handle new OpenMP 4.0 clauses.
      	(c_parser_omp_atomic): Parse seq_cst clause, pass true if it is
      	present to c_finish_omp_atomic.  Handle OpenMP 4.0 atomic forms.
      	(c_parser_omp_for_loop): Add CODE argument, pass it through
      	to c_finish_omp_for.  Change last argument to cclauses,
      	and adjust uses to grab parallel clauses from the array of all
      	the split clauses.  Adjust c_parser_binary_expression,
      	c_parser_declaration_or_fndef and c_finish_omp_for callers.
      	(omp_split_clauses): New function.
      	(c_parser_omp_simd): New function.
      	(c_parser_omp_for): Add p_name, mask and cclauses arguments.
      	Allow the function to be called also when parsing combined constructs,
      	and call c_parser_omp_simd when parsing for simd.
      	(c_parser_omp_sections_scope): If section-sequence doesn't start with
      	#pragma omp section, require exactly one structured-block instead of
      	sequence of statements.
      	(c_parser_omp_sections): Add p_name, mask and cclauses arguments.
      	Allow the function to be called also when parsing combined constructs.
      	(c_parser_omp_parallel): Add p_name, mask and cclauses arguments.
      	Allow the function to be called also when parsing combined
      	constructs.
      	(c_parser_omp_taskgroup, c_parser_omp_cancel,
      	c_parser_omp_cancellation_point, c_parser_omp_distribute,
      	c_parser_omp_teams, c_parser_omp_target_data,
      	c_parser_omp_target_update, c_parser_omp_target,
      	c_parser_omp_declare_simd, c_finish_omp_declare_simd,
      	c_parser_omp_declare_target, c_parser_omp_end_declare_target,
      	c_parser_omp_declare_reduction, c_parser_omp_declare): New functions.
      	(c_parser_omp_construct): Add p_name and mask vars.  Handle
      	PRAGMA_OMP_DISTRIBUTE, PRAGMA_OMP_SIMD, PRAGMA_OMP_TASKGROUP,
      	PRAGMA_OMP_TEAMS.  Adjust c_parser_omp_for, c_parser_omp_parallel
      	and c_parser_omp_sections callers.
      	(c_parse_file): Initialize tparser.tokens and the_parser->tokens here.
      	(OMP_FOR_CLAUSE_MASK, OMP_SECTIONS_CLAUSE_MASK,
      	OMP_SINGLE_CLAUSE_MASK): Use OMP_CLAUSE_MASK_1 instead of 1.
      	(OMP_PARALLEL_CLAUSE_MASK): Likewise.  Add OMP_CLAUSE_PROC_BIND.
      	(OMP_TASK_CLAUSE_MASK): Use OMP_CLAUSE_MASK_1 instead of 1.  Add
      	OMP_CLAUSE_DEPEND.
      	(OMP_SIMD_CLAUSE_MASK, OMP_CANCEL_CLAUSE_MASK,
      	OMP_CANCELLATION_POINT_CLAUSE_MASK, OMP_DISTRIBUTE_CLAUSE_MASK,
      	OMP_TEAMS_CLAUSE_MASK, OMP_TARGET_DATA_CLAUSE_MASK,
      	OMP_TARGET_UPDATE_CLAUSE_MASK, OMP_TARGET_CLAUSE_MASK,
      	OMP_DECLARE_SIMD_CLAUSE_MASK): Define.
      	* c-typeck.c: Include tree-inline.h.
      	(c_finish_omp_cancel, c_finish_omp_cancellation_point,
      	handle_omp_array_sections_1, handle_omp_array_sections,
      	c_clone_omp_udr, c_find_omp_placeholder_r): New functions.
      	(c_finish_omp_clauses): Handle new OpenMP 4.0 clauses and
      	user defined reductions.
      	(c_tree_equal): New function.
      	* c-tree.h (temp_store_parm_decls, temp_pop_parm_decls,
      	c_finish_omp_cancel, c_finish_omp_cancellation_point, c_tree_equal,
      	c_omp_reduction_id, c_omp_reduction_decl, c_omp_reduction_lookup,
      	c_check_omp_declare_reduction_r): New prototypes.
      	* c-decl.c (current_omp_declare_target_attribute): New variable.
      	(c_decl_attributes): New function.
      	(start_decl, start_function): Use it instead of decl_attributes.
      	(temp_store_parm_decls, temp_pop_parm_decls, c_omp_reduction_id,
      	c_omp_reduction_decl, c_omp_reduction_lookup,
      	c_check_omp_declare_reduction_r): New functions.
      gcc/cp/
      	* decl.c (duplicate_decls): Error out for redeclaration of UDRs.
      	(declare_simd_adjust_this): New function.
      	(grokfndecl): If "omp declare simd" attribute is present,
      	call declare_simd_adjust_this if needed and
      	c_omp_declare_simd_clauses_to_numbers.
      	* cp-array-notation.c (expand_array_notation_exprs): Handle
      	OMP_TASKGROUP.
      	* cp-gimplify.c (cp_gimplify_expr): Handle OMP_SIMD and
      	OMP_DISTRIBUTE.  Handle is_invisiref_parm decls in
      	OMP_CLAUSE_REDUCTION.
      	(cp_genericize_r): Handle OMP_SIMD and OMP_DISTRIBUTE like
      	OMP_FOR.
      	(cxx_omp_privatize_by_reference): Return true for
      	is_invisiref_parm decls.
      	(cxx_omp_finish_clause): Adjust cxx_omp_create_clause_info
      	caller.
      	* pt.c (apply_late_template_attributes): For "omp declare simd"
      	attribute call tsubst_omp_clauses,
      	c_omp_declare_simd_clauses_to_decls, finish_omp_clauses
      	and c_omp_declare_simd_clauses_to_numbers.
      	(instantiate_class_template_1): Call cp_check_omp_declare_reduction
      	for UDRs.
      	(tsubst_decl): Handle UDRs.
      	(tsubst_omp_clauses): Add declare_simd argument, if true don't
      	call finish_omp_clauses.  Handle new OpenMP 4.0 clauses.
      	Handle non-NULL OMP_CLAUSE_REDUCTION_PLACEHOLDER on
      	OMP_CLAUSE_REDUCTION.
      	(tsubst_expr): For UDRs call pushdecl and
      	cp_check_omp_declare_reduction.  Adjust tsubst_omp_clauses
      	callers.  Handle OMP_SIMD, OMP_DISTRIBUTE, OMP_TEAMS,
      	OMP_TARGET_DATA, OMP_TARGET_UPDATE, OMP_TARGET, OMP_TASKGROUP.
      	Adjust finish_omp_atomic caller.
      	(tsubst_omp_udr): New function.
      	(instantiate_decl): For UDRs at block scope, don't call
      	start_preparsed_function/finish_function.  Call tsubst_omp_udr.
      	* semantics.c (cxx_omp_create_clause_info): Add need_dtor argument,
      	use it instead of need_default_ctor || need_copy_ctor.
      	(struct cp_check_omp_declare_reduction_data): New type.
      	(handle_omp_array_sections_1, handle_omp_array_sections,
      	omp_reduction_id, omp_reduction_lookup,
      	cp_remove_omp_priv_cleanup_stmt, cp_check_omp_declare_reduction_r,
      	cp_check_omp_declare_reduction, clone_omp_udr,
      	find_omp_placeholder_r, finish_omp_reduction_clause): New functions.
      	(finish_omp_clauses): Handle new OpenMP 4.0 clauses and user defined
      	reductions.
      	(finish_omp_for): Add CODE argument, use it instead of hardcoded
      	OMP_FOR.  Adjust c_finish_omp_for caller.
      	(finish_omp_atomic): Add seq_cst argument, adjust
      	c_finish_omp_atomic callers, handle seq_cst and new OpenMP 4.0
      	atomic variants.
      	(finish_omp_cancel, finish_omp_cancellation_point): New functions.
      	* decl2.c (mark_used): Force immediate instantiation of
      	DECL_OMP_DECLARE_REDUCTION_P decls.
      	(is_late_template_attribute): Return true for "omp declare simd"
      	attribute.
      	(cp_omp_mappable_type): New function.
      	(cplus_decl_attributes): Add implicit "omp declare target" attribute
      	if requested.
      	* parser.c (cp_debug_parser): Print
      	parser->colon_doesnt_start_class_def_p.
      	(cp_ensure_no_omp_declare_simd, cp_finalize_omp_declare_simd): New
      	functions.
      	(enum pragma_context): Add pragma_member and pragma_objc_icode.
      	(cp_parser_binary_expression): Handle no_toplevel_fold_p
      	even for binary operations other than comparison.
      	(cp_parser_linkage_specification): Call
      	cp_ensure_no_omp_declare_simd if needed.
      	(cp_parser_namespace_definition): Likewise.
      	(cp_parser_init_declarator): Call cp_finalize_omp_declare_simd.
      	(cp_parser_direct_declarator): Pass declarator to
      	cp_parser_late_return_type_opt.
      	(cp_parser_late_return_type_opt): Add declarator argument,
      	call cp_parser_late_parsing_omp_declare_simd for declare simd.
      	(cp_parser_class_specifier_1): Call cp_ensure_no_omp_declare_simd.
      	Parse UDRs before all other methods.
      	(cp_parser_member_specification_opt): Use pragma_member instead of
      	pragma_external.
      	(cp_parser_member_declaration): Call cp_finalize_omp_declare_simd.
      	(cp_parser_function_definition_from_specifiers_and_declarator,
      	cp_parser_save_member_function_body): Likewise.
      	(cp_parser_late_parsing_for_member): Handle UDRs specially.
      	(cp_parser_next_token_starts_class_definition_p): Don't allow
      	CPP_COLON if colon_doesnt_start_class_def_p flag is true.
      	(cp_parser_objc_interstitial_code): Use pragma_objc_icode
      	instead of pragma_external.
      	(cp_parser_omp_clause_name): Parse new OpenMP 4.0 clause names.
      	(cp_parser_omp_var_list_no_open): Parse array sections for
      	OMP_CLAUSE_{DEPEND,MAP,TO,FROM} clauses.  Add COLON argument,
      	if non-NULL, allow parsing to end with a colon rather than close
      	paren.
      	(cp_parser_omp_var_list): Adjust cp_parser_omp_var_list_no_open
      	caller.
      	(cp_parser_omp_clause_reduction): Handle user defined reductions.
      	(cp_parser_omp_clause_branch, cp_parser_omp_clause_cancelkind,
      	cp_parser_omp_clause_num_teams, cp_parser_omp_clause_thread_limit,
      	cp_parser_omp_clause_aligned, cp_parser_omp_clause_linear,
      	cp_parser_omp_clause_safelen, cp_parser_omp_clause_simdlen,
      	cp_parser_omp_clause_depend, cp_parser_omp_clause_map,
      	cp_parser_omp_clause_device, cp_parser_omp_clause_dist_schedule,
      	cp_parser_omp_clause_proc_bind, cp_parser_omp_clause_to,
      	cp_parser_omp_clause_from, cp_parser_omp_clause_uniform): New
      	functions.
      	(cp_parser_omp_all_clauses): Add finish_p argument.  Don't call
      	finish_omp_clauses if it is false.  Handle new OpenMP 4.0 clauses.
      	(cp_parser_omp_atomic): Parse seq_cst clause, pass
      	true if it is present to finish_omp_atomic.  Handle new OpenMP 4.0
      	atomic forms.
      	(cp_parser_omp_for_loop): Add CODE argument, pass it through
      	to finish_omp_for.  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): New function.
      	(cp_parser_omp_for): Add p_name, mask and cclauses arguments.
      	Allow the function to be called also when parsing combined constructs,
      	and call c_parser_omp_simd when parsing for simd.
      	(cp_parser_omp_sections_scope): If section-sequence doesn't start with
      	#pragma omp section, require exactly one structured-block instead of
      	sequence of statements.
      	(cp_parser_omp_sections): Add p_name, mask and cclauses arguments.
      	Allow the function to be called also when parsing combined constructs.
      	(cp_parser_omp_parallel): Add p_name, mask and cclauses arguments.
      	Allow the function to be called also when parsing combined
      	constructs.
      	(cp_parser_omp_taskgroup, cp_parser_omp_cancel,
      	cp_parser_omp_cancellation_point, cp_parser_omp_distribute,
      	cp_parser_omp_teams, cp_parser_omp_target_data,
      	cp_parser_omp_target_update, cp_parser_omp_target,
      	cp_parser_omp_declare_simd, cp_parser_late_parsing_omp_declare_simd,
      	cp_parser_omp_declare_target, cp_parser_omp_end_declare_target,
      	cp_parser_omp_declare_reduction_exprs, cp_parser_omp_declare_reduction,
      	cp_parser_omp_declare): New functions.
      	(cp_parser_omp_construct): Add p_name and mask vars.  Handle
      	PRAGMA_OMP_DISTRIBUTE, PRAGMA_OMP_SIMD, PRAGMA_OMP_TASKGROUP,
      	PRAGMA_OMP_TEAMS.  Adjust cp_parser_omp_for, cp_parser_omp_parallel
      	and cp_parser_omp_sections callers.
      	(cp_parser_pragma): Handle PRAGMA_OMP_CANCEL,
      	PRAGMA_OMP_CANCELLATION_POINT, PRAGMA_OMP_DECLARE_REDUCTION,
      	PRAGMA_OMP_DISTRIBUTE, PRAGMA_OMP_SIMD, PRAGMA_OMP_TASKGROUP,
      	PRAGMA_OMP_TEAMS, PRAGMA_OMP_TARGET, PRAGMA_OMP_END_DECLARE_TARGET.
      	Handle pragma_member and pragma_objc_icode like pragma_external.
      	(OMP_FOR_CLAUSE_MASK, OMP_SECTIONS_CLAUSE_MASK,
      	OMP_SINGLE_CLAUSE_MASK): Use OMP_CLAUSE_MASK_1 instead of 1.
      	(OMP_PARALLEL_CLAUSE_MASK): Likewise.  Add OMP_CLAUSE_PROC_BIND.
      	(OMP_TASK_CLAUSE_MASK): Use OMP_CLAUSE_MASK_1 instead of 1.  Add
      	OMP_CLAUSE_DEPEND.
      	(OMP_SIMD_CLAUSE_MASK, OMP_CANCEL_CLAUSE_MASK,
      	OMP_CANCELLATION_POINT_CLAUSE_MASK, OMP_DISTRIBUTE_CLAUSE_MASK,
      	OMP_TEAMS_CLAUSE_MASK, OMP_TARGET_DATA_CLAUSE_MASK,
      	OMP_TARGET_UPDATE_CLAUSE_MASK, OMP_TARGET_CLAUSE_MASK,
      	OMP_DECLARE_SIMD_CLAUSE_MASK): Define.
      	* parser.h (struct cp_omp_declare_simd_data): New type.
      	(struct cp_parser): Add colon_doesnt_start_class_def_p and
      	omp_declare_simd fields.
      	* cp-objcp-common.h (LANG_HOOKS_OMP_MAPPABLE_TYPE): Define.
      	* cp-tree.h (struct lang_decl_fn): Add omp_declare_reduction_p
      	bit.
      	(DECL_OMP_DECLARE_REDUCTION_P): Define.
      	(OMP_FOR_GIMPLIFYING_P): Use OMP_LOOP_CHECK macro.
      	(struct saved_scope): Add omp_declare_target_attribute field.
      	(cp_omp_mappable_type, omp_reduction_id,
      	cp_remove_omp_priv_cleanup_stmt, cp_check_omp_declare_reduction,
      	finish_omp_cancel, finish_omp_cancellation_point): New prototypes.
      	(finish_omp_for): Add CODE argument.
      	(finish_omp_atomic): Add seq_cst argument.
      	(cxx_omp_create_clause_info): Add need_dtor argument.
      gcc/testsuite/
      	* c-c++-common/gomp/atomic-15.c: Adjust for C diagnostics.
      	Remove error test that is now valid in OpenMP 4.0.
      	* c-c++-common/gomp/atomic-16.c: New test.
      	* c-c++-common/gomp/cancel-1.c: New test.
      	* c-c++-common/gomp/depend-1.c: New test.
      	* c-c++-common/gomp/depend-2.c: New test.
      	* c-c++-common/gomp/map-1.c: New test.
      	* c-c++-common/gomp/pr58472.c: New test.
      	* c-c++-common/gomp/sections1.c: New test.
      	* c-c++-common/gomp/simd1.c: New test.
      	* c-c++-common/gomp/simd2.c: New test.
      	* c-c++-common/gomp/simd3.c: New test.
      	* c-c++-common/gomp/simd4.c: New test.
      	* c-c++-common/gomp/simd5.c: New test.
      	* c-c++-common/gomp/single1.c: New test.
      	* g++.dg/gomp/block-0.C: Adjust for stricter #pragma omp sections
      	parser.
      	* g++.dg/gomp/block-3.C: Likewise.
      	* g++.dg/gomp/clause-3.C: Adjust error messages.
      	* g++.dg/gomp/declare-simd-1.C: New test.
      	* g++.dg/gomp/declare-simd-2.C: New test.
      	* g++.dg/gomp/depend-1.C: New test.
      	* g++.dg/gomp/depend-2.C: New test.
      	* g++.dg/gomp/target-1.C: New test.
      	* g++.dg/gomp/target-2.C: New test.
      	* g++.dg/gomp/taskgroup-1.C: New test.
      	* g++.dg/gomp/teams-1.C: New test.
      	* g++.dg/gomp/udr-1.C: New test.
      	* g++.dg/gomp/udr-2.C: New test.
      	* g++.dg/gomp/udr-3.C: New test.
      	* g++.dg/gomp/udr-4.C: New test.
      	* g++.dg/gomp/udr-5.C: New test.
      	* g++.dg/gomp/udr-6.C: New test.
      	* gcc.dg/autopar/outer-1.c: Expect 4 instead of 5 loopfn matches.
      	* gcc.dg/autopar/outer-2.c: Likewise.
      	* gcc.dg/autopar/outer-3.c: Likewise.
      	* gcc.dg/autopar/outer-4.c: Likewise.
      	* gcc.dg/autopar/outer-5.c: Likewise.
      	* gcc.dg/autopar/outer-6.c: Likewise.
      	* gcc.dg/autopar/parallelization-1.c: Likewise.
      	* gcc.dg/gomp/block-3.c: Adjust for stricter #pragma omp sections
      	parser.
      	* gcc.dg/gomp/clause-1.c: Adjust error messages.
      	* gcc.dg/gomp/combined-1.c: Look for GOMP_parallel_loop_runtime
      	instead of GOMP_parallel_loop_runtime_start.
      	* gcc.dg/gomp/declare-simd-1.c: New test.
      	* gcc.dg/gomp/declare-simd-2.c: New test.
      	* gcc.dg/gomp/nesting-1.c: Adjust for stricter #pragma omp sections
      	parser.  Add further #pragma omp sections nesting tests.
      	* gcc.dg/gomp/target-1.c: New test.
      	* gcc.dg/gomp/target-2.c: New test.
      	* gcc.dg/gomp/taskgroup-1.c: New test.
      	* gcc.dg/gomp/teams-1.c: New test.
      	* gcc.dg/gomp/udr-1.c: New test.
      	* gcc.dg/gomp/udr-2.c: New test.
      	* gcc.dg/gomp/udr-3.c: New test.
      	* gcc.dg/gomp/udr-4.c: New test.
      	* gfortran.dg/gomp/appendix-a/a.35.5.f90: Add dg-error.
      
      Co-Authored-By: Richard Henderson <rth@redhat.com>
      Co-Authored-By: Tobias Burnus <burnus@net-b.de>
      
      From-SVN: r203408
      Jakub Jelinek committed
  5. 10 Jan, 2013 1 commit
  6. 23 Nov, 2012 1 commit
    • re PR c++/54046 (wrong control reaches end of non-void function for switch case… · 88cd0e88
      re PR c++/54046 (wrong control reaches end of non-void function for switch case with throw and default)
      
      	PR c++/54046
      	* Makefile.in (gimple-low.o): Depend on langhooks.h.
      	* gimple-low.c: Include langhooks.c.
      	(block_may_fallthru): Handle TARGET_EXPR and ERROR_MARK,
      	by default call lang_hooks.block_may_fallthru.
      	* langhooks.h (struct lang_hooks): Add block_may_fallthru
      	langhook.
      	* langhooks-def.h (LANG_HOOKS_BLOCK_MAY_FALLTHRU): Define.
      	(LANG_HOOKS_INITIALIZER): Use it.
      
      	* cp-objcp-common.h (LANG_HOOKS_BLOCK_MAY_FALLTHRU): Redefine.
      	* cp-objcp-common.c (cxx_block_may_fallthru): New function.
      	* cp-tree.h (cxx_block_may_fallthru): New prototype.
      
      	* g++.dg/warn/Wreturn-type-8.C: New test.
      
      From-SVN: r193762
      Jakub Jelinek committed
  7. 25 Apr, 2012 1 commit
    • cgraphunit.c: Update toplevel comment. · 9c8305f8
      	* cgraphunit.c: Update toplevel comment.
      	(tree_rest_of_compilation): Merge into cgraph_expand_function.
      	(cgraph_analyze_function): Make static.
      	(cgraph_decide_is_function_needed): Make static.
      	(cgraph_add_new_function): Use expand_function instead of
      	rest_of_compilation.
      	(clone_of_p, verify_edge_count_and_frequency, cgraph_debug_gimple_stmt,
      	verify_edge_corresponds_to_fndecl, verify_cgraph_node, verify_cgraph):
      	Move to cgraph.c
      	(cgraph_inline_p): Remove.
      	(cgraph_preserve_function_body_p): Move to ipa-inline-transform.
      	(init_cgraph): Add comment.
      	* cgraphbuild.c (record_reference, mark_address, mark_load,
      	mark_store): Do not call analyze_expr hook.
      	* cgraph.c: Update toplevel comment.
      	(clone_of_p, verify_edge_count_and_frequency, cgraph_debug_gimple_stmt,
      	verify_edge_corresponds_to_fndecl, verify_cgraph_node, verify_cgraph):
      	Move fere from cgraphunit.c
      	(cgraph_mark_force_output_node): Move to cgraph.h
      	* cgraph.h: Reorder so the comments match the function placement.
      	(cgraph_analyze_function, cgraph_decide_is_function_needed): Remove.
      	(cgraph_mark_force_output_node): Move here from cgraph.c
      	* tree.c (free_lang_data): Do not clear analyze_expr hook.
      	* ipa-inline-transform.c (preserve_function_body_p): New function.
      	(inline_transform): Update.
      	* langhooks.c (lhd_callgraph_analyze_expr): Remove.
      	* langhooks.h (lang_hooks_for_callgraph): Remove.
      	(lang_hooks): Remove callgraph.
      	* tree-inline.c (expand_call_inline): Do not use cgraph_inline_p.
      	* varpool.c: Remove out of date comment.
      	* langhooks-def.h (lhd_callgraph_analyze_expr): Remove.
      	(LANG_HOOKS_CALLGRAPH_ANALYZE_EXPR): Remove.
      
      From-SVN: r186832
      Jan Hubicka committed
  8. 01 Apr, 2011 1 commit
    • dwarf2out.c (dwarf_attr_name): Map DW_AT_GNAT_descriptive_type. · 2a9d769a
      	* dwarf2out.c (dwarf_attr_name): Map DW_AT_GNAT_descriptive_type.
      	(add_gnat_descriptive_type_attribute): New function.
      	(gen_array_type_die): Call it.
      	(gen_enumeration_type_die): Likewise.
      	(gen_struct_or_union_type_die): Likewise.
      	(modified_type_die): Likewise.
      	* langhooks.h (lang_hooks_for_types): New descriptive_type hook.
      	* langhooks-def.h (LANG_HOOKS_DESCRIPTIVE_TYPE): Default to NULL.
      	(LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_DESCRIPTIVE_TYPE.
      ada/
      	* gcc-interface/misc.c (gnat_descriptive_type): New function.
      	(LANG_HOOKS_DESCRIPTIVE_TYPE): Redefine to gnat_descriptive_type.
      
      Co-Authored-By: Eric Botcazou <ebotcazou@adacore.com>
      Co-Authored-By: Nicolas Setton <setton@adacore.com>
      
      From-SVN: r171862
      Olivier Hainque committed
  9. 17 Nov, 2010 1 commit
    • invoke.texi (-dy): Remove. · b37421c6
      	* doc/invoke.texi (-dy): Remove.
      	* langhooks-def.h (lhd_do_nothing_i): Don't declare.
      	(LANG_HOOKS_PARSE_FILE): Define to lhd_do_nothing.
      	* langhooks.c (lhd_do_nothing_i): Remove.
      	* langhooks.h (lang_hooks.parse_file): Take no arguments.
      	* toplev.c (set_yydebug): Remove.
      	(compile_file): Update call to lang_hooks.parse_file.
      	(decode_d_option): Don't handle -dy.
      
      ada:
      	* gcc-interface/misc.c (gnat_parse_file): Take no arguments.
      
      c-family:
      	* c-opts.c (c_common_parse_file): Take no arguments.
      	* c-common.h (c_common_parse_file): Update prototype.
      
      fortran:
      	* f95-lang.c (gfc_be_parse_file): Take no arguments.
      
      java:
      	* jcf-parse.c (java_parse_file): Take no arguments.
      	* java-tree.h (java_parse_file): Update prototype.
      
      lto:
      	* lto.c (lto_main): Take no arguments.
      	* lto.h (lto_main): Update prototype.
      
      From-SVN: r166868
      Joseph Myers committed
  10. 12 Nov, 2010 1 commit
    • Makefile.in (OPTS_H): Define. · a4d8c676
      	* Makefile.in (OPTS_H): Define.
      	(c-decl.o, c-family/c-common.o, c-family/c-opts.o,
      	c-family/c-pch.o, c-family/c-pragma.o, gcc.o, gccspec.o,
      	cppspec.o, options.o, gcc-options.o, lto-opts.o, opts.o,
      	opts-common.o, toplev.o, passes.o, matrix-reorg.o,
      	ipa-struct-reorg.o, PLUGIN_HEADERS): Use $(OPTS_H).
      	* gcc.c (driver_handle_option): Take location_t parameter.
      	(process_command, do_self_spec): Update calls to
      	read_cmdline_option.
      	* langhooks-def.h (lhd_handle_option): Take location_t parameter.
      	* langhooks.c (lhd_handle_option): Take location_t parameter.
      	* langhooks.h (handle_option): Take location_t parameter.
      	* lto-opts.c (lto_reissue_options): Update call to set_option.
      	* opts-common.c (handle_option): Make static.  Take location_t
      	parameter and pass it to other functions.
      	(handle_generated_option): Take location_t parameter and pass it
      	to other functions.
      	(read_cmdline_option): Take location_t parameter and pass it to
      	other functions.  Use warning_at and error_at.
      	(set_option): Take location_t parameter and pass it to other
      	functions.
      	* opts.c (common_handle_option): Take location_t parameter and
      	pass it to other functions.
      	(enable_warning_as_error): Make static.  Take location_t parameter
      	and pass it to other functions.
      	(lang_handle_option): Take location_t parameter and pass it to
      	other functions.
      	(target_handle_option): Take location_t parameter.
      	(read_cmdline_options, maybe_default_option,
      	maybe_default_options, default_options_optimization,
      	decode_options): Take location_t parameter and pass it to other
      	functions.
      	* opts.h: Include input.h.
      	(struct cl_option_handler_func, decode_options, set_option,
      	handle_generated_option, read_cmdline_option): Take location_t
      	parameters.
      	(handle_option, enable_warning_as_error): Remove.
      	* toplev.c (toplev_main): Update call to decode_options.
      
      ada:
      	* gcc-interface/Make-lang.in (ada/misc.o): Use $(OPTS_H).
      	* gcc-interface/misc.c (gnat_handle_option): Take location_t
      	parameter.
      
      c-family:
      	* c-common.c (parse_optimize_options): Update call to
      	decode_options.
      	* c-common.h (c_common_handle_option): Update prototype.
      	* c-opts.c (c_common_handle_option): Take location_t parameter and
      	pass it to other functions.
      
      cp:
      	* Make-lang.in (g++spec.o): Use $(OPTS_H).
      
      fortran:
      	* Make-lang.in (gfortranspec.o): Use $(OPTS_H).
      	* gfortran.h (gfc_handle_option): Take location_t parameter.
      	* options.c (gfc_handle_option): Take location_t parameter.
      
      java:
      	* Make-lang.in (jvspec.o, java/lang.o): Use $(OPTS_H).
      	* lang.c (java_handle_option): Take location_t parameter.
      
      lto:
      	* Make-lang.in (lto/lto.o): Use $(OPTS_H).
      	* lto-lang.c (lto_handle_option): Take location_t parameter.
      
      From-SVN: r166688
      Joseph Myers committed
  11. 15 Oct, 2010 1 commit
    • target.def (target_option.init_struct): New hook. · 7e4aae92
      	* target.def (target_option.init_struct): New hook.
      	* doc/tm.texi.in (TARGET_OPTION_INIT_STRUCT): New @hook.
      	* doc/tm.texi: Regenerate.
      	* hooks.c (hook_void_gcc_optionsp): New.
      	* hooks.h (hook_void_gcc_optionsp): Declare.
      	* langhooks-def.h (lhd_init_options_struct): Remove.
      	(LANG_HOOKS_INIT_OPTIONS_STRUCT): Define to
      	hook_void_gcc_optionsp.
      	* langhooks.c (lhd_init_options_struct): Remove.
      	* opts.c (init_options_struct): Also call
      	targetm.target_option.init_struct.
      	* config/i386/i386.c (ix86_option_init_struct,
      	TARGET_OPTION_INIT_STRUCT): New.
      	(ix86_option_optimization): Move some settings to
      	ix86_option_init_struct.
      	* config/pdp11/pdp11.c (pdp11_option_init_struct,
      	TARGET_OPTION_INIT_STRUCT): New.
      	(pdp11_option_optimization): Move some settings to
      	pdp11_option_init_struct.
      	* config/rs6000/rs6000.c (rs6000_option_optimization): Replace by
      	rs6000_option_init_struct.  Use options structure pointer.
      	(TARGET_OPTION_OPTIMIZATION): Replace by
      	TARGET_OPTION_INIT_STRUCT.
      	* config/s390/s390.c (s390_option_init_struct,
      	TARGET_OPTION_INIT_STRUCT): New.
      	(s390_option_optimization): Don't set
      	flag_asynchronous_unwind_tables here.
      	* config/sh/sh.c (sh_option_init_struct,
      	TARGET_OPTION_INIT_STRUCT): New.
      	(sh_option_optimization): Don't set flag_finite_math_only here.
      	* config/spu/spu.c (spu_option_optimization): Replace by
      	spu_option_optimization.  Use options structure pointer.
      	(TARGET_OPTION_OPTIMIZATION): Replace by
      	TARGET_OPTION_INIT_STRUCT.
      
      From-SVN: r165519
      Joseph Myers committed
  12. 08 Oct, 2010 1 commit
    • Makefile.in (TM_H): Include $(FLAGS_H) instead of options.h. · a75bfaa6
      	* Makefile.in (TM_H): Include $(FLAGS_H) instead of options.h.
      	(TREE_H): Include $(FLAGS_H) instead of options.h.
      	(opts-common.o): Depend on $(FLAGS_H) instead of options.h.
      	* c-objc-common.h (LANG_HOOKS_INIT_OPTIONS_STRUCT): Define.
      	* common.opt (flag_complex_method, flag_evaluation_order,
      	flag_ira_algorithm, flag_ira_region, flag_warn_unused_result): New
      	Variable declarations.
      	* configure.ac (tm_include_list): Include flags.h instead of
      	options.h.
      	* configure: Regenerate.
      	* flags.h: Condition out contents for target libraries.  Include
      	options.h at end of file.
      	(flag_complex_method, flag_ira_algorithm, flag_ira_region,
      	flag_evaluation_order, flag_warn_unused_result): Remove.
      	* gcc.c (main): Intialize global_options with global_options_init.
      	* langhooks-def.h (lhd_init_options_struct): Declare.
      	(LANG_HOOKS_INIT_OPTIONS_STRUCT): Define.
      	(LANG_HOOKS_INITIALIZER): Include LANG_HOOKS_INIT_OPTIONS_STRUCT.
      	* langhooks.c (lhd_init_options_struct): New.
      	* langhooks.h (struct lang_hooks): Add init_options_struct.
      	Update comment on init_options.
      	* optc-gen.awk: Generate initializer for global_options_init, not
      	global_options.
      	* opth-gen.awk: Condition out structure declarations for target
      	libraries.  Declare global_options_init.
      	* opts-common.c: Include flags.h instead of options.h.
      	* opts.c (flag_warn_unused_result): Remove.
      	(read_cmdline_options): Take gcc_options parameters.  Pass them to
      	read_cmdline_option.
      	(initial_lang_mask, initial_min_crossjump_insns,
      	initial_max_fields_for_field_sensitive,
      	initial_loop_invariant_max_bbs_in_loop): Define at file scope.
      	(init_options_once): New.  Split out of decode_options.
      	(init_options_struct): New.  Split out of decode_options.
      	(decode_cmdline_options_to_array_default_mask): New.
      	(default_options_optimization): New.  Split out of decode_options.
      	(decode_options): Move most code to other functions.  Update call
      	to read_cmdline_options.
      	(finish_options): New.  Split out of decode_options.
      	* opts.h (decode_options): Add gcc_options parameters.
      	(init_options_once, init_options_struct,
      	decode_cmdline_options_to_array_default_mask): New.
      	* toplev.c (flag_complex_method, flag_ira_algorithm,
      	flag_ira_region, flag_evaluation_order): Remove.
      	(general_init): Use global_options_init for initial flag values
      	for global_dc.
      	(toplev_main): Call init_options_once, init_options_struct,
      	lang_hooks.init_options_struct,
      	decode_cmdline_options_to_array_default_mask and
      	lang_hooks.init_option before decode_options.  Update arguments to
      	decode_options.
      	* tree.h: Include flags.h instead of options.h.
      
      ada:
      	* gcc-interface/misc.c (gnat_init_options_struct): New.  Split out
      	from gnat_init_options.
      	(LANG_HOOKS_INIT_OPTIONS_STRUCT): Define.
      
      c-family:
      	* c-common.c (parse_optimize_options): Call
      	decode_cmdline_options_to_array_default_mask before
      	decode_options.  Update arguments to decode_options.
      	* c-common.h (c_common_init_options_struct): Declare.
      	* c-opts.c (c_common_init_options_struct): New.  Split out from
      	c_common_init_options.
      
      cp:
      	* cp-objcp-common.h (LANG_HOOKS_INIT_OPTIONS_STRUCT): Define.
      
      fortran:
      	* f95-lang.c (LANG_HOOKS_INIT_OPTIONS_STRUCT): Define.
      	* gfortran.h (gfc_init_options_struct): Declare.
      	* options.c (gfc_init_options_struct): New.  Split out from
      	gfc_init_options.
      
      java:
      	* lang.c (java_init_options_struct): New.  Split out from
      	java_init_options.
      	(LANG_HOOKS_INIT_OPTIONS_STRUCT): Define.
      
      lto:
      	* lto-lang.c (lto_init_options): Change to
      	lto_init_options_struct.  Update parameters.
      	(LANG_HOOKS_INIT_OPTIONS): Don't define.
      	(LANG_HOOKS_INIT_OPTIONS_STRUCT): Define.
      
      From-SVN: r165189
      Joseph Myers committed
  13. 05 Oct, 2010 1 commit
    • opts-common.c (handle_option, [...]): Add diagnostic_context parameter. · 1ebe4b4f
      	* opts-common.c (handle_option, handle_generated_option,
      	read_cmdline_option, set_option): Add diagnostic_context
      	parameter.  Update calls among these functions.
      	(set_option): Don't use global_dc.
      	* opts.c (read_cmdline_options): Pass global_dc to
      	read_cmdline_option.
      	(decode_options): Pass global_dc to enable_warning_as_error.
      	(common_handle_option): Pass global_dc to enable_warning_as_error.
      	(enable_warning_as_error): Add diagnostic_context parameter.
      	Document parameters.  Don't use global_dc.  Pass
      	diagnostic_context parameter to handle_generated_option.
      	* opts.h (set_option, handle_option, handle_generated_option,
      	read_cmdline_option, enable_warning_as_error): Add
      	diagnostic_context parameter.
      	* Makefile.in (lto-opts.o): Update dependencies.
      	* coretypes.h (struct diagnostic_context, diagnostic_context):
      	Declare here.
      	* diagnostic.h (diagnostic_context): Don't declare typedef here.
      	* gcc.c (process_command): Pass global_dc to read_cmdline_option.
      	* langhooks-def.h (struct diagnostic_context): Don't declare here.
      	(lhd_print_error_function, lhd_initialize_diagnostics): Declare
      	using diagnostic_context typedef.
      	* langhooks.c (lhd_initialize_diagnostics): Declare using
      	diagnostic_context typedef.
      	* langhooks.h (struct diagnostic_context): Don't declare here.
      	(initialize_diagnostics, print_error_function): Declare using
      	diagnostic_context typedef.
      	* lto-opts.c: Include diagnostic.h.
      	(lto_reissue_options): Pass global_dc to set_option.  Pass
      	DK_UNSPECIFIED not 0.
      	* plugin.c (plugins_internal_error_function): Declare using
      	diagnostic_context typedef.
      	* plugin.h (struct diagnostic_context): Don't declare here.
      	(plugins_internal_error_function): Declare using
      	diagnostic_context typedef.
      
      c-family:
      	* c-common.h (struct diagnostic_context): Don't declare here.
      	(c_common_initialize_diagnostics): Declare using
      	diagnostic_context typedef.
      	* c-opts.c (c_common_handle_option): Pass global_dc to
      	handle_generated_option.
      
      cp:
      	* cp-tree.h (cxx_print_error_function,
      	cxx_initialize_diagnostics): Declare using diagnostic_context
      	typedef.
      
      From-SVN: r164991
      Joseph Myers committed
  14. 20 Sep, 2010 1 commit
    • langhooks.h (struct lang_hooks_for_types): Remove hash_types field. · 523e82a7
      	* langhooks.h (struct lang_hooks_for_types): Remove hash_types field.
      	* langhooks-def.h (LANG_HOOKS_HASH_TYPES): Delete.
      	(LANG_HOOKS_FOR_TYPES_INITIALIZER): Remove LANG_HOOKS_HASH_TYPES.
      	* system.h (LANG_HOOKS_HASH_TYPES): Poison.
      	* tree.c (type_hash_canon): Do not test lang_hooks.types.hash_types.
      	(build_nonstandard_integer_type): Likewise.
      	(build_range_type_1): New function, built from...
      	(build_range_type): ...this.  Call build_range_type_1.
      	(build_nonshared_range_type): New function.
      	(build_array_type_1): New function, built from...
      	(build_array_type: ...this.  Call build_array_type_1.
      	(build_nonshared_array_type): New function.
      	* tree.h (build_nonshared_range_type): Declare.
      	(build_nonshared_array_type): Likewise.
      ada/
      	* gcc-interface/decl.c (gnat_to_gnu_entity): Replace calls to
      	build_array_type with calls to build_nonshared_array_type.
      	(substitute_in_type): Likewise.
      	* gcc-interface/misc.c (LANG_HOOKS_HASH_TYPES): Delete.
      	(LANG_HOOKS_TYPE_HASH_EQ): Define.
      	(gnat_post_options): Add 'static' keyword.
      	(gnat_type_hash_eq): New static function.
      	* gcc-interface/utils.c (fntype_same_flags_p): New function.
      	(create_subprog_type): Call it.
      	(create_index_type): Call build_nonshared_range_type and tidy up.
      	(create_range_type): Likewise.
      	* gcc-interface/gigi.h (fntype_same_flags_p): Declare.
      
      From-SVN: r164452
      Eric Botcazou committed
  15. 27 Jul, 2010 3 commits
    • coretypes.h (struct cl_option_handlers): Declare. · 5f20c657
      	* coretypes.h (struct cl_option_handlers): Declare.
      	* hooks.c (hook_int_size_t_constcharptr_int_0): Remove.
      	* hooks.h (hook_int_size_t_constcharptr_int_0): Remove.
      	* langhooks-def.h (lhd_handle_option): Declare.
      	(LANG_HOOKS_HANDLE_OPTION): Use lhd_handle_option.
      	* langhooks.c (lhd_handle_option): New.
      	* langhooks.h (struct lang_hooks): Update prototype and return
      	value type of handle_option hook.
      	* optc-gen.awk: Generate target_flags_explicit definition for the
      	driver.
      	* opts-common.c: Include diagnostic.h.
      	(handle_option): Move from opts.c.  Update prototype and return
      	value type.  Use handlers structure.
      	(read_cmdline_option): Move from opts.c.  Update prototype.  Use
      	handlers structure.
      	(set_option): Move from opts.c.
      	* opts.c (common_handle_option): Update prototype and return value
      	type.  Update calls to handle_option and enable_warning_as_error.
      	(unknown_option_callback, post_handling_callback,
      	lang_handle_option, target_handle_option): New.
      	(handle_option, read_cmdline_option): Move to opts-common.c.
      	(read_cmdline_options): Update prototype.  Update call to
      	read_cmdline_option.
      	(decode_options): Initialize and use handlers structure.
      	(set_option): Move to opts-common.c.
      	(enable_warning_as_error): Update prototype.  Update call to
      	handle_option.
      	* opts.h (struct cl_option_handler_func, struct
      	cl_option_handlers): New.
      	(handle_option, enable_warning_as_error): Update prototypes.
      	(read_cmdline_option): Declare.
      	* Makefile.in (opts-common.o): Update dependencies.
      
      ada:
      	* gcc-interface/misc.c (gnat_handle_option): Update prototype and
      	return value type.  Don't check for missing arguments here.
      
      c-family:
      	* c-common.h (c_common_handle_option): Update prototype and return
      	value type.
      	* c-opts.c (c_common_handle_option): Update prototype and return
      	value type.  Update calls to handle_option and
      	enable_warning_as_error.
      
      fortran:
      	* gfortran.h (gfc_handle_option): Update prototype and return
      	value type.
      	* options.c (gfc_handle_option): Update prototype and return value
      	type.
      
      java:
      	* lang.c (java_handle_option): Update prototype and return value
      	type.
      
      lto:
      	* lto-lang.c (lto_handle_option): Update prototype and return
      	value type.  Remove duplicate assignment to result.
      
      From-SVN: r162601
      Joseph Myers committed
    • common.opt (o): Add MissingArgError. · 61ff2bdc
      	* common.opt (o): Add MissingArgError.
      	* doc/options.texi (MissingArgError): Document.
      	* hooks.c (hook_bool_constcharptr_size_t_false): Remove.
      	* hooks.h (hook_bool_constcharptr_size_t_false): Remove.
      	* langhooks-def.h (LANG_HOOKS_MISSING_ARGUMENT): Remove.
      	(LANG_HOOKS_INITIALIZER): Remove missing_argument hook
      	initializer.
      	* langhooks.h (struct lang_hooks): Remove missing_argument.
      	* optc-gen.awk: Handle MissingArgError and output new structure
      	field initializers.
      	* opts.c (read_cmdline_option): Use missing_argument_error field
      	instead of missing_argument langhook.
      	* opts.h (struct cl_option): Add missing_argument_error field.
      	* system.h (LANG_HOOKS_MISSING_ARGUMENT): Poison.
      
      c-family:
      	* c-common.h (c_common_missing_argument): Remove.
      	* c-opts.c (c_common_missing_argument): Remove.
      	* c.opt (A, D, F, I, MD, MMD, MQ, MT, U, fconstant-string-class=,
      	idirafter, imacros, include, isysroot, isystem, iquote): Add
      	MissingArgError.
      	* c-objc-common.h (LANG_HOOKS_MISSING_ARGUMENT): Remove.
      
      cp:
      	* cp-objcp-common.h (LANG_HOOKS_MISSING_ARGUMENT): Remove.
      
      po:
      	* exgettext: Also extract MissingArgError texts from .opt files.
      
      From-SVN: r162571
      Joseph Myers committed
    • langhooks-def.h (lhd_init_options, [...]): New. · 7a9bf9a4
      	* langhooks-def.h (lhd_init_options, LANG_HOOKS_OPTION_LANG_MASK,
      	LANG_HOOKS_COMPLAIN_WRONG_LANG_P): New.
      	(LANG_HOOKS_INIT_OPTIONS): Update default definition.
      	(LANG_HOOKS_INITIALIZER): Add new hooks.
      	* langhooks.c (lhd_init_options, lhd_complain_wrong_lang_p): New.
      	* langhooks.h (struct lang_hooks): Add new hooks option_lang_mask
      	and complain_wrong_lang_p.  Update init_options prototype.
      	* c-objc-common.c (c_initialize_diagnostics): First call
      	c_common_initialize_diagnostics.
      	* c-objc-common.h (LANG_HOOKS_OPTION_LANG_MASK,
      	LANG_HOOKS_COMPLAIN_WRONG_LANG_P): Define.
      	* coretypes.h (struct cl_option, struct cl_decoded_option):
      	Declare.
      	* hooks.c (hook_uint_uint_constcharptrptr_0): Remove.
      	(hook_uint_void_0): New.
      	* hooks.h (hook_uint_uint_constcharptrptr_0): Remove.
      	(hook_uint_void_0): New.
      	* opts-common.c (decode_cmdline_option,
      	decode_cmdline_options_to_array): Also fill in canonical_option
      	field.
      	* opts.c (complain_wrong_lang): Use langhook to determine whether
      	to complain instead of special-casing LTO.
      	(decode_options): Separate lang_mask determination with
      	option_lang_mask hook from call of init_options hook.
      	* opts.h (struct cl_decoded_option): Add canonical_option.
      
      ada:
      	* gcc-interface/misc.c (gnat_option_lang_mask): New.
      	(gnat_init_options): Update prototype.  Reconstruct argv array
      	from decoded options.
      
      c-family:
      	* c-common.h (c_common_option_lang_mask,
      	c_common_initialize_diagnostics, c_common_complain_wrong_lang_p):
      	New.
      	(c_common_init_options): Update prototype.
      	* c-opts.c (c_common_option_lang_mask): New.
      	(c_common_initialize_diagnostics): Split out of
      	c_common_init_options.
      	(accept_all_c_family_options, c_common_complain_wrong_lang_p):
      	New.
      	(c_common_init_options): Update prototype.  Use decoded options in
      	search for -lang-asm.
      
      cp:
      	* cp-objcp-common.c (cxx_initialize_diagnostics): First call
      	c_common_initialize_diagnostics.
      	* cp-objcp-common.h (LANG_HOOKS_OPTION_LANG_MASK,
      	LANG_HOOKS_COMPLAIN_WRONG_LANG_P): Define.
      
      fortran:
      	* cpp.c (gfc_cpp_init_options): Update prototype.  Use number of
      	decoded options in allocating deferred_opt.
      	* cpp.h (gfc_cpp_init_options): Update prototype.
      	* f95-lang.c (LANG_HOOKS_OPTION_LANG_MASK): Define.
      	* gfortran.h (gfc_option_lang_mask): New.
      	(gfc_init_options): Update prototype.
      	* options.c (gfc_option_lang_mask): New.
      	(gfc_init_options): Update prototype.  Pass new arguments to
      	gfc_cpp_init_options.
      
      java:
      	* lang.c (java_option_lang_mask): New.
      	(java_init_options): Update prototype.
      	(LANG_HOOKS_OPTION_LANG_MASK): Define.
      
      lto:
      	* lto-lang.c (lto_option_lang_mask, lto_complain_wrong_lang_p):
      	New.
      	(lto_init_options): Update prototype.
      	(LANG_HOOKS_OPTION_LANG_MASK, LANG_HOOKS_COMPLAIN_WRONG_LANG_P):
      	Define.
      
      From-SVN: r162560
      Joseph Myers committed
  16. 28 Jun, 2010 1 commit
    • system.h: Poison GCC_EXCEPT_H for front-end files. · 3b06d379
      gcc/ChangeLog:
      2010-06-28  Steven Bosscher  <steven@gcc.gnu.org>
      
      	* system.h: Poison GCC_EXCEPT_H for front-end files.
      
      	* langhooks.h (struct lang_hooks): Add eh_protect_cleanup_actions
      	langhook.
      	* langhooks-def.h (LANG_HOOKS_EH_PROTECT_CLEANUP_ACTIONS) New.
      	Define to NULL by default.
      	* except.h: Define GCC_EXCEPT_H.
      	(doing_eh): Remove prototype.
      	(init_eh, init_eh_for_function): Move prototypes to toplev.h.
      	(lang_protect_cleanup_actions): Remove.
      	* except.c (lang_protect_cleanup_actions): Remove.
      	(doing_eh): Remove.
      	(gen_eh_region): Don't check doing_eh here.
      	* toplev.h (init_eh, init_eh_for_function_): Moved from except.h.
      	* tree-eh.c (honor_protect_cleanup_actions): Use new langhook
      	instead of lang_protect_cleanup_actions.
      	* omp-low.c (maybe_catch_exception): Likewise.
      	* Makefile.in: Update dependencies.
      
      gcc/c-family/ChangeLog:
      2010-06-28  Steven Bosscher  <steven@gcc.gnu.org>
      
      	* c-cppbuiltin.c: Do not include except.h.
      
      gcc/objc/ChangeLog:
      2010-06-28  Steven Bosscher  <steven@gcc.gnu.org>
      
      	* objc-act.c: Do not include except.h.
      
      gcc/cp/ChangeLog:
      2010-06-28  Steven Bosscher  <steven@gcc.gnu.org>
      
      	* init.c: Do not include except.h.
      	* decl.c: Likewise.
      	* expr.c: Likewise.
      	* cp-lang.c: Likewise.
      	* pt.c: Likewise.
      	* semantics.c: Likewise.
      	* decl2.c: Likewise.
      	* except.c: Likewise.
      	(init_exception_processing): Do not set the removed
      	lang_protect_cleanup_actions here.
      	(cp_protect_cleanup_actions): Make non-static and remove prototype.
      	(doing_eh): New, moved from except.c but removed the do_warning flag.
      	(expand_start_catch_block): Update doing_eh call.
      	(expand_end_catch_block): Likewise.
      	(build_throw): Likewise.
      	* cp-tree.h: Prototype cp_protect_cleanup_actions.
      	* cp-objcp-common.h: Set LANG_HOOKS_EH_PROTECT_CLEANUP_ACTIONS to
      	cp_protect_cleanup_actions.
      	* Make-lang.in: Update dependencies.
      
      gcc/objcp/ChangeLog:
      2010-06-28  Steven Bosscher  <steven@gcc.gnu.org>
      
      	* objcp-lang.c: Do not include except.h.
      	* Make-lang.in: Update dependencies.
      
      gcc/java/ChangeLog:
      2010-06-28  Steven Bosscher  <steven@gcc.gnu.org>
      
      	* lang.c: Do not include except.h
      	* except.c: Likewise.
      	(doing_eh): New, moved from except.c (in gcc/) but removed the
      	do_warning flag.
      	(maybe_start_try): Update doing_eh call.
      	* Make-lang.in: Update dependencies.
      
      gcc/ada/ChangeLog:
      2010-06-28  Steven Bosscher  <steven@gcc.gnu.org>
      
      	* gcc-interface/misc.c: Do not include except.h.
      	* gcc-interface/Make-lang.in: Update dependencies.
      
      gcc/fortran/ChangeLog:
      2010-06-28  Steven Bosscher  <steven@gcc.gnu.org>
      
      	* Make-lang.in: Update dependencies.
      
      From-SVN: r161484
      Steven Bosscher committed
  17. 15 Jun, 2010 1 commit
    • re PR fortran/44536 (OMP: missing error with default(none)) · 79943d19
      	PR fortran/44536
      	* langhooks.h (struct lang_hooks_for_decls): Add omp_report_decl.
      	* langhooks-def.h (LANG_HOOKS_OMP_REPORT_DECL): Define.
      	(LANG_HOOKS_DECLS): Add it.
      	* gimplify.c (omp_notice_variable): Call
      	lang_hooks.decls.omp_report_decl.
      
      	* trans-openmp.c (gfc_omp_predetermined_sharing): Don't return
      	OMP_CLAUSE_DEFAULT_SHARED for artificial vars with
      	GFC_DECL_SAVED_DESCRIPTOR set.
      	(gfc_omp_report_decl): New function.
      	* trans.h (gfc_omp_report_decl): New prototype.
      	* f95-lang.c (LANG_HOOKS_OMP_REPORT_DECL): Redefine.
      
      	* gfortran.dg/gomp/pr44536.f90: New test.
      	* gfortran.dg/gomp/sharing-3.f90: Remove xfail.
      
      From-SVN: r160779
      Jakub Jelinek committed
  18. 19 May, 2010 1 commit
    • langhooks.h (struct lang_hooks): Add new field deep_unsharing. · 616f1431
      	* langhooks.h (struct lang_hooks): Add new field deep_unsharing.
      	* langhooks-def.h (LANG_HOOKS_DEEP_UNSHARING): New macro.
      	(LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_DEEP_UNSHARING.
      	* gimplify.c: (mostly_copy_tree_r): Copy trees under SAVE_EXPR and
      	TARGET_EXPR nodes, but only once, if instructed to do so.  Do not
      	propagate the 'data' argument to copy_tree_r.
      	(copy_if_shared_r): Remove bogus ATTRIBUTE_UNUSED marker.
      	Propagate 'data' argument to walk_tree.
      	(copy_if_shared): New function.
      	(unmark_visited_r): Remove bogus ATTRIBUTE_UNUSED marker.
      	(unmark_visited): New function.
      	(unshare_body): Call copy_if_shared instead of doing it manually.
      	(unvisit_body): Call unmark_visited instead of doing it manually.
      ada/
      	* gcc-interface/misc.c (LANG_HOOKS_DEEP_UNSHARING): Redefine.
      	* gcc-interface/trans.c (unshare_save_expr): Delete.
      	(gigi): Do not unshare trees under SAVE_EXPRs here.
      
      From-SVN: r159592
      Eric Botcazou committed
  19. 14 May, 2010 1 commit
    • cp-lang.c (LANG_HOOKS_FOLD_OBJ_TYPE_REF): Remove both its undef and define. · b5023f3c
      2010-05-14  Martin Jambor  <mjambor@suse.cz>
      
      	* cp/cp-lang.c (LANG_HOOKS_FOLD_OBJ_TYPE_REF): Remove both its undef
      	and define.
      
      	* langhooks-def.h (LANG_HOOKS_FOLD_OBJ_TYPE_REF): Remove.
      	(LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_FOLD_OBJ_TYPE_REF.
      	* langhooks.h (struct lang_hooks_for_decls): Removed field
      	fold_obj_type_ref.
      	* tree.c (free_lang_data): Remove assignment to
      	lang_hooks.fold_obj_type_ref.
      	* tree.def (OBJ_TYPE_REF): Update comment.
      
      From-SVN: r159393
      Martin Jambor committed
  20. 29 Nov, 2009 1 commit
    • cgraph.c (same_body_alias_1): Break out of · 6744a6ab
      	* cgraph.c (same_body_alias_1): Break out of
      	(same_body_alias): ... here; remove comdat check; it is handled
      	in cp already.
      	(cgraph_add_thunk): New.
      	(dump_cgraph_node): Dump aliases and thunks.
      	* cgraph.h (cgraph_thunk_info): New structure.
      	(struct cgraph_node): Add thunk info.
      	(cgraph_add_thunk): New.
      	* cgraphunit.c (cgraph_emit_thunks): Remove.
      	(cgraph_finalize_compilation_unit): Do not call cgraph_emit_thunks.
      	(assemble_thunk): New function.
      	(cgraph_expand_function): Handle thunks.
      	(thunk_adjust): New.
      	(init_lowered_empty_function): New.
      	* optimize.c (maybe_clone_body): Emit thunks associated to alias.
      	* Make-lang.in (method.o): Add dependency on gimple.h.
      	* method.c: Include gimple.h
      	(make_alias_for_thunk): Use same body alias instead of assemble_alias.
      	(use_thunk): Drop codegen; use cgraph_add_thunk; gimplify
      	generic thunks.
      	* semantics.c (expand_or_defer_fn): Emit associated thunks.
      	* cp-objcp-common.h (LANG_HOOKS_CALLGRAPH_EMIT_ASSOCIATED_THUNKS): Remove.
      	* lto-cgraph.c (lto_output_node): Stream thunk info.
      	(input_node): Likewise.
      	* langhooks.h (lang_hooks_for_callgraph): Remove emit_associated_thunks.
      	* langhooks-def.h (LANG_HOOKS_CALLGRAPH_EMIT_ASSOCIATED_THUNKS): Remove.
      	(LANG_HOOKS_CALLGRAPH_INITIALIZER): Update.
      	* i386.c (x86_output_mi_thunk): Make output prettier.
      
      From-SVN: r154736
      Jan Hubicka committed
  21. 03 Oct, 2009 1 commit
  22. 28 Sep, 2009 1 commit
    • except.h (struct eh_region_d): Add use_cxa_end_cleanup. · 384c400a
      	* except.h (struct eh_region_d): Add use_cxa_end_cleanup.
      	* except.c (gen_eh_region): Set it.
      	(duplicate_eh_regions_1): Copy it.
      	* tree-eh.c (lower_resx): Use it to determine which function
      	to call to resume.
      
      	* langhooks.h (struct lang_hooks): Add eh_use_cxa_end_cleanup.
      	* langhooks-def.h (LANG_HOOKS_EH_USE_CXA_END_CLEANUP): New.
      
      	* builtins.def (BUILT_IN_CXA_END_CLEANUP): New.
      	* tree.c (build_common_builtin_nodes): Remove parameter.  Build
      	BUILT_IN_CXA_END_CLEANUP if necessary.
      	* tree.h (build_common_builtin_nodes): Update decl.
      
      	* c-common.c (c_define_builtins): Update call to
      	build_common_builtin_nodes.
      
      gcc/ada/
      	* gcc-interface/utils.c (gnat_install_builtins): Update call to
      	build_common_builtin_nodes.
      
      gcc/cp/
      	* cp-objcp-common.h (LANG_HOOKS_EH_USE_CXA_END_CLEANUP): New.
      
      gcc/fortran/
      	* f95-lang.c (gfc_init_builtin_functions): Update call to
      	build_common_builtin_nodes.
      
      gcc/java/
      	* builtins.c (initialize_builtins): Update call to
      	build_common_builtin_nodes.
      	* lang.c (LANG_HOOKS_EH_USE_CXA_END_CLEANUP): New.
      
      From-SVN: r152241
      Richard Henderson committed
  23. 22 Sep, 2009 1 commit
    • re PR debug/41266 (Emit DW_TAG_template_parameter_pack and DW_TAG_formal_parameter_pack) · d40a19da
      Fix for PR debug/41266
      
      ChangeLog:
      
      	* include/dwarf2.h (enum dwarf_tag): Add
      	DW_TAG_template_parameter_pack and DW_TAG_formal_parameter_pack.
      
      gcc/ChangeLog:
      
      	* dwarf2out.c (template_parameter_pack_die,
      	gen_formal_parameter_pack_die ): New functions.
      	(make_ith_pack_parameter_name): Remove this function.
      	(dwarf_tag_name): Support printing DW_TAG_template_parameter_pack and
      	DW_TAG_formal_parameter_pack.
      	(gen_generic_params_dies): Represent each template parameter pack
      	by a DW_TAG_template_parameter_pack DIE. Argument pack elements are
      	represented by usual DW_TAG_template_*_parameter DIEs that are
      	children of the DW_TAG_template_parameter_pack element DIE.
      	(generic_parameter_die): This doesn't deal with parameter pack
      	names anymore. Don't generate DW_AT_name for some DIEs, e.g. children of
      	parameter pack DIEs.
      	(gen_formal_parameter_die): Add a flag to not emit DW_AT_name
      	in certain cases, e.g. for pack elements.
      	(gen_formal_types_die, gen_decl_die): Adjust usage of
      	gen_formal_parameter_die.
      	(gen_subprogram_die): Represent each function parameter pack by a
      	DW_TAG_formal_parameter_pack DIE. Arguments of of the pack are
      	represented by usual DW_TAG_formal_parameter DIEs that are children
      	of the DW_TAG_formal_parameter_pack DIE. Remove references to
      	____builtin_va_alist decls as no part of the compiler uses those
      	anymore.
      	* langhooks.h (struct lang_hooks_for_decls): Add
      	function_parm_expanded_from_pack_p, get_generic_function_decl
      	and function_parameter_pack_p hooks.  Fix comment for
      	get_innermost_generic_parms hook.
      	* langhooks-def.h (LANG_HOOKS_FUNCTION_PARAMETER_PACK_P,
      	LANG_HOOKS_FUNCTION_PARM_EXPANDED_FROM_PACK_P ): Declare new hook
      	macros and use them to initialize lang_hook.
      
      gcc/cp/ChangeLog:
      
      	* cp-lang.c (LANG_HOOKS_FUNCTION_PARAMETER_PACK_P,
      	LANG_HOOKS_FUNCTION_PARM_EXPANDED_FROM_PACK_P,
      	LANG_HOOKS_GET_GENERIC_FUNCTION_DECL): Initialize these
      	hooks for the c++ FE.
      	* cp-tree.h (function_parameter_pack_p, get_function_template_decl,
      	function_parameter_expanded_from_pack_p): Declare ...
      	* pt.c (function_parameter_pack_p, get_function_template_decl,
      	function_parameter_expanded_from_pack_p): ... new hooks.
      	(get_template_info): Make this more robust.
      	(template_args_variadic_p, make_ith_pack_parameter_name): Add a new
      	line between comment and function.
      	(get_template_argument_pack_elems): Fix comment.
      	(tsubst_decl): Arguments of function parameter packs are not
      	parameter packs themselves.
      
      gcc/testsuite/ChangeLog:
      	* g++.dg/debug/dwarf2/template-func-params-4.C: Adjust.
      	* g++.dg/debug/dwarf2/template-func-params-7.C: Likewise.
      	* g++.dg/debug/dwarf2/template-params-4.C: Likewise.
      
      From-SVN: r152043
      Dodji Seketeli committed
  24. 13 Sep, 2009 1 commit
    • langhooks-def.h (LANG_HOOKS_EH_RUNTIME_TYPE): Define. · f9417da1
      2009-09-13  Richard Guenther  <rguenther@suse.de>
      	Rafael Avila de Espindola  <espindola@google.com>
      
      	* langhooks-def.h (LANG_HOOKS_EH_RUNTIME_TYPE): Define.
      	(LANG_HOOKS_EH_PERSONALITY): Likewise.
      	(LANG_HOOKS_INITIALIZER): Adjust.
      	(lhd_pass_through_t): Declare.
      	* langhooks.h (struct lang_hooks): Add eh_runtime_type and
      	eh_personality.
      	* langhooks.c (lhd_pass_through_t): New function.
      
              * dwarf2out.c (output_call_frame_info, dwarf2out_do_cfi_startproc,
      	dwarf2out_begin_prologue): Use personality from current_function_decl.
              * expr.h (get_personality_function): Declare.
      	* expr.c (get_personality_function): New function.
      	(build_personality_function): Likewise.
              * libfuncs.h (libfunc_index): Remove LTI_eh_personality.
              (eh_personality_libfunc): Remove.
              * optabs.c (build_libfunc_function): New function split out from ...
      	(init_one_libfunc): ... here.
              * tree.h (DECL_FUNCTION_PERSONALITY): New.
              (tree_function_decl): Add personality.
      	(lhd_gcc_personality): Declare.
      	(build_personality_function): Likewise.
      	* tree.c (gcc_eh_personality_decl): New.
      	(lhd_gcc_personality): New function.
      	* except.h (lang_eh_runtime_type): Remove.
      	(enum eh_personality_kind): New.
      	(build_personality_function): Declare.
      	(function_needs_eh_personality): Declare.
              * except.c (lang_eh_runtime_type): Remove.
      	(function_needs_eh_personality): New function.
      	(add_type_for_runtime): Call lang_hooks.type_for_runtime instead.
              (sjlj_emit_function_enter, output_function_exception_table):
              Use personality from current_function_decl.
      	* tree-eh.c (lower_eh_constructs): Set DECL_FUNCTION_PERSONALITY.
      	* tree-inline.c (tree_can_inline_p): Do not inline across different
      	EH personalities.
      	(expand_call_inline): Likewise.  Adjust the callers EH personality.
      	(tree_function_versioning): Copy DECL_FUNCTION_PERSONALITY.
      	* cgraph.c (cgraph_add_new_function): Set DECL_FUNCTION_PERSONALITY.
      	* Makefile.in (cgraph.o): Add $(EXCEPT_H) dependency.
      	(c-parser.o): Likewise
      
      	* c-tree.h (c_eh_initialized_p): Remove.
      	(c_maybe_initialize_eh): Likewise.
      	* c-decl.c (finish_decl): Don't call c_maybe_initialize_eh.
      	(finish_decl): Don't call c_maybe_initialize_eh.
      	(c_eh_initialized_p): Remove.
      	(c_maybe_initialize_eh): Likewise.
              * c-parser.c (c_parser_omp_construct): Likewise.
      	(c_parse_file): Initialize exception handling.
      
      	objc/
      	* objc-act.c (objc_eh_runtime_type): Export.
      	(objc_init_exceptions): Remove.  Move warning code ...
      	(objc_begin_try_stmt): ... here
      	(objc_build_throw_stmt): ... and here.
      	(objc_eh_personality_decl): New.
      	(objc_eh_personality): New function.
      	* objc-act.h (objc_eh_runtime_type): Declare.
      	(objc_eh_personality): Likewise.
      	* objc-lang.c (LANG_HOOKS_EH_RUNTIME_TYPE): Define.
      	(LANG_HOOKS_EH_PERSONALITY): Likewise.
      
      	cp/
      	* except.c (init_exception_processing): Do not set
      	lang_eh_runtime_type.
      	(choose_personality_routine): Do not set eh_personality_decl,
      	set pragma_java_exceptions.
      	* cp-lang.c (LANG_HOOKS_EH_RUNTIME_TYPE): Define.
      	(LANG_HOOKS_EH_PERSONALITY): Likewise.
      	(cp_eh_personality_decl): New.
      	(cp_eh_personality): Likewise.
      	* Make-lang.in (cp-lang.o): Add $(EXPR_H) and $(EXCEPT_H)
      	dependencies.
      
      	java/
      	* decl.c (do_nothing): Remove.
      	(java_init_decl_processing): Do not set lang_eh_runtime_type.
      	* Make-lang.in (lang.o): Add $(EXCEPT_H) dependency.
      	* lang.c (java_eh_personality): New.
      	(java_eh_personality_decl): Likewise.
      	(LANG_HOOKS_EH_PERSONALITY): Define.
      
      	ada/
      	* gcc-interface/misc.c (gnat_init_gcc_eh): Do not set
      	lang_eh_runtime_type.
      	(LANG_HOOKS_EH_PERSONALITY): Define.
      	(gnat_eh_personality_decl): New.
      	(gnat_eh_personality): Likewise.
      	* Make-lang.in (misc.o): Add gt-ada-misc.h dependency.
      	* config-lang.in (gtfiles): Add misc.c.
      
      	fortran/
      	* f95-lang.c (gfc_maybe_initialize_eh): Do not init
      	eh_personality_libfunc.
      
      Co-Authored-By: Rafael Avila de Espindola <espindola@google.com>
      
      From-SVN: r151676
      Richard Guenther committed
  25. 03 Sep, 2009 1 commit
    • [multiple changes] · 4537ec0c
      2009-09-01  Diego Novillo  <dnovillo@google.com>
      
      	* c-lang.c (lang_hooks): Remove const qualifier.
      
      java/ChangeLog
      
      	* lang.c (lang_hooks): Remove const qualifier.
      
      objc/ChangeLog
      
      	* objc-lang.c (lang_hooks): Remove const qualifier.
      
      objcp/ChangeLog
      
      	* objcp-lang.c (lang_hooks): Remove const qualifier.
      
      ada/ChangeLog
      
      	* gcc-interface/misc.c (lang_hooks): Remove const qualifier.
      
      fortran/ChangeLog
      
      	* f95-lang.c (lang_hooks): Remove const qualifier.
      
      cp/ChangeLog
      
      	* cp-lang.c (lang_hooks): Remove const qualifier.
      
      2009-09-01  Diego Novillo  <dnovillo@google.com>
      
      	* cgraph.c (cgraph_node_for_decl): New.
      	* cgraph.h (cgraph_node_for_decl): Declare.
      	* tree.c (host_integerp): Return 0 if T is NULL.
      
      
      2009-09-01  Diego Novillo  <dnovillo@google.com>
      
      	* tree.h (struct alias_pair): Move from varasm.c.
      	(alias_pairs): Likewise.
      	(TYPE_MAXVAL): Define.
      	(TYPE_MINVAL): Define.
      	(iterative_hash_host_wide_int): Declare.
      	(remove_unreachable_alias_pairs): Declare.
      	* tree-pass.h (pass_ipa_free_lang_data): Declare.
      	* diagnostic.c (default_diagnostic_starter): Make extern.
      	(default_diagnostic_finalizer): Make extern.
      	* diagnostic.h (default_diagnostic_starter): Declare.
      	(default_diagnostic_finalizer): Declare.
      	(default_tree_printer): Declare.
      	* toplev.c (default_tree_printer): Make extern.
      
      
      2009-09-01  Richard Guenther  <rguenther@suse.de>
      	    Diego Novillo  <dnovillo@google.com>
      
      	* cgraph.c (cgraph_add_new_function): Remove gimplification.
      	* cgraphunit.c (cgraph_expand_function): Do not emit
      	associated thunks from here.
      	(cgraph_emit_thunks): New.
      	(cgraph_optimize): Call it.
      	Return if any IPA pass finds an error.
      	* varasm.c (finish_aliases_1): Ignore errorneous aliases used
      	by thunks.
      
      
      2009-09-01  Simon Baldwin  <simonb@google.com>
      	    Rafael Espindola  <espindola@google.com>
      	    Richard Guenther  <rguenther@suse.de>
      	    Doug Kwan  <dougkwan@google.com>
      	    Diego Novillo  <dnovillo@google.com>
      
      	* tree.c: Include tree-pass.h, langhooks-def.h,
      	diagnostic.h, cgraph.h, timevar.h, except.h and debug.h.
      	(free_lang_data_in_type): New.
      	(need_assembler_name_p): New.
      	(free_lang_data_in_block): New.
      	(free_lang_data_in_decl): New.
      	(struct free_lang_data_d): New.
      	(add_tree_to_fld_list): New.
      	(find_decls_types_r): New.
      	(get_eh_types_for_runtime): New.
      	(find_decls_types_in_eh_region): New.
      	(find_decls_types_in_node): New.
      	(find_decls_types_in_var): New.
      	(free_lang_data_in_cgraph): New.
      	(free_lang_data): New.
      	(gate_free_lang_data): New.
      	(pass_ipa_free_lang_data): New.
      
      2009-09-01  Diego Novillo  <dnovillo@google.com>
      
      	* timevar.def (TV_IPA_FREE_LANG_DATA): Define.
      	* langhooks.h (struct lang_hooks): Add field free_lang_data.
      	(lang_hooks): Remove const qualifier.
      	* ipa.c (cgraph_remove_unreachable_nodes): Call
      	remove_unreachable_alias_pairs.
      	* except.c (add_type_for_runtime): Check if TYPE has
      	already been converted.
      	(lookup_type_for_runtime): Likewise.
      	(check_handled): Handle converted types.
      	* varasm.c (remove_unreachable_alias_pairs): New.
      	* gimple.c: Include demangle.h.
      	(gimple_decl_printable_name): New.
      	(gimple_fold_obj_type_ref): New.
      	* gimple.h (gimple_decl_printable_name): Declare.
      	(gimple_fold_obj_type_ref): Declare.
      	* passes.c (init_optimization_passes): Add pass
      	pass_ipa_free_lang_data.
      	* langhooks-def.h (LANG_HOOKS_FREE_LANG_DATA): Define.
      	(LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_FREE_LANG_DATA.
      
      testsuite/ChangeLog
      
      2009-09-01  Diego Novillo  <dnovillo@google.com>
      
      	* gcc.dg/gomp/combined-1.c: Adjust expected pattern.
      	* g++.dg/tree-prof/inline_mismatch_args.C: Likewise.
      	* g++.dg/warn/unit-1.C: Likewise.
      	* g++.dg/ipa/iinline-1.C: Likewise.
      	* g++.dg/template/cond2.C: Adjust expected line location for the
      	error.
      	* g++.dg/template/pr35240.C: Likewise.
      
      
      cp/ChangeLog
      
      2009-09-01  Doug Kwan  <dougkwan@google.com>
      
      	* tree.c (cp_fix_function_decl_p): New.
      	(cp_free_lang_data): New.
      
      2009-09-01  Diego Novillo  <dnovillo@google.com>
      
      	* Make-lang.in (decl2.o): Add dependency on $(POINTER_SET_H).
      	* decl2.c: Include pointer-set.h.
      	(collect_candidates_for_java_method_aliases): New.
      	(cp_write_global_declarations): Call it.
      	Add local variable CANDIDATES.  If set, call
      	build_java_method_aliases.
      	(build_java_method_aliases): Add argument CANDIDATES.
      	Use it to determine if FNDECL should get a hidden alias.
      	* cp-objcp-common.h (LANG_HOOKS_FREE_LANG_DATA): Define.
      	* cp-tree.h (cp_free_lang_data): Declare.
      
      2009-09-03  Richard Guenther  <rguenther@suse.de>
      
      	* method.c (use_thunk): Use cgraph_finalize_function to hand
      	off thunks to the cgraph.
      	* semantics.c (emit_associated_thunks): Do not emit thunks
      	for really extern functions.
      
      From-SVN: r151360
      Diego Novillo committed
  26. 01 Sep, 2009 2 commits
    • tree.c (tree_expr_size): New function. · 71c00b5c
      2009-09-01  Richard Guenther  <rguenther@suse.de>
      
      	* tree.c (tree_expr_size): New function.
      	* tree.h (tree_expr_size): Declare.
      	* rtlanal.c (rtx_addr_can_trap_p_1): Adjust comment.
      	* builtins.c (fold_builtin_memory_op): Use tree_expr_size.
      	* langhooks.c (lhd_expr_size): Remove.
      	* langhooks.h (struct lang_hooks): Remove expr_size.
      	* explow.c (expr_size): Use tree_expr_size.
      	(int_expr_size): Likewise.
      	* langhooks-def.h (lhd_expr_size): Remove.
      	(LANG_HOOKS_EXPR_SIZE): Likewise.
      	(LANG_HOOKS_INITIALIZER): Adjust.
      
      	cp/
      	* cp-objcp-common.c (cp_expr_size): Use tree_expr_size.
      	* cp-objcp-common.h (LANG_HOOKS_EXPR_SIZE): Do not define.
      
      From-SVN: r151261
      Richard Guenther committed
    • tree-flow.h (mark_addressable): Move declaration ... · 58f986ca
      2009-09-01  Richard Guenther  <rguenther@suse.de>
      
      	* tree-flow.h (mark_addressable): Move declaration ...
      	* tree.h (mark_addressable): ... here.
      	* stmt.c (expand_asm_operands): Use mark_addressable, not
      	lang_hooks.mark_addressable.
      	* langhooks-def.h (LANG_HOOKS_INITIALIZER): Remove
      	LANG_HOOKS_MARK_ADDRESSABLE.
      	* langhooks.h (struct lang_hooks): Remove mark_addressable langhook.
      
      	* c-objc-common.h (LANG_HOOKS_MARK_ADDRESSABLE): Remove.
      
      	ada/
      	* gcc-interface/misc.c (LANG_HOOKS_MARK_ADDRESSABLE): Remove.
      
      	cp/
      	* cp-objcp-common.h (LANG_HOOKS_MARK_ADDRESSABLE): Remove.
      
      	fortran/
      	* f95-lang.c (gfc_mark_addressable): Remove.
      	(LANG_HOOKS_MARK_ADDRESSABLE): Likewise.
      
      	java/
      	* lang.c (LANG_HOOKS_MARK_ADDRESSABLE): Remove.
      	* java-tree.h (java_mark_addressable): Likewise.
      	* typeck.c (java_mark_addressable): Likewise.
      
      From-SVN: r151260
      Richard Guenther committed
  27. 31 Aug, 2009 1 commit
    • Emit DWARF for template parameters (PR debug/30161) · f9329c35
      ChangeLog:
      	PR debug/30161
      	* include/dwarf2.h (enum dwarf_tag): Added
      	DW_TAG_GNU_template_template_param
      	(enum dwarf_attribute): Added DW_AT_GNU_template_name.
      
      gcc/ChangeLog:
      	PR debug/30161
      	* cgraph.h (cgraph_get_node): Declare ...
      	* cgraph.c (cgraph_get_node): ... new function.
      	* dwarf2out.c (gen_generic_params_dies,
      	generic_parameter_die, tree_add_const_value_attribute_for_decl,
      	make_ith_pack_parameter_name,
      	append_entry_to_tmpl_value_parm_die_table,
      	gen_remaining_tmpl_value_param_die_attribute): New functions.
      	(gen_subprogram_die): Generate debug info for template parameters
      	if debug info level is higher than DINFO_LEVEL_TERSE.
      	Use tree_add_const_value_attribute_for_decl instead of
      	tree_add_const_value_attribute.
      	(gen_const_die): Use tree_add_const_value_attribute_for_decl
      	instead of tree_add_const_value_attribute.
      	(gen_struct_or_union_type_die): Generate debug
      	info for template parameters if debug info level is higher than
      	DINFO_LEVEL_TERSE.
      	(tree_add_const_value_attribute): Handle integral and pointer
      	constants. Update comment.
      	(dwarf_tag_name): Support DW_TAG_GNU_template_template_param.
      	(dwarf_attr_name): Support DW_AT_GNU_template_name.
      	(reference_to_unused): Fix thinko. Remove redundant predicates from
      	tests.
      	(tree_add_const_value_attribute): Make this work for constant
      	expressions only.
      	tree_add_const_value_attribute_for_decl is to be used for variable
      	DECLs now.
      	(add_location_or_const_value_attribute): Use
      	tree_add_const_value_attribute_for_decl now.
      	(dwarf2out_finish): Emit the DW_AT_const_value attribute of
      	DW_TAG_template_value_param DIEs after function DIEs have been
      	emitted.
      	* langhooks.h (lang_hooks_for_types): Add
      	get_argument_pack_elems.
      	(lang_hooks_for_decls): Add generic_generic_parameter_decl_p.
      	(lang_hooks): Added get_innermost_generic_parms,
      	get_innermost_generic_args.
      	* langhooks-def.h (LANG_HOOKS_GET_INNERMOST_GENERIC_PARMS,
      	LANG_HOOKS_GET_INNERMOST_GENERIC_ARGS,
      	LANG_HOOKS_GET_ARGUMENT_PACK_ELEMS,
      	LANG_HOOKS_GENERIC_GENERIC_PARAMETER_DECL_P): New language hooks.
      
      gcc/cp/ChangeLog:
      	PR debug/30161
      	* cp-tree.h (get_template_info): Parameter should be const.
      	(CLASSTYPE_SPECIALIZATION_OF_PRIMARY_TEMPLATE_P): Fix typo.
      	(get_template_argument_pack_elems,
      	get_primary_template_innermost_parameters,
      	get_template_innermost_arguments, template_template_parameter_p):
      	Declare ...
      	* pt.c (get_template_argument_pack_elems,
      	get_template_innermost_parameters, get_template_innermost_arguments,
      	template_template_parameter_p):
      	... New C++ front end implementation of new language hooks.
      	(primary_template_instantiation_p): New private helper.
      	(make_ith_pack_parameter_name): Use snprintf and strnlen instead of
      	printf and strlen.
      	(get_template_info): Const-ify parameter.
      	* cp-lang.c (LANG_HOOKS_GET_INNERMOST_GENERIC_PARMS,
      	LANG_HOOKS_GET_INNERMOST_GENERIC_ARGS,
      	LANG_HOOKS_GET_ARGUMENT_PACK_ELEMS,
      	LANG_HOOKS_GENERIC_TYPE_PARAMETER_DECL_P): Initialize these
      	interfaces for the C++ front-end.
      
      gcc/testsuite/ChangeLog:
      	PR debug/30161
      	* g++.dg/debug/dwarf2/template-params-1.C: New test.
      	* g++.dg/debug/dwarf2/template-params-2.C: Likewise.
      	* g++.dg/debug/dwarf2/template-params-3.C: Likewise.
      	* g++.dg/debug/dwarf2/template-params-4.C: Likewise.
      	* g++.dg/debug/dwarf2/template-params-5.C: Likewise.
      	* g++.dg/debug/dwarf2/template-params-6.C: Likewise.
      	* g++.dg/debug/dwarf2/template-func-params-1.C: Likewise.
      	* g++.dg/debug/dwarf2/template-func-params-2.C: Likewise.
      	* g++.dg/debug/dwarf2/template-func-params-3.C: Likewise.
      	* g++.dg/debug/dwarf2/template-func-params-4.C: Likewise.
      	* g++.dg/debug/dwarf2/template-func-params-5.C: Likewise.
      	* g++.dg/debug/dwarf2/template-func-params-6.C: Likewise.
      	* g++.dg/debug/dwarf2/template-func-params-7.C: Likewise.
      
      From-SVN: r151249
      Dodji Seketeli committed
  28. 15 Jun, 2009 1 commit
    • cgraphunit.c (cgraph_function_versioning,save_inline_function_body): Use… · fc26fae3
      cgraphunit.c (cgraph_function_versioning,save_inline_function_body): Use DECL_COMDAT_GROUP instead of DECL_ONE_ONLY.
      
      2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
      
      	* cgraphunit.c (cgraph_function_versioning,save_inline_function_body):
      	Use DECL_COMDAT_GROUP instead of DECL_ONE_ONLY.
      	* cgraph.c (cgraph_create_virtual_clone): Use DECL_COMDAT_GROUP.
      	* config/i386/i386.c (ix86_file_end): Compute DECL_COMDAT_GROUP.
      	* dwarf2asm.c(dw2_force_const_mem): Update call to make_decl_one_only.
      	* langhooks-def.h (lhd_comdat_group, LANG_HOOKS_COMDAT_GROUP): Remove.
      	(LANG_HOOKS_DECLS): Remove LANG_HOOKS_COMDAT_GROUP.
      	* langhooks.c (lhd_comdat_group): Remove.
      	* langhooks.h (lang_hooks_for_decls): Remove comdat_group.
      	* tree.h (DECL_COMDAT_GROUP): New.
      	(DECL_ONE_ONLY): Use DECL_COMDAT_GROUP.
      	(tree_decl_with_vis): Add comdat_group. Remove one_only.
      	(make_decl_one_only): Change signature.
      	* varasm.c (get_emutls_init_templ_addr, emutls_decl): Update call to
      	make_decl_one_only.
      	(make_decl_one_only): Change signature.
      	(default_elf_asm_named_section): Use DECL_COMDAT_GROUP.
      
      2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
      
      	* cp-objcp-common.h (LANG_HOOKS_COMDAT_GROUP): Remove.
      	* cp-tree.h (cxx_comdat_group): Change signature.
      	* decl.c (duplicate_decls): Use DECL_COMDAT_GROUP.
      	(cxx_comdat_group): Change signature.
      	* decl2.c (comdat_linkage, maybe_make_one_only): Update call to
      	make_decl_one_only.
      	(constrain_visibility, get_guard): Use DECL_COMDAT_GROUP.
      	* method.c (use_thunk): Update call to make_decl_one_only.
      	* optimize.c (maybe_clone_body): Use DECL_COMDAT_GROUP
      
      2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
      
      	* g++.dg/abi/mangle11.C: Update warning line.
      	* g++.dg/abi/mangle12.C: Update warning line.
      	* g++.dg/abi/mangle17.C: Update warning line.
      	* g++.dg/abi/mangle20-2.C: Update warning line.
      
      From-SVN: r148492
      Rafael Avila de Espindola committed
  29. 15 May, 2009 1 commit
    • dbxout.c (dbxout_range_type): Add LOW and HIGH parameters. · 84fb43a1
      	* dbxout.c (dbxout_range_type): Add LOW and HIGH parameters.  Use them
      	for bounds.
      	(print_int_cst_bounds_in_octal_p): Likewise.
      	(dbxout_type): Adjust calls to above functions.  Be prepared to deal
      	with subtypes.
      	* dwarf2out.c (base_type_die): Likewise.
      	(is_subrange_type): Delete.
      	(subrange_type_die): Add LOW and HIGH parameters.  Use them for bounds.
      	(modified_type_die): Call subrange_type_for_debug_p on subtypes.
      	* fold-const.c (fold_truth_not_expr) <CONVERT_EXPR>: Do not strip it if
      	the destination type is boolean.
      	(build_range_check): Do not special-case subtypes.
      	(fold_sign_changed_comparison): Likewise.
      	(fold_unary): Likewise.
      	* langhooks-def.h (LANG_HOOKS_GET_SUBRANGE_BOUNDS): Define.
      	(LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_GET_SUBRANGE_BOUNDS.
      	* langhooks.h (lang_hooks_for_types): Add get_subrange_bounds.
      	* tree.c (subrange_type_for_debug_p): New predicate based on the former
      	is_subrange_type.
      	* tree.h (subrange_type_for_debug_p): Declare.
      	* tree-chrec.c (avoid_arithmetics_in_type_p): Delete.
      	(convert_affine_scev): Remove call to above function.
      	(chrec_convert_aggressive): Likewise.
      	* tree-ssa.c (useless_type_conversion_p_1): Do not specifically return
      	false for conversions involving subtypes.
      	* tree-vrp.c (vrp_val_max): Do not special-case subtypes.
      	(vrp_val_min): Likewise.
      	(needs_overflow_infinity): Likewise.
      	(extract_range_from_unary_expr): Likewise.
      ada/
      	* gcc-interface/ada-tree.h (TYPE_GCC_MIN_VALUE, TYPE_GCC_MAX_VALUE):
      	New macros.
      	(TYPE_RM_VALUES): Likewise.
      	(TYPE_RM_SIZE): Rewrite in terms of TYPE_RM_VALUES.
      	(SET_TYPE_RM_SIZE): New macro.
      	(TYPE_RM_MIN_VALUE, TYPE_RM_MAX_VALUE): Likewise.
      	(SET_TYPE_RM_SIZE, SET_TYPE_RM_MAX_VALUE): Likewise.
      	(TYPE_MIN_VALUE, TYPE_MAX_VALUE): Redefine.
      	* gcc-interface/gigi.h (create_range_type): Declare.
      	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Modular_Integer_Type>
      	Use SET_TYPE_RM_MAX_VALUE to set the upper bound on the UMT type.
      	<E_Signed_Integer_Subtype>: Build a regular integer type first and
      	then set the RM bounds.  Use SET_TYPE_RM_SIZE to set the RM size.
      	<E_Floating_Point_Subtype>: Build a regular floating-point type first
      	and then set the RM bounds.
      	<E_Array_Type>: Use create_range_type instead of build_range_type.
      	<E_Array_Subtype>: Build a regular integer type first and then set
      	the RM bounds for the extra subtype.
      	<E_String_Literal_Subtype>: Use create_range_type instead of
      	build_range_type.
      	<all>: Set the RM bounds for enumeration types and the GCC bounds for
      	floating-point types.
      	(set_rm_size): Use SET_TYPE_RM_SIZE to set the RM size.
      	(make_type_from_size) <INTEGER_TYPE>: Use SET_TYPE_RM_{MIN,MAX}_VALUE
      	to set the bounds.  Use SET_TYPE_RM_SIZE to set the RM size.
      	(substitute_in_type) <INTEGER_TYPE>: Deal with GCC bounds for domain
      	types and with RM bounds for subtypes.
      	* gcc-interface/misc.c (LANG_HOOKS_GET_SUBRANGE_BOUNDS): Define.
      	(gnat_print_type) <REAL_TYPE>: New case.
      	<ENUMERAL_TYPE>: Fall through to above case.
      	(gnat_get_subrange_bounds): New function.
      	* gcc-interface/trans.c (add_decl_expr): Mark the trees rooted as
      	TYPE_RM_MIN_VALUE and TYPE_RM_MAX_VALUE, if any.
      	* gcc-interface/utils.c (gnat_init_decl_processing): Use precision 8
      	for booleans.  Adjust and use SET_TYPE_RM_SIZE to set the RM size.
      	(create_range_type): New function.
      	(create_param_decl): Build a regular integer type first and then set
      	the RM bounds for the extra subtype.
      	(unchecked_convert): Remove kludge for 'Valid.
      	* gcc-interface/utils2.c (build_binary_op) <ARRAY_RANGE_REF>: Convert
      	the index to sizetype instead of TYPE_DOMAIN.
      
      From-SVN: r147563
      Eric Botcazou committed
  30. 29 Mar, 2009 1 commit
    • c-common.c (c_expand_expr, c_staticp): Remove. · 2ec5deb5
      2009-03-28  Paolo Bonzini  <bonzini@gnu.org>
      
              * c-common.c (c_expand_expr, c_staticp): Remove.
              * c-common.def (COMPOUND_LITERAL_EXPR): Delete.
              * c-common.h (emit_local_var, c_staticp, COMPOUND_LITERAL_EXPR_DECL,
              COMPOUND_LITERAL_EXPR_DECL_EXPR): Remove.
              * c-gimplify.c (gimplify_compound_literal_expr,
              optimize_compound_literals_in_ctor): Remove.
              (c_gimplify_expr): Remove COMPOUND_LITERAL_EXPR handling.
              * c-objc-common.h (LANG_HOOKS_STATICP): Remove.
              * c-semantics.c (emit_local_var): Remove.
      
              * langhooks-def.h (lhd_expand_expr): Remove.
              * langhooks.c (lhd_expand_expr): Remove.
              * langhooks.h (LANG_HOOKS_DEF): Remove LANG_HOOKS_EXPAND_EXPR.
      
              * expr.c (expand_expr_real_1): Move COMPOUND_LITERAL_EXPR
              handling from c-semantics.c; don't call into langhook.
              (expand_expr_addr_expr_1): Check that we don't get non-GENERIC trees.
              * gimplify.c (gimplify_compound_literal_expr,
              optimize_compound_literals_in_ctor): Move from c-gimplify.c.
              (gimplify_init_constructor): Call optimize_compound_literals_in_ctor.
              (gimplify_modify_expr_rhs, gimplify_expr): Handle COMPOUND_LITERAL_EXPR
              as was done in c-gimplify.c.
              * tree.c (staticp): Move COMPOUND_LITERAL_EXPR handling from c_staticp.
              * tree.h (COMPOUND_LITERAL_EXPR_DECL, COMPOUND_LITERAL_EXPR_DECL_EXPR):
              Move from c-common.h.
              * tree.def (COMPOUND_LITERAL_EXPR): Move from c-common.def.
      
      	* tree.c (staticp): Do not call langhook.
      	* langhooks.c (lhd_staticp): Delete.
      	* langhooks-def.h (lhd_staticp): Delete prototype.
      	(LANG_HOOKS_STATICP): Delete.
      	(LANG_HOOKS_INITIALIZER): Delete LANG_HOOKS_STATICP.
      
              * doc/c-tree.texi (Expression nodes): Refer to DECL_EXPRs
              instead of DECL_STMTs.
      
      cp:
      2009-03-28  Paolo Bonzini  <bonzini@gnu.org>
      
      	* cp/cp-objcp-common.h (LANG_HOOKS_STATICP): Remove.
      	* cp/cp-objcp-common.c (cxx_staticp): Remove.
      	* cp/cp-tree.h (cxx_staticp): Remove.
      
      From-SVN: r145256
      Paolo Bonzini committed
  31. 27 Mar, 2009 1 commit
    • re PR debug/37959 (g++ does not emit DW_AT_explicit) · 68599f33
      	PR debug/37959
      	* dwarf2out.c (dwarf_attr_name): Handle DW_AT_explicit attribute.
      	(gen_subprogram_die): When a function is explicit, generate the
      	DW_AT_explicit attribute.
      	* langhooks.h (struct lang_hooks_for_decls): Add
      	function_decl_explicit_p langhook.
      	* langhooks-def.h (LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P): Define.
      	(LANG_HOOKS_DECLS): Add LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P.
      
      	* cp-objcp-common.h (LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P): Define.
      	(cp_function_decl_explicit_p): New prototype.
      	* cp-objcp-common.c (cp_function_decl_explicit_p): New function.
      
      	* g++.dg/debug/dwarf2/explicit-constructor.C: New test.
      
      Co-Authored-By: Jakub Jelinek <jakub@redhat.com>
      
      From-SVN: r145128
      Dodji Seketeli committed
  32. 27 Feb, 2009 1 commit
    • re PR debug/39267 (gdb testsuite regressions) · cff7525f
      	PR debug/39267
      	* tree.h (TREE_PROTECTED): Fix comment.
      	(BLOCK_HANDLER_BLOCK): Remove.
      	(struct tree_block): Remove handler_block add body_block.
      	(inlined_function_outer_scope_p): New.
      	(is_body_block): Remove.
      	* dbxout.c (dbxout_block): Remove BLOCK_HANDLER_BLOCK.
      	* dwarf2out.c (is_inlined_entry_point): Remove.
      	(add_high_low_attributes): Use inlined_function_outer_scope_p.
      	(gen_block_die): Use is_inlined_entry_point check; remove body block code.
      	* langhooks.h (struct lang_hooks): Remove no_bodu_blocks.
      	* gimplify.c (gimplify_expr): Gimplify body blocks.
      	* tree-ssa-live.c (remove_unused_scope_block_p): Allow removing wrapper block
      	with multiple subblocks.
      	(dump_scope_block): Prettier output; dump more flags and info.
      	(dump_scope_blocks): New.
      	(remove_unused_locals): Use dump_scope_blocks.
      	* tree-flow.h (dump_scope_blocks): Declare.
      	* tree-cfg.c (execute_build_cfg): Dump scope blocks.
      	* stmt.c (is_body_block): Remove.
      	* tree-inline.c (remap_block): Copy BODY_BLOCK info.
      	* langhooks-def.h (LANG_HOOKS_NO_BODY_BLOCKS): Remove.
      
      From-SVN: r144474
      Jan Hubicka committed
  33. 20 Feb, 2009 1 commit
  34. 17 Sep, 2008 1 commit
    • re PR objc/37460 (NeXT runtime ICEs) · 2700cb86
      2008-09-17  Andrew Pinski  <andrew_pinski@playstation.sony.com>
      
              * tree.c (get_callee_fndecl): Don't call the language hook.
              * langhooks.h (lang_hooks): Remove lang_get_callee_fndecl.
              * langhooks-def.h (LANG_HOOKS_GET_CALLEE_FNDECL): Kill.
              (LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_GET_CALLEE_FNDECL.
      
      
      2008-09-17  Andrew Pinski  <andrew_pinski@playstation.sony.com>
      
              PR objc/37460
              * objc-lang.c (LANG_HOOKS_GET_CALLEE_FNDECL): Don't define.
              * objc-act.h (objc_get_callee_fndecl): Remove prototype.
              * objc-act.c (objc_get_callee_fndecl): Kill.
      
      2008-09-17  Andrew Pinski  <andrew_pinski@playstation.sony.com>
      
              * lang.c (LANG_HOOKS_GET_CALLEE_FNDECL): Don't define.
              (java_get_callee_fndecl): Kill.
      
      2008-09-17  Andrew Pinski  <andrew_pinski@playstation.sony.com>
      
              PR objc/37460
              * objcp-lang.c (LANG_HOOKS_GET_CALLEE_FNDECL): Don't define.
      
      From-SVN: r140430
      Andrew Pinski committed
  35. 09 Sep, 2008 1 commit
    • c-common.c (c_expand_decl): Remove. · 0c03f46f
      2008-09-09  Paolo Bonzini  <bonzini@gnu.org>
      
      	* c-common.c (c_expand_decl): Remove.
      	* c-common.h (anon_aggr_type_p): Remove prototype.
      	(DECL_ANON_UNION_ELEMS): Remove.
      	* c-objc-common.h (LANG_HOOKS_EXPAND_DECL): Remove.
      	* c-decl.c (anon_aggr_type_p): Remove.
      	* langhooks-def.h (LANG_HOOKS_EXPAND_DECL): Remove.
      	(LANG_HOOKS_INITIALIZER): Remove LANG_HOOKS_EXPAND_DECL.
      	* langhooks.h (struct lang_hooks): Remove expand_decl.
      	* langhooks.c (lhd_expand_decl): Remove.
      	* stmt.c (expand_anon_union_decl): Remove.
      	* tree.h (expand_anon_union_decl): Remove prototype.
      
      cp:
      2008-09-09  Paolo Bonzini  <bonzini@gnu.org>
      
      	* cp-objcp-common.h (LANG_HOOKS_EXPAND_DECL): Remove.
      	* cp-tree.h: Don't mention DECL_ANON_UNION_ELEMS.
      	* semantics.c (anon_aggr_type_p): Remove.
      
      From-SVN: r140138
      Paolo Bonzini committed
  36. 30 Aug, 2008 1 commit
  37. 28 Jul, 2008 1 commit
    • backport: ChangeLog.tuples: ChangeLog from gimple-tuples-branch. · 726a989a
      2008-07-28  Richard Guenther  <rguenther@suse.de>
      
      	Merge from gimple-tuples-branch.
      
      	* ChangeLog.tuples: ChangeLog from gimple-tuples-branch.
      	* gimple.def: New file.
      	* gsstruct.def: Likewise.
      	* gimple-iterator.c: Likewise.
      	* gimple-pretty-print.c: Likewise.
      	* tree-gimple.c: Removed.  Merged into ...
      	* gimple.c: ... here.  New file.
      	* tree-gimple.h: Removed.  Merged into ...
      	* gimple.h: ... here.  New file.
      
      	* Makefile.in: Add dependencies on GIMPLE_H and tree-iterator.h.
      	* configure.ac: Added support for ENABLE_GIMPLE_CHECKING and the
      	--enable-checking=gimple flag.
      	* config.in: Likewise.
      	* configure: Regenerated.
      
      	* tree-ssa-operands.h: Tuplified.
      	* tree-vrp.c: Likewise.
      	* tree-loop-linear.c: Likewise.
      	* tree-into-ssa.c: Likewise.
      	* tree-ssa-loop-im.c: Likewise.
      	* tree-dump.c: Likewise.
      	* tree-complex.c: Likewise.
      	* cgraphbuild.c: Likewise.
      	* tree-ssa-threadupdate.c: Likewise.
      	* tree-ssa-loop-niter.c: Likewise.
      	* tree-pretty-print.c: Likewise.
      	* tracer.c: Likewise.
      	* gengtype.c: Likewise.
      	* tree-loop-distribution.c: Likewise.
      	* tree-ssa-loop-unswitch.c: Likewise.
      	* cgraph.c: Likewise.
      	* cgraph.h: Likewise.
      	* tree-ssa-loop-manip.c: Likewise.
      	* value-prof.c: Likewise.
      	* tree-ssa-loop-ch.c: Likewise.
      	* tree-tailcall.c: Likewise.
      	* value-prof.h: Likewise.
      	* tree.c: Likewise.
      	* tree.h: Likewise.
      	* tree-pass.h: Likewise.
      	* ipa-cp.c: Likewise.
      	* tree-scalar-evolution.c: Likewise.
      	* tree-scalar-evolution.h: Likewise.
      	* target.h: Likewise.
      	* lambda-mat.c: Likewise.
      	* tree-phinodes.c: Likewise.
      	* diagnostic.h: Likewise.
      	* builtins.c: Likewise.
      	* tree-ssa-alias-warnings.c: Likewise.
      	* cfghooks.c: Likewise.
      	* fold-const.c: Likewise.
      	* cfghooks.h: Likewise.
      	* omp-low.c: Likewise.
      	* tree-ssa-dse.c: Likewise.
      	* ipa-reference.c: Likewise.
      	* tree-ssa-uncprop.c: Likewise.
      	* toplev.c: Likewise.
      	* tree-gimple.c: Likewise.
      	* tree-gimple.h: Likewise.
      	* tree-chrec.c: Likewise.
      	* tree-chrec.h: Likewise.
      	* tree-ssa-sccvn.c: Likewise.
      	* tree-ssa-sccvn.h: Likewise.
      	* cgraphunit.c: Likewise.
      	* tree-ssa-copyrename.c: Likewise.
      	* tree-ssa-ccp.c: Likewise.
      	* tree-ssa-loop-ivopts.c: Likewise.
      	* tree-nomudflap.c: Likewise.
      	* tree-call-cdce.c: Likewise.
      	* ipa-pure-const.c: Likewise.
      	* c-format.c: Likewise.
      	* tree-stdarg.c: Likewise.
      	* tree-ssa-math-opts.c: Likewise.
      	* tree-ssa-dom.c: Likewise.
      	* tree-nrv.c: Likewise.
      	* tree-ssa-propagate.c: Likewise.
      	* ipa-utils.c: Likewise.
      	* tree-ssa-propagate.h: Likewise.
      	* tree-ssa-alias.c: Likewise.
      	* gimple-low.c: Likewise.
      	* tree-ssa-sink.c: Likewise.
      	* ipa-inline.c: Likewise.
      	* c-semantics.c: Likewise.
      	* dwarf2out.c: Likewise.
      	* expr.c: Likewise.
      	* tree-ssa-loop-ivcanon.c: Likewise.
      	* predict.c: Likewise.
      	* tree-ssa-loop.c: Likewise.
      	* tree-parloops.c: Likewise.
      	* tree-ssa-address.c: Likewise.
      	* tree-ssa-ifcombine.c: Likewise.
      	* matrix-reorg.c: Likewise.
      	* c-decl.c: Likewise.
      	* tree-eh.c: Likewise.
      	* c-pretty-print.c: Likewise.
      	* lambda-trans.c: Likewise.
      	* function.c: Likewise.
      	* langhooks.c: Likewise.
      	* ebitmap.h: Likewise.
      	* tree-vectorizer.c: Likewise.
      	* function.h: Likewise.
      	* langhooks.h: Likewise.
      	* tree-vectorizer.h: Likewise.
      	* ipa-type-escape.c: Likewise.
      	* ipa-type-escape.h: Likewise.
      	* domwalk.c: Likewise.
      	* tree-if-conv.c: Likewise.
      	* profile.c: Likewise.
      	* domwalk.h: Likewise.
      	* tree-data-ref.c: Likewise.
      	* tree-data-ref.h: Likewise.
      	* tree-flow-inline.h: Likewise.
      	* tree-affine.c: Likewise.
      	* tree-vect-analyze.c: Likewise.
      	* c-typeck.c: Likewise.
      	* gimplify.c: Likewise.
      	* coretypes.h: Likewise.
      	* tree-ssa-phiopt.c: Likewise.
      	* calls.c: Likewise.
      	* tree-ssa-coalesce.c: Likewise.
      	* tree.def: Likewise.
      	* tree-dfa.c: Likewise.
      	* except.c: Likewise.
      	* except.h: Likewise.
      	* cfgexpand.c: Likewise.
      	* tree-cfgcleanup.c: Likewise.
      	* tree-ssa-pre.c: Likewise.
      	* tree-ssa-live.c: Likewise.
      	* tree-sra.c: Likewise.
      	* tree-ssa-live.h: Likewise.
      	* tree-predcom.c: Likewise.
      	* lambda.h: Likewise.
      	* tree-mudflap.c: Likewise.
      	* ipa-prop.c: Likewise.
      	* print-tree.c: Likewise.
      	* tree-ssa-copy.c: Likewise.
      	* ipa-prop.h: Likewise.
      	* tree-ssa-forwprop.c: Likewise.
      	* ggc-page.c: Likewise.
      	* c-omp.c: Likewise.
      	* tree-ssa-dce.c: Likewise.
      	* tree-vect-patterns.c: Likewise.
      	* tree-ssa-ter.c: Likewise.
      	* tree-nested.c: Likewise.
      	* tree-ssa.c: Likewise.
      	* lambda-code.c: Likewise.
      	* tree-ssa-loop-prefetch.c: Likewise.
      	* tree-inline.c: Likewise.
      	* tree-inline.h: Likewise.
      	* tree-iterator.c: Likewise.
      	* tree-optimize.c: Likewise.
      	* tree-ssa-phiprop.c: Likewise.
      	* tree-vect-transform.c: Likewise.
      	* tree-object-size.c: Likewise.
      	* tree-outof-ssa.c: Likewise.
      	* cfgloop.c: Likewise.
      	* system.h: Likewise.
      	* tree-profile.c: Likewise.
      	* cfgloop.h: Likewise.
      	* c-gimplify.c: Likewise.
      	* c-common.c: Likewise.
      	* tree-vect-generic.c: Likewise.
      	* tree-flow.h: Likewise.
      	* c-common.h: Likewise.
      	* basic-block.h: Likewise.
      	* tree-ssa-structalias.c: Likewise.
      	* tree-switch-conversion.c: Likewise.
      	* tree-ssa-structalias.h: Likewise.
      	* tree-cfg.c: Likewise.
      	* passes.c: Likewise.
      	* ipa-struct-reorg.c: Likewise.
      	* ipa-struct-reorg.h: Likewise.
      	* tree-ssa-reassoc.c: Likewise.
      	* cfgrtl.c: Likewise.
      	* varpool.c: Likewise.
      	* stmt.c: Likewise.
      	* tree-ssanames.c: Likewise.
      	* tree-ssa-threadedge.c: Likewise.
      	* langhooks-def.h: Likewise.
      	* tree-ssa-operands.c: Likewise.
      	* config/alpha/alpha.c: Likewise.
      	* config/frv/frv.c: Likewise.
      	* config/s390/s390.c: Likewise.
      	* config/m32c/m32c.c: Likewise.
      	* config/m32c/m32c-protos.h: Likewise.
      	* config/spu/spu.c: Likewise.
      	* config/sparc/sparc.c: Likewise.
      	* config/i386/i386.c: Likewise.
      	* config/sh/sh.c: Likewise.
      	* config/xtensa/xtensa.c: Likewise.
      	* config/stormy16/stormy16.c: Likewise.
      	* config/ia64/ia64.c: Likewise.
      	* config/rs6000/rs6000.c: Likewise.
      	* config/pa/pa.c: Likewise.
      	* config/mips/mips.c: Likewise.
      
      From-SVN: r138207
      Richard Biener committed