1. 24 Apr, 2012 1 commit
  2. 21 Jul, 2011 1 commit
  3. 15 Apr, 2011 1 commit
  4. 12 Apr, 2011 2 commits
  5. 01 Apr, 2011 1 commit
    • recog.h (insn_data_d): Add n_generator_args. · b29387ee
      gcc/
      	* recog.h (insn_data_d): Add n_generator_args.
      	* genoutput.c (data): Likewise.
      	(output_insn_data): Print it.
      	(max_opno, num_dups): Delete.
      	(scan_operands): Just fill in "d->operand[...]".
      	(gen_insn, gen_peephole, gen_expand, gen_split): Use get_pattern_stats.
      
      From-SVN: r171822
      Richard Sandiford committed
  6. 22 Jan, 2011 1 commit
  7. 17 Oct, 2010 1 commit
    • target.def (preferred_output_reload_class): New hook. · abd26bfb
      	* target.def (preferred_output_reload_class): New hook.
      	* doc/tm.texi.in (TARGET_PREFERRED_OUTPUT_RELOAD_CLASS): Document.
      	* doc/tm.texi: Regenerate.
      	* targhooks.c (default_preferred_output_reload_class): New function.
      	* targhooks.h (default_preferred_output_reload_class): Declare.
      	* reload.c (find_dummy_reload): Change rclass argument type from 
      	enum reg_class to reg_class_t. Change this_alternative array type
      	from enum reg_class to reg_class_t.
      	Use TARGET_PREFERRED_OUTPUT_RELOAD_CLASS target hook.
      	(push_reload): Change preferred_class variable type to reg_class_t.
      	Use TARGET_PREFERRED_OUTPUT_RELOAD_CLASS target hook.
      	* recog.c (reg_fits_class_p): Change result type to bool. Change cl
      	argument type from enum reg_class to reg_class_t. Use
      	HARD_REGISTER_NUM_P predicate.
      	* recog.h (reg_fits_class_p): Update prototype.
      
      	* config/i386/i386.h (PREFERRED_OUTPUT_RELOAD_CLASS): Remove.
      	* config/i386/i386-protos.h (ix86_preferred_output_reload_class): Remove.
      	* config/i386/i386.c (ix86_preferred_output_reload_class): Make
      	static. Change regclass argument and result types from enum reg_class
      	to reg_class_t.
      	(TARGET_PREFERRED_OUTPUT_RELOAD_CLASS): Define.
      
      From-SVN: r165588
      Anatoly Sokolov committed
  8. 24 Jun, 2010 1 commit
  9. 23 Jun, 2010 1 commit
  10. 12 May, 2010 1 commit
    • target.h (struct gcc_target): Add mode_dependent_address_p field. · cbda7dc6
      	* target.h (struct gcc_target): Add mode_dependent_address_p field.
      	* target-def.h (TARGET_MODE_DEPENDENT_ADDRESS_P): New.
      	(TARGET_INITIALIZER): Use TARGET_MODE_DEPENDENT_ADDRESS_P.
      	* targhooks.c (default_mode_dependent_address_p): New function.
      	* targhooks.h (default_mode_dependent_address_p): Declare function.
      	* doc/tm.texi (TARGET_MODE_DEPENDENT_ADDRESS_P): New.
      	(GO_IF_MODE_DEPENDENT_ADDRESS): Update.
      	* recog.c: (mode_dependent_address_p): Call mode_dependent_address_p
      	target hook. Change return type to bool.
      	* recog.h: (mode_dependent_address_p): Change return type to bool.
      
      From-SVN: r159339
      Anatoly Sokolov committed
  11. 16 Apr, 2010 1 commit
    • recog.h (struct recog_data): New field is_operator. · 6ddfdb0f
      	* recog.h (struct recog_data): New field is_operator.
      	(struct insn_operand_data): New field is_operator.
      	* recog.c (extract_insn): Set recog_data.is_operator.
      	* genoutput.c (output_operand_data): Emit code to set the
      	is_operator field.
      	* reload.c (find_reloads): Use it rather than testing for an
      	empty constraint string.
      
      From-SVN: r158403
      Bernd Schmidt committed
  12. 26 Oct, 2009 1 commit
    • extend.texi (Named Address Spaces): New section. · 09e881c9
      2009-10-26  Ben Elliston  <bje@au.ibm.com>
      	    Michael Meissner  <meissner@linux.vnet.ibm.com>
      	    Ulrich Weigand  <uweigand@de.ibm.com>
      
      	* doc/extend.texi (Named Address Spaces): New section.
      	* coretypes.h (addr_space_t): New type.
      	(ADDR_SPACE_GENERIC): New define.
      	(ADDR_SPACE_GENERIC_P): New macro.
      
      	* doc/tm.texi (Named Address Spaces): New section.
      	(TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Document.
      	(TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Document.
      	(TARGET_ADDR_SPACE_SUBSET_P): Document.
      	(TARGET_ADDR_SPACE_CONVERT): Document.
      	* target.h (struct gcc_target): Add addr_space substructure.
      	* target-def.h (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Define.
      	(TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Likewise.
      	(TARGET_ADDR_SPACE_SUBSET_P): Likewise.
      	(TARGET_ADDR_SPACE_CONVERT): Likewise.
      	(TARGET_ADDR_SPACE_HOOKS): Likewise.
      	(TARGET_INITIALIZER): Initialize addr_space hooks.
      	* targhooks.c (default_addr_space_legitimate_address_p): New function.
      	(default_addr_space_legitimize_address): Likewise.
      	(default_addr_space_subset_p): Likewise.
      	(default_addr_space_convert): Likewise.
      	* targhooks.h (default_addr_space_legitimate_address_p): Add prototype.
      	(default_addr_space_legitimize_address): Likewise.
      	(default_addr_space_subset_p): Likewise.
      	(default_addr_space_convert): Likewise.
      
      	* doc/rtl.texi (MEM_ADDR_SPACE): Document.
      	* rtl.h (mem_attrs): Add ADDRSPACE memory attribute.
      	(MEM_ADDR_SPACE): New macro.
      	* emit-rtl.c (get_mem_attrs): Add ADDRSPACE argument and set
      	address space memory attribute.
      	(mem_attrs_htab_hash): Handle address space memory attribute.
      	(mem_attrs_htab_eq): Likewise.
      	(set_mem_attributes_minus_bitpos): Likewise.
      	(set_mem_alias_set): Likewise.
      	(set_mem_align): Likewise.
      	(set_mem_expr): Likewise.
      	(set_mem_offset): Likewise.
      	(set_mem_size): Likewise.
      	(adjust_address_1): Likewise.
      	(offset_address): Likewise.
      	(widen_memoy_address): Likewise.
      	(get_spill_slot_decl): Likewise.
      	(set_mem_attrs_for_spill): Likewise.
      	(set_mem_addr_space): New function.
      	* emit-rtl.h (set_mem_addr_space): Add prototype.
      	* print-rtl.c (print_rtx): Print address space memory attribute.
      	* expr.c (expand_assignment): Set address space memory attribute
      	of generated MEM RTXes as appropriate.
      	(expand_expr_real_1): Likewise.
      	* cfgexpand.c (expand_debug_expr): Likewise.
      	* tree-ssa-loop-ivopts.c (produce_memory_decl_rtl): Likewise.
      
      	* tree.h (struct tree_base): Add address_space bitfield.  Reduce
      	size of "spare" bitfield.
      	(TYPE_ADDR_SPACE): New macro.
      	(ENCODE_QUAL_ADDR_SPACE): Likewise.
      	(DECODE_QUAL_ADDR_SPACE): Likewise.
      	(CLEAR_QUAL_ADDR_SPACE): Likewise.
      	(KEEP_QUAL_ADDR_SPACE): Likewise.
      	(TYPE_QUALS): Encode type address space.
      	(TYPE_QUALS_NO_ADDR_SPACE): New macro.
      	* tree.c (set_type_quals): Set type address space.
      	(build_array_type): Inherit array address space from element type.
      	* print-tree.c (print_node_brief): Print type address space.
      	(print_node): Likewise.
      	* tree-pretty-print.c (dump_generic_node): Likewise.
      
      	* explow.c (memory_address): Rename to ...
      	(memory_address_addr_space): ... this.  Add ADDRSPACE argument.
      	Use address-space aware variants of memory address routines.
      	* recog.c (memory_address_p): Rename to ...
      	(memory_address_addr_space_p): ... this.  Add ADDSPACE argument.
      	Use address-space aware variants of memory address routines.
      	(offsettable_address_p): Rename to ...
      	(offsettable_address_addr_space_p): ... this.  Add ADDRSPACE argument.
      	Use address-space aware variants of memory address routines.
      	* reload.c (strict_memory_address_p): Rename to ...
      	(strict_memory_address_addr_space_p): ... this.  Add ADDSPACE argument.
      	Use address-space aware variants of memory address routines.
      	(maybe_memory_address_p): Rename to ...
      	(maybe_memory_address_addr_space_p): ... this.  Add ADDSPACE argument.
      	Use address-space aware variants of memory address routines.
      	* expr.h (memory_address_addr_space): Add prototype.
      	(memory_address): Define as macro.
      	* recog.h (memory_address_addr_space_p): Add prototype.
      	(memory_address_p): Define as macro.
      	(offsettable_address_addr_space_p): Add prototype.
      	(offsettable_address_p): Define as macro.
      	(strict_memory_address_addr_space_p): Add prototype.
      	(strict_memory_address_p): Define as macro.
      
      	* combine.c (find_split_point): Use address-space aware variants
      	of memory address routines.
      	* emit-rtl.c (operand_subword): Likewise.
      	(change_address_1): Likewise.
      	(adjust_address_1): Likewise.
      	(offset_address): Likewise.
      	* expr.c (emit_move_insn): Likewise.
      	(expand_assignment): Likewise.
      	(expand_expr_real_1): Likewise.
      	* recog.c (verify_changes): Likewise.
      	(general_operand): Likewise.
      	(offsettable_memref_p): Likewise.
      	(offsettable_nonstrict_memref_p): Likewise.
      	(constrain_operands): Likewise.
      	* reload.c (get_secondary_mem): Likewise.
      	(find_reloads_toplev): Likewise.
      	(find_reloads_address): Likewise.
      	(find_reloads_subreg_address): Likewise.
      	* reload1.c (reload): Likewise.
      	* rtlhooks.c (gen_lowpart_if_possible): Likewise.
      	* rtl.h (address_cost): Add ADDRSPACE argument.
      	* rtlanal.c (address_cost): Add ADDRSPACE argument.  Use address-space
      	aware variant of memory address routines.
      	* loop-invariant.c (create_new_invariant): Update address_cost call.
      	* tree-ssa-loop-ivopts.c (computation_cost): Likewise.
      	* fwprop.c (should_replace_address): Add ADDRSPACE argument.
      	Use address-space aware variant of memory address routines.
      	(propagate_rtx_1): Update call to should_replace_address.
      	* tree-flow.h (multiplier_allowed_in_address_p): Add ADDRSPACE
      	argument.
      	* tree-ssa-loop-ivopts.c (multiplier_allowed_in_address_p): Add
      	ADDRSPACE argument.  Use per-address-space instead of global cache.
      	Use address-space aware variant of memory address routines.
      	(get_address_cost): Likewise.
      	(get_computation_cost_at): Update calls.
      	* tree-ssa-address.c (valid_mem_ref_p): Add ADDRSPACE argument.
      	Use address-space aware variant of memory address routines.
      	(create_mem_ref_raw): Update call to valid_mem_ref_p.
      	(most_expensive_mult_to_index): Update call to
      	multiplier_allowed_in_address_p.
      
      	* dwarf2out.c (modified_type_die): Output DW_AT_address_class
      	attribute to indicate named address spaces.
      
      	* varasm.c (get_variable_section): DECLs in named address spaces
      	cannot be "common".
      
      	* reload.c (find_reloads_address): Do not use LEGITIMIZE_RELOAD_ADDRESS
      	for addresses in a non-generic address space.
      
      	* expr.c (emit_block_move_hints): Do not use libcalls for
      	memory in non-generic address spaces.
      	(clear_storage_hints): Likewise.
      	(expand_assignment): Likewise.
      
      	* fold-const.c (operand_equal_p): Expressions refering to different
      	address spaces are not equivalent.
      
      	* rtl.c (rtx_equal_p_cb): MEMs refering to different address
      	spaces are not equivalent.
      	(rtx_equal_p): Likewise.
      	* cse.c (exp_equiv_p): Likewise.
      	* jump.c (rtx_renumbered_equal_p): Likewise.
      	* reload.c (operands_match_p): Likewise.
      
      	* alias.c (nonoverlapping_memrefs_p): MEMs refering to different
      	address spaces may alias.
      	(true_dependence): Likewise.
      	(canon_true_dependence): Likewise.
      	(write_dependence_p): Likewise.
      
      	* dse.c (canon_address): Handle named address spaces.
      	* ifcvt.c (noce_try_cmove_arith): Likewise.
      
      	* tree.def (ADDR_SPACE_CONVERT_EXPR): New tree code.
      	* expr.c (expand_expr_real_2): Expand ADDR_SPACE_CONVERT_EXPR.
      	* convert.c (convert_to_pointer): Generate ADDR_SPACE_CONVERT_EXPR
      	to handle conversions between different address spaces.
      	* fold-const.c (fold_convert_loc): Likewise.
      	(fold_unary_loc): Handle ADDR_SPACE_CONVERT_EXPR.
      	* tree-pretty-print.c (dump_generic_node): Likewise.
      	* gimple-pretty-print.c (dump_unary_rhs): Likewise.
      	* tree-cfg.c (verify_gimple_assign_unary): Likewise.
      	* tree-inline.c (estimate_operator_cost): Likewise.
      	* tree-ssa.c (useless_type_conversion_p): Conversions between pointers
      	to different address spaces are not useless.
      
      Co-Authored-By: Michael Meissner <meissner@linux.vnet.ibm.com>
      Co-Authored-By: Ulrich Weigand <uweigand@de.ibm.com>
      
      From-SVN: r153572
      Ben Elliston committed
  13. 24 Jun, 2009 1 commit
    • MAINTAINERS: Add myself as mep maintainer. · 7acf4da6
      [toplevel]
      
      	* MAINTAINERS: Add myself as mep maintainer.
      
      [gcc]
      
      	Add MeP port.
      	* config.gcc: Add mep support.
      	* recog.c: Resurrect validate_replace_rtx_subexp().
      	* recog.h: Likewise.
      	* config/mep/: Add new port:
      	* config/mep/constraints.md: New file.
      	* config/mep/default.h: New file.
      	* config/mep/intrinsics.h: New file.
      	* config/mep/intrinsics.md: New file.
      	* config/mep/ivc2-template.h: New file.
      	* config/mep/mep-c5.cpu: New file.
      	* config/mep/mep-core.cpu: New file.
      	* config/mep/mep-default.cpu: New file.
      	* config/mep/mep-ext-cop.cpu: New file.
      	* config/mep/mep-intrin.h: New file.
      	* config/mep/mep-ivc2.cpu: New file.
      	* config/mep/mep-lib1.asm: New file.
      	* config/mep/mep-lib2.c: New file.
      	* config/mep/mep-pragma.c: New file.
      	* config/mep/mep-protos.h: New file.
      	* config/mep/mep-tramp.c: New file.
      	* config/mep/mep.c: New file.
      	* config/mep/mep.cpu: New file.
      	* config/mep/mep.h: New file.
      	* config/mep/mep.md: New file.
      	* config/mep/mep.opt: New file.
      	* config/mep/predicates.md: New file.
      	* config/mep/t-mep: New file.
      
      [gcc/testsuite]
      
      	Add MeP port.
      	* lib/target-supports.exp: Add mep support (no profiling).
      
      [libgcc]
      
      	Add MeP port.
      	* config.host: Add mep support.
      
      [libstdc++-v3]
      
      	Add MeP port.
      	* configure.host: Add mep support.
      
      From-SVN: r148890
      DJ Delorie committed
  14. 02 Feb, 2009 1 commit
    • re PR inline-asm/39058 (ICE with double in inline-asm) · eca72963
      	PR inline-asm/39058
      	* recog.h (asm_operand_ok): Add constraints argument.
      	* recog.c (asm_operand_ok): Likewise.  If it is set, for digits
      	recurse on matching constraint.
      	(check_asm_operands): Pass constraints as 3rd argument to
      	asm_operand_ok.  Don't look up matching constraint here.
      	* stmt.c (expand_asm_operands): Pass NULL as 3rd argument
      	to asm_operand_ok.
      
      	* gcc.target/i386/pr39058.c: New test.
      
      From-SVN: r143867
      Jakub Jelinek committed
  15. 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
  16. 27 May, 2008 2 commits
    • reload.c: (find_reloads): Skip alternatives according to the "enabled" attribute. · 7ac28727
      2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
      
      	* reload.c: (find_reloads): Skip alternatives according to the
      	"enabled" attribute. Constify the constraint variable.
      	* recog.c (get_attr_enabled): Add default implementation.
      	(extract_insn): Set the alternative_enabled_p array
      	in the recog_data struct.
      	(preprocess_constraints, constrain_operands): Skip
      	alternatives according to the "enabled" attribute
      	* recog.h (struct recog_data): New field alternative_enabled_p.
      	(skip_alternative): New inline function.
      	* regclass.c: (record_operand_costs): Check the "enabled"
      	attribute.
      	(record_reg_classes): Skip alternative according to the
      	"enabled" attribute.
      
      	* doc/md.texi: Add documention for the "enabled" attribute.
      
      From-SVN: r136012
      Andreas Krebbel committed
    • defaults.h (TARGET_MEM_CONSTRAINT): New target macro added. · a4edaf83
      2008-05-27  Andreas Krebbel  <krebbel1@de.ibm.com>
      
      	* defaults.h (TARGET_MEM_CONSTRAINT): New target macro added.
      	* postreload.c (reload_cse_simplify_operands): Replace 'm'
      	constraint with TARGET_MEM_CONSTRAINT.
      	* recog.c (asm_operand_ok, preprocess_constraints,
      	constrain_operands): Likewise.
      	* regclass.c (record_reg_classes): Likewise.
      	* reload.c (find_reloads, alternative_allows_const_pool_ref):
      	Likewise.
      	* reload1.c (maybe_fix_stack_asms): Likewise.
      	* stmt.c (parse_output_constraint, parse_input_constraint):
      	Likewise.
      	* recog.h: Adjust comment.
      	* genpreds.c (generic_constraint_letters): Remove 'm' constraint.
      	* genoutput.c (note_constraint): Don't emit error for 'm'
      	constraint.
      	* doc/md.texi: Add a note to description of 'm' constraint.
      	* doc/tm.texi: Document the new TARGET_MEM_CONSTRAINT macro.
      
      From-SVN: r136011
      Andreas Krebbel committed
  17. 26 Jul, 2007 1 commit
  18. 27 Jun, 2007 1 commit
    • fwprop.c (try_fwprop_subst): Use validate_unshare_change. · 95e88efd
      	* fwprop.c (try_fwprop_subst): Use validate_unshare_change.
      	* postreload.c (reload_cse_simplify_set): Instead of copying the rtx
      	early use validate_unshare_change.
      	(reload_combine): Likewise.
      	* recog.c (change_t): New field unshare.
      	(validate_change_1): Rename from validate_change; add argument unshare.
      	(validate_change): Turn into wrapper of validate_change_1; update
      	prototype for bools.
      	(validate_unshare_change): New.
      	(confirm_change_group): Unshare changes if asked for; avoid unnecesary
      	calls of df_insn_rescan.
      	* recog.h (validate_change): Replace ints by bools.
      	(validate_unshare_change): Declare.
      
      From-SVN: r126050
      Jan Hubicka committed
  19. 11 Jun, 2007 1 commit
  20. 04 Nov, 2006 1 commit
    • fwprop.c: New file. · a52b023a
      2006-11-03  Paolo Bonzini  <bonzini@gnu.org>
                  Steven Bosscher  <stevenb.gcc@gmail.com>
      
              * fwprop.c: New file.
              * Makefile.in: Add fwprop.o.
              * tree-pass.h (pass_rtl_fwprop, pass_rtl_fwprop_with_addr): New.
              * passes.c (init_optimization_passes): Schedule forward propagation.
              * rtlanal.c (loc_mentioned_in_p): Support NULL value of the second
              parameter.
              * timevar.def (TV_FWPROP): New.
              * common.opt (-fforward-propagate): New.
              * opts.c (decode_options): Enable forward propagation at -O2.
              * gcse.c (one_cprop_pass): Do not run local cprop unless touching jumps.
              * cse.c (fold_rtx_subreg, fold_rtx_mem, fold_rtx_mem_1, find_best_addr,
              canon_for_address, table_size): Remove.
              (new_basic_block, insert, remove_from_table): Remove references to
              table_size.
              (fold_rtx): Process SUBREGs and MEMs with equiv_constant, make
              simplification loop more straightforward by not calling fold_rtx
              recursively.
              (equiv_constant): Move here a small part of fold_rtx_subreg,
              do not call fold_rtx.  Call avoid_constant_pool_reference
              to process MEMs.
              * recog.c (canonicalize_change_group): New.
              * recog.h (canonicalize_change_group): New.
      
              * doc/invoke.texi (Optimization Options): Document fwprop.
              * doc/passes.texi (RTL passes): Document fwprop.
      
      
      Co-Authored-By: Steven Bosscher <stevenb.gcc@gmail.com>
      
      From-SVN: r118475
      Paolo Bonzini committed
  21. 04 May, 2006 1 commit
    • [multiple changes] · 8cd37d0b
      2006-05-04  Leehod Baruch  <leehod@il.ibm.com>
      
              * see.c: New file.
              * Makefile.in (OBJS-common): Add see.o.
              (see.o): Add dependencies.
              * common.opt (fsee): New flag for the see optimization was added.
              * opts.c (flag_see): Initialized.
              * passes.c (init_optimization_passes, pass_see): New pass.
              * rtl.h (see_main): Declaration as extern.
              * timevar.def (TV_SEE): New.
              * tree-pass.h (pass_see): Declaration as extern.
              * invoke.texi (-fsee): Document.
              * recog.c (validate_simplify_insn): New function.
              * recog.h (validate_simplify_insn): Declaration as extern.
              * df-problems.c (df_chain_dump): Check for NULL.
      
      2006-05-04  Kenneth Zadeck <zadeck@naturalbridge.com>
                  Daniel Berlin  <dberlin@dberlin.org>
      
              * cfgrtl.c (insert_insn_bb_end_new): New function.
              * basic-block.h (insert_insn_bb_end_new): Declaration as extern.
      
      2006-05-04  Leehod Baruch  <leehod.baruch@weizmann.ac.il>
      
              * df.h (struct web_entry): Moved from web.c.
              (union_defs): Declaration as extern.
              (unionfind_root): Likewise.
              (unionfind_union): Likewise.
              * web.c (struct web_entry): Moved to df.h.
              (unionfind_root): Remove static declaration.
              (unionfind_union): Likewise.
              (union_defs): Likewise and generalize to use callback function.
              (web_main): Update arguments for union_defs function call.
      
      From-SVN: r113518
      Razya Ladelsky committed
  22. 05 Mar, 2006 1 commit
  23. 28 Jan, 2006 2 commits
  24. 16 Dec, 2005 1 commit
  25. 13 Dec, 2005 1 commit
    • PR rtl-optimization/20070 / part1 · 7d22e898
      	PR rtl-optimization/20070 / part1
      	* flow.c (update_life_info): If PROP_POST_REGSTACK is set, call
      	count_or_remove_death_notes with kill == -1.
      	(mark_set_1): Don't add REG_DEAD / REG_UNUSED notes for stack
      	registers if PROP_POST_REGSTACK is set.
      	(mark_used_reg): Likewise.
      	(count_or_remove_death_notes): If kill is -1, don't remove REG_DEAD /
      	REG_UNUSED notes for stack regs.
      	* cfgcleanup.c (condjump_equiv_p): Change parameters and processing
      	to match rtx_equiv_p machinery.  Change caller.
      	(outgoing_edges_match): Likewise.
      	(try_crossjump_to_edge): Use struct_equiv_block_eq
      	instead of flow_find_cross_jump.
      	* basic-block.h (PROP_POST_REGSTACK, STRUCT_EQUIV_START): Define.
      	(STRUCT_EQUIV_RERUN, STRUCT_EQUIV_FINAL): Likewise.
      	(STRUCT_EQUIV_NEED_FULL_BLOCK, STRUCT_EQUIV_MATCH_JUMPS): Likewise.
      	(STRUCT_EQUIV_MAX_LOCAL): Likewise.
      	(struct struct_equiv_checkpoint, struct equiv_info): Likewise.
      	(insns_match_p): Update prototype.
      	(flow_find_cross_jump): Remove prototype.
      	(struct_equiv_block_eq, struct_equiv_init): Declare.
      	(rtx_equiv_p, condjump_equiv_p): Likewise.
      	* struct-equiv.c: Include reload.h.
      	(IMPOSSIBLE_MOVE_FACTOR): Define.
      	(assign_reg_reg_set, struct_equiv_make_checkpoint): New functions.
      	(struct_equiv_improve_checkpoint): Likewise.
      	(struct_equiv_restore_checkpoint, rtx_equiv_p): Likewise.
      	(set_dest_equiv_p, set_dest_addr_equiv_p, struct_equiv_init): Likewise.
      	(struct_equiv_merge, find_dying_input): Likewise.
      	(resolve_input_conflict, note_local_live): Likewise.
      	(death_notes_match_p): Change parameters and processing
      	to match rtx_equiv_p machinery.  Change caller.
      	(insns_match_p): Likewise.
      	(flow_find_cross_jump): Replace with:
      	(struct_equiv_block_eq).
      
      	Back out this change:
      	2005-03-07  Kazu Hirata  <kazu@cs.umass.edu>
                * recog.c (verify_changes): Make it static.
                * recog.h: Remove the corresponding prototype.
      
      From-SVN: r108480
      J"orn Rennecke committed
  26. 27 Aug, 2005 1 commit
    • genrecog.c (enum decision_type): Add DT_num_insns. · 0cd6c85a
      2005-08-27  Paul Brook  <paul@codesourcery.com>
      
      	* genrecog.c (enum decision_type): Add DT_num_insns.
      	(struct decision_test): Add u.num_insns.
      	(add_to_sequence): Add DT_num_insns test.
      	(maybe_both_true_2, nodes_identical_1): Handle DT_num_insns.
      	(write_cond, debug_decision_2): Ditto.
      	(change_state): Assume peep2_next_insn never fails.
      	Remove "afterward" argument.
      	(write afterward, write_tree): Update to match.
      	* recog.c (peep2_current_count): New variable.
      	(peep2_next_insn): Check it.
      	(peephole2_optimize): Set peep2_current_count.
      	* recog.h (peep2_current_count): Declare.
      
      From-SVN: r103553
      Paul Brook committed
  27. 25 Jun, 2005 1 commit
  28. 10 Apr, 2005 1 commit
    • re PR target/20126 (Inlined memcmp makes one argument null on entry) · 46382283
      gcc/ChangeLog:
      PR target/20126
      * loop.c (loop_givs_rescan): If replacement of DEST_ADDR failed,
      set the original address pseudo to the correct value before the
      original insn, if possible, and leave the insn alone, otherwise
      create a new pseudo, set it and replace it in the insn.
      * recog.c (validate_change_maybe_volatile): New.
      * recog.h (validate_change_maybe_volatile): Declare.
      gcc/testsuite/ChangeLog:
      * gcc.dg/pr20126.c: New.
      
      From-SVN: r97939
      Alexandre Oliva committed
  29. 07 Mar, 2005 1 commit
  30. 02 Mar, 2005 1 commit
    • recog.c (verify_changes, [...]): New functions, broken out of apply_change_group. · 0a634832
      	* recog.c (verify_changes, confirm_change_group): New functions,
      	broken out of apply_change_group.
      	(apply_change_group): Use them.
      	* recog.h (verify_change, confirm_change_group): Declare.
      	* rtl.h (redirect_jump_2): Declare.
      	* jump.c (redirect_exp, invert_exp): Delete.
      	(invert_exp_1): Take second parameter.  Return value.  Changed caller.
      	(redirect_jump_2): New function, broken out of redirect_jump.
      	(redirect_jump): Use redirect_jump_1 and redirect_jump_2.
      	(invert_jump): Use invert_jump_1 and redirect_jump_2.
      	* ifcvt.c (dead_or_predicable): Use redirect_jump_2.
      
      From-SVN: r95813
      J"orn Rennecke committed
  31. 23 Jan, 2005 1 commit
  32. 24 Nov, 2004 1 commit
  33. 12 Aug, 2004 1 commit
    • genpreds.c: Add capability to generate predicate bodies as well as function prototypes. · e543e219
      	* genpreds.c: Add capability to generate predicate bodies as
      	well as function prototypes.  Write function prototypes for
      	the generic predicates too.
      	(process_define_predicate, write_tm_preds_h, write_insn_preds_c)
      	(write_predicate_subfunction, mark_mode_tests, add_mode_tests)
      	(write_match_code, write_predicate_expr, write_one_predicate_function)
      	(parse_option): New functions.
      	(output_predicate_decls): Delete.
      	(main): Read the machine description, process DEFINE_PREDICATE or
      	DEFINE_SPECIAL_PREDICATE patterns, write tm-preds.h or insn-preds.c
      	as appropriate.
      
      	* genrecog.c (struct decision_test): Replace index with
      	struct pred_data pointer.
      	(next_index): Remove, unused.
      	(pred_table, preds, special_mode_pred_table): Delete.
      	(compute_predicate_codes, process_define_predicate): New functions.
      	(validate_pattern, add_to_sequence, write_switch): Update for
      	new data structures.
      	(main): Handle DEFINE_PREDICATE and DEFINE_SPECIAL_PREDICATE.
      	Check both error_count and have_error.
      
      	* gensupport.c (in_fname, first_predicate): New globals.
      	(define_pred_queue, define_pred_tail): New RTL-pattern queue.
      	(predicate_table, last_predicate, old_pred_table)
      	(old_special_pred_table): New statics.
      	(hash_struct_pred_data, eq_struct_pred_data, lookup_predicate)
      	(add_predicate, init_predicate_table): New functions.
      	(process_rtx): Handle DEFINE_PREDICATE and DEFINE_SPECIAL_PREDICATE.
      	(init_md_reader_args_cb): Use the global in_fname.  No need to zero
      	it or max_include_len.  Call init_predicate_table.
      	(read_rtx): Run the predicate queue after the attribute queue
      	but before all the others.
      	* gensupport.h (in_fname, struct pred_data, first_predicate)
      	(lookup_predicate, add_predicate, FOR_ALL_PREDICATES): Declare.
      	* rtl.def (MATCH_CODE, MATCH_TEST, DEFINE_PREDICATE)
      	(DEFINE_SPECIAL_PREDICATE): New RTL codes.
      	* dummy-conditions.c: Don't include bconfig.h, system.h,
      	coretypes.h, tm.h, or system.h.  Do include stddef.h.
      	Duplicate declaration of struct c_test from gensupport.h.
      
      	* Makefile.in (OBJS-common): Add insn-preds.o.
      	(STAGESTUFF, .PRECIOUS): Add insn-preds.c.
      	(insn-preds.c, insn-preds.o): New rules.
      	(s-preds): Also generate insn-preds.c.
      	(dummy-conditions.o, genpreds$(build_exeext), genpreds.o):
      	Update dependencies.
      	(print-rtl.o, print-rtl1.o): Correct dependencies.
      
      	* recog.h: Delete prototypes of predicate functions.
      
      	* doc/md.texi (Predicates): New section with complete
      	documentation of operand/operator predicates.  Remove some
      	incomplete documentation of predicates from other places.
      	* doc/tm.texi (Misc): Move SPECIAL_MODE_PREDICATES next to
      	PREDICATE_CODES; indicate that both are deprecated in favor
      	of define_predicate/define_special_predicate.
      
      	* config/ia64/ia64.c: All predicate function definitions moved
      	to ia64.md, except
      	(small_addr_symbolic_operand, tls_symbolic_operand): Delete.
      	(ia64_expand_load_address, ia64_expand_move):
      	Check SYMBOL_REF_TLS_MODEL directly, don't use tls_symbolic_operand.
      
      	* config/ia64/ia64.md: All predicates now defined here.
      	(symbolic_operand): Is now a special predicate.
      
      	* config/ia64/ia64.h: Declare ia64_section_threshold.
      	(PREDICATE_CODES): Delete.
      
      From-SVN: r85855
      Zack Weinberg committed
  34. 25 Jul, 2004 1 commit
  35. 26 Feb, 2004 1 commit
  36. 09 Jan, 2004 1 commit
    • re PR c/11234 (-pedantic accepts function pointer <-> void*) · 3897f229
      	PR c/11234
      	* c-typeck.c (build_c_cast): If pedantic, warn for conversions
      	between function and object pointers.
      	(digest_init): When comparing a pointer to function type to the
      	target type, only apply TREE_TYPE once to the pointer to function
      	type.
      	* except.c (for_each_eh_label_1): Treat data as a pointer to a
      	function pointer rather than casting it to a function pointer.
      	(for_each_eh_label): Update caller.
      	* recog.h (struct insn_data): Use a struct or union for output.
      	* genoutput.c (output_insn_data): Update.
      	* final.c (get_insn_template): Update.
      
      testsuite:
      	* gcc.dg/func-ptr-conv-1.c: New test.
      	* gcc.dg/weak/weak-6.c, gcc.dg/weak/weak-7.c: Update.
      
      From-SVN: r75595
      Joseph Myers committed
  37. 02 Dec, 2003 1 commit