1. 01 Sep, 2008 8 commits
    • arm.c (arm_no_early_mul_dep): Handle multiply-subtract. · 756f763b
      2008-09-01  Paul Brook  <paul@codesourcery.com>
      
      	gcc/
      	* config/arm/arm.c (arm_no_early_mul_dep): Handle multiply-subtract.
      
      From-SVN: r139860
      Paul Brook committed
    • re PR tree-optimization/36449 (Incorrect code generated for access to a large struct) · 840018d9
      	PR middle-end/36449
      	* g++.dg/opt/pr36449.C: New test.
      
      From-SVN: r139859
      Jakub Jelinek committed
    • gfc-internals.texi (F2003 OOP), [...]): New chapter and section to document the… · a64a8f2f
      gfc-internals.texi (F2003 OOP), [...]): New chapter and section to document the internals of type-bound procedures.
      
      2008-09-01  Daniel Kraft  <d@domob.eu>
      
      	* gfc-internals.texi (F2003 OOP), (Type-bound Procedures): New chapter
      	and section to document the internals of type-bound procedures.
      	(gfc_expr): Document EXPR_COMPCALL.
      	* gfortran.h (struct gfc_expr): Remove unused `derived' from compcall.
      	* dump-parse-tree.c (show_compcall): New method.
      	(show_expr): Call it for EXPR_COMPCALL.
      	(show_typebound), (show_f2k_derived): New methods.
      	(show_symbol): Call show_f2k_derived.
      	(show_code_node): Handle EXEC_COMPCALL.
      	* primary.c (gfc_match_varspec): Don't initialize removed `derived' in
      	primary->value.compcall.
      
      From-SVN: r139857
      Daniel Kraft committed
    • expr.c (MOVE_BY_PIECES_P, [...]): Pass speed operand. · e04ad03d
      
      	* expr.c (MOVE_BY_PIECES_P, CLEAR_BY_PIECES_P, SET_BY_PIECES_P): Pass speed operand.
      	* expr.h (MOVE_RATIO, CLEAR_RATIO, SET_RATIO): Update.
      	* gimplify.c (gimplify_init_constructor): Add speed operand.
      	* tree-sra.c (decide_block_copy): Likewise.
      	* tree-inline.c (estimate_move_cost): Likewise.
      	* config/alpha/alpha.h (MOVE_RATIO): Update.
      	* config/frv/frv.c (MOVE_RATIO): Update.
      	* config/spu/spu.h (MOVE_RATIO): Update.
      	* config/sparc/sparc.h (MOVE_RATIO): Update.
      	* config/i386/i386.h (MOVE_RATIO, CLEAR_RATIO): Update.
      	* config/m68hc11/m68hc11.h (MOVE_RATIO): Update.
      	* config/cris/cris.h (MOVE_RATIO): Update.
      	* config/mn10300/mn10300.h (MOVE_RATIO): Update.
      	* config/arm/arm.h (MOVE_RATIO): Update.
      	* config/pa/pa.md: Update uses of MOVE_RATIO
      	* config/pa/pa.h (MOVE_RATIO): Update.
      	* config/mips/mips.h (MOVE_RATIO, MOVE_BY_PIECES, CLEAR_RATIO, SET_RATIO): Update.
      	* config/h8300/h8300.h (MOVE_RATIO): Update.
      	* config/v850/v850.h (MOVE_RATIO): Update.
      	* config/bfin/bfin.h (MOVE_RATIO): Update.
      
      From-SVN: r139855
      Jan Hubicka committed
    • 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
    • Implement late-specified return type using 'auto'. · f57ca1ea
              * cp-tree.h (struct cp_declarator): Add late_return_type field to
              function declarator.
              * parser.c (cp_parser_late_return_type_opt): New fn.
              (cp_parser_direct_declarator): Use it.
              (make_call_declarator): Put it in the declarator.
              * decl.c (grokdeclarator): Splice in late-specified return type.
              * pt.c (splice_late_return_type): New fn.
      
      From-SVN: r139848
      Jason Merrill committed
    • Daily bump. · 36998673
      From-SVN: r139846
      GCC Administrator committed
  2. 31 Aug, 2008 24 commits
    • frv.c (frv_rtx_costs): Update forward declaration. · 899cc0f4
      
      
      	* frv.c (frv_rtx_costs): Update forward declaration.
      	* spu.c (spu_rtx_costs): Likewise.
      	* pdp11.c: Include df.h
      	(pdp11_output_function_epilogue): Use df_set_regs_ever_live.
      	* m68hc11.c (m68hc11_gen_highpart): Fix call of gen_rtx_SUBREG.
      	(m68hc11_rtx_costs_1): Fix call of rtx_cost.
      	* iq2000.c (iq2000_address_cost): Add speed argument.
      	(iq2000_rtx_costs): Likewise.
      	* mn10300.c (mn10300_address_cost_1): Remove speed argument;
      	update call of mn10300_address_cost.
      	* mcore.c: Include df.h
      	(mcore_rtx_costs): Update prototype.
      	* score3.c: Include df.h
      	(score3_rtx_costs): Remove speed argument.
      	* score7.c: Include df.h
      	(score7_address_cost): Remove speed argument.
      	* score-protos.h (score_address_cost): Update prototype.
      	* score.c: Include df.h
      	(score_rtx_costs): Update call of costs functions.
      	* v850.c (v850_rtx_costs): Add bool argument.
      
      From-SVN: r139843
      Jan Hubicka committed
    • gthr-win32.h (__gthread_setspecific): Use CONST_CAST2. · 9e2af376
      2008-08-31  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
      
      	* gcc/gthr-win32.h (__gthread_setspecific): Use CONST_CAST2.
      
      From-SVN: r139839
      Aaron W. LaFramboise committed
    • Makefile.am (libgomp_la_LDFLAGS): Add -no-undefined. · 6528b88d
      2008-08-31  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
      
      	* Makefile.am (libgomp_la_LDFLAGS): Add -no-undefined.
      	* Makefile.in: Regenerated.
      	* testsuite/Makefile.in: Regenerated.
      
      From-SVN: r139838
      Aaron W. LaFramboise committed
    • configure.ac (RPATH_ENVVAR): Use PATH on Windows. · d89f0ad6
      2008-08-31  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>
      
      	<toplevel>
      	* configure.ac (RPATH_ENVVAR): Use PATH on Windows.
      	(GCC_SHLIB_SUBDIR): New.
      	* Makefile.tpl (HOST_LIB_PATH_gcc): Use GCC_SHLIB_SUBDIR.
      	* configure: Regenerate.
      	* Makefile.in: Regenerate.
      
      	<gcc>
      	* mkmap-flat.awk: Add option pe_dll.
      	* config/i386/t-cygming (SHLIB_LINK): Support building libgcc_s.
      	* gcc/config/i386/t-cygwin (SHLIB_LC): Add.
      	* gcc/config/i386/t-mingw32 (SHLIB_LC): Add.
      	* config/i386/mingw32.h (SHARED_LIBGCC_UNDEFS_SPEC): New.
      	(SUBTARGET_EXTRA_SPECS): Use SHARED_LIBGCC_UNDEFS_SPEC.
      	(LINK_SPEC): Support libgcc_s.
      	(LIBGCC_SPEC): Support libgcc_s.
      	(LIBGCC_SONAME): New.
      
      	<libstdc++-v3>
      	* acinclude.m4 <enable_symvers>: Don't use symvers on Windows.
      	* configure: Regenerated.
      	* Makefile.in: Regenerated.
      	* src/Makefile.in: Regenerated.
      	* doc/makefile.in: Regenerated.
      	* po/Makefile.in: Regenerated.
      	* libmath/Makefile.in: Regenerated.
      	* include/Makefile.in: Regenerated.
      	* libsupc++/Makefile.in: Regenerated.
      	* testsuite/makefile.in: Regenerated.
      
      From-SVN: r139837
      Aaron W. LaFramboise committed
    • predict.c (maybe_hot_bb_p, [...]): Previous commit mistakely had old version of patch. · 3e196fa9
      	* predict.c (maybe_hot_bb_p, maybe_hot_edge_p): Previous commit
      	mistakely had old version of patch.
      
      From-SVN: r139836
      Jan Hubicka committed
    • ipa-cp.c (ipcp_need_original_clone_p): Remove. · a065d52e
      	* ipa-cp.c (ipcp_need_original_clone_p): Remove.
      	(ipcp_estimate_growth): New.
      	(ipcp_insert_stage): Use ipcp_estimate_growth.
      	* profile.c (branch_prob): When reading failed, do not consider
      	profile as read.
      
      From-SVN: r139835
      Jan Hubicka committed
    • tree-ssa-loop-unswitch.c (tree_unswitch_single_loop): Check that loop is optimized for speed. · 079990a2
      
      	* tree-ssa-loop-unswitch.c (tree_unswitch_single_loop): Check that
      	loop is optimized for speed.
      
      From-SVN: r139834
      Jan Hubicka committed
    • re PR c/37271 (gcc.dg/pr37186.c doesn't work) · f885a45b
      2008-08-31  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c/37271
      	* gcc.dg/pr37186.c: Add dg-message command for line 5.
      
      From-SVN: r139833
      Paolo Carlini committed
    • trans-expr.c (gfc_trans_string_copy): Use the correct types to compute slen and dlen. · eb829078
      2008-08-31  Richard Guenther  <rguenther@suse.de>
      
      	* trans-expr.c (gfc_trans_string_copy): Use the correct types
      	to compute slen and dlen.
      
      From-SVN: r139832
      Richard Guenther committed
    • re PR middle-end/37289 (ICE after non-trivial conversion at assignment) · 2b2587f5
      2008-08-31  Richard Guenther  <rguenther@suse.de>
      
      	PR middle-end/37289
      	* fold-const.c (fold_binary): Retain conversions in folding
      	~A + 1 to -A.
      
      	* gcc.dg/pr37289.c: New testcase.
      
      From-SVN: r139831
      Richard Guenther committed
    • postreload-gcse.c (eliminate_partially_redundant_loads): Use optimize_bb_for_size_p. · fb2fed03
      	* postreload-gcse.c (eliminate_partially_redundant_loads): Use optimize_bb_for_size_p.
      	* predict.c (maybe_hot_frequency_p): Make inline.
      	(maybe_hot_count_p): Break out from ...
      	(maybe_hot_bb_p): ... this one.
      	(maybe_hot_edge_p): Simplify.
      	* basic-block.h (probably_cold_bb_p): Remove.
      
      From-SVN: r139830
      Jan Hubicka committed
    • re PR target/37168 (ICE: in final_scan_insn, at final.c:2615 (altivec)) · 847535b6
      	PR target/37168
      	* config/rs6000/rs6000-protos.h (const_vector_elt_as_int): Add
      	prototype.
      	* config/rs6000/rs6000.c (const_vector_elt_as_int): No longer static.
      	* config/rs6000/altivec.md (easy_vector_constant_add_self splitter):
      	Also split V4SFmode.
      	* config/rs6000/predicates.md (easy_vector_constant_add_self): Handle
      	vector float modes.
      
      	* gcc.target/powerpc/pr37168.c: New test.
      
      From-SVN: r139828
      Jakub Jelinek committed
    • cold-attribute-1.c: New testcase. · 277b4867
      
      	* gcc.target/i386/cold-attribute-1.c: New testcase.
      	* gcc.target/i386/cold-attribute-2.c: New testcase.
      	* gcc.target/i386/cold-attribute-3.c: New testcase.
      	* gcc.target/i386/cold-attribute-4.c: New testcase.
      	* predict.c (PROB_VERY_LIKELY): Make small enough so things
      	become cold.
      	* predict.def (PRED_NORETURN_CALL, PRED_COLD_CALL): Use it.
      
      From-SVN: r139827
      Jan Hubicka committed
    • re PR debug/37287 (ICE (segfault) with new debugging patch) · 8518c095
      	PR debug/37287
      	* dwarf2out.c (gen_namespace_die): For DECL_EXTERNAL modules don't
      	add source coords.
      
      	* gfortran.dg/pr37287-1.f90: New test.
      	* gfortran.dg/pr37287-2.F90: New test.
      
      From-SVN: r139826
      Jakub Jelinek committed
    • dwarf2out.c (native_encode_initializer): Subtract min_index for non-range array index. · 08ab58b3
      	* dwarf2out.c (native_encode_initializer): Subtract min_index for
      	non-range array index.  Handle VIEW_CONVERT_EXPR and NON_LVALUE_EXPR.
      
      From-SVN: r139825
      Jakub Jelinek committed
    • sparc.h (BRANCH_COST): Fix macro definition. · 1f494b6d
      
      	* sparc.h (BRANCH_COST): Fix macro definition.
      	* avr.c (avr_operand_rtx_cost): Add speed argument.
      	(avr_rtx_costs): Update calls of avr_operand_rtx_cost.
      
      From-SVN: r139824
      Jan Hubicka committed
    • tree-cfg.c (verify_types_in_gimple_assign): Dump mismatched types instead of operands. · f5e85907
      2008-08-31  Richard Guenther  <rguenther@suse.de>
      
      	* tree-cfg.c (verify_types_in_gimple_assign): Dump mismatched
      	types instead of operands.  Re-instantiate verifying of
      	binary expression operands.
      
      From-SVN: r139823
      Richard Guenther committed
    • gfortran.h (enum gfc_statement): New entry `ST_GENERIC'. · e157f736
      2008-08-31  Daniel Kraft  <d@domob.eu>
      
      	* gfortran.h (enum gfc_statement): New entry `ST_GENERIC'.
      	(struct gfc_tbp_generic): New type.
      	(struct gfc_typebound_proc): Removed `target' and added union with
      	`specific' and `generic' members; new members `overridden',
      	`subroutine', `function' and `is_generic'.
      	(struct gfc_expr): New members `derived' and `name' in compcall union
      	member and changed type of `tbp' to gfc_typebound_proc.
      	(gfc_compare_interfaces), (gfc_compare_actual_formal): Made public.
      	* match.h (gfc_typebound_default_access): New global.
      	(gfc_match_generic): New method.
      	* decl.c (gfc_match_generic): New method.
      	(match_binding_attributes): New argument `generic' and handle it.
      	(match_procedure_in_type): Mark matched binding as non-generic.
      	* interface.c (gfc_compare_interfaces): Made public.
      	(gfc_compare_actual_formal): Ditto.
      	(check_interface_1), (compare_parameter): Use new public names.
      	(gfc_procedure_use), (gfc_search_interface): Ditto.
      	* match.c (match_typebound_call): Set base-symbol referenced.
      	* module.c (binding_generic): New global array.
      	(current_f2k_derived): New global.
      	(mio_typebound_proc): Handle IO of GENERIC bindings.
      	(mio_f2k_derived): Record current f2k-namespace in current_f2k_derived.
      	* parse.c (decode_statement): Handle GENERIC statement.
      	(gfc_ascii_statement): Ditto.
      	(typebound_default_access), (set_typebound_default_access): Removed.
      	(gfc_typebound_default_access): New global.
      	(parse_derived_contains): New default-access implementation and handle
      	GENERIC statements encountered.
      	* primary.c (gfc_match_varspec): Adapted to new gfc_typebound_proc
      	structure and removed check for SUBROUTINE/FUNCTION from here.
      	* resolve.c (extract_compcall_passed_object): New method.
      	(update_compcall_arglist): Use it.
      	(resolve_typebound_static): Adapted to new gfc_typebound_proc structure.
      	(resolve_typebound_generic_call): New method.
      	(resolve_typebound_call): Check target is a SUBROUTINE and handle calls
      	to GENERIC bindings.
      	(resolve_compcall): Ditto (check for target being FUNCTION).
      	(check_typebound_override): Handle GENERIC bindings.
      	(check_generic_tbp_ambiguity), (resolve_typebound_generic): New methods.
      	(resolve_typebound_procedure): Handle GENERIC bindings and set new
      	attributes subroutine, function and overridden in gfc_typebound_proc.
      	(resolve_fl_derived): Ensure extended type is resolved before the
      	extending one is.
      	* st.c (gfc_free_statement): Fix bug with free'ing EXEC_COMPCALL's.
      	* symbol.c (gfc_find_typebound_proc): Adapt for GENERIC changes.
      
      2008-08-31  Daniel Kraft  <d@domob.eu>
      
      	* gfortran.dg/typebound_generic_1.f03: New test.
      	* gfortran.dg/typebound_generic_2.f03: New test.
      	* gfortran.dg/typebound_generic_3.f03: New test.
      
      From-SVN: r139822
      Daniel Kraft committed
    • fwprop.c (should_replace_address): Add speed attribute. · f40751dd
      
      	* fwprop.c (should_replace_address): Add speed attribute.
      	(PR_OPTIMIZE_FOR_SPEED): New flag.
      	(propagate_rtx_1): Use it.
      	(propagate_rtx): Set it.
      	(try_fwprop_subst): Update call of rtx_costs.
      	(forward_propagate_and_simplify): LIkewise.
      	* hooks.c (hook_int_rtx_bool_0): New
      	(hook_bool_rtx_int_int_intp_false): Replace by ...
      	(hook_bool_rtx_int_int_intp_bool_false): .. thisone.
      	* hooks.h (hook_int_rtx_bool_0): New
      	(hook_bool_rtx_int_int_intp_false): Replace by ...
      	(hook_bool_rtx_int_int_intp_bool_false): .. thisone.
      	* optabs.c (avoid_expensive_constant): UPdate call of rtx_cost.
      	(prepare_cmp_insn): UPdate call of rtx_cost.
      	* postreload.c (reload_cse_simplify_set): Update call of rtx_cost.
      	(reload_cse_simplify_operands): Update call of rtx_cost.
      	(reload_cse_move2add): call of rtx_cost.
      	* target.h (struct gcc_target): Update rtx_costs and address_costs.
      	* rtlanal.c (rtx_cost): Add speed argument.
      	(address_cost): Add speed argument
      	(default_address_cost): Likewise.
      	(insn_rtx_cost): Likewise.
      	* cfgloopanal.c (seq_cost): Add speed argument.
      	(target_reg_cost, target_spill_cost): Turn to array.
      	(init_set_costs): Update for speed.
      	(estimate_reg_pressure_cost): Add speed argument.
      	* auto-inc-dec.c (attempt_change): Update call of rtx_cost.
      	* dojump.c (prefer_and_bit_test): UPdate call of rtx_cost.
      	* tree-ssa-loop-ivopts.c (struct ivopts_data): New field speed.
      	(seq_cost): Add speed argument.
      	(computation_cost): Add speed arugment.
      	(add_cost, multiply_by_const, get_address_cost): add speed argument.
      	(force_expr_to_var_cost): Update for profile info.
      	(force_var_cost): Likewise.
      	(split_address_cost): Likewise.
      	(ptr_difference_cost): Likewise.
      	(difference_cost): Likewise.
      	(get_computation_cost_at): Likewise.
      	(determine_iv_cost): Likewise.
      	(ivopts_global_cost_for_size): Likewise.
      	(rewrite_use_address): Likewise.
      	(tree_ssa_iv_optimize_loop): Initialize speed field.
      	* cse.c (optimize_this_for_speed_p): New static var.
      	(notreg_cost): Update call of rtx_cost.
      	(cse_extended_basic_block): set optimize_this_for_speed_p.
      	* ifcvt.c (cheap_bb_rtx_cost_p): Update call of rtx_cost.
      	(noce_try_cmove_arith): Likewise.
      	(noce_try_sign_mask): LIkewise.
      	* expr.c (compress_float_constant): Update rtx_cost calls.
      	* tree-ssa-address.c (most_expensive_mult_to_index): Add speed argument.
      	(addr_to_parts): Likewise.
      	(create_mem_ref): Likewise.
      	* dse.c (find_shift_sequence): Add speed argument.
      	(replace_read): Update call.
      	* calls.c (precompute_register_parameters): Update call of rtx_cost.
      	* expmed.c (sdiv_pow2_cheap, smod_pow2_cheap, zero_cost, add_cost,
      	* neg_cost, shift_cost, shiftadd_cost,
      	shiftsub_cost, mul_cost, sdiv_cost, udiv_cost ,mul_widen_cost,
      	mul_highpart_cost): Increase dimension.
      	(init_expmed): Initialize for both size and speed.
      	(expand_shift): Use profile.
      	(synth_mult): Use profile.
      	(choose_mult_variant): Use profile.
      	(expand_mult): Use profile.
      	(expand_mult_highpart_optab): Use profile.
      	(expand_mult_highpart): Use profile.
      	(expand_smod_pow2): Use profile.
      	(expand_divmod): Use profile.
      	* simplify-rtx.c (simplify_binary_operation_1): Update call of rtx_cost.
      	* loop-invariant.c (create_new_invariant): Use profile.
      	(gain_for_invariant): Add speed parameter.
      	(best_gain_for_invariant): Likewise.
      	(find_invariants_to_move): Likewise.
      	(move_single_loop_invariants): Set it.
      	* target-def.h (TARGET_RTX_COSTS): Use hook.
      	* rtl.h (rtx_cost, address_cost, insn_rtx_cost): Update prototpe.
      	(optimize_insn_for_size_p, optimize_insn_for_speed_p): Declare.
      	* output.h (default_address_cost): Update prototype.
      	* combine.c (optimize_this_for_speed_p): New static var.
      	(combine_validate_cost): Update call of rtx_cost.
      	(combine_instructions): Set optimize_this_for_speed_p.
      	(expand_compound_operation): Update call of rtx_cost.
      	(make_extraction):Update call of rtx_cost.
      	(force_to_mode):Update call of rtx_cost.
      	(distribute_and_simplify_rtx):Update call of rtx_cost.
      	* cfgloop.h (target_reg_cost, target_spill_cost): Turn to array.
      	(estimate_reg_pressure_cost): Update prototype.
      	* tree-flow.h (multiply_by_cost, create_mem_ref): Update prototype.
      	* basic-block.h (optimize_insn_for_size_p, optimize_insn_for_speed_p):
      	Remove.
      	* config/alpha/alpha.c (alpha_rtx_costs): Update.
      	(alpha_rtx_costs): Update.
      	* config/frv/frv.c (frv_rtx_costs): Update.
      	* config/s390/s390.c (s390_rtx_costs): Update.
      	* config/m32c/m32c.c (m32c_memory_move_cost): Update.
      	(m32c_rtx_costs): Update.
      	* config/spu/spu.c (TARGET_ADDRESS_COST): Upate.
      	(spu_rtx_costs): Update.
      	* config/sparc/sparc.c (sparc_rtx_costs): Update.
      	* config/m32r/m32r.c (m32r_rtx_costs): Update.
      	* config/i386/i386.c (:ix86_address_cost): Update.
      	(ix86_rtx_costs): Update.
      	* config/sh/sh.c (sh_rtx_costs, sh_address_cost): Update.
      	* config/pdp11/pdp11.c (pdp11_rtx_costs): Update.
      	* config/avr/avr.c (avr_rtx_costs, avr_address_cost): Update.
      	* config/crx/crx.c (crx_address_cost): Update.
      	* config/xtensa/xtensa.c (xtensa_rtx_costs): Update.
      	* config/stormy16/stormy16.c
      	(xstormy16_address_cost, xstormy16_rtx_costs): Update.
      	* config/m68hc11/m68hc11.c
      	(m68hc11_address_cost, m68hc11_rtx_costs): Update.
      	* config/cris/cris.c (cris_rtx_costs, cris_address_cost): Update.
      	* config/iq2000/iq2000.c (iq2000_rtx_costs, iq2000_address_cost): Update.
      	* config/mn10300/mn10300.c (mn10300_address_cost, mn10300_rtx_costs): Update
      	* config/ia64/ia64.c (ia64_rtx_costs): Update.
      	* config/m68k/m68k.c (m68k_rtx_costs): Update.
      	* config/rs6000/rs6000.c (rs6000_rtx_costs): Update.
      	* config/arc/arc.c (arc_rtx_costs, arc_address_cost): Update.
      	* config/mcore/mcore.c (TARGET_ADDRESS_COST): Update.
      	(mcore_rtx_costs): update.
      	* config/score/score3.c (score3_rtx_costs): Update.
      	* config/score/score7.c (score7_rtx_costs): Update.
      	* config/score/score3.h (score3_rtx_costs):Update.
      	* config/score/score7.h (score7_rtx_costs): Update.
      	* config/score/score.c (score_rtx_costs): Update.
      	* config/arm/arm.c (arm_address_cost): Update.
      	(arm_rtx_costs_1): Update.
      	(arm_rtx_costs_1): Update.
      	(arm_size_rtx_costs): Update.
      	(arm_size_rtx_costs): Update.
      	(arm_size_rtx_costs): Update.
      	(arm_xscale_rtx_costs): Update.
      	(arm_thumb_address_cost): Update.
      	* config/pa/pa.c (hppa_address_cost): Update.
      	* config/mips/mips.c (mips_rtx_costs): Update.
      	* config/vax/vax.c (vax_address_cost): Update.
      	* config/h8300/h8300.c (h8300_shift_costs): Update.
      	(h8300_rtx_costs): Update.
      	* config/v850/v850.c (TARGET_ADDRESS_COST): Update.
      	(v850_rtx_costs): Update.
      	* config/mmix/mmix.c (mmix_rtx_costs, mmix_rtx_costs): Update.
      	* config/bfin/bfin.c
      	(bfin_address_cost): Update.
      	(bfin_rtx_costs): Update.
      	* stmt.c (lshift_cheap_p): Update.
      
      From-SVN: r139821
      Jan Hubicka committed
    • #define vector __attribute__((vector_size(16) )) struct struct1 { union { float a[3]... · 6aebac53
      #define vector __attribute__((vector_size(16) ))
      struct struct1  {
        union { float a[3]; }    vmx;
        struct struct2   {
          struct2(const struct2& r) {}
        } w;
      } __attribute__((aligned(16)));
      struct struct3  {
        vector float vmx;
        operator const struct1& () const{
          return *reinterpret_cast<const struct1*>(this);
        }
      };
      struct3 func3( struct3 V1);
      struct3 func2( void );
      void func1( )  {
        struct1 vVec = func2() ;
        func3 ( (struct3&)vVec );
      }
      
      From-SVN: r139820
      Andrew Pinski committed
    • Daily bump. · 617c394a
      From-SVN: r139817
      GCC Administrator committed
    • re PR fortran/36895 (Namelist writting to internal files: Control characters wrong?) · 0006def8
      2008-08-30  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
      
      	PR libfortran/36895
      	* gfortran.dg/namelist_53.f90: New test.
      
      From-SVN: r139814
      Jerry DeLisle committed
    • re PR fortran/36895 (Namelist writting to internal files: Control characters wrong?) · 8c8627c4
      2008-08-30  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
      
      	PR libfortran/36895
      	* io/write.c (namelist_write_newline): New function to correctly mark
      	next records in both external and internal units.
      	(nml_write_obj): Use new function.
      	(namelist_write: Use new function.
      
      From-SVN: r139813
      Jerry DeLisle committed
  3. 30 Aug, 2008 8 commits
    • Change attribute((option(...))) to attribute((target(...))); Do not allocate… · 5779e713
      Change attribute((option(...))) to attribute((target(...))); Do not allocate tree nodes on x86 for builtins until we generate code for the ISA; Delete hot/cold functions changing optimization; Make C++ support target specific functions; Add #pragma GCC {push_options,pop_options,reset_options} instead of #pragma GCC {target,optimize} {push,reset,pop}
      
      From-SVN: r139812
      Michael Meissner committed
    • re PR c++/37288 (ICE using auto as function return type or parameter) · 0257eee5
              PR c++/37288
              * pt.c (dependent_type_p): Don't abort on auto outside of a template.
      
      From-SVN: r139811
      Jason Merrill committed
    • re PR target/37270 (SH: spill failure for R0_REGS) · 06b322fa
      	PR target/37270
      	* config/sh/sh.h (LEGITIMIZE_RELOAD_ADDRESS): Generate
      	the reload address with the index register for SFmode
      	access with a displacement.
      
      From-SVN: r139809
      Kaz Kojima committed
    • * fi.po: New. · 588a58df
      From-SVN: r139807
      Joseph Myers committed
    • * MAINTAINERS: Consistently use tabs to separate columns. · 88a25817
      From-SVN: r139806
      Gerald Pfeifer committed
    • 2.cc: Constrain iterations when testing on a simultor. · 62ec9ed6
      	* testsuite/25_algorithms/nth_element/2.cc: Constrain iterations
      	when testing on a simultor.
      
      From-SVN: r139805
      Mark Mitchell committed
    • optabs.c (expand_abs_nojump): Update BRANCH_COST call. · 3a4fd356
      	* optabs.c (expand_abs_nojump): Update BRANCH_COST call.
      	* fold-cost.c (LOGICAL_OP_NON_SHORT_CIRCUIT, fold_truthop): Likewise.
      	* dojump.c (do_jump): Likewise.
      	* ifcvt.c (MAX_CONDITIONAL_EXECUTE): Likewise.
      	(note-if_info): Add BRANCH_COST.
      	(noce_try_store_flag_constants, noce_try_addcc, noce_try_store_flag_mask,
      	noce_try_cmove_arith, noce_try_cmove_arith, noce_try_cmove_arith,
      	noce_find_if_block, find_if_case_1, find_if_case_2): Use compuated
      	branch cost.
      	* expr.h (BRANCH_COST): Update default.
      	* predict.c (predictable_edge_p): New function.
      	* expmed.c (expand_smod_pow2, expand_sdiv_pow2, emit_store_flag):
      	Update BRANCH_COST call.
      	* basic-block.h (predictable_edge_p): Declare.
      	* config/alpha/alpha.h (BRANCH_COST): Update.
      	* config/frv/frv.h (BRANCH_COST): Update.
      	* config/s390/s390.h (BRANCH_COST): Update.
      	* config/spu/spu.h (BRANCH_COST): Update.
      	* config/sparc/sparc.h (BRANCH_COST): Update.
      	* config/m32r/m32r.h (BRANCH_COST): Update.
      	* config/i386/i386.h (BRANCH_COST): Update.
      	* config/i386/i386.c (ix86_expand_int_movcc): Update use of BRANCH_COST.
      	* config/sh/sh.h (BRANCH_COST): Update.
      	* config/pdp11/pdp11.h (BRANCH_COST): Update.
      	* config/avr/avr.h (BRANCH_COST): Update.
      	* config/crx/crx.h (BRANCH_COST): Update.
      	* config/xtensa/xtensa.h (BRANCH_COST): Update.
      	* config/stormy16/stormy16.h (BRANCH_COST): Update.
      	* config/m68hc11/m68hc11.h (BRANCH_COST): Update.
      	* config/iq2000/iq2000.h (BRANCH_COST): Update.
      	* config/ia64/ia64.h (BRANCH_COST): Update.
      	* config/rs6000/rs6000.h (BRANCH_COST): Update.
      	* config/arc/arc.h (BRANCH_COST): Update.
      	* config/score/score.h (BRANCH_COST): Update.
      	* config/arm/arm.h (BRANCH_COST): Update.
      	* config/pa/pa.h (BRANCH_COST): Update.
      	* config/mips/mips.h (BRANCH_COST): Update.
      	* config/vax/vax.h (BRANCH_COST): Update.
      	* config/h8300/h8300.h (BRANCH_COST): Update.
      	* params.def (PARAM_PREDICTABLE_BRANCH_OUTCOME): New.
      	* doc/invoke.texi (predictable-branch-cost-outcome): Document.
      	* doc/tm.texi (BRANCH_COST): Update.
      
      From-SVN: r139804
      Jan Hubicka committed