aboutsummaryrefslogtreecommitdiff
path: root/gcc/cse.c
AgeCommit message (Collapse)AuthorFilesLines
2004-02-08c-objc-common.c (): Fix a typo in a warning.Kazu Hirata1-23/+23
* c-objc-common.c (): Fix a typo in a warning. * cse.c (preferrable): Change to preferable. Update all of its callers. * genautomata.c (ainsn): Change first_ainsn_with_given_equialence_num to first_ainsn_with_given_equivalence_num. Update all of its references. From-SVN: r77497
2004-02-02alias.c (record_set): Use hard_regno_nregs.Jan Hubicka1-7/+7
* alias.c (record_set): Use hard_regno_nregs. * bt-load.c (find_btr_reference, note_btr_set): Likewise. * builtins.c (apply_args_size): Likewise. * caller-save.c (setup_save_areas, save_call_clobbered_regs, mark_set_regs, add_stored_regs, mark_referenced_regs, insert_restore, insert_save, insert_one_insn): Likewise. * cfgcleanup.c: Include regs.h (mark_effect, mentions_nonequal_regs): Likewise. * cfgrtl.c (mark_killed_regs): Likewise * combine.c (update_table_tick, record_value_for_reg, record_dead_and_set_regs, get_last_value_validate, use_crosses_set_p, reg_dead_at_p_1, reg_dead_at_p, mark_used_regs_combine, move_deaths, reg_bitfield_target_p, distribute_notes): Likewise. * cse.c (mention_regs, insert, invalidate, invalidate_for_call, exp_equiv_p, cse_insn): Likewise. * cselib.c (cselib_lookup): Likewise. (cselib_invalidate_regno, cselib_record_set): Likewise. * df.c (df_ref_record): Likewise. * dwarf2out.c (reg_loc_descriptor, multiple_reg_loc_descriptor): Likewise. * flow.c (mark_reg, insn_dead_p, mark_set_1, mark_used_reg, count_or_remove_death_notes_bb): Likewise. * function.c (aggregate_value_p, keep_stack_depressed): Likewise. * gloval.c (global_alloc, find_reg, mark_reg_store, mark_reg_conflicts, mark_reg_death, set_preference, reg_becomes_live, reg_dies): Likewise. * integrate.c (mark_stores): Likewise. * jump.c (delete_prior_computation): Likewise. * lcm.c (reg_dies, reg_becomes_live): Likewise. * local-alloc.c (combine_regs, find_free_reg, post_mark_life): Likewise. * loop.c (LOOP_REGNO_NREGS): Likewise. * postreload.c (reload_combine, reload_combine_note_store, reload_combine_note_use, reload_cse_move2add, move2add_note_store): Likewise. * ra-colorize.c (combine, color_usable_p, get_free_reg, calculate_dont_begin, calculate_dont_begin, colorize_one_web, try_recolor_web, insert_coalesced_conflicts, check_colors, break_precolored_alias): Likewise. * ra-debug.c: Include regs.h (ra_print_rtx_object): Likewise. * ra-rewrite (choose_spill_colors): Likewise. (spill_same_color_p, update_spill_colors, spill_is_free): Likewise. * ra.c (init_ra): Likewise. * recog.c (reg_fits_class_p, peep2_reg_dead_p, peep2_find_free_register): Likewise. * reg-stack.c (subst_stack_regs_pat, convert_regs_exit): Likewise. * regclass.c (hard_regno_nregs): New array. (init_reg_modes_once): Initialize it. (choose_hard_reg_mode): Use it. (record_reg_classes): Likewise. * regmove.c (mark_flags_life_zones): Likewise. * regrename.c (note_sets, clear_dead_regs, regrename_optimize, scan_rtx_reg, dump_def_use_chain, kill_value, set_value_regno, copy_value, maybe_mode_change, find_oldest_value_reg, copyprop_hardreg_forward_1): * regs.h (hard_regno_nregs): Declare. * realod.c (reload_inner_reg_of_subreg): Use it. (push_reload, combine_reloads, find_dummy_reload, hard_reg_set_here_p, operands_match_p, decompose, find_reloads, refers_to_regno_for_reload_p, find_equiv_reg, regno_clobbered_p, reload_adjust_reg_for_mode): Likewise. * reload1.c (compute_use_by_pseudos, count_pseudo, count_spilled_pseudo, find_reg, find_reload_regs, mark_home_live, spill_hard_reg, forget_old_reloads_1, mark_reload_reg_in_use, clear_reload_reg_in_use, reload_reg_free_for_value_p, free_for_value_p allocate_reload_reg, choose_reload_regs, emit_reload_insns, delete_output_reload): Likewise. * resource.c (update_live_status, mark_referenced_resources, mark_set_resources, mark_target_live_regs): Likewise. * rtlanal.c: Include regs.h (refers_to_regno_p, reg_overlap_mentioned_p, dead_or_set_p, dead_or_set_regno_p, find_regno_note, find_reg_fusage, subreg_regno_offset, subreg_offset_representable_p, hoist_test_store): Likewise. * sched-deps.c (sched_analyze_1, sched_analyze_2): Likewise. * sched-rgn.c (check_live_1, update_live_1): Likewise. * stmt.c: Include regs.h (decl_conflicts_with_clobbers_p): Likewise. * varasm.c (make_decl_rtl): Likewise. * Makefile.in (cfgcleanup.o, rtlanal.o, ra-debug.o): Add regs.h dependnecy. From-SVN: r77088
2004-01-31combine.c (cse_main): Set gen_lowpart to gen_lowpart_for_combine and restore ↵Paolo Bonzini1-17/+19
it to... 2004-01-31 Paolo Bonzini <bonzini@gnu.org> * combine.c (cse_main): Set gen_lowpart to gen_lowpart_for_combine and restore it to gen_lowpart_general on exit. (gen_lowpart_for_combine): Adjust all callers to go through gen_lowpart. * cse.c (cse_main): Set gen_lowpart to gen_lowpart_if_possible and restore it to gen_lowpart_general on exit. (gen_lowpart_if_possible): Adjust all callers to go through gen_lowpart. * emit-rtl.c (gen_lowpart_general): New name of gen_lowpart. (gen_lowpart): Declare as pointer to function, initialized to gen_lowpart_general. * rtl.h (gen_lowpart): Declare as pointer to function. From-SVN: r77026
2004-01-24re PR bootstrap/13848 (bootstrap failure - ICE in ada/utils.c)Ian Lance Taylor1-14/+34
PR bootstrap/13848 * cse.c (cse_cc_succs): Change the mode of the source expression as soon as decide we need a new mode. Don't permit changing modes if we found a match in a successor block. (cse_condition_code_reg): Save original mode of source expression so that we know whether we have to change the mode in other insns. * gcc.dg/20040124-1.c: New test. From-SVN: r76522
2004-01-24cse.c: (cse_cc_succs) Fix comparison warning.Andreas Tobler1-1/+1
2004-01-24 Andreas Tobler <a.tobler@schweiz.ch> * cse.c: (cse_cc_succs) Fix comparison warning. From-SVN: r76487
2004-01-23re PR target/1532 (-O3 generates (obviously) redundant tests and jumps)Ian Lance Taylor1-0/+316
PR gcc/1532 * cse.c (cse_change_cc_mode): New static function. (cse_change_cc_mode_insns, cse_cc_succs): Likewise. (cse_condition_code_reg): New function. * rtl.h (cse_condition_code_reg): Declare. * toplev.c (rest_of_handle_cse2): Call cse_condition_code_reg. * target.h (struct gcc_target): Add fixed_condition_code_regs and cc_modes_compatible. * target-def.h (TARGET_FIXED_CONDITION_CODE_REGS): Define. (TARGET_CC_MODES_COMPATIBLE): Define. (TARGET_INITIALIZER): Add new initializers. * targhooks.c (default_cc_modes_compatible): New function. * targhooks.c (default_cc_modes_compatible): Declare. * hooks.c (hook_bool_intp_intp_false): New function. * hooks.h (hook_bool_intp_intp_false): Declare. * config/i386/i386.c (TARGET_FIXED_CONDITION_CODE_REGS): Define. (TARGET_CC_MODES_COMPATIBLE): Define. (ix86_fixed_condition_code_regs): New static function. (ix86_cc_modes_compatible): Likewise. * doc/tm.texi (Condition Code): Document new hooks. From-SVN: r76454
2004-01-23re PR rtl-optimization/13724 (Bad code generated for unsigned int -> long ↵Paolo Bonzini1-96/+107
long multiplication) 2004-01-22 Paolo Bonzini <bonzini@gnu.org> PR optimization/13724 * cse.c (fold_rtx) <SUBREG>: Fold a SUBREG to zero if it represents the zero bits produced by a ZERO_EXTEND operation. From-SVN: r76394
2004-01-20re PR rtl-optimization/13567 ([sh] miscompiling calls.c)Kaz Kojima1-2/+18
PR optimization/13567 * cse.c (cse_basic_block): Call cse_insn with a non-null libcall_insn for the last SET insn of a no-confilict block. From-SVN: r76195
2004-01-12alias.c: Invlude varray.hJan Hubicka1-1/+6
* alias.c: Invlude varray.h (alias_sets): Turn into varray. (get_alias_set_entry): Use VARRAY; mark inline. (mems_in_disjoint_alias_sets_p): Mark inline. (record_alias_subset): Use varray. (init_alias_once): Initialize varray. (new_alias_set): Grow array. * varray.c: Make VARRAY_GENERIC_PTR non GTYized. From-SVN: r75711
2003-12-03re PR target/11229 (pure-1.c fails on powerpc64-linux with -O1)Alan Modra1-0/+10
PR target/11229 * cse.c (cse_insn): Set classp using src_const_elt if src_eqv_elt is NULL. From-SVN: r74225
2003-11-27cse.c (cse_set_around_loop): When changing a constant load to a register ↵J"orn Rennecke1-0/+4
-register copy, add a REG_EQUAL note. * cse.c (cse_set_around_loop): When changing a constant load to a register -register copy, add a REG_EQUAL note. From-SVN: r74007
2003-10-18cse.c (cse_insn): Check that the tentative replacement was successfully ↵Eric Botcazou1-1/+5
forced to memory before... * cse.c (cse_insn) [src_folded]: Check that the tentative replacement was successfully forced to memory before using the result. From-SVN: r72635
2003-10-11cse.c (constant_pool_entries_regcost): New global variable to hold the ↵Roger Sayle1-1/+7
register cost component of... * cse.c (constant_pool_entries_regcost): New global variable to hold the register cost component of constant_pool_entries_cost. (fold_rtx): Calculate constant_pool_entries_regcost at the same time as constant_pool_entries_cost. (cse_insn): Set both src_folded_cost and src_folded_regcost from constant_pool_entries_cost and constant_pool_entries_regcost. (cse_main): Initialize constant_pool_entries_regcost to zero. * optabs.c (expand_unop): Attach a REG_EQUAL note describing the semantics of the sequence of bit operations used to negate a floating-point value. (expand_abs_nojump): Likewise attach a REG_EQUAL note describing the semantics of the bit operations used to abs a floating point value. From-SVN: r72326
2003-10-08re PR rtl-optimization/12142 (-fnon-call-exceptions generates incorrect code)John David Anglin1-33/+22
PR optimization/12142 * cse.c (count_reg_usage): In a SET with a REG SET_DEST, count the uses of the register in the SET_SRC. Remove unnecessary argument. * pa.c (legitimize_pic_address): Before reload, use a scratch register for the intermediate result in loading the address of a SYMBOL_REF. Set the MEM_NOTRAP_P flag for the MEM. Add a REG_EQUAL to the insn which loads the SYMBOL_REF address. From-SVN: r72234
2003-10-06re PR rtl-optimization/12215 (ICE in make_label_edge with ↵Eric Botcazou1-1/+9
-fnon-call-exceptions -fno-gcse -O2) PR optimization/12215 * cse.c (cse_set_around_loop): Emit the move at the beginning of the next basic block for trapping sets. From-SVN: r72141
2003-07-26re PR inline-asm/11676 (operand to volatile asm incorrectly removed)Richard Henderson1-0/+10
PR inline-asm/11676 * cse.c (count_reg_usage): Handle asm_operands properly. From-SVN: r69816
2003-07-19alias.c [...]: Remove unnecessary casts.Kaveh R. Ghazi1-12/+9
* alias.c alloc-pool.c bitmap.c bitmap.h bt-load.c builtins.c c-common.c c-decl.c c-incpath.c c-lex.c c-opts.c c-parse.in c-pragma.c c-typeck.c calls.c cfg.c cfganal.c cfgloop.c cfgrtl.c collect2.c combine.c conflict.c coverage.c cppexp.c cppfiles.c cpphash.c cppinit.c cpplex.c cpplib.c cppmacro.c cppspec.c cpptrad.c cse.c cselib.c dbxout.c defaults.h df.c dominance.c dwarf2out.c dwarfout.c emit-rtl.c except.c expmed.c expr.c final.c fix-header.c flow.c fold-const.c function.c gcc.c gccspec.c gcov.c gcse.c genattr.c genattrtab.c genautomata.c genconditions.c genemit.c genextract.c genoutput.c genrecog.c gensupport.c ggc-page.c ggc-simple.c global.c graph.c haifa-sched.c hashtable.c integrate.c jump.c langhooks.c lcm.c line-map.c local-alloc.c loop.c mips-tdump.c mips-tfile.c mkdeps.c optabs.c params.c postreload.c prefix.c print-tree.c protoize.c ra-build.c ra-colorize.c ra-rewrite.c ra.c recog.c reg-stack.c regclass.c regmove.c regrename.c reload.c reload1.c reorg.c resource.c sbitmap.c sched-deps.c sched-rgn.c sched-vis.c sdbout.c simplify-rtx.c ssa-ccp.c ssa.c stmt.c stor-layout.c timevar.c tlink.c toplev.c tree-dump.c tree.c unroll.c unwind-dw2-fde.c varasm.c varray.c vmsdbgout.c xcoffout.c: Remove unnecessary casts. From-SVN: r69587
2003-07-18cse.c (fold_rtx): Use swap_commutative_operands_p to determine whether to ↵Roger Sayle1-4/+5
reorder the operands of... * cse.c (fold_rtx): Use swap_commutative_operands_p to determine whether to reorder the operands of a commutative binary operator. From-SVN: r69534
2003-07-01combine.c (distribute_notes): Don't bother REG_WAS_0.Kazu Hirata1-49/+0
* combine.c (distribute_notes): Don't bother REG_WAS_0. * cse.c (cse_insn): Likewise. * final.c (final_scan_insn): Likewise. * jump.c (duplicate_loop_exit_test): Likewise. * rtl.c (reg_note_name): Remove REG_WAS_0. * rtl.h (REG_WAS_0): Remove. * unroll.c (final_reg_note_copy): Don't bother REG_WAS_0. * config/avr/avr.c (output_movqi): Don't use reg_was_0. (output_movhi): Likewise. (output_movsisf): Likewise. (reg_was_0): Remove. * config/m68hc11/m68hc11.c (m68hc11_gen_movhi): Don't use REG_WAS_0. (m68hc11_gen_movqi): Likewise. * config/vax/vax-protos.h: Remove the prototype for reg_was_0_p. * config/vax/vax.c (follows_p): Remove. (reg_was_0_p): Likewise. * config/vax/vax.md (movsi): Don't use reg_was_0_p. (movhi): Likewise. (movqi): Likewise. * doc/rtl.texi (REG_WAS_0): Remove. From-SVN: r68753
2003-06-29cse.c: Convert prototypes to ISO C90.Andreas Jaeger1-255/+139
* cse.c: Convert prototypes to ISO C90. * cselib.c: Likewise. * cselib.h: Likewise. * dbxout.c: Likewise. * debug.c: Likewise. * df.c: Likewise. * df.h: Likewise. * dojump.c: Likewise. * doloop.c: Likewise. * dominance.c: Likewise. * dwarf2asm.c: Likewise. * dwarf2out.c: Likewise. * dwarf2out.h: Likewise. * dwarfout.c: Likewise. From-SVN: r68673
2003-06-29alloc-pool.c: Fix comment formatting.Kazu Hirata1-1/+1
* alloc-pool.c: Fix comment formatting. * bitmap.c: Likewise. * bitmap.h: Likewise. * bt-load.c: Likewise. * builtins.c: Likewise. * caller-save.c: Likewise. * cfganal.c: Likewise. * cfgrtl.c: Likewise. * collect2.c: Likewise. * cse.c: Likewise. * df.c: Likewise. * diagnostic.c: Likewise. * dwarf2out.c: Likewise. * dwarfout.c: Likewise. * expmed.c: Likewise. * final.c: Likewise. * flags.h: Likewise. * fold-const.c: Likewise. * gcc.c: Likewise. * gcov-io.h: Likewise. * gcov.c: Likewise. * genattrtab.c: Likewise. * genautomata.c: Likewise. * libgcov.c: Likewise. * mips-tfile.c: Likewise. * optabs.c: Likewise. * prefix.c: Likewise. * rtlanal.c: Likewise. * stmt.c: Likewise. * stor-layout.c: Likewise. * toplev.c: Likewise. * varasm.c: Likewise. * vmsdbgout.c: Likewise. From-SVN: r68672
2003-06-27cse.c (fold_rtx): Replace the equality comparison of INTVALs with a pointer ↵Kazu Hirata1-1/+1
equality comparison. * cse.c (fold_rtx): Replace the equality comparison of INTVALs with a pointer equality comparison. From-SVN: r68600
2003-06-04cse.c (find_best_addr): Consider binary operators even if second argument is ↵Richard Henderson1-4/+3
not CONST_INT. * cse.c (find_best_addr): Consider binary operators even if second argument is not CONST_INT. From-SVN: r67463
2003-06-04Makefile.in (cse.o): Add params.h dependency.Zdenek Dvorak1-6/+10
* Makefile.in (cse.o): Add params.h dependency. * cse.c: Include params.h. (PATHLENGTH): Removed. (struct cse_basic_block_data): Make path array dynamic. (cse_end_of_basic_block): Use PARAM_MAX_CSE_PATH_LENGTH instead of PATHLENGTH. (cse_main, cse_basic_block): Allocate path array. * params.def (PARAM_MAX_CSE_PATH_LENGTH): New. From-SVN: r67433
2003-05-30cse.c (cse_insn): Simplify REG_EQUAL note on libcalls when making a ↵Roger Sayle1-14/+30
substitution. * cse.c (cse_insn): Simplify REG_EQUAL note on libcalls when making a substitution. (dead_libcall_p): If directly replacing a libcall with a constant value produces an invalid instruction, also try forcing the constant into the constant pool. * expr.c (emit_move_insn): Add a REG_EQUAL note when it is not obvious that the source is a constant. (compress_float_constant): Use set_unique_reg_note to place REG_EQUAL notes on instructions. From-SVN: r67247
2003-05-23cse.c (count_reg_usage): When processing an INSNs REG_EQUAL note containing ↵J"orn Rennecke1-1/+15
an EXPR_LIST... * cse.c (count_reg_usage): When processing an INSNs REG_EQUAL note containing an EXPR_LIST, process all the arguments. From-SVN: r67132
2003-05-03emit-rtl.c (last_call_insn, [...]): New functions.Olivier Hainque1-0/+11
* emit-rtl.c (last_call_insn, add_function_usage_to): New functions. * rtl.h (last_call_insn, add_function_usage_to): New prototypes. * builtins.c (expand_builtin_apply): Use the new emit-rtl functions. * calls.c (emit_call_1): Likewise. (expand_call): For calls initializing constant memory, replace emission of standalone mem /u clobber with function usage entry. * expr.c (emit_block_move_via_libcall): Likewise. * cse.c (count_reg_usage, case EXPR_LIST): New case. * flow.c (propagate_one_insn): Pass entire operand of CALL_INSN_FUNCTION_USAGE to mark_used_regs. * integrate.c (try_constants): For CALL_INSNs, substitute constants within the FUNCTION_USAGE also. * loop.c (prescan_loop): Note clobbers of const mem mentioned in FUNCTION_USAGE lists. * reload1.c (replace_pseudos_in): Renamed. (reload): Use it for clobbers surviving until the end of the reload. From-SVN: r66429
2003-04-10regrename.c (struct du_chain): Use a bitfield for reg_class.Dan Nicolaescu1-5/+11
2003-04-09 Dan Nicolaescu <dann@ics.uci.edu> Zack Weinberg <zack@codesourcery.com> * regrename.c (struct du_chain): Use a bitfield for reg_class. * cse.c (struct qty_table_elem, struct table_elt, struct set): Use bitfields for fields holding enum rtx_code or enum machine_mode values. Add comments explaining size choices. From-SVN: r65419
2003-04-04* cse.c (fold_rtx): Fix 03-30 change; do check insn non-null.Richard Henderson1-1/+1
From-SVN: r65249
2003-03-30cfgbuild.c (make_edges): Use tablejump_p.Richard Henderson1-11/+5
* cfgbuild.c (make_edges): Use tablejump_p. * cfgcleanup.c (label_is_jump_target_p): Likewise. * cfglayout.c (cfg_layout_can_duplicate_bb_p): Likewise. * cfgrtl.c (flow_delete_block_noexpunge): Likewise. (try_redirect_by_replacing_jump): Likewise. (redirect_edge_and_branch): Likewise. * cse.c (fold_rtx): Likewise. * jump.c (delete_related_insns): Likewise. * rtlanal.c (get_jump_table_offset): Likewise. * ssa-ccp.c (ssa_ccp_df_delete_unreachable_insns): Likewise. From-SVN: r65054
2003-03-14cselib.c (clear_table): Do not take argument; always clear just used slots.Jan Hubicka1-8/+1
* cselib.c (clear_table): Do not take argument; always clear just used slots. (cselib_process_insn): Update call of clear_table (cselib_init): Do not call clear_table. (cselib_finish): Clear table. * cse.c (count_reg_usage): Do not check side_effects_p. * rtlanal.c (set_noop_p): Check side_effects_p only when set looks like noop. (find_reg_equal_equiv_note): Do not use find_reg_note. From-SVN: r64369
2003-02-26cse.c (count_reg_usage): Fix handling of REG_EQUAL notes.Zdenek Dvorak1-7/+5
* cse.c (count_reg_usage): Fix handling of REG_EQUAL notes. * Makefile.in (loop-unroll.o): New. * cfgloop.h (UAP_PEEL, UAP_UNROLL, UAP_UNROLL_ALL): New. (unroll_and_peel_loops): Declare. * alias.c (init_alias_analysis): Flag_unroll_loops renamed to flag_old_unroll_loops. * loop.c (loop_invariant_p): Ditto. * unroll.c (unroll_loop): Flag_unroll_all_loops renamed to flag_old_unroll_all_loops. * flags.h (flag_unroll_loops): Renamed to flag_old_unroll_loops. (flag_unroll_all_loops): Renamed to flag_old_unroll_all_loops. * params.def (PARAM_MAX_UNROLLED_INSNS): Default value changed. (PARAM_MAX_AVERAGE_UNROLLED_INSNS, PARAM_MAX_UNROLL_TIMES, PARAM_MAX_PEELED_INSNS, PARAM_MAX_PEEL_TIMES, PARAM_MAX_COMPLETELY_PEELED_INSNS, PARAM_MAX_COMPLETELY_PEEL_TIMES, PARAM_MAX_ONCE_PEELED_INSNS): New. * toplev.h (flag_old_unroll_loops, flag_old_unroll_all_loops): New. (flag_unroll_loops, flag_unroll_all_loops): Used for new unroller instead of old one. (flag_peel_loops): New. (lang_independent_options): The new flags added. (rest_of_compilation): Call new unroller. (process_options): Setup flags for coexistence of old and new unroller. * doc/invoke.texi: Document new options. * doc/passes.texi: Document new unroller pass. From-SVN: r63462
2003-02-26combine.c (combine_simplify_rtx, [...]): Use CC0_P.Roger Sayle1-3/+1
* combine.c (combine_simplify_rtx, simplfy_comparison): Use CC0_P. * cse.c (invalidate_skipped_set): Likewise. * integrate.c (subst_constants): Likewise. * jump.c (reversed_comparison_code_parts): Likewise. * loop.c (canonicalize_condition): Likewise. * simplify-rtx.c (simplify_relational_operation): Likewise. From-SVN: r63446
2003-01-28* cse.c (find_best_addr): Kill !ADDRESS_COST code.Richard Henderson1-26/+6
From-SVN: r62008
2003-01-28target.h (targetm.address_cost): New.Richard Henderson1-7/+12
* target.h (targetm.address_cost): New. * target-def.h (TARGET_ADDRESS_COST): New. (TARGET_RTX_COSTS): Uncomment. Oops. * cse.c (address_cost): Use new target hook. (default_address_cost): New. * output.h (default_address_cost): Declare. * hooks.c (hook_int_rtx_0): New. * hooks.h (hook_int_rtx_0): Declare. * loop.c (combine_givs_p): Remove if 0 code. * system.h (ADDRESS_COST): Poison. * config/alpha/alpha.c, config/alpha/alpha.h, config/d30v/d30v.c, config/d30v/d30v.h, config/ia64/ia64.c, config/ia64/ia64.h, config/m32r/m32r.c, config/m32r/m32r.h, config/mcore/mcore.c, config/mcore/mcore.h, config/mmix/mmix.c, config/mmix/mmix.h, config/rs6000/rs6000.c, config/rs6000/rs6000.h, config/sparc/sparc.c, config/sparc/sparc.h, config/v850/v850.c, config/v850/v850.h, config/xtensa/xtensa.c, config/xtensa/xtensa.h (TARGET_ADDRESS_COST): Define as hook_int_rtx_0. (ADDRESS_COST): Remove. * config/arc/arc-protos.h, config/arc/arc.c, config/arc/arc.h, config/avr/avr-protos.h, config/avr/avr.c, config/avr/avr.h, config/c4x/c4x-protos.h, config/c4x/c4x.c, config/c4x/c4x.h, config/dsp16xx/dsp16xx-protos.h, config/dsp16xx/dsp16xx.c, config/dsp16xx/dsp16xx.h, config/i386/i386-protos.h, config/i386/i386.c, config/i386/i386.h, config/i960/i960-protos.h, config/i960/i960.c, config/i960/i960.h, config/ip2k/ip2k-protos.h, config/ip2k/ip2k.c, config/ip2k/ip2k.h, config/mips/mips-protos.h, config/mips/mips.c, config/mips/mips.h, config/m68hc11/m68hc11-protos.h, config/m68hc11/m68hc11.c, config/m68hc11/m68hc11.h, config/ns32k/ns32k-protos.h, config/ns32k/ns32k.c, config/ns32k/ns32k.h, config/pa/pa-protos.h, config/pa/pa.c, config/pa/pa.h, config/s390/s390-protos.h, config/s390/s390.c, config/s390/s390.h, config/vax/vax-protos.h, config/vax/vax.c, config/vax/vax.h (foo_address_cost): Make static. (TARGET_ADDRESS_COST): New. (ADDRESS_COST): Remove. * config/arm/arm.h, config/arm/arm.c, config/m88k/m88k.h, config/m88k/m88k.c, config/romp/romp.h, config/romp/romp.c, config/sh/sh.c, config/sh/sh.h, config/stormy16/stormy16.c, config/stormy16/stormy16.h (ADDRESS_COST): Move code ... (foo_address_cost): ... here. (TARGET_ADDRESS_COST): New. * config/m32r/m32r.c (m32r_address_cost): Remove. * config/m32r/m32r-protos.h: Update. * config/mmix/mmix.c (mmix_address_cost): Remove. * config/mmix/mmix-protos.h: Update. * config/mn10300/mn10300.c (mn10300_address_cost_1): Rename from mn10300_address_cost; move unsig allocation ... (mn10300_address_cost): ... here. (TARGET_ADDRESS_COST): New. * config/mn10300/mn10300-protos.h: Update. * config/mn10300/mn10300.h (ADDRESS_COST): Remove. From-SVN: r61988
2003-01-28* cse.c (cse_insn): Avoid redundant REG_EQUAL notes.Roger Sayle1-5/+9
From-SVN: r61971
2003-01-27Makefile.in (cse.o): Depend on TARGET_H.Richard Henderson1-11/+4
* Makefile.in (cse.o): Depend on TARGET_H. * cse.c (rtx_cost): Use targetm.rtx_costs. * system.h (CONST_COSTS RTX_COSTS DEFAULT_RTX_COSTS): Poison. * doc/tm.texi: Update. * target.h (targetm.rtx_costs): New. * target-def.h (TARGET_RTX_COSTS): New. * hooks.c (hook_bool_rtx_int_int_intp_false): New. * hooks.h: Update. * config/alpha/alpha.c (alpha_rtx_cost_data): New. (alpha_rtx_costs, TARGET_RTX_COSTS): New. * config/alpha/alpha.h (PROCESSOR_MAX): New. (CONST_COSTS, RTX_COSTS): Remove. * config/arc/arc.c, config/arc/arc.h, config/c4x/c4x.c, config/c4x/c4x.h, config/cris/cris.c, config/cris/cris.h, config/d30v/d30v.c, config/d30v/d30v.h, config/dsp16xx/dsp16xx.c, config/dsp16xx/dsp16xx.h, config/frv/frv.c, config/frv/frv.h, config/h8300/h8300.c, config/h8300/h8300.h, config/i370/i370.c, config/i370/i370.h, config/i386/i386.c, config/i386/i386.h, config/i960/i960.c, config/i960/i960.h, config/ia64/ia64.c, config/ia64/ia64.h, config/m32r/m32r.c, config/m32r/m32r.h, config/m68k/m68k.c, config/m68k/m68k.h, config/m88k/m88k.c, config/m88k/m88k.h, config/mcore/mcore.c, config/mcore/mcore.h, config/mips/mips.c, config/mips/mips.h, config/mn10200/mn10200.c, config/mn10200/mn10200.h, config/mn10300/mn10300.c, config/mn10300/mn10300.h, config/ns32k/ns32k.c, config/ns32k/ns32k.h, config/pa/pa.c, config/pa/pa.h, config/pdp11/pdp11.c, config/pdp11/pdp11.h, config/romp/romp.c, config/romp/romp.h, config/rs6000/rs6000.c, config/rs6000/rs6000.h, config/s390/s390.c, config/s390/s390.h, config/sh/sh.c, config/sh/sh.h, config/stormy16/stormy16.c, config/stormy16/stormy16.h, config/v850/v850.c, config/v850/v850.h, config/xtensa/xtensa.c, config/xtensa/xtensa.h (CONST_COSTS, RTX_COSTS): Move code ... (foo_rtx_costs, TARGET_RTX_COSTS): ... here. * config/arm/arm.c (arm_rtx_costs_1): Rename from arm_rtx_costs. (arm_rtx_costs, TARGET_RTX_COSTS): New. * config/arm/arm-protos.h: Update. * config/arm/arm.h (DEFAULT_RTX_COSTS): Remove. * config/avr/avr.h (CONST_COSTS): Move code ... * config/avr/avr.c (avr_rtx_costs): ... here. (default_rtx_costs): Make static. * config/avr/avr-protos.h: Update. * config/h8300/h8300.c (const_costs): Make static. (h8300_and_costs, h8300_shift_costs): Likewise. * config/h8300/h8300-protos.h: Update. * config/ip2k/ip2k.h (DEFAULT_RTX_COSTS): Remove. (CONST_COSTS): Move code ... * config/ip2k/ip2k.c (ip2k_rtx_costs): ... here. Rename from default_rtx_costs; update for signature change. * config/ip2k/ip2k-protos.h: Update. * config/m68hc11/m68hc11.h (RTX_COSTS): Remove. (CONST_COSTS): Move code ... * config/m68hc11/m68hc11.c (m68hc11_rtx_costs): ... here. (TARGET_RTX_COSTS): New. (m68hc11_rtx_costs_1): Rename from m68hc11_rtx_costs; make static. * config/m68hc11/m68hc11-protos.h: Update. * config/m68k/m68k.c (const_int_cost): Make static. * config/m68k/m68k-protos.h: Update. * config/mcore/mcore.c (mcore_const_costs): Make static. (mcore_and_cost, mcore_ior_cost): Likewise. * config/mcore/mcore-protos.h: Update. * config/mmix/mmix.c (mmix_rtx_costs, TARGET_RTX_COSTS): New. (mmix_rtx_cost_recalculated): Remove. * config/mmix/mmix.h (DEFAULT_RTX_COSTS): Remove. * config/mmix/mmix-protos.h: Update. * config/sh/sh.c (shiftcosts): Make static. (addsubcosts, andcosts, multcosts): Likewise. * config/sh/sh-protos.h: Update. * config/sparc/sparc.c (TARGET_RTX_COSTS): New. (sparc_rtx_costs): Make static; update for change in signature. * config/sparc/sparc.h (RTX_COSTS_CASES, RTX_COSTS): Remove. * config/sparc/sparc-protos.h: Update. * config/v850/v850.c (const_costs): Make static. * config/v850/v850-protos.h: Update. * config/vax/vax.h (RTX_COSTS): Remove. (CONST_COSTS): Move code ... * config/vax/vax.c (vax_rtx_costs_1): ... here; rename from vax_rtx_cost. (vax_rtx_costs, TARGET_RTX_COSTS): New. From-SVN: r61954
2003-01-25cse.c (fold_rtx): Instantiate CONSTANT_P_RTX to 0 when not optimizing, even ↵Roger Sayle1-1/+1
if flag_gcse is true. * cse.c (fold_rtx): Instantiate CONSTANT_P_RTX to 0 when not optimizing, even if flag_gcse is true. * toplev.c (rest_of_compilation): purge_builtin_constant_p only needs to be called when "optimize > 0 && flag_gcse". From-SVN: r61785
2003-01-25i386.c (ix86_expand_movstr, [...]): Consistently do libcall for large blocks.Jan Hubicka1-0/+3
* i386.c (ix86_expand_movstr, ix86_expand_clrstr): Consistently do libcall for large blocks. * i386.md (comi patterns): Set type to ssecomi. (sse2_unpck?pd): Fix mode of vec_select. * cse.c: Include except.h (cse_set_around_loop): Do not create new basic blocks. * Makefile.in (cse.o): Add dependnecy on except.h From-SVN: r61772
2003-01-23re PR rtl-optimization/8423 (CSE1 not propagating __builtin_constant_p enough)Roger Sayle1-3/+8
PR optimization/8423 * cse.c (fold_rtx): Only eliminate a CONSTANT_P_RTX to 1 when its argument is constant, or 0 if !flag_gcse. * simplify-rtx.c (simplify_rtx): Convert CONSTANT_P_RTX to 1 if it's argument is constant. * gcse.c (want_to_gcse_p): Ignore CONSTANT_P_RTX nodes. (hash_scan_set): Don't record CONSTANT_P_RTX expressions. (do_local_cprop): Don't propagate CONSTANT_P_RTX constants. * builtins.c (purge_builtin_constant_p): New function to force instantiation of any remaining CONSTANT_P_RTX nodes. * rtl.h (purge_builtin_constant_p): Prototype here. * toplev.c (rest_of_compilation): Invoke purge_builtin_constant_p pass after GCSE and before loop. (flag_gcse): No longer static. * flags.h (flag_gcse): Prototype here. From-SVN: r61642
2003-01-21cse.c (cse_insn): Avoid RTL sharing when updating the RETVAL insn's notes ↵Roger Sayle1-4/+4
following a... * cse.c (cse_insn): Avoid RTL sharing when updating the RETVAL insn's notes following a substitution inside a libcall. From-SVN: r61524
2002-12-16Merge basic-improvements-branch to trunkZack Weinberg1-75/+53
From-SVN: r60174
2002-12-10cse.c (cse_insn): Don't cse past a basic block boundary.Andrew Haley1-2/+10
2002-12-10 Andrew Haley <aph@redhat.com> * cse.c (cse_insn): Don't cse past a basic block boundary. From-SVN: r60000
2002-10-28ChangeLog.1: Fix typos.Kazu Hirata1-1/+1
* ChangeLog.1: Fix typos. * cse.c: Fix a comment typo. * reload1.c: Likewise. From-SVN: r58596
2002-10-12cse.c (mention_regs): Set SUBREG_TICKED to the register number, not the ↵Geoffrey Keating1-3/+3
address of the REG. * cse.c (mention_regs): Set SUBREG_TICKED to the register number, not the address of the REG. (struct cse_reg_info): Make subreg_ticked unsigned. From-SVN: r58075
2002-10-10cse.c (struct cse_reg_info): Add subreg_ticked.Stuart Hastings1-7/+30
2002-10-10 Stuart Hastings <stuart@apple.com> * cse.c (struct cse_reg_info): Add subreg_ticked. (SUBREG_TICKED): New. (get_cse_reg_info): Initialize SUBREG_TICKED. (mention_regs): Use it. (invalidate): Set SUBREG_TICKED. (invalidate_for_call): Likewise. (addr_affects_sp_p): Likewise. From-SVN: r58035
2002-10-10Fix miscompilation of testcase 20021010-1.c for v850 target with -O -mv850e.Jim Wilson1-5/+11
* cse.c (fold_rtx): Don't perform associative optimization for DIV and UDIV. From-SVN: r58026
2002-10-09cse.c (insn_live_p): Pass insn pattern, not full insn to may_trap_p.Ulrich Weigand1-1/+1
* cse.c (insn_live_p): Pass insn pattern, not full insn to may_trap_p. From-SVN: r57982
2002-10-01flow.c (insn_dead_p): When using non-call-exceptions, don't eliminate insns ↵Andrew Haley1-1/+3
that may trap. 2002-09-30 Andrew Haley <aph@redhat.com> * flow.c (insn_dead_p): When using non-call-exceptions, don't eliminate insns that may trap. * cse.c (insn_live_p): Likewise. From-SVN: r57688
2002-09-22ChangeLog: Follow spelling conventions.Kazu Hirata1-10/+10
* ChangeLog: Follow spelling conventions. * ChangeLog.0: Likewise. * ChangeLog.1: Likewise. * ChangeLog.2: Likewise. * ChangeLog.3: Likewise. * ChangeLog.4: Likewise. * ChangeLog.5: Likewise. * ChangeLog.6: Likewise. * FSFChangeLog.10: Likewise. * FSFChangeLog.11: Likewise. * alias.c: Likewise. * basic-block.h: Likewise. * c-aux-info.c: Likewise. * c-common.c: Likewise. * c-common.h: Likewise. * c-decl.c: Likewise. * c-format.c: Likewise. * c-semantics.c: Likewise. * c-typeck.c: Likewise. * calls.c: Likewise. * cfganal.c: Likewise. * cfgloop.c: Likewise. * collect2.c: Likewise. * combine.c: Likewise. * conflict.c: Likewise. * cppexp.c: Likewise. * cppfiles.c: Likewise. * cpphash.h: Likewise. * cppinit.c: Likewise. * cpplex.c: Likewise. * cpplib.c: Likewise. * cpplib.h: Likewise. * cppmacro.c: Likewise. * cse.c: Likewise. From-SVN: r57398