1. 01 Sep, 2008 1 commit
    • sel-sched.h, [...]: New files. · e855c69d
      2008-08-31  Andrey Belevantsev  <abel@ispras.ru>
              Dmitry Melnik  <dm@ispras.ru>
              Dmitry Zhurikhin  <zhur@ispras.ru>
              Alexander Monakov  <amonakov@ispras.ru>
              Maxim Kuvyrkov  <maxim@codesourcery.com>
      
      	* sel-sched.h, sel-sched-dump.h, sel-sched-ir.h, sel-sched.c,
      	sel-sched-dump.c, sel-sched-ir.c: New files.
      	* Makefile.in (OBJS-common): Add selective scheduling object
      	files.
      	(sel-sched.o, sel-sched-dump.o, sel-sched-ir.o): New entries.
      	(SEL_SCHED_IR_H, SEL_SCHED_DUMP_H): New entries.
      	(sched-vis.o): Add dependency on $(INSN_ATTR_H).
      	* cfghooks.h (get_cfg_hooks, set_cfg_hooks): New prototypes.
      	* cfghooks.c (get_cfg_hooks, set_cfg_hooks): New functions.
      	(make_forwarder_block): Update loop latch if we have redirected
      	the loop latch edge.
      	* cfgloop.c (get_loop_body_in_custom_order): New function.
      	* cfgloop.h (LOOPS_HAVE_FALLTHRU_PREHEADERS): New enum field.
      	(CP_FALLTHRU_PREHEADERS): Likewise.
      	(get_loop_body_in_custom_order): Declare.
      	* cfgloopmanip.c (has_preds_from_loop): New.
      	(create_preheader): Honor CP_FALLTHRU_PREHEADERS.
      	Assert that the preheader edge will be fall thru when it is set.
      	* common.opt (fsel-sched-bookkeeping, fsel-sched-pipelining,
      	fsel-sched-pipelining-outer-loops, fsel-sched-renaming,
      	fsel-sched-substitution, fselective-scheduling): New flags.
          	* cse.c (hash_rtx_cb): New.
      	(hash_rtx): Use it.
      	* dbgcnt.def (sel_sched_cnt, sel_sched_region_cnt,
      	sel_sched_insn_cnt): New counters. 
      	* final.c (compute_alignments): Export.  Free dominance info after loop_optimizer_finalize.
      	* genattr.c (main): Output maximal_insn_latency prototype.
      	* genautomata.c (output_default_latencies): New. Factor its code from ...
      	(output_internal_insn_latency_func): ... here.
      	(output_internal_maximal_insn_latency_func): New.
      	(output_maximal_insn_latency_func): New.
      	* hard-reg-set.h (UHOST_BITS_PER_WIDE_INT): Define unconditionally.
      	(struct hard_reg_set_iterator): New.
      	(hard_reg_set_iter_init, hard_reg_set_iter_set,
      	hard_reg_set_iter_next): New functions.
      	(EXECUTE_IF_SET_IN_HARD_REG_SET): New macro.
      	* lists.c (remove_free_INSN_LIST_node,
      	remove_free_EXPR_LIST_node): New functions.
      	* loop-init.c (loop_optimizer_init): When LOOPS_HAVE_FALLTHRU_PREHEADERS,
      	set CP_FALLTHRU_PREHEADERS when calling create_preheaders.
      	(loop_optimizer_finalize): Do not verify flow info after reload.
      	* recog.c (validate_replace_rtx_1): New parameter simplify.
      	Default it to true.  Update all uses.  Factor out simplifying
      	code to ...
      	(simplify_while_replacing): ... this new function.
      	(validate_replace_rtx_part,
      	validate_replace_rtx_part_nosimplify): New.
      	* recog.h (validate_replace_rtx_part,
      	validate_replace_rtx_part_nosimplify): Declare.
      	* rtl.c (rtx_equal_p_cb): New.
      	(rtx_equal_p): Use it.
      	* rtl.h (rtx_equal_p_cb, hash_rtx_cb): Declare.
      	(remove_free_INSN_LIST_NODE, remove_free_EXPR_LIST_node,
      	debug_bb_n_slim, debug_bb_slim,    print_rtl_slim): Likewise.
      	* vecprim.h: Add a vector type for unsigned int. 
      	* haifa-sched.c: Include vecprim.h and cfgloop.h.
      	(issue_rate, sched_verbose_param, note_list, dfa_state_size,
      	ready_try, cycle_issued_insns, spec_info): Make global.
      	(readyp): Initialize.
      	(dfa_lookahead): New global variable.
      	(old_max_uid, old_last_basic_block): Remove.
      	(h_i_d): Make it a vector.
      	(INSN_TICK, INTER_TICK, QUEUE_INDEX, INSN_COST): Make them work
      	through HID macro.
      	(after_recovery, adding_bb_to_current_region_p):
      	New variables to handle correct insertion of the recovery code.
      	(struct ready_list): Move declaration to sched-int.h.
      	(rgn_n_insns): Removed.
      	(rtx_vec_t): Move to sched-int.h.
      	(find_insn_reg_weight): Remove.
      	(find_insn_reg_weight1): Rename to find_insn_reg_weight.
      	(haifa_init_h_i_d, haifa_finish_h_i_d):
      	New functions to initialize / finalize haifa instruction data.
      	(extend_h_i_d, init_h_i_d): Rewrite.
      	(unlink_other_notes): Move logic to add_to_note_list.  Handle
      	selective scheduler.
      	(ready_lastpos, ready_element, ready_sort, reemit_notes,
      	find_fallthru_edge): Make global, remove static prototypes.
      	(max_issue): Make global.  Add privileged_n and state parameters.  Use
      	them.  
      	(extend_global, extend_all): Removed.
      	(init_before_recovery): Add new param.  Fix the handling of the case
      	when we insert a recovery code before the EXIT which has a predecessor
      	with a fallthrough edge to it.
      	(create_recovery_block): Make global.  Rename to
      	sched_create_recovery_block.  Update.
      	(change_pattern): Rename to sched_change_pattern.  Make global.
      	(speculate_insn): Rename to sched_speculate_insn.  Make global.
      	Split haifa-specific functionality into ...
      	(haifa_change_pattern): New static function.
      	(sched_extend_bb): New static function.
      	(sched_init_bbs): New function.
      	(current_sched_info): Change type to struct haifa_sched_info.
      	(insn_cost): Adjust for selective scheduling.
      	(dep_cost_1): New function.  Move logic from ...
      	(dep_cost): ... here.
      	(dep_cost): Use dep_cost_1.
      	(contributes_to_priority_p): Use sched_deps_info instead of
      	current_sched_info.
      	(priority): Adjust to work with selective scheduling.  Process the
      	corner case when all dependencies don't contribute to priority.
      	(rank_for_schedule): Use ds_weak instead of dep_weak.
      	(advance_state): New function.  Move logic from ...
      	(advance_one_cycle): ... here.
      	(add_to_note_list, concat_note_lists): New functions.
      	(rm_other_notes): Make static.  Adjust for selective scheduling.
      	(remove_notes, restore_other_notes): New functions.
      	(move_insn): Add two arguments.  Update assert.  Don't call
      	reemit_notes.
      	(choose_ready): Remove lookahead variable, use dfa_lookahead.
      	Remove more_issue, max_points.  Move the code to initialize
      	max_lookahead_tries to max_issue.
      	(schedule_block): Remove rgn_n_insns1 parameter.  Don't allocate
      	ready.  Adjust use of move_insn.  Call restore_other_notes.
      	(luid): Remove.
      	(sched_init, sched_finish): Move Haifa-specific initialization/
      	finalization to ...
      	(haifa_sched_init, haifa_sched_finish): ... respectively.
      	New functions.
      	(setup_sched_dump): New function.
      	(haifa_init_only_bb): New static function.
      	(haifa_speculate_insn): New static function.
      	(try_ready): Use haifa_* instead of speculate_insn and
      	change_pattern.
      	(extend_ready, extend_all): Remove.
      	(sched_extend_ready_list, sched_finish_ready_list): New functions.
      	(create_check_block_twin, add_to_speculative_block): Use
      	haifa_insns_init instead of extend_global.  Update to use new
      	initialization functions.  Change parameter.  Factor out code from
      	create_check_block_twin to ...
      	(sched_create_recovery_edges) ... this new function.
      	(add_block): Remove.
      	(sched_scan_info): New.
      	(extend_bb): Use sched_scan_info.
      	(init_bb, extend_insn, init_insn, init_insns_in_bb, sched_scan): New
      	static functions for walking through scheduling region.
      	(sched_luids): New vector variable to replace uid_to_luid.
      	(luids_extend_insn): New function.
      	(sched_max_luid): New variable.
      	(luids_init_insn): New function.
      	(sched_init_luids, sched_finish_luids): New functions.
      	(insn_luid): New debug function.
      	(sched_extend_target): New function.
      	(haifa_init_insn): New static function.
      	(sched_init_only_bb): New hook.
      	(sched_split_block): New hook.
      	(sched_split_block_1): New function.
      	(sched_create_empty_bb): New hook.
      	(sched_create_empty_bb_1): New function.	
      	(common_sched_info, ready): New global variables.
      	(current_sched_info_var): Remove.
      	(move_block_after_check): Use common_sched_info.		
      	(haifa_luid_for_non_insn): New static function.	
      	(init_before_recovery): Use haifa_init_only_bb instead of
      	add_block.
      	(increase_insn_priority): New.
      	* modulo-sched.c: (issue_rate): Remove static declaration.
      	(sms_sched_info): Change type to haifa_sched_info.
      	(sms_sched_deps_info, sms_common_sched_info): New variables.
      	(setup_sched_infos): New.
      	(sms_schedule): Initialize them.  Call haifa_sched_init/finish.
      	Do not call regstat_free_calls_crossed.
      	(sms_print_insn): Use const_rtx.
      	* params.def (PARAM_MAX_PIPELINE_REGION_BLOCKS,
      	PARAM_MAX_PIPELINE_REGION_INSNS, PARAM_SELSCHED_MAX_LOOKAHEAD,
      	PARAM_SELSCHED_MAX_SCHED_TIMES, PARAM_SELSCHED_INSNS_TO_RENAME,
      	PARAM_SCHED_MEM_TRUE_DEP_COST): New.
      	* sched-deps.c (sched_deps_info): New.  Update all relevant uses of
      	current_sched_info to use it.
      	(enum reg_pending_barrier_mode): Move to sched-int.h.
      	(h_d_i_d): New variable. Initialize to NULL.
      	({true, output, anti, spec, forward}_dependency_cache): Initialize
      	to NULL.
      	(estimate_dep_weak): Remove static declaration.
      	(sched_has_condition_p): New function.  Adjust users of
      	sched_get_condition to use it instead.
      	(conditions_mutex_p): Add arguments indicating which conditions are
      	reversed.  Use them.
      	(sched_get_condition_with_rev): Rename from sched_get_condition.  Add
      	argument to indicate whether returned condition is reversed.  Do not
      	generate new rtx when condition should be reversed; indicate it by
      	setting new argument instead.
      	(add_dependence_list_and_free): Add deps parameter.
      	Update all users.  Do not free dependence list when
      	deps context is readonly.
      	(add_insn_mem_dependence, flush_pending_lists): Adjust for readonly
      	contexts.
      	(remove_from_dependence_list, remove_from_both_dependence_lists): New.
      	(remove_from_deps): New. Use the above functions.	
      	(cur_insn, can_start_lhs_rhs_p): New static variables.
      	(add_or_update_back_dep_1): Initialize present_dep_type.
      	(haifa_start_insn, haifa_finish_insn, haifa_note_reg_set,
      	haifa_note_reg_clobber, haifa_note_reg_use, haifa_note_mem_dep,
      	haifa_note_dep): New functions implementing dependence hooks for
      	the Haifa scheduler.
      	(note_reg_use, note_reg_set, note_reg_clobber, note_mem_dep,
      	note_dep): New functions.
      	(ds_to_dt, extend_deps_reg_info, maybe_extend_reg_info_p): New
      	functions.
      	(init_deps): Initialize last_reg_pending_barrier and deps->readonly.
      	(free_deps): Initialize deps->reg_last.
      	(sched_analyze_reg, sched_analyze_1, sched_analyze_2,
      	sched_analyze_insn): Update to use dependency hooks infrastructure
      	and readonly contexts.
      	(deps_analyze_insn): New function.  Move part of logic from ...
      	(sched_analyze): ... here.  Also move some logic to ...
      	(deps_start_bb): ... here.  New function.
      	(add_forw_dep, delete_forw_dep): Guard use of INSN_DEP_COUNT with
      	sel_sched_p.
      	(sched_deps_init): New function.  Move code from ...
      	(init_dependency_caches): ... here.  Remove.
      	(init_deps_data_vector): New.
      	(sched_deps_finish): New function.  Move code from ...
      	(free_dependency_caches): ... here.  Remove.
      	(init_deps_global, finish_deps_global): Adjust for use with
      	selective scheduling.
      	(get_dep_weak): Move logic to ...
      	(get_dep_weak_1): New function.
      	(ds_merge): Move logic to ...
      	(ds_merge_1): New static function.
      	(ds_full_merge, ds_max_merge, ds_get_speculation_types): New functions.
      	(ds_get_max_dep_weak): New function.
      	* sched-ebb.c (sched_n_insns): Rename to sched_rgn_n_insns.
      	(n_insns): Rename to rgn_n_insns.
      	(debug_ebb_dependencies): New function.
      	(init_ready_list): Use it.
      	(begin_schedule_ready): Use sched_init_only_bb.
      	(ebb_print_insn): Indicate when an insn starts a new cycle.
      	(contributes_to_priority, compute_jump_reg_dependencies,
      	add_remove_insn, fix_recovery_cfg): Add ebb_ prefix to function names.
      	(add_block1): Remove to ebb_add_block.
      	(ebb_sched_deps_info, ebb_common_sched_info): New variables.
      	(schedule_ebb): Initialize them.  Use remove_notes instead of
      	rm_other_notes.  Use haifa_local_init/finish.
      	(schedule_ebbs): Use haifa_sched_init/finish.
      	* sched-int.h: Include vecprim.h, remove rtl.h.
      	(struct ready_list): Delete declaration.
      	(sched_verbose_param, enum sched_pass_id_t,
      	bb_vec_t, insn_vec_t, rtx_vec_t): New.
      	(struct sched_scan_info_def): New structure.
      	(sched_scan_info, sched_scan, sched_init_bbs,
      	sched_init_luids, sched_finish_luids, sched_extend_target,
      	haifa_init_h_i_d, haifa_finish_h_i_d): Declare.
      	(struct common_sched_info_def): New.
      	(common_sched_info, haifa_common_sched_info,
      	sched_emulate_haifa_p): Declare.
      	(sel_sched_p): New.
      	(sched_luids): Declare.
      	(INSN_LUID, LUID_BY_UID, SET_INSN_LUID): Declare.
      	(sched_max_luid, insn_luid): Declare.
      	(note_list, remove_notes, restore_other_notes, bb_note): Declare.
      	(sched_insns_init, sched_insns_finish, xrecalloc, reemit_notes,
      	print_insn, print_pattern, print_value, haifa_classify_insn,
      	sel_find_rgns, sel_mark_hard_insn, dfa_state_size, advance_state,
      	setup_sched_dump, sched_init, sched_finish,
      	sel_insn_is_speculation_check): Export.
      	(struct ready_list): Move from haifa-sched.c.
      	(ready_try, ready, max_issue): Export.
      	(ebb_compute_jump_reg_dependencies, find_fallthru_edge,
      	sched_init_only_bb, sched_split_block, sched_split_block_1,
      	sched_create_empty_bb, sched_create_empty_bb_1,
      	sched_create_recovery_block, sched_create_recovery_edges): Export.
      	(enum reg_pending_barrier_mode): Export.
      	(struct deps): New fields `last_reg_pending_barrier' and `readonly'.
      	(deps_t): New.
      	(struct sched_info): Rename to haifa_sched_info.  Use const_rtx for
      	print_insn field.  Move add_block and fix_recovery_cfg to
      	common_sched_info_def.  Move compute_jump_reg_dependencies, use_cselib  ...
      	(struct sched_deps_info_def): ... this new structure.
      	(sched_deps_info): Declare.
      	(struct spec_info_def): Remove weakness_cutoff, add
      	data_weakness_cutoff and control_weakness_cutoff.
      	(spec_info): Declare.
      	(struct _haifa_deps_insn_data): Split from haifa_insn_data.  Add
      	dep_count field.
      	(struct haifa_insn_data): Rename to struct _haifa_insn_data.
      	(haifa_insn_data_def, haifa_insn_data_t): New typedefs.
      	(current_sched_info): Change type to struct haifa_sched_info.
      	(haifa_deps_insn_data_def, haifa_deps_insn_data_t): New typedefs.
      	(h_d_i_d): New variable.
      	(HDID): New accessor macro.
      	(h_i_d): Change type to VEC (haifa_insn_data_def, heap) *.
      	(HID): New accessor macro.  Rewrite h_i_d accessor macros through HID
      	and HDID.
      	(IS_SPECULATION_CHECK_P): Update for selective scheduler.
      	(enum SCHED_FLAGS): Update for selective scheduler.
      	(enum SPEC_SCHED_FLAGS): New flag SEL_SCHED_SPEC_DONT_CHECK_CONTROL.
      	(init_dependency_caches, free_dependency_caches): Delete declarations.
      	(deps_analyze_insn, remove_from_deps, get_dep_weak_1,
      	estimate_dep_weak, ds_full_merge, ds_max_merge, ds_weak,
      	ds_get_speculation_types, ds_get_max_dep_weak, sched_deps_init,
      	sched_deps_finish, haifa_note_reg_set, haifa_note_reg_use,
      	haifa_note_reg_clobber, maybe_extend_reg_info_p, deps_start_bb,
      	ds_to_dt): Export.
      	(rm_other_notes): Delete declaration.
      	(schedule_block): Remove one argument.
      	(cycle_issued_insns, issue_rate, dfa_lookahead, ready_sort,
      	ready_element, ready_lastpos, sched_extend_ready_list,
      	sched_finish_ready_list, sched_change_pattern, sched_speculate_insn,
      	concat_note_lists): Export.
      	(struct region): Move from sched-rgn.h.
      	(nr_regions, rgn_table, rgn_bb_table, block_to_bb, containing_rgn,
      	RGN_NR_BLOCKS, RGN_BLOCKS, RGN_DONT_CALC_DEPS, RGN_HAS_REAL_EBB,
      	BLOCK_TO_BB, CONTAINING_RGN): Export.
      	(ebb_head, BB_TO_BLOCK, EBB_FIRST_BB, EBB_LAST_BB, INSN_BB): Likewise.
      	(current_nr_blocks, current_blocks, target_bb): Likewise.
      	(dep_cost_1, sched_is_disabled_for_current_region_p, sched_rgn_init,
      	sched_rgn_finish, rgn_setup_region, sched_rgn_compute_dependencies,
      	sched_rgn_local_init, extend_regions,
      	rgn_make_new_region_out_of_new_block, compute_priorities,
      	debug_rgn_dependencies, free_rgn_deps, contributes_to_priority,
      	extend_rgns, deps_join rgn_setup_common_sched_info,
      	rgn_setup_sched_infos, debug_regions, debug_region, dump_region_dot,
      	dump_region_dot_file, haifa_sched_init, haifa_sched_finish): Export.
      	(get_rgn_sched_max_insns_priority, sel_add_to_insn_priority, 
      	increase_insn_priority): Likewise.
      	* sched-rgn.c: Include sel-sched.h.
      	(ref_counts): New static variable.  Use it ...
      	(INSN_REF_COUNT): ... here.  Rewrite and move closer to uses.
      	(FED_BY_SPEC_LOAD, IS_LOAD_INSN): Rewrite to use HID accessor macro.
      	(sched_is_disabled_for_current_region_p): Delete static declaration.
      	(struct region): Move to sched-int.h.
      	(nr_regions, rgn_table, rgn_bb_table, block_to_bb, containing_rgn,
      	ebb_head): Define and initialize.
      	(RGN_NR_BLOCKS, RGN_BLOCKS, RGN_DONT_CALC_DEPS, RGN_HAS_REAL_EBB,
      	BLOCK_TO_BB, CONTAINING_RGN, debug_regions, extend_regions,
      	BB_TO_BLOCK, EBB_FIRST_BB, EBB_LAST_BB): Move to
      	sched-int.h.
      	(find_single_block_region): Add new argument to indicate that EBB
      	regions should be constructed.
      	(debug_live): Delete declaration.
      	(current_nr_blocks, current_blocks, target_bb): Remove static qualifiers.
      	(compute_dom_prob_ps, check_live, update_live, set_spec_fed): Delete
      	declaration.
      	(init_regions): Delete declaration.
      	(debug_region, bb_in_region_p, dump_region_dot_file, dump_region_dot,
      	rgn_estimate_number_of_insns): New.
      	(too_large): Use estimate_number_of_insns.
      	(haifa_find_rgns): New. Move the code from ...
      	(find_rgns): ... here.  Call either sel_find_rgns or haifa_find_rgns.
      	(free_trg_info): New.
      	(compute_trg_info): Allocate candidate tables here instead of ...
      	(init_ready_list): ... here.
      	(rgn_print_insn): Use const_rtx.
      	(contributes_to_priority, extend_regions): Delete static declaration.
      	(add_remove_insn, fix_recovery_cfg): Add rgn_ to function names.
      	(add_block1): Rename to rgn_add_block.
      	(debug_rgn_dependencies): Delete static qualifier.
      	(new_ready): Use sched_deps_info.  Simplify.
      	(rgn_common_sched_info, rgn_const_sched_deps_info,
      	rgn_const_sel_sched_deps_info, rgn_sched_deps_info, rgn_sched_info): New.
      	(region_sched_info): Rename to rgn_const_sched_info.
      	(deps_join): New, extracted from ...
      	(propagate_deps): ... here.
      	(compute_block_dependences, debug_dependencies): Update for selective
      	scheduling.
      	(free_rgn_deps, compute_priorities): New functions.
      	(sched_rgn_init, sched_rgn_finish, rgn_setup_region,
      	sched_rgn_compute_dependencies): New functions.
      	(schedule_region): Use them.
      	(sched_rgn_local_init, sched_rgn_local_free, sched_rgn_local_finish,
      	rgn_setup_common_sched_info, rgn_setup_sched_infos):
      	New functions.
      	(schedule_insns): Call new functions that were split out.
      	(rgn_make_new_region_out_of_new_block): New.
      	(get_rgn_sched_max_insns_priority): New.
      	(rest_of_handle_sched, rest_of_handle_sched2): Call selective
      	scheduling when appropriate.
      	* sched-vis.c: Include insn-attr.h.
      	(print_value, print_pattern): Make global.
      	(print_rtl_slim, debug_bb_slim, debug_bb_n_slim): New functions.
      	* target-def.h (TARGET_SCHED_ADJUST_COST_2,
      	TARGET_SCHED_ALLOC_SCHED_CONTEXT, TARGET_SCHED_INIT_SCHED_CONTEXT,
      	TARGET_SCHED_SET_SCHED_CONTEXT, TARGET_SCHED_CLEAR_SCHED_CONTEXT,
      	TARGET_SCHED_FREE_SCHED_CONTEXT, TARGET_SCHED_GET_INSN_CHECKED_DS,
      	TARGET_SCHED_GET_INSN_SPEC_DS, TARGET_SCHED_SKIP_RTX_P): New target
      	hooks.  Initialize them to 0.
      	(TARGET_SCHED_GEN_CHECK): Rename to TARGET_SCHED_GEN_SPEC_CHECK.
      	* target.h (struct gcc_target): Add them.  Rename gen_check field to
      	gen_spec_check.
      	* flags.h (sel_sched_switch_set): Declare.
      	* opts.c (sel_sched_switch_set): New variable.
      	(decode_options): Unset flag_sel_sched_pipelining_outer_loops if
      	pipelining is disabled from command line.
      	(common_handle_option): Record whether selective scheduling is
      	requested from command line.
      	* doc/invoke.texi: Document new flags and parameters.
      	* doc/tm.texi: Document new target hooks.
      	* config/ia64/ia64.c (TARGET_SCHED_GEN_SPEC_CHECK): Define to ia64_gen_check.
      	(dfa_state_size): Do not declare locally.
      	* config/ia64/ia64.opt (msched-ar-data-spec): Default to 0.
      	* config/rs6000/rs6000.c (rs6000_init_sched_context,
      	rs6000_alloc_sched_context, rs6000_set_sched_context,
      	rs6000_free_sched_context): New functions.
      	(struct _rs6000_sched_context): New.
      	(rs6000_sched_reorder2): Do not modify INSN_PRIORITY for selective
      	scheduling.
      	(rs6000_sched_finish): Do not run for selective scheduling. 
      
      Co-Authored-By: Alexander Monakov <amonakov@ispras.ru>
      Co-Authored-By: Dmitry Melnik <dm@ispras.ru>
      Co-Authored-By: Dmitry Zhurikhin <zhur@ispras.ru>
      Co-Authored-By: Maxim Kuvyrkov <maxim@codesourcery.com>
      
      From-SVN: r139854
      Andrey Belevantsev committed
  2. 26 Aug, 2008 1 commit
    • [multiple changes] · 058e97ec
      2008-08-26  Vladimir Makarov  <vmakarov@redhat.com>
      
      	* ira-build.c, ira-color.c, ira-costs.c, ira.h, ira-lives.c,
      	ira.c, ira-conflicts.c, ira-emit.c, ira-int.h: New files.
      
      	* doc/passes.texi: Describe IRA.
      
      	* doc/tm.texi (IRA_COVER_CLASSES,
      	IRA_HARD_REGNO_ADD_COST_MULTIPLIER): Describe the new macros.
      
      	* doc/invoke.texi (ira-max-loops-num): Describe the new parameter.
      	(-fira, -fira-algorithm, -fira-coalesce, -fno-ira-move-spills,
      	-fira-propagate-cost, -fno-ira-share-save-slots,
      	-fno-ira-share-spill-slots, -fira-verbose): Describe new options.
      
      	* flags.h (ira_algorithm): New enumeration.
      	(flag_ira_algorithm, flag_ira_verbose): New external variable
      	declarations.
      
      	* postreload.c (gate_handle_postreload): Don't do post reload
      	optimizations unless the reload is completed.
      
      	* reload.c (push_reload, find_dummy_reload): Use DF_LR_OUT for
      	IRA.
      
      	* tree-pass.h (pass_ira): New external variable declaration.
      
      	* reload.h: Add 2008 to the Copyright.
          
      	* cfgloopanal.c: Include params.h.
      	(estimate_reg_pressure_cost): Decrease cost for IRA optimization
      	mode.
          
      	* params.h (IRA_MAX_LOOPS_NUM): New macro.
      
      	* toplev.c (ira.h): New include.
      	(flag_ira_algorithm, flag_ira_verbose): New external variables.
      	(backend_init_target): Call ira_init.
      	(backend_init): Call ira_init_once.
      	(finalize): Call finish_ira_once.
      
      	* toplev.h (flag_ira, flag_ira_coalesce, flag_ira_move_spills,
      	flag_ira_share_save_slots, flag_ira_share_spill_slots): New
      	external variables.
      
      	* regs.h (contains_reg_of_mode, move_cost, may_move_in_cost,
      	may_move_out_cost): New external variable declarations.
      	(move_table): New typedef.
          
      	* caller-save.c: Include headers output.h and ira.h.
      	(no_caller_save_reg_set): New global variable.
      	(save_slots_num, save_slots): New variables.
      	(reg_save_code, reg_restore_code, add_stored_regs): Add
      	prototypes.
      	(init_caller_save): Set up no_caller_save_reg_set.
      	(init_save_areas): Reset save_slots_num.
      	(saved_hard_reg): New structure.
      	(hard_reg_map, saved_regs_num, all_saved_regs): New variables.
      	(initiate_saved_hard_regs, new_saved_hard_reg,
      	finish_saved_hard_regs, saved_hard_reg_compare_func): New
      	functions.
      	(setup_save_areas): Add code for sharing stack slots.
      	(all_blocks): New variable.
      	(save_call_clobbered_regs): Process pseudo-register too.
      	(mark_set_regs): Process pseudo-register too.
      	(insert_one_insn): Put the insn after bb note in a empty basic
      	block.  Add insn check.
          
      	* global.c (eliminable_regset): Make it external.
      	(mark_elimination): Use DF_LR_IN for IRA.
      	(pseudo_for_reload_consideration_p): New.
      	(build_insn_chain): Make it external.  Don't ignore spilled
      	pseudos for IRA.  Use pseudo_for_reload_consideration_p.
      	(gate_handle_global_alloc): New function.
      	(pass_global_alloc): Add the gate function.
      
      	* opts.c (decode_options): Set up flag_ira.  Print the warning for
      	-fira.
      	(common_handle_option): Process -fira-algorithm and -fira-verbose.
      
      	* timevar.def (TV_IRA, TV_RELOAD): New passes.
      
      	* regmove.c (regmove_optimize): Don't do replacement of output for
      	IRA.
      
      	* hard-reg-set.h (no_caller_save_reg_set, reg_class_subclasses):
      	New external variable declarations.
      
      	* local-alloc.c (update_equiv_regs): Make it external.  Return
      	true if jump label rebuilding should be done.  Rescan new_insn for
      	notes.
      	(gate_handle_local_alloc): New function.
      	(pass_local_alloc): Add the gate function.
      
      	* alias.c (value_addr_p, stack_addr_p): New functions.
      	(nonoverlapping_memrefs_p): Use them for IRA.
      
      	* common.opt (fira, fira-algorithm, fira-coalesce,
      	fira-move-spills, fira-share-save-slots, fira-share-spill-slots,
      	fira-verbose): New options.
      
      	* regclass.c (reg_class_subclasses, contains_reg_of_mode,
      	move_cost, may_move_in_cost, may_move_out_cost): Make the
      	variables external.
      	(move_table): Remove typedef.
      	(init_move_cost): Make it external.
      	(allocate_reg_info, resize_reg_info, setup_reg_classes): New
      	functions.
      
      	* rtl.h (init_move_cost, allocate_reg_info, resize_reg_info,
      	setup_reg_classes): New function prototypes.
      	(eliminable_regset): New external variable declaration.
      	(build_insn_chain, update_equiv_regs): New function prototypes.
          
      	* Makefile.in (IRA_INT_H): New definition.
      	(OBJS-common): Add ira.o, ira-build.o, ira-costs.o,
      	ira-conflicts.o, ira-color.o, ira-emit.o, and ira-lives.o.
      	(reload1.o, toplev.o): Add dependence on ira.h.
      	(cfgloopanal.o): Add PARAMS_H.
      	(caller-save.o): Add dependence on output.h and ira.h.
      	(ira.o, ira-build.o, ira-costs.o, ira-conflicts.o, ira-color.o,
      	ira-emit.o, ira-lives.o): New entries.
      
      	* passes.c (pass_ira): New pass.
      
      	* params.def (PARAM_IRA_MAX_LOOPS_NUM): New parameter.
      
      	* reload1.c (ira.h): Include the header.
      	(changed_allocation_pseudos): New bitmap.
      	(init_reload): Initiate the bitmap.
      	(compute_use_by_pseudos): Permits spilled registers in FROM.
      	(temp_pseudo_reg_arr): New variable.
      	(reload): Allocate and free temp_pseudo_reg_arr.  Sort pseudos for
      	IRA.  Call alter_reg with the additional parameter.  Don't clear
      	spilled_pseudos for IRA.  Restore original insn chain for IRA.
      	Clear changed_allocation_pseudos at the end of reload.
      	(calculate_needs_all_insns): Call IRA's mark_memory_move_deletion.
      	(hard_regno_to_pseudo_regno): New variable.
      	(count_pseudo): Check spilled pseudos.  Set up
      	hard_regno_to_pseudo_regno.
      	(count_spilled_pseudo): Check spilled pseudos. Update
      	hard_regno_to_pseudo_regno.
      	(find_reg): Use better_spill_reload_regno_p.  Check
      	hard_regno_to_pseudo_regno.
      	(alter_reg): Set up spilled_pseudos.  Add a new parameter.  Add
      	code for IRA.
      	(eliminate_regs_1): Use additional parameter for alter_reg.
      	(finish_spills): Set up pseudo_previous_regs only for spilled
      	pseudos.  Call reassign_pseudos once for all spilled pseudos, pass
      	more arguments.  Don't clear live_throughout and dead_or_set for
      	spilled pseudos.  Use additional parameter for alter_reg.  Call
      	mark_allocation_change.  Set up changed_allocation_pseudos.
      	Remove sanity check.
      	(emit_input_reload_insns, delete_output_reload): Use additional
      	parameter for alter_reg.  Call mark_allocation_change.
      	(substitute, gen_reload_chain_without_interm_reg_p): New
      	functions.
      	(reloads_conflict): Use gen_reload_chain_without_interm_reg_p.
          
      	* testsuite/gcc.dg/20080410-1.c: New file.
      	
      	* config/s390/s390.h (IRA_COVER_CLASSES,
      	IRA_HARD_REGNO_ADD_COST_MULTIPLIER): Define.
      
      	* config/sparc/sparc.h (IRA_COVER_CLASSES): New macro.
      
      	* config/i386/i386.h (IRA_COVER_CLASSES): Ditto.
      
      	* config/ia64/ia64.h (IRA_COVER_CLASSES): Ditto.
      
      	* config/rs6000/rs6000.h (IRA_COVER_CLASSES): Ditto.
      
      	* config/arm/arm.h (IRA_COVER_CLASSES): Ditto.
          
      	* config/alpha/alpha.h (IRA_COVER_CLASSES): Ditto.
          
      	2008-08-24  Jeff Law  <law@redhat.com>
      	* ira.c (setup_reg_class_intersect_union): Prefer smallest class
      	when ignoring unavailable registers.
      
      	2008-08-24  Jeff Law  <law@redhat.com>
      	* ira-color.c (coalesced_pseudo_reg_slot_compare): Check
      	FRAME_GROWS_DOWNWARD and STACK_GROWS_DOWNWARD.
      	* ira.c (setup_eliminable_regset): Check stack_realign_needed.
      	* config/mn10300/mn10300.h (IRA_COVER_CLASSES): New macro.
      
      	2008-06-03 Steve Chamberlain <steve.chamberlain@gmail.com>
      	* ira-build.c (allocno_range_compare_func): Stabilize sort.
      
      	2008-05-29 Andy Hutchinson <hutchinsonandy@aim.com>
      	* config/avr/avr.h (IRA_COVER_CLASSES): New macro.
      	* reload1.c (find_reg): Process registers in register allocation order.
      
      	2008-05-10 Richard Sandiford <rsandifo@nildram.co.uk>
      	* toplev.c (backend_init_target): Move ira_init call from
      	here...
      	(lang_dependent_init_target): ...to here.
      
      	2008-05-10 Richard Sandiford <rsandifo@nildram.co.uk>
      	* ira.c (setup_class_subset_and_memory_move_costs): Don't
      	calculate memory move costs for NO_REGS.
      
      	2008-05-05 Kaz Kojima <kkojima@gcc.gnu.org>
      	* ira-color.c (ira_fast_allocation): Use no_stack_reg_p only if
      	STACK_REGS is defined.
      
      	2008-04-08 Andrew Pinski <andrew_pinski@playstation.sony.com>
      	* config/spu/spu.h (IRA_COVER_CLASSES): New macro.
      
      	2008-04-04 Bernd Schmidt <bernd.schmidt@analog.com>
      	* config/bfin/bfin.h (IRA_COVER_CLASSES): New macro.
      
      	2008-04-04 Kaz Kojima <kkojima@gcc.gnu.org>
      	* config/sh/sh.h (IRA_COVER_CLASSES): Define.
      	* config/sh/sh.md (movsicc_true+3): Check if emit returns a
      	barrier.
      
      From-SVN: r139590
      Vladimir Makarov committed
  3. 16 Aug, 2008 1 commit
    • re PR middle-end/20548 (ACATS c52103x c52104x c52104y segfault) · b38f3813
      	PR ada/20548
      	* common.opt (-fstack-check): Do not declare the variable here.
      	(-fstack-check=): New option variant.
      	* doc/invoke.texi (Code Gen Options): Document it.
      	* expr.h (STACK_OLD_CHECK_PROTECT): New macro.
      	(STACK_CHECK_PROTECT): Bump to 3 pages if DWARF-2 EH is used.
      	(STACK_CHECK_STATIC_BUILTIN): New macro.
      	* doc/tm.texi (Stack Checking): Document STACK_CHECK_STATIC_BUILTIN.
      	* opts.c: Include expr.h.
      	(common_handle_option) <OPT_fold_stack_check_>: New case.
      	<OPT_fstack_check>: Likewise.
      	* calls.c (initialize_argument_information): Use TYPE_SIZE_UNIT
      	consistently in the test for variable-sized types.  Adjust for
      	new behaviour of flag_stack_check.
      	* explow.c: Include except.h.
      	(allocate_dynamic_stack_space): Do not take into account
      	STACK_CHECK_MAX_FRAME_SIZE for static builtin stack checking.
      	* function.c (gimplify_parameters): Use DECL_SIZE_UNIT in the test
      	for variable-sized parameters.  Treat all parameters whose size is
      	greater than STACK_CHECK_MAX_VAR_SIZE as variable-sized if generic
      	stack checking is enabled.
      	* gimplify.c (gimplify_decl_expr): Treat non-static objects whose
      	size is greater than STACK_CHECK_MAX_VAR_SIZE as variable-sized
      	if generic stack checking is enabled.
      	(expand_function_end): Adjust for new behaviour of flag_stack_check.
      	* reload1.c (reload): Likewise.
      	* stmt.c (expand_decl): Assert that all automatic variables have
      	fixed size at this point and remove dead code.
      	* flags.h (stack_check_type): New enumeration type.
      	(flag_stack_check): Declare.
      	* toplev.c (flag_stack_check): New global variable.
      	* Makefile.in (opts.o): Add dependency on EXPR_H.
      	(explow.o): Add dependency on except.h.
      ada/
      	* gcc-interface/decl.c (gnat_to_gnu_entity): Use DECL_SIZE_UNIT in the
      	setjmp test consistently.  Adjust for new behaviour of flag_stack_check.
      	* gcc-interface/utils2.c (build_call_alloc_dealloc): Remove redundant
      	test of flag_stack_check.  Adjust for new behaviour of flag_stack_check.
      
      From-SVN: r139159
      Eric Botcazou committed
  4. 12 Aug, 2008 1 commit
    • real.h (struct real_format): New member has_sign_dependent_rounding. · 4099e2c2
      	* real.h (struct real_format): New member has_sign_dependent_rounding.
      	* real.c (ieee_single_format, mips_single_format, motorola_single_format,
      	spu_single_format, ieee_double_format, mips_double_format,
      	motorola_double_format, ieee_extended_motorola_format,
      	ieee_extended_intel_96_format, ieee_extended_intel_128_format,
      	ieee_extended_intel_96_round_53_format, ibm_extended_format,
      	mips_extended_format, ieee_quad_format, mips_quad_format,
      	vax_f_format, vax_d_format, vax_g_format): Initialize it.
      	* config/pdp11/pdp11.c (pdp11_f_format, pdp11_d_format): Likewise.
      
      	* defaults.h (MODE_HAS_NANS, MODE_HAS_INFINITIES,
      	MODE_HAS_SIGNED_ZEROS, MODE_HAS_SIGN_DEPENDENT_ROUNDING): Remove.
      	* config/spu/spu.h (MODE_HAS_NANS, MODE_HAS_INFINITIES,
      	MODE_HAS_SIGN_DEPENDENT_ROUNDING): Remove.
      	(ROUND_TOWARDS_ZERO): Likewise.
      
      	* real.h (REAL_MODE_FORMAT): Protect MODE against macro expansion.
      	(FLOAT_MODE_FORMAT): New macro.
      	(REAL_MODE_FORMAT_COMPOSITE_P): Remove, replace by ...
      	(MODE_COMPOSITE_P): ... this new macro.
      	(MODE_HAS_NANS, MODE_HAS_INFINITIES, MODE_HAS_SIGNED_ZEROS,
      	MODE_HAS_SIGN_DEPENDENT_ROUNDING): New macros.
      	* machmode.h (GET_MODE_INNER): Cast result to enum machine_mode.
      
      	* flags.h: Include "real.h".
      
      	* fold-const.c (const_binop): Use MODE_COMPOSITE_P instead of
      	REAL_MODE_FORMAT_COMPOSITE_P.
      	* simplify-rtx.c (simplify_const_binary_operation): Likewise.
      
      	* doc/tm.texi (Storage Layout): Remove documentation of
      	MODE_HAS_NANS, MODE_HAS_INFINITIES, MODE_HAS_SIGNED_ZEROS,
      	MODE_HAS_SIGN_DEPENDENT_ROUNDING.  Update documentation of
      	ROUND_TOWARDS_ZERO and LARGEST_EXPONENT_IS_NORMAL to clarify
      	they only apply to libgcc2.a.
      
      From-SVN: r139016
      Ulrich Weigand committed
  5. 08 Aug, 2008 1 commit
    • re PR c/28875 ("-Wextra -Wno-unused-parameter -Wall" doesn't work as expected) · e73f7547
      2008-08-08  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
      
      	PR 28875
      	* flags.h (set_Wunused): Delete
      	* toplev.c (process_options): Handle Wunused flags here.
      	* opts.c (maybe_warn_unused_parameter): Delete.
      	(common_handle_option): Replace set_Wunused by warn_unused.
      	(set_Wextra): Do not handle Wunused-parameter here.
      	(set_Wunused): Delete.
      	* c-opts.c (c_common_handle_option): Replace set_Wunused by
      	warn_unused.
      	* common.opt (Wunused): Add Var and Init.
      	(Wunused-function): Likewise.
      	(Wunused-label): Likewise.
      	(Wunused-parameter): Likewise.
      	(Wunused-value): Likewise.
      	(Wunused-variable): Likewise.
      fortran/
      	* options.c (set_Wall): Replace set_Wunused by warn_unused.
      java/	
      	* lang.c (java_handle_option): Replace set_Wunused with
      	warn_unused.
      testsuite/
      	* gcc.dg/unused-6-no.c: New.
      	* gcc.dg/unused-6-WallWextra.c: New.
      
      From-SVN: r138890
      Manuel López-Ibáñez committed
  6. 29 Jul, 2008 1 commit
    • flags.h (flag_really_no_inline): Remove. · e90acd93
      
      	* flags.h (flag_really_no_inline): Remove.
      	* cgraph.c (cgraph_function_possibly_inlined_p): Simplify.
      	* toplev.c (flag_really_no_inline): Remove.
      	* c-cppbuiltin.c (c_cpp_builtins): Use flag_no_inline.
      	* ipa-inline.c (cgraph_decide_inlining): Do not check flag_no_inline.
      	(cgraph_decide_inlining_incrementally): Likewise.
      	(compute_inline_parameters): Likewise.
      	* opts.c (decode_options): Simplify.
      	* c-opts.c (c_common_post_options): Do not set flag_no_inline.
      	* common.opt (finline): Initialize to 1.
      	* tree-inline.c (inlinable_function_p): Check flag_no_inline.
      
      	* lang.c (java_post_options): Remove handling of flag_no_inline.
      
      	* misc.c (gnat_post_options): Do not set flag_no_inline.
      
      	* options.c (gfc_post_options): Do not set flag_no_inline.
      
      From-SVN: r138238
      Jan Hubicka committed
  7. 21 Jul, 2008 1 commit
    • Makefile.in: Replace toplev.h with TOPLEV_H. · aa14403d
      2007-07-21  Rafael Avila de Espindola  <espindola@google.com>
      
      	* Makefile.in: Replace toplev.h with TOPLEV_H.
      	* c-decl.c (merge_decls): Don't set DECL_IN_SYSTEM_HEADER.
      	* c-lex.c (fe_file_change): Don't set in_system_header.
      	* c-parser.c (c_token): Remove in_system_header.
      	(c_lex_one_token): Don't set in_system_header.
      	(c_parser_set_source_position_from_token): Don't set in_system_header.
      	* diagnostic.c (diagnostic_report_diagnostic): Use location from
      	diagnostic_info.
      	(warning_at): New.
      	* diagnostic.h (diagnostic_report_warnings_p): Add LOC argument.
      	* flags.h (in_system_header): Remove.
      	* function.c (saved_in_system_header): Remove.
      	(push_cfun): Don't set in_system_header.
      	(pop_cfun): Don't set in_system_header.
      	(push_struct_function): Don't set in_system_header.
      	* input.h (expanded_location): Add sysp.
      	(in_system_header_at): New.
      	(in_system_header): New.
      	* toplev.c (in_system_header): Remove.
      	* toplev.h: Include input.h
      	(warning_at): New.
      	* tree-cfg.c (execute_warn_function_return): Call warning_at.
      	* tree-ssa.c (warn_uninit): Call warning_at.
      	(warn_uninitialized_var): Update calls to warn_uninit.
      	(warn_uninitialized_phi): Update calls to warn_uninit.
      	* tree.c (make_node_stat): Don't set DECL_IN_SYSTEM_HEADER.
      	(expand_location): Initialize xloc.sysp.
      	* tree.h (DECL_IN_SYSTEM_HEADER): Use in_system_header_at.
      	(tree_decl_with_vis): Remove in_system_header_flag.
      
      2007-07-21  Rafael Avila de Espindola  <espindola@google.com>
      
      	* parser.c (cp_token): Remove in_system_header.
      	(eof_token): Remove in_system_header.
      	(cp_lexer_get_preprocessor_token): Don't set in_system_header.
      	(cp_lexer_set_source_position_from_token): Don't set in_system_header.
      	(cp_parser_member_declaration):  Use in_system_header_at.
      	* pt.c (lookup_template_class): Don't set DECL_IN_SYSTEM_HEADER.
      	(pop_tinst_level): Don't set in_system_header.
      	(instantiate_class_template): Don't set in_system_header.
      	(instantiate_decl): Don't set in_system_header.
      	(instantiate_pending_templates): Don't set in_system_header.
      
      From-SVN: r138031
      Rafael Avila de Espindola committed
  8. 09 Jul, 2008 1 commit
    • invoke.texi (Option Summary): Mention new option -Wdisallowed-function-list=... · 1ebc7e68
      2008-07-09  Raksit Ashok <raksit@google.com>
      
      	* doc/invoke.texi (Option Summary): Mention new option
      	-Wdisallowed-function-list=...
      	(Warning Options): Document -Wdisallowed-function-list=...
      	* common.opt (Wdisallowed-function-list=): New flag.
      	* flags.h (warn_disallowed_functions): External definition of new
      	boolean warning flag.
      	(warn_if_disallowed_function_p): Declare new function.
      	* opts.c (warning_disallowed_functions): New static variable.
      	(warn_disallowed_functions): New boolean warning flag.
      	(warn_if_disallowed_function_p): New function.
      	(add_comma_separated_to_vector): Rename
      	add_instrument_functions_exclude_list to this.
      	(common_handle_option): Handle new option. Rename calls to
      	add_instrument_functions_exclude_list into calls to
      	add_comma_separated_to_vector.
      	* c-parser.c (c_parser_postfix_expression_after_primary): New warning
      	based on flag warn_disallowed_functions.
      
      
      gcc/cp/ChangeLog
      
      2008-07-09  Raksit Ashok <raksit@google.com>
      
      	* parser.c (cp_parser_postfix_expression): New warning based on flag
      	warn_disallowed_functions.
      
      
      gcc/testsuite/ChangeLog
      
      2008-07-09  Raksit Ashok <raksit@google.com>
      
      	* gcc.dg/wdisallowed-functions-1.c: New test.
      	* gcc.dg/wdisallowed-functions-2.c: New test.
      	* g++.dg/warn/Wdisallowed-functions-1.C: New test.
      	* g++.dg/warn/Wdisallowed-functions-2.C: New test.
      
      From-SVN: r137655
      Raksit Ashok committed
  9. 25 May, 2008 1 commit
    • final.c (frame_pointer_needed): Removed. · 3bffa195
      2008-05-25  H.J. Lu  <hongjiu.lu@intel.com>
      
      	* final.c (frame_pointer_needed): Removed.
      	* flags.h (frame_pointer_needed): Likewise.
      
      	* function.h (rtl_data): Add frame_pointer_needed.
      	(frame_pointer_needed): New.
      
      From-SVN: r135870
      H.J. Lu committed
  10. 14 Apr, 2008 1 commit
    • flags.h (POINTER_TYPE_OVERFLOW_UNDEFINED): Define. · 4c9db6e0
      gcc/:
      	* flags.h (POINTER_TYPE_OVERFLOW_UNDEFINED): Define.
      	* fold-const.c (fold_comparison): If appropriate, test
      	POINTER_TYPE_OVERFLOW_UNDEFINED, and issue an overflow warning.
      	(fold_binary): Test POINTER_TYPE_OVERFLOW_UNDEFINED when
      	reassociating a pointer type.
      	* doc/invoke.texi (Optimize Options): Document that
      	-fstrict-overflow applies to pointer wraparound.
      gcc/testsuite/:
      	* gcc.dg/strict-overflow-6.c: New.
      	* gcc.dg/no-strict-overflow-7.c: New.
      	* gcc.dg/Wstrict-overflow-22.c: New.
      
      From-SVN: r134287
      Ian Lance Taylor committed
  11. 02 Mar, 2008 1 commit
    • re PR c++/24924 (front end and preprocessor pedantic_errors settings should agree) · 393eda6a
      2008-03-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org> 
      
      	PR 24924
      	* c-common.c (flag_permissive): Delete.
      	(constant_expression_warnings): Check flags first.
      	(constant_expression_error): New.
      	* c-common.h (flag_permissive): Delete.
      	(constant_expression_error): Declare.
      	* flags.h (flag_permissive): Declare. Update description.
      	* diagnostic.c (pedwarn): Update.
      	(permerror): New.
      	* diagnostic.h: (pedantic_error_kind): Rename as pedantic_warning_kind.
      	(permissive_error_kind): New.
      	* toplev.c (flag_permissive): Define. Update description.
      	* toplev.h (permissive_error_kind): Declare.
      	* c-errors.c (pedwarn_c99): Use pedantic_warning_kind.
      	(pedwarn_c90): Use pedantic_warning_kind.
      	* c-opts.c (c_common_post_options): flag_permissive does not affect
      	flag_pedantic_errors.
      cp/
      	* class.c (finish_struct_anon): Use permerror instead of pedwarn.
      	(check_field_decls): Likewise.
      	(note_name_declared_in_class): Likewise.
      	* call.c (build_new_op): Likewise.
      	(convert_like_real): Likewise.
      	(build_over_call): Likewise.
      	* lex.c (unqualified_fn_lookup_error): Likewise.
      	* parser.c (cp_parser_template_id): Likewise.
      	* cvt.c (warn_ref_binding): Likewise.
      	(convert_to_reference): Likewise.
      	(ocp_convert): Likewise.
      	(convert_to_void): Use error instead of pedwarn.
      	* error.c (cp_cpp_error): Use pedantic_warning_kind.
      	* decl.c (compute_array_index_type): Use constant_expression_error.
      testsuite/
      	* g++.dg/cpp/string-2.C: This is a warning now.
      	* g++.dg/cpp/pedantic-errors.C: -pedantic-errors is not enabled by
      	default, so add it.
      
      From-SVN: r132817
      Manuel López-Ibáñez committed
  12. 20 Feb, 2008 1 commit
    • invoke.texi (Warning Options): Add new option -Wframe-larger-than=. · a214518f
      gcc/ChangeLog:
      
      2008-02-20  Seongbae Park <seongbae.park@gmail.com>
      
      	* doc/invoke.texi (Warning Options): Add new option
      	-Wframe-larger-than=.
      	(-Wframe-larger-than): Document.
      
      	* flags.h (warn_frame_larger_than, frame_larger_than_size):
      	Add declarations for new option variables.
      
      	* final.c (final_start_function): Check the frame size
      	before emission and issue a Wframe-larger-than warning.
      
      	* opts.c (warn_frame_larger_than, frame_larger_than_size):
      	Add definitions for new option variables.
      	(common_handle_option): Handle new option OPT_Wframe_larger_than_.
      
      	* common.opt (Wframe-larger-than=): New option.
      
      gcc/testsuite/ChangeLog:
      
      2008-02-20  Seongbae Park <seongbae.park@gmail.com>
      
      	* gcc.dg/Wframe-larger-than.c: New option test.
      
      From-SVN: r132496
      Seongbae Park committed
  13. 22 Jan, 2008 1 commit
    • re PR c/32102 (-Wall stomps on -Wstrict-overflow) · 027b740e
      2008-01-22  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
      
              PR 32102
              * doc/invoke.texi (-Wall): -Wall enables -Wstrict-overflow=1.
              * flags.h (warn_strict_aliasing): Remove.
              (warn_strict_overflow): Remove.
              * opts.c (warn_strict_aliasing): Remove.
              (warn_strict_overflow): Remove.
              * c-opts.c (c_common_handle_option): -Wall only sets
              -Wstrict-aliasing or -Wstrict-overflow if they are uninitialized.
              (c_common_post_options): Give default values to -Wstrict-aliasing
              and -Wstrict-overflow if they are uninitialized.
              * common.opt (Wstrict-aliasing): Specify Var and Init.
              (Wstrict-overflow): Likewise.
      
      testsuite/
              * gcc.dg/Wstrict-overflow-21.c: New.
              * g++.dg/warn/Wstrict-aliasing-8.C: New.
      
      From-SVN: r131720
      Manuel López-Ibáñez committed
  14. 07 Aug, 2007 1 commit
    • common.opt (finstrument-functions-exclude-function-list): New option. · 8d5a7d1f
      ./:	* common.opt (finstrument-functions-exclude-function-list): New
      	option.
      	(finstrument-functions-exclude-file-list): New option.
      	* opts.c (char_p): Define and DEF_VEC.
      	(flag_instrument_functions_exclude_functions): New static
      	variable.
      	(flag_instrument_functions_exclude_files): New static variable.
      	(add_instrument_functions_exclude_list): New static function.
      	(flag_instrument_functions_exclude_p): New function.
      	(common_handle_option): Handle new options.
      	* flags.h (flag_instrument_functions_exclude_p): Declare.
      	* gimplify.c (gimplify_function_tree): Call
      	flag_instrument_functions_exclude_p.
      	* doc/invoke.texi (Option Summary): Mention new options.
      	(Code Gen Options): Document new options.
      testsuite/:
      	* gcc.dg/instrument-1.c: New test.
      	* gcc.dg/instrument-2.c: New test.
      	* gcc.dg/instrument-3.c: New test.
      
      From-SVN: r127284
      Ian Lance Taylor committed
  15. 26 Jul, 2007 1 commit
  16. 10 Jul, 2007 1 commit
    • re PR bootstrap/32617 (explow.c references DECL_ALIGN of a FUNCTION_DECL) · 837edd5f
      2007-07-09  Geoffrey Keating  <geoffk@apple.com>
      
      	PR 32617
      	* c-common.c (c_alignof_expr): Look at DECL_ALIGN of
      	FUNCTION_DECLs.
      	(handle_aligned_attribute): Allow use on FUNCTION_DECLs.
      	* varasm.c (assemble_start_function): Honor DECL_ALIGN
      	for FUNCTION_DECLs.  Don't use align_functions_log if
      	DECL_USER_ALIGN.
      	* print-tree.c (print_node): Print DECL_ALIGN and DECL_USER_ALIGN
      	even for FUNCTION_DECLs.
      	* c-decl.c (merge_decls): Propagate DECL_ALIGN even for
      	FUNCTION_DECLs.
      	* tree.h (DECL_ALIGN): Update for new location of 'align'.
      	(DECL_FUNCTION_CODE): Update for new location and name of
      	'function_code'.
      	(DECL_OFFSET_ALIGN): Update for new location of 'off_align'.
      	(struct tree_decl_common): Move 'align' and 'off_align' out
      	of union, ensure they're still on a 32-bit boundary.  Remove
      	other fields in union 'u1'.
      	(struct tree_function_decl): Add field 'function_code' replacing
      	'u1.f' in tree_decl_common.
      	* tree.c (build_decl_stat): Set initial value of DECL_ALIGN.
      	* doc/extend.texi (Function Attributes): Add 'aligned' attribute.
      	(Variable Attributes): Cross-reference 'aligned' attribute
      	to Function Attributes.
      	* flags.h (force_align_functions_log): Delete.
      	* toplev.c (force_align_functions_log): Delete.
      
      Index: gcc/testsuite/ChangeLog
      2007-07-09  Geoffrey Keating  <geoffk@apple.com>
      
      	PR 32617
      	* gcc.c-torture/execute/align-3.c: New.
      
      Index: gcc/java/ChangeLog
      2007-07-09  Geoffrey Keating  <geoffk@apple.com>
      
      	PR 32617
      	* lang.c (java_init): Remove setting of force_align_functions_log.
      	* class.c (add_method_1): Set DECL_ALIGN of non-static method
      	to cope with ptrmemfunc_vbit_in_pfn.
      
      Index: gcc/cp/ChangeLog
      2007-07-09  Geoffrey Keating  <geoffk@apple.com>
      
      	PR 32617
      	* decl.c (cxx_init_decl_processing): Don't set
      	force_align_functions_log.
      	(grokfndecl): Honour ptrmemfunc_vbit_in_pfn.
      	* typeck.c (cxx_alignof_expr): When alignof is used on a plain
      	FUNCTION_DECL, return its alignment.
      
      From-SVN: r126529
      Geoffrey Keating committed
  17. 11 May, 2007 1 commit
    • Makefile.in (OBJS-common): Add tree-ssa-alias-warnings.o. · 79bedddc
      gcc/
              * Makefile.in (OBJS-common): Add tree-ssa-alias-warnings.o.
              * c-common.c (strict_aliasing_warning): Modify -Wstrict-aliasing logic.
              * c-common.h (strict_aliasing_warning): Change return type.
              * c-opts.c (c_common_handle_option): Add call to set_Wstrict_aliasing.
              * c-typeck.c (build_indirect_ref): Add call to strict_aliasing_warning.
              (build_c_cast): Condition call to strict_aliasing_warning.
              * doc/invoke.texi: Update description of -Wstrict-aliasing[=n].
              * flags.h (set_Wstrict_aliasing): Declare.
              * opts.c (set_Wstrict_alising): Define, add call to.
              * tree-flow.h (strict_aliasing_warning_backend): Declare.
              * tree-ssa-alias-warnings.c: New file.
              * tree-ssa-alias.c (compute_may_aliases): Add call to
              strict_aliasing_warning_backend.
      
      gcc/cp
              * cp/typeck.c (build_indirect_ref): Add call to
              strict_aliasing_warning.
              (build_reinterpret_cast_1): Condition call to
              strict_aliasing_warning.
      
      gcc/testsuite
              * gcc.dg/Wstrict-aliasing-bogus-const-ptr-nonconst-ptr.c: New test.
              * gcc.dg/Wstrict-aliasing-bogus-never-dereferenced.c: New test.
              * gcc.dg/Wstrict-aliasing-bogus-struct-included.c: New test.
              * gcc.dg/Wstrict-aliasing-converted-assigned.c: New test.
              * gcc.dg/Wstrict-aliasing-float-ptr-int-obj.c: New test.
              * gcc.dg/alias-1.c: Update option: -Wstrict-aliasing=2.
              * gcc.dg/alias-9.c: Update option: -Wstrict-aliasing=2.
              * g++.dg/warn/Wstrict-aliasing-7.C: Update option: -Wstrict-aliasing=2.
              * g++.dg/warn/Wstrict-aliasing-bogus-base-derived.C: New test.
              * g++.dg/warn/Wstrict-aliasing-bogus-char-1.C: New test.
              * g++.dg/warn/Wstrict-aliasing-bogus-const.C: New test.
              * g++.dg/warn/Wstrict-aliasing-bogus-nested-arrays.C: New test.
              * g++.dg/warn/Wstrict-aliasing-bogus-signed-unsigned.C: New test.
              * g++.dg/warn/Wstrict-aliasing-bogus-struct-included.C: New test.
              * g++.dg/warn/Wstrict-aliasing-bogus-union.C: New test.
              * g++.dg/warn/Wstrict-aliasing-float-ref-int-obj.C: New test.
      
      From-SVN: r124622
      Silvius Rus committed
  18. 17 Apr, 2007 1 commit
    • invoke.texi (Debugging Options): Add documentation for the -femit-struct-debug options... · 39ef6592
      ./:	* doc/invoke.texi (Debugging Options): Add documentation for the
      	-femit-struct-debug options -femit-struct-debug-baseonly,
      	-femit-struct-debug-reduced, and
      	-femit-struct-debug-detailed[=...].
      
      	* c-opts.c (c_common_handle_option): Add
      	OPT_femit_struct_debug_baseonly, OPT_femit_struct_debug_reduced,
      	and OPT_femit_struct_debug_detailed_.
      	* c.opt: Add specifications for
      	-femit-struct-debug-baseonly, -femit-struct-debug-reduced,
      	and -femit-struct-debug-detailed[=...].
      	* opts.c (set_struct_debug_option): Parse the
      	-femit-struct-debug-... options.
      	* opts.c (matches_main_base, main_input_basename,
      	main_input_baselength, base_of_path, matches_main_base): Add
      	variables and functions to compare header base name to compilation
      	unit base name.
      	* opts.c (should_emit_struct_debug): Add to determine to emit a
      	structure based on the option.
      	(dump_struct_debug) Also disabled function to debug this
      	function.
      	* opts.c (handle_options): Save the base name of the
      	compilation unit.
      
      	* langhooks-def.h (LANG_HOOKS_GENERIC_TYPE_P): Define.
              (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add.
      	This hook indicates if a type is generic.  Set it by default
      	to "never generic".
      	* langhooks.h (struct lang_hooks_for_types): Add a new hook
      	to determine if a struct type is generic or not.
      	* cp/cp-tree.h (class_tmpl_impl_spec_p): Declare a C++ hook.
      	* cp/tree.c (class_tmpl_impl_spec_p): Implement the C++ hook.
      	* cp/cp-lang.c (LANG_HOOKS_GENERIC_TYPE_P): Override null C hook
      	with live C++ hook.
      
      	* flags.h (enum debug_info_usage): Add an enumeration to describe
      	a program's use of a structure type.
      	* dwarf2out.c (gen_struct_or_union_type_die): Add a new parameter
      	to indicate the program's usage of the type.  Filter structs based
      	on the -femit-struct-debug-... specification.
      	(gen_type_die): Split into two routines, gen_type_die and
      	gen_type_die_with_usage.  gen_type_die is now a wrapper
      	that assumes direct usage.
      	(gen_type_die_with_usage): Replace calls to gen_type_die
      	with gen_type_die_with_usage adding the program usage of
      	the referenced type.
      	(dwarf2out_imported_module_or_decl): Suppress struct debug
      	information using should_emit_struct_debug when appropriate.
      testsuite/:
      	* g++.dg/other/fesd-any.C: Test -femit-struct-debug-detailed=any.
      	* g++.dg/other/fesd-any.h: Test -femit-struct-debug-detailed=any.
      	* g++.dg/other/fesd-baseonly.C: Test -femit-struct-debug-baseonly.
      	* g++.dg/other/fesd-baseonly.h: Test -femit-struct-debug-baseonly.
      	* g++.dg/other/fesd-none.C: Test -femit-struct-debug-detailed=none.
      	* g++.dg/other/fesd-none.h: Test -femit-struct-debug-detailed=none.
      	* g++.dg/other/fesd-reduced.C: Test -femit-struct-debug-reduced.
      	* g++.dg/other/fesd-reduced.h: Test -femit-struct-debug-reduced.
      	* g++.dg/other/fesd-sys.C: Test -femit-struct-debug-detailed=sys.
      	* g++.dg/other/fesd-sys.h: Test -femit-struct-debug-detailed=sys.
      	* g++.dg/other/fesd.h: Common to -femit-struct-debug-... tests.
      
      	* gcc.dg/fesd-any.c: Test -femit-struct-debug-detailed=any.
      	* gcc.dg/fesd-any.h: Test -femit-struct-debug-detailed=any.
      	* gcc.dg/fesd-baseonly.c: Test -femit-struct-debug-baseonly.
      	* gcc.dg/fesd-baseonly.h: Test -femit-struct-debug-baseonly.
      	* gcc.dg/fesd-none.c: Test -femit-struct-debug-detailed=none.
      	* gcc.dg/fesd-none.h: Test -femit-struct-debug-detailed=none.
      	* gcc.dg/fesd-reduced.c: Test -femit-struct-debug-reduced.
      	* gcc.dg/fesd-reduced.h: Test -femit-struct-debug-reduced.
      	* gcc.dg/fesd-sys.c: Test -femit-struct-debug-detailed=sys.
      	* gcc.dg/fesd-sys.h: Test -femit-struct-debug-detailed=sys.
      	* gcc.dg/fesd.h: Common to -femit-struct-debug-... tests.
      
      From-SVN: r123909
      Lawrence Crowl committed
  19. 14 Mar, 2007 1 commit
    • flags.h (flag_random_seed): Remove declaration, in favor of... · 403d4851
      gcc/ChangeLog:
      * flags.h (flag_random_seed): Remove declaration, in favor of...
      * toplev.h (get_random_seed, set_random_seed): ... these.
      * tree.c (get_file_function_name): Use the former.
      * opts.c (common_handle_option): Use the latter.
      * toplev.c
      gcc/cp/ChangeLog:
      * cp/repo.c (init_repo): Initialize random_seed saved options.
      (finish_repo): Adjust.
      
      From-SVN: r122901
      Alexandre Oliva committed
  20. 14 Feb, 2007 1 commit
  21. 13 Feb, 2007 1 commit
    • common.opt: Add Wstrict-overflow and Wstrict-overflow=. · 6ac01510
      ./:	* common.opt: Add Wstrict-overflow and Wstrict-overflow=.
      	* flags.h (warn_strict_overflow): Declare.
      	(enum warn_strict_overflow_code): Define.
      	(issue_strict_overflow_warning): New static inline function.
      	* opts.c (warn_strict_overflow): New variable.
      	(common_handle_option): Handle OPT_Wstrict_overflow and
      	OPT_Wstrict_overflow_.
      	* c-opts.c (c_common_handle_option): Set warn_strict_overflow for
      	OPT_Wall.
      	* fold-const.c: Include intl.h.
      	(fold_deferring_overflow_warnings): New static variable.
      	(fold_deferred_overflow_warning): New static variable.
      	(fold_deferred_overflow_code): New static variable.
      	(fold_defer_overflow_warnings): New function.
      	(fold_undefer_overflow_warnings): New function.
      	(fold_undefer_and_ignore_overflow_warnings): New function.
      	(fold_deferring_overflow_warnings_p): New function.
      	(fold_overflow_warning): New static function.
      	(make_range): Add strict_overflow_p parameter.  Change all
      	callers.
      	(extract_muldiv, extract_muldiv_1): Likewise.
      	(fold_unary) [ABS_EXPR]: Check ABS_EXPR before calling
      	tree_expr_nonnegative_p.
      	(fold_negate_expr): Call fold_overflow_warning.
      	(fold_range_test): Likewise.
      	(fold_comparison): Likewise.
      	(fold_binary): Likewise.  Call tree_expr_nonnegative_warnv_p
      	instead of tree_expr_nonnegative_p.
      	(tree_expr_nonnegative_warnv_p): Rename from
      	tree_expr_nonnegative_p, add strict_overflow_p parameter.
      	(tree_expr_nonnegative_p): New function.
      	(tree_expr_nonzero_warnv_p): Rename from tree_expr_nonzero_p, add
      	strict_overflow_p parameter.
      	(tree_expr_nonzero_p): New function.
      	* passes.c (verify_interpass_invariants): New static function.
      	(execute_one_pass): Call it.
      	* tree-ssa-loop-niter.c (expand_simple_operations): Ignore fold
      	warnings.
      	(number_of_iterations_exit, loop_niter_by_eval): Likewise.
      	(estimate_numbers_of_iterations): Likewise.
      	(scev_probably_wraps_p): Likewise.
      	* tree-ssa-ccp.c: Include "toplev.h".
      	(evaluate_stmt): Defer fold overflow warnings until we know we are
      	going to optimize.
      	(struct fold_stmt_r_data): Add stmt field.
      	(fold_stmt_r): Defer fold overflow warnings until we know we
      	optimized.
      	(fold_stmt): Initialize stmt field of fold_stmt_r_data.
      	(fold_stmt_inplace): Likewise.
      	* tree-cfgcleanup.c: Include "toplev.h" rather than "errors.h".
      	(cleanup_control_expr_graph): Defer fold overflow warnings until
      	we know we are going to optimize.
      	* tree-cfg.c (fold_cond_expr_cond): Likewise.
      	* tree-ssa-threadedge.c (simplify_control_stmt_condition):
      	Likewise.
      	* tree-vrp.c (vrp_expr_computes_nonnegative): Call
      	tree_expr_nonnegative_warnv_p instead of tree_expr_nonnegative_p.
      	* tree-ssa-loop-manip.c (create_iv): Likewise.
      	* c-typeck.c (build_conditional_expr): Likewise.
      	(build_binary_op): Likewise.
      	* tree-vrp.c (vrp_expr_computes_nonzero): Call
      	tree_expr_nonzero_warnv_p instead of tree_expr_nonzero_p.
      	(extract_range_from_unary_expr): Likewise.
      	* simplify-rtx.c (simplify_const_relational_operation): Warn when
      	assuming that signed overflow does not occur.
      	* c-common.c (pointer_int_sum): Ignore fold overflow warnings.
      	* tree.h (tree_expr_nonnegative_warnv_p): Declare.
      	(fold_defer_overflow_warnings): Declare.
      	(fold_undefer_overflow_warnings): Declare.
      	(fold_undefer_and_ignore_overflow_warnings): Declare.
      	(fold_deferring_overflow_warnings_p): Declare.
      	(tree_expr_nonzero_warnv_p): Declare.
      	* doc/invoke.texi (Option Summary): Add -Wstrict-overflow to list
      	of warning options.
      	(Warning Options): Document -Wstrict-overflow.
      	* Makefile.in (tree-ssa-threadedge.o): Depend on toplev.h.
      	(tree-ssa-ccp.o): Likewise.
      	(tree-cfgcleanup.o): Change errors.h dependency to toplev.h.
      	(fold-const.o): Depend on intl.h.
      testsuite/:
      	* gcc.dg/Wstrict-overflow-1.c: New test.
      	* gcc.dg/Wstrict-overflow-2.c: New test.
      	* gcc.dg/Wstrict-overflow-3.c: New test.
      	* gcc.dg/Wstrict-overflow-4.c: New test.
      	* gcc.dg/Wstrict-overflow-5.c: New test.
      	* gcc.dg/Wstrict-overflow-6.c: New test.
      	* gcc.dg/Wstrict-overflow-7.c: New test.
      	* gcc.dg/Wstrict-overflow-8.c: New test.
      	* gcc.dg/Wstrict-overflow-9.c: New test.
      	* gcc.dg/Wstrict-overflow-10.c: New test.
      
      From-SVN: r121895
      Ian Lance Taylor committed
  22. 02 Feb, 2007 1 commit
  23. 28 Jan, 2007 1 commit
    • common.opt: Add fstrict-overflow. · eeef0e45
      ./:	* common.opt: Add fstrict-overflow.
      	* opts.c (decode_options): Set flag_strict_overflow if -O2.
      	* flags.h (TYPE_OVERFLOW_WRAPS): Define.
      	(TYPE_OVERFLOW_UNDEFINED): Define.
      	(TYPE_OVERFLOW_TRAPS): Define.  This replaces TYPE_TRAP_SIGNED.
      	Replace all uses.
      	* tree.h (TYPE_TRAP_SIGNED): Don't define.
      	* fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_UNDEFINED.
      	(fold_negate_expr): Likewise.
      	(make_range): Likewise.
      	(extract_muldiv_1): Likewise.
      	(maybe_canonicalize_comparison): Likewise.
      	(fold_comparison): Likewise.
      	(fold_binary): Likewise.
      	(tree_expr_nonnegative_p): Likewise.
      	(tree_expr_nonzero_p): Likewise.
      	* tree-vrp.c (compare_values): Likewise.
      	(extract_range_from_binary_expr): Likewise.
      	(extract_range_from_unary_expr): Likewise.
      	* tree-ssa-loop-niter.c (infer_loop_bounds_from_signedness):
      	Likewise.
      	(nowrap_type_p): Likewise.
      	* tree-scalar-evolution.c (simple_iv): Likewise.
      	* fold-const.c (negate_expr_p): Use TYPE_OVERFLOW_WRAPS.
      	(build_range_check): Likewise.
      	(extract_muldiv_1): Likewise.
      	(fold_comparison): Likewise.
      	* tree-vrp.c (vrp_int_const_binop): Likewise.
      	(extract_range_from_unary_expr): Likewise.
      	* convert.c (convert_to_integer): Likewise.
      	* fold-const.c (fold_negate_expr): Use TYPE_OVERFLOW_TRAPS.
      	(fold_comparison): Likewise.
      	(fold_binary): Likewise.
      	* optabs.c (optab_for_tree_code): Likewise.
      	* tree-vectorizer.c (vect_is_simple_reduction): Likewise.
      	* simplify-rtx.c (simplify_const_relational_operation): Check
      	flag_strict_overflow and flag_trapv.
      	(simplify_const_relational_operation): Likewise.
      	* doc/invoke.texi (Option Summary): Mention -fstrict-overflow.
      	(Optimize Options): Add -fstrict-overflow to -O2 list.  Document
      	-fstrict-overflow.
      testsuite/:
      	* gcc.dg/strict-overflow-1.c: New test.
      	* gcc.dg/no-strict-overflow-1.c: New test.
      	* gcc.dg/strict-overflow-2.c: New test.
      	* gcc.dg/no-strict-overflow-2.c: New test.
      	* gcc.dg/strict-overflow-3.c: New test.
      	* gcc.dg/no-strict-overflow-3.c: New test.
      	* gcc.dg/strict-overflow-4.c: New test.
      	* gcc.dg/no-strict-overflow-4.c: New test.
      	* gcc.dg/fold-mod-1.c: Add -fstrict-overflow option.
      	* gcc.dg/pr15784-1.c: Likewise.
      	* gcc.dg/pr20922-1.c: Likewise.
      	* gcc.dg/pr20922-3.c: Likewise.
      	* gcc.dg/pr20922-4.c: Likewise.
      	* gcc.dg/pr20922-6.c: Likewise.
      	* gcc.dg/compare-4.c: Likewise.
      	* gcc.dg/torture/pr26898-1.c: Likewise.
      	* gcc.dg/tree-ssa/divide-1.c: Likewise.
      	* gcc.dg/tree-ssa/divide-2.c: Likewise.
      	* gcc.dg/tree-ssa/divide-3.c: Likewise.
      	* gcc.dg/tree-ssa/divide-4.c: Likewise.
      	* gcc.dg/tree-ssa/pr14490-1.c: Likewise.
      	* gcc.dg/tree-ssa/pr14490-3.c: Likewise.
      	* gcc.dg/tree-ssa/pr21082.c: Likewise.
      	* gcc.dg/tree-ssa/pr26899.c: Likewise.
      	* g++.dg/tree-ssa/pr21082.C: Likewise.
      
      From-SVN: r121254
      Ian Lance Taylor committed
  24. 19 Jan, 2007 1 commit
    • common.opt (fsigned-zeros): New command line option. · db02da79
      	* common.opt (fsigned-zeros): New command line option.
      	* flags.h (HONOR_SIGNED_ZEROS): Control via flag_signed_zeros instead
      	of flag_unsafe_math_optimizations.
      	* opts.c (set_fast_math_flags): The -ffast-math command line option
      	implies -fno-signed-zeros.
      	(fast_math_flags_set_p): Likewise.
      
      	* doc/invoke.texi: Document new -fno-signed-zeros option, and update
      	the documentation of -ffast-math appropriately.  Wrap long lines.
      
      	* gcc.dg/pr30172-1.c: Specify the -fno-signed-zeros command line
      	option instead of -funsafe-math-optimizations.
      
      From-SVN: r120978
      Roger Sayle committed
  25. 23 Sep, 2006 1 commit
  26. 30 Jun, 2006 1 commit
    • re PR c++/26905 (default-visibility class symbol improperly resolved as hidden-visibility) · b9e75696
              PR c++/26905
              PR c++/26612
              PR c++/27000
              PR c++/26984
              PR c++/19134
              * tree.c (build_decl_stat): Don't hande #pragma visibility here.
              * c-common.c (c_determine_visibility): Handle it here.
              * c-decl.c (finish_decl): Call c_determine_visibility for
              functions, too.
              * flags.h (enum symbol_visibility): Sort from most to least visibility.
              * tree.h: Likewise.
              * varasm.c (default_assemble_visibility): Likewise.
              * c-common.c (handle_visibility_attribute): Complain about trying
              to give visibility to an already defined class, or trying to change
              declared visibility. Always attach the attribute.
              * cp/decl2.c (determine_visibility): Overhaul.
              (determine_visibility_from_class): Likewise.
              (min_vis_r, type_visibility, constrain_visibility): New fns.
              (constrain_visibility_for_template): Likewise.
              (constrain_class_visibility): Likewise.
              * cp/decl.c (cp_finish_decl): Call determine_visibility for function
              decls, too.
              * cp/name-lookup.c (pushtag): Call determine_visibility.
              * cp/decl.c (duplicate_decls): Don't copy visibility from template to
              specialization.
              * cp/pt.c (check_explicit_specialization): Likewise.
              (lookup_template_class, tsubst_decl): Call determine_visibility.
              * cp/class.c (finish_struct_1): Call constrain_class_visibility.
      
              PR c++/26905
              PR c++/21675
              PR c++/17470
              * cp/parser.c (cp_parser_explicit_instantiation): Pass the attributes
              to grokdeclarator.
              (cp_parser_type_specifier): Allow 'enum __attribute ((...)) E'.
              (cp_parser_enum_specifier): Likewise.
              (cp_parser_elaborated_type_specifier): Apply attributes if this
              declares only the class.
              (cp_parser_class_specifier): Apply leading attributes immediately.
              * cp/semantics.c (begin_class_definition): Add attributes parameter,
              apply them to the type.
              * attribs.c (decl_attributes): Ignore type-in-place attributes
              once the type has been defined.
      
              PR c++/21581
              PR c++/25915
              * cp/tree.c (decl_anon_ns_mem_p): New function.
              * cp/cp-tree.h: Declare it.
              * cp/decl2.c (determine_visibility): Make anonymous namespace
              members static.
              (min_vis_r, constrain_visibility): Likewise.
              * cp/rtti.c (create_pseudo_type_info): Set TREE_PUBLIC on
              pseudo-types.
              * cp/decl.c (cxx_init_decl_processing): Set TREE_PUBLIC on
              global_namespace.
              * cp/name-lookup.c (push_namespace_with_attribs): Don't set TREE_PUBLIC
              on anonymous namespaces.
      
      From-SVN: r115086
      Jason Merrill committed
  27. 29 Jun, 2005 1 commit
    • c-common.c (flag_next_runtime): Move... · 43b3a5b1
      [gcc/ChangeLog]
      2006-06-28  Ziemowit Laski  <zlaski@apple.com>
      
             * c-common.c (flag_next_runtime): Move...
             * toplev.c (flag_next_runtime): ... here.
             * c-common.h (flag_next_runtime): Move...
             * flags.h (flag_next_runtime): ... here.
             * config/darwin-c.c: Include flags.h.
             * config/t-darwin (darwin-c.o): Depend on flags.h.
      
      From-SVN: r101415
      Ziemowit Laski committed
  28. 25 Jun, 2005 1 commit
  29. 25 May, 2005 1 commit
    • c-common.c (unsigned_conversion_warning): Move warning control from if() to warning(OPT_*). · 44c21c7f
      * c-common.c (unsigned_conversion_warning): Move warning control
      from if() to warning(OPT_*).
      (c_common_truthvalue_conversion): Likewise.
      (c_do_switch_warnings): Likewise.
      * c-decl.c (diagnose_mismatched_decls): Likewise.
      (diagnose_mismatched_decls): Likewise.
      (define_label): Likewise.
      (grokdeclarator): Likewise.
      * c-format.c (check_format_info): Likewise.
      * c-lex.c (interpret_integer): Likwise.
      (lex_string): Likewise.
      * c-opts.c (c_common_post_options): Likewise.
      * c-parser.c (c_parser_unary_expression): Likewise.
      * c-pragma.c (handle_pragma_redefine_extname): Likewise.
      (handle_pragma_extern_prefix): Likewise.
      * c-typeck.c (build_binary_op): Likewise.
      * gcse.c (is_too_expensive): Likewise.
      * opts.c (decode_options): Likewise.
      * stor-layout.c (place_field): Likewise.
      * tree-cfg.c (remove_bb): Likewise.
      
      * c.opt (-Wreturn-type): Add Var(warn_return_type).
      * flags.h (warn_return_type): Remove.
      * toplev.c (warn_return_type): Likewise.
      
      From-SVN: r100135
      DJ Delorie committed
  30. 13 Feb, 2005 1 commit
  31. 12 Feb, 2005 1 commit
    • tree-complex.c (expand_complex_libcall): New. · 7e7e470f
              * tree-complex.c (expand_complex_libcall): New.
              (expand_complex_multiplication): Use it for c99 compliance.
              (expand_complex_division): Likewise.
              * fold-const.c (fold_complex_add, fold_complex_mult): New.
              (fold): Call them.
              * builtins.c (built_in_names): Remove const.
              * tree.c (build_common_builtin_nodes): Build complex arithmetic
              builtins.
              * tree.h (BUILT_IN_COMPLEX_MUL_MIN, BUILT_IN_COMPLEX_MUL_MAX): New.
              (BUILT_IN_COMPLEX_DIV_MIN, BUILT_IN_COMPLEX_DIV_MAX): New.
              (built_in_names): Remove const.
              * c-common.c (c_common_type_for_mode): Handle complex modes.
              * flags.h, toplev.c (flag_complex_method): Rename from
              flag_complex_divide_method.
              * libgcc2.c (__divsc3, __divdc3, __divxc3, __divtc3,
              __mulsc3, __muldc3, __mulxc3, __multc3): New.
              * libgcc2.h: Declare them.
              * libgcc-std.ver: Export them.
              * mklibgcc.in (lib2funcs): Build them.
      
      From-SVN: r94909
      Richard Henderson committed
  32. 28 Sep, 2004 1 commit
  33. 09 Sep, 2004 1 commit
    • Makefile.def: Remove libbanshee. · 0a050485
      Toplevel:
      
      2004-09-09  Daniel Berlin  <dberlin@dberlin.org>
      
      	* Makefile.def: Remove libbanshee.
      	* Makefile.tpl: Ditto.
      	* configure.in: Ditto.
      	* Makefile.in: Regen.
      	* configure: Ditto.
      
      gcc/
      
      2004-09-09  Daniel Berlin  <dberlin@dberlin.org>
      
      	* Makefile.in: Remove libbanshee, tree-alias-*.
      	Remove tree-alias-common.h dependencies.
      	* common.opt: Remove -ftree-points-to.
      	* configure.ac: Remove libbanshee.
      	* flags.h: Remove pta_type, flag_tree_points_to.
      	* gengtype.c (open_base_files): Remove tree-alias-type.h.
      	* opts.c (OPT_ftree_points_to): Remove.
      	* toplev.c: Remove tree-alias-common.h, flag_tree_points_to.
      	* tree-dfa.c: Remove tree-alias-common.h
      	* tree-into-ssa.c: Ditto.
      	* tree-outof-ssa.c: Ditto.
      	* tree-ssa-copyrename.c: Ditto.
      	* tree-ssa-live.c: Ditto.
      	* tree-optimize.c: Ditto.
      	* tree-ssa.c: Ditto.
      	Remove pass_build_pta, pass_del_pta.
      	* tree-pass.h: Ditto.
      	* tree-ssa-alias.c: Remove tree-alias-common.h.
      	(struct alias_stats_d):	Remove pta_queries, pta_resolved.
      	(pass_may_alias): Remove PROP_pta requirement.
      	(may_alias_p): Remove pta_queries, pta_resolved, use of andersens.
      	(get_tmt_for): Ditto.
      	(dump_alias_stats): Ditto.
      	* doc/passes.texi: Remove blurb about points-to analysis.
      	* fortran/Make-lang.in: Remove tree-alias-*.o.
      
      From-SVN: r87253
      Daniel Berlin committed
  34. 01 Sep, 2004 1 commit
    • Makefile.in (rtl-profile.o, [...]): Add GCC_H dependency. · 6d9901e7
      	* Makefile.in (rtl-profile.o, value-prof.o): Add GCC_H dependency.
      	* common.opt (fspeculative-prefetching): New.
      	* flags.h (flag_speculative_prefetching_set): Declare.
      	* gcov-io.c (gcov_write_counter, gcov_read_counter): Allow negative
      	values.
      	* opts.c (flag_sepculative_prefetching_set): New variable.
      	(common_handle_option): Handle -fspeculative-prefetching.
      	* passes.c (rest_of_compilation): Ditto.
      	* profile.c (instrument_values, compute_value_histograms, branch_prob):
      	Use vectors instead of arrays.
      	* toplev.c (process_options): Handle -fspeculative-prefetching.
      	* rtl-profile.c: Include ggc.h.
      	(rtl_gen_interval_profiler, rtl_gen_pow2_profiler,
      	rtl_gen_one_value_profiler_no_edge_manipulation,
      	rtl_gen_one_value_profiler, rtl_gen_const_delta_profiler): Type of
      	argument changed.
      	* tree-profile.c (tree_gen_interval_profiler, tree_gen_pow2_profiler,
      	tree_gen_one_value_profiler, tree_gen_const_delta_profiler): Type of
      	argument changed.
      	* value-prof.c: Include ggc.h.
      	(NOPREFETCH_RANGE_MIN, NOPREFETCH_RANGE_MAX): New
      	macros.
      	(insn_prefetch_values_to_profile, find_mem_reference_1,
      	find_mem_reference_2, find_mem_reference, gen_speculative_prefetch,
      	speculative_prefetching_transform): New.
      	(value_profile_transformations): Call speculative_prefetching_transform.
      	(insn_values_to_profile): Call insn_prefetch_values_to_profile.
      	(insn_divmod_values_to_profile, rtl_find_values_to_profile,
      	tree_find_values_to_profile, find_values to profile): Use vectors
      	instead of arrays.
      	(free_profiled_values): Removed.
      	* value-prof.h (struct histogram_value): Renamed to
      	struct histogram_value_t.
      	(histogram_value, histogram_values): New types.
      	(find_values_to_profile): Declaration changed.
      	(free_profiled_values): Removed.
      	(struct profile_hooks): Type of argument of the hooks changed to
      	histogram_value.
      	* doc/invoke.texi (-fspeculative-prefetching): Document.
      
      From-SVN: r86930
      Zdenek Dvorak committed
  35. 25 Aug, 2004 1 commit
    • flags.h (enum debug_info_type): Remove DWARF_DEBUG. · f8ca7e49
      	* flags.h (enum debug_info_type): Remove DWARF_DEBUG.
      	* defaults.h (PREFERRED_DEBUGGING_TYPE): Remove check for
      	DWARF_DEBUGGING_INFO from choice-of-definition chain;
      	restructure using C89 features (#elif, #error).
      	* c-lex.c, final.c, opts.c, config/cris/cris.c, config/frv/frv.c
      	* config/sh/sh.h: Remove references to DWARF_DEBUG.
      	* doc/invoke.texi: Remove references to DWARF version 1;
      	clarify why -gdwarf-2<n> doesn't work.
      cp:
      	* class.c, search.c: Remove references to DWARF_DEBUG.
      
      From-SVN: r86540
      Zack Weinberg committed
  36. 25 Jul, 2004 1 commit
    • re PR c++/9283 (__attribute__((visibility ("hidden"))) not supported for class/struct) · d7afec4b
      	PR c++/9283
      	PR c++/15000
      	* c-common.c (c_common_attribute_table): Allow
      	handle_visibility_attribute to be called for types.
      	(handle_visibility_attribute) When given a type, set the visibility
      	bits on the TYPE_NAME.  When given a decl, don't set no_add_attrs
      	so that we can check later whether the attribute was present. Added
      	warning if attribute applied to non class type.
      	* c-decl.c (diagnose_mismatched_decls): Updated rules for merging
      	decls and checking that they are consistent.
      	* common.opt: Added -fvisibility.
      	* c.opt, c-opts.c: Added -fvisibility-inlines-hidden.
      	* c-pragma.h, c-pragma.c: Added handle_pragma_visibility().
      	* flags.h, tree.h: Added assorted support defines for overall patch
      	* opts.c: Added parsing support for -fvisibility.
      	* tree.c (build_decl): Set visibility for all decls to be whatever
      	is in force at that time.
      	* varasm.c (default_binds_local_p_1): Reworked logic determining
      	when to make a symbol locally bound.
      	* doc/invoke.texi: Added documentation for -fvisibility and
      	-fvisibility-inlines-hidden.
      
      	PR c++/15000
      	PR c++/9283
      	* class.c (check_field_decls): Apply hidden visibility if
      	-fvisibility-inlines-hidden and inlined unless otherwise specified
      	(build_vtable): Set vtable visibility to class visibility.
      	(check_field_decls): Default static member visibility to class
      	visibility.
      	(check_methods): Default method visibility to class visibility.
      	* cp-tree.h: Added CLASSTYPE_VISIBILITY and
      	CLASSTYPE_VISIBILITY_SPECIFIED macro.
      	* decl.c (duplicate_decls): New logic for merging definition decls
      	with declaration decls. Added ignore & warning when non default
      	applied to global operator new or delete.
      	* method.c, optimize.c, rtti.c: Added setting of VISIBILITY_SPECIFIED
      	wherever VISIBILITY was changed
      	* rtti.c (get_tinfo_decl): Set typeinfo visibility to class
      	visibility.
      	(tinfo_base_init): Set typeinfo name visibility to class visibility.
      
      	PR c++/9283
      	PR c++/15000
      	* gcc.dg/visibility-9.c, gcc.dg/visibility-a.c: New tests.
      	* g++.dg/ext/visibility/: New directory.
      	* g++.dg/ext/visibility-1.C, g++.dg/ext/visibility-2.C
      	g++.dg/ext/visibility-3.C, g++.dg/ext/visibility-4.C,
      	g++.dg/ext/visibility-5.C, g++.dg/ext/visibility-6.C,
      	g++.dg/ext/visibility-7.C: Move to g++.dg/ext/visibility/.
      	* g++.dg/ext/visibility/fvisibility.C,
      	g++.dg/ext/visibility/fvisibility-inlines-hidden.C,
      	g++.dg/ext/visibility/fvisibility-override1.C
      	g++.dg/ext/visibility/fvisibility-override2.C
      	g++.dg/ext/visibility/memfuncts.C
      	g++.dg/ext/visibility/noPLT.C
      	g++.dg/ext/visibility/pragma.C
      	g++.dg/ext/visibility/pragma-override1.C
      	g++.dg/ext/visibility/pragma-override2.C
      	g++.dg/ext/visibility/staticmemfuncts.C
      	g++.dg/ext/visibility/virtual.C: New tests.
      
      Co-Authored-By: Brian Ryner <bryner@brianryner.com>
      
      From-SVN: r85167
      Niall Douglas committed
  37. 10 Jul, 2004 1 commit
  38. 29 Jun, 2004 1 commit
    • common.opt (ftree-fre): New flag. · ff2ad0f7
      	* common.opt (ftree-fre): New flag.
      	* flags.h (flag_tree_fre): Declare.
      	* opts.c (decode_options): Set.
      	* timevar.def (TV_TREE_FRE): Define.
      	* tree-flow-inline.h (may_propagate_copy): Re-arrange for
      	readability.  Handle destinations that are not SSA_NAMEs.
      	* tree-flow.h (struct ptr_info_def): Move from tree.h
      	(cprop_into_stmt, cprop_into_successor_phis): Remove.
      	(vn_compute, vn_lookup_or_add, vn_add, vn_lookup): Add
      	vuse_optype parameter.
      	* tree-pass.h (pass_fre): Declare.
      	* tree-ssa-copy.c (cprop_operand): Move to tree-ssa-dom.c
      	(cprop_into_stmt): Likewise.
      	(cprop_into_successor_phis): Likewise.
      	* tree-ssa-dom.c (eliminate_redundant_computations): Fix
      	argument ordering in call to may_propagate_copy.
      	* tree-ssa-pre.c (is_undefined_value): Assume hard registers
      	to be always defined.
      	(add_to_sets): New local function.
      	(create_value_expr_from): New local function.
      	(compute_avail): Call them.
      	(eliminate): Don't ignore statements with virtual operands.
      	(init_pre): New local function.
      	(fini_pre): New local function.
      	(execute_pre): Call them.
      	Add argument DO_FRE.  Don't do insertion if DO_FRE is true.
      	(do_pre): New function.
      	(do_fre): New function.
      	(gate_fre): New function.
      	(pass_fre): Declare.
      	* tree-ssa.c (init_tree_ssa): Don't call vn_init.
      	(delete_tree_ssa): Don't call vn_delete.
      	* tree-vn.c (val_expr_pair_d): Add documentation.
      	(vn_compute): Add VUSES argument to incorporate in computing
      	hash values.  Update all callers.
      	(expressions_equal_p): Call operand_equal_p with
      	OEP_PURE_SAME.
      	(vn_add): Add VUSES argument.  Update all callers.
      	(vn_lookup): Likewise.
      	(vn_lookup_or_add): Likewise.
      	* doc/invoke.texi: Document -ftree-fre and -fdump-tree-fre.
      
      From-SVN: r83837
      Diego Novillo committed
  39. 14 Jun, 2004 1 commit
    • Makefile.in (FLAGS_H): New. · 50431bc4
      	* Makefile.in (FLAGS_H): New.
      	(flags.h): Replace by FLAGS_H.
      	* c.opt: Document Var, VarExists, Init and Report attributes.
      	* common.opt: Fill the values of the attributes.
      	* diagnostic.c (flag_fatal_errors): Do not define.
      	* except.c (flag_non_call_exceptions): Do not define.
      	* flags.h: Include options.h.  Remove declarations conflicting with
      	the automatically defined ones.
      	* opts.c: Remove automatically defined variables.
      	(handle_option): Perform default initialization.
      	(common_handle_option): Do not handle options covered by the
      	default initialization.
      	* opts.h (struct cl_option): Add flag_var, has_set_value and set_value
      	fields.
      	(CL_REPORT): New.
      	* opts.sh: Generate variable declarations, handle CL_REPORT.
      	* toplev.c: Remove automatically defined variables.
      	(f_options): Removed.
      	(print_switch_values): Use cl_options instead of f_options.
      	* toplev.h (version_flag): Declaration removed.
      
      From-SVN: r83105
      Zdenek Dvorak committed
  40. 30 May, 2004 1 commit
    • bb-reorder.c, [...]: Fix comment formatting. · 9cf737f8
      	* bb-reorder.c, builtins.c, c-common.c, c-gimplify.c,
      	c-incpath.c, cgraphunit.c, ddg.c, defaults.h, dwarf2out.c,
      	expmed.c, flags.h, gcc.c, gensupport.c, gimplify.c, global.c,
      	passes.c, reg-stack.c, target.h, toplev.c, tree-alias-ander.c,
      	tree-alias-common.c, tree-cfg.c, tree-complex.c, tree-dfa.c,
      	tree-eh.c, tree-mudflap.c, tree-mudflap.h, tree-outof-ssa.c,
      	tree-phinodes.c, tree-pretty-print.c, tree-ssa-alias.c,
      	tree-ssa-ccp.c, tree-ssa-live.c, tree-ssa-live.h,
      	tree-ssa-pre.c, tree.h, value-prof.h, varasm.c: Fix comment
      	formatting.
      
      From-SVN: r82463
      Kazu Hirata committed