summaryrefslogtreecommitdiff
path: root/gcc/reload.c
Commit message (Collapse)AuthorAgeFilesLines
* gcc/rsandifo2006-09-131-3/+9
| | | | | | | | | | | | | | | | PR rtl-optimization/28982 * reload.c (find_reloads_address_1): Use RELOAD_OTHER for the index of a PRE_MODIFY or POST_MODIFY address. * reload1.c (inc_for_reload): Use find_replacement on the original base and index registers. gcc/testsuite/ PR rtl-optimization/28982 * gcc.c-torture/execute/pr28982a.c: New test. * gcc.c-torture/execute/pr28982b.c: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@116919 138bc75d-0d04-0410-961f-82ee72b054a4
* PR target/28146aoliva2006-08-171-0/+38
| | | | | | | | | | | | | | * reload.h (reg_equiv_alt_mem_list): New declaration. * reload1.c (reg_equiv_alt_mem_list): New definition. (reload): Initialize it and release it. (delete_output_reload): Use it. * reload.c (push_reg_equiv_alt_mem): New function. (find_reloads_toplev): Call it. (find_reloads_address, find_reloads_address_1): Likewise. (find_reloads_subreg_address): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@116215 138bc75d-0d04-0410-961f-82ee72b054a4
* PR target/26655hubicka2006-08-041-1/+19
| | | | | | | | | PR target/28270 * reload.c (push_reload): Patch out the mismathcing instruction; return early. (find_reload): Bail out if the instruction was patched out. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@115928 138bc75d-0d04-0410-961f-82ee72b054a4
* PR target/27858sayle2006-06-121-4/+2
| | | | | | | | | | | Revert incorrect fix for PR target/27158 2006-05-08 Roger Sayle <roger@eyesopen.com> * reload.c (find_reloads_toplev): Only return the simplified SUBREG of a reg_equiv_constant if the result is a legitimate constant. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@114559 138bc75d-0d04-0410-961f-82ee72b054a4
* 2006-06-09 Andreas Krebbel <krebbel1@de.ibm.com>krebbel2006-06-091-0/+1
| | | | | | | | * reload.c (find_reloads): Unset force_reload for 'X' constraint. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@114508 138bc75d-0d04-0410-961f-82ee72b054a4
* * cfgcleanup.c, cfgexpand.c, cgraphunit.c, config/arm/arm.c,kazu2006-05-281-1/+1
| | | | | | | | | | | | | | | | config/fr30/fr30.md, config/i386/i386-interix.h, config/i386/i386.c, config/i386/i386.md, config/sh/superh.h, config/sh/superh64.h, config/v850/v850.c, df-core.c, df-problems.c, df.h, except.c, final.c, haifa-sched.c, lambda-code.c, libgcc2.h, omp-low.c, optabs.c, predict.c, reload.c, tree-flow.h, tree-outof-ssa.c, tree-ssa-dce.c, tree-ssa-pre.c, tree-vect-transform.c: Fix comment typos. Follow spelling conventions. * doc/invoke.texi, doc/rtl.texi, doc/tm.texi: Fix typos. Follow spelling conventions. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@114168 138bc75d-0d04-0410-961f-82ee72b054a4
* PR rtl-optimization/27661uweigand2006-05-261-1/+9
| | | | | | | | | | | | * reload.c (find_reloads): When reloading a VOIDmode constant as address due to an EXTRA_MEMORY_CONSTRAINT or 'o' constraint, use Pmode as mode of the reload register. PR rtl-optimization/27661 * gcc.dg/pr27661.c: New test case. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@114141 138bc75d-0d04-0410-961f-82ee72b054a4
* PR target/27158sayle2006-05-081-5/+9
| | | | | | | | | | | * reload.c (find_reloads_toplev): Only return the simplified SUBREG of a reg_equiv_constant if the result is a legitimate constant. * gcc.target/powerpc/pr27158.c: New test case. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@113632 138bc75d-0d04-0410-961f-82ee72b054a4
* 2006-04-17 Richard Guenther <rguenther@suse.de>rguenth2006-04-171-2/+6
| | | | | | | | | PR target/26826 * reload.c (push_reload): Guard calls to get_secondary_mem for memory subregs. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@113007 138bc75d-0d04-0410-961f-82ee72b054a4
* * reload.c (find_dummy_reload): Fix typo in 2006-04-03 change.amodra2006-04-051-1/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@112705 138bc75d-0d04-0410-961f-82ee72b054a4
* 2005-08-08 Paolo Bonzini <bonzini@gnu.org>bonzini2006-04-031-18/+41
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Dale Johannesen <dalej@apple.com> PR target/19653 * regclass.c (struct reg_pref): Update documentation. (regclass): Set prefclass to NO_REGS if memory is the best option. (record_reg_classes): Cope with a prefclass set to NO_REGS. * reload.c (find_reloads): Take PREFERRED_OUTPUT_RELOAD_CLASS into account. For non-registers, equate an empty preferred reload class to a `!' in the constraint; move the if clause to do so after those that reject the insn. (push_reload): Allow PREFERRED_*_RELOAD_CLASS to liberally return NO_REGS. (find_dummy_reload): Likewise. * doc/tm.texi (Register Classes): Document what it means if PREFERRED_*_RELOAD_CLASS return NO_REGS. * config/i386/i386.c (ix86_preferred_reload_class): Force using SSE registers (and return NO_REGS for floating-point constants) if math is done with SSE. (ix86_preferred_output_reload_class): New. * config/i386/i386-protos.h (ix86_preferred_output_reload_class): New. * config/i386/i386.h (PREFERRED_OUTPUT_RELOAD_CLASS): New. * config/i386/i386.md: Remove # register preferences. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@112637 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/bfin/bfin-protos.h (bfin_dsp_memref_p): Declare.bernds2006-03-211-95/+134
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * config/bfin/bfin.c (bfin_dsp_memref_p): New function. (bfin_valid_reg_p): Test for pseudos explicitly and use only REGNO_MODE_CODE_OK_FOR_BASE_P. New args MODE and OUTER_CODE; all callers changed. * config/bfin/bfin.h (PREG_P): Use P_REGNO_P. (IREG_P, P_REGNO_P, I_REGNO_P): New macros. (enum reg_class, REG_CLASS_CONTENTS): Add IPREGS. (BASE_REG_CLASS, REG_OK_FOR_BASE_P, REG_OK_FOR_INDEX_P, REGNO_OK_FOR_BASE_STRICT_P, REGNO_OK_FOR_BASE_NONSTRICT_P): Delete macros. (IREG_POSSIBLE_P, MODE_CODE_BASE_REG_CLASS, REGNO_MODE_CODE_OK_FOR_BASE_P): New macros. (REGNO_REG_CLASS): ARGP is in PREGS. * config/bfin/bfin.md (movhi_insn): Allow for addresses containing IREGS. (zero_extendhisi2, extendhisi2): Likewise; changed to define_and_split to deal with those addresses. * addresses.h: New file. * caller-save.c: Include "addresses.h". (init_caller_save): Use new base_reg_class function. * rtl-factoring.c: Include "addresses.h". (recompute_gain_for_pattern_seq): Use new function ok_for_base_p_1. * recog.c: Include "addresses.h". (preprocess_constraints): Use new base_reg_class function. * regrename.c: Include "addresses.h". (scan_rtx_address): Use new regno_ok_for_base_p and base_reg_class functions. Keep track of a new var INDEX_CODE to compute valid classes. (replace_oldest_value_addr): Likewise. (replace_oldest_value_mem): Use base_reg_class. * reload.c: Include "addresses.h". (REGNO_MODE_OK_FOR_BASE_P, REG_MODE_OK_FOR_BASE_P): Delete macros. (find_reloads): Use new base_reg_class function. (find_reloads_address): Likewise; also use regno_ok_for_base_p. (find_reloads_address_1): Likewise. New args OUTER_CODE and INDEX_CODE; all callers and prototype changed. * reload1.c: Include "addresses.h". (maybe_fix_stack_asms): Use base_reg_class. * regclass.c: Include "addresses.h". (ok_for_index_p_nonstrict, ok_for_base_p_nonstrict): New functions. (init_reg_autoinc): Use new base_reg_class function. (record_reg_classes): Likewise. (record_address_regs): Delete arg CLASS; add args CONTEXT, MODE, OUTER_CODE and INDEX_CODE. All callers and prototype changed. Use new args to compute necessary class. * Makefile.in (regclass.o, reload.o, reload1.o, caller-save.o, recog.o, regrename.o, rtl-factoring.o): Update dependencies. * doc/tm.texi (MODE_CODE_BASE_REG_CLASS): Document. (REGNO_MODE_CODE_OK_FOR_BASE_P): Likewise. (REG_OK_FOR_BASE_P, REG_MODE_OK_FOR_BASE_P, REG_MODE_OK_FOR_REG_BASE_P, REG_OK_FOR_INDEX_P): Delete documentation. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@112248 138bc75d-0d04-0410-961f-82ee72b054a4
* 2006-02-16 Denis Nagorny <denis_nagorny@linux.intel.com>hjl2006-02-171-4/+40
| | | | | | | | | | | PR rtl-optimization/25603 * reload.c (reg_inc_found_and_valid_p): New. Check REG_INC note. (regno_clobbered_p): Use it. Reusing SETS argument for REG_INC case. * reload1.c (choose_reload_regs): Added call of regno_clobbered_p with new meaning of SETS. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@111162 138bc75d-0d04-0410-961f-82ee72b054a4
* * reload.c (push_secondary_reload): Initialize t_icode.bernds2006-02-011-2/+3
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@110485 138bc75d-0d04-0410-961f-82ee72b054a4
* * reload.c (reg_overlap_mentioned_for_reload_p): Handle subregs ofdj2006-01-171-0/+2
| | | | | | | mems. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@109792 138bc75d-0d04-0410-961f-82ee72b054a4
* PR rtl-optimization/21041uweigand2005-12-181-1/+1
| | | | | | | | | | | | * reload.c (find_reloads_subreg_address): Replace paradoxical subreg of MEM by widened access only if the resulting memory is properly aligned, even on !STRICT_ALIGNMENT targets. PR rtl-optimization/21041 * gcc.dg/pr21041.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@108760 138bc75d-0d04-0410-961f-82ee72b054a4
* * reload.c (find_reloads): Fix comment typo.amodra2005-12-161-1/+1
| | | | | | | | * recog.h (recog_memoized): Correct comment. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@108627 138bc75d-0d04-0410-961f-82ee72b054a4
* * basic-block.h, config/i386/winnt.c, config/pa/pa.c,kazu2005-12-161-1/+1
| | | | | | | | | | config/s390/s390.c, dfp.c, expr.c, fold-const.c, params.def, reload.c, struct-equiv.c, tree-ssa-ccp.c, tree-ssa-pre.c, tree-ssa-reassoc.c, tree-ssa-structalias.c: Fix comment typos. * doc/invoke.texi, doc/tm.texi: Fix typos. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@108626 138bc75d-0d04-0410-961f-82ee72b054a4
* 2005-12-07 J"orn Rennecke <joern.rennecke@st.com>amylaar2005-12-071-1/+1
| | | | | | | | | * reload.h (reg_equiv_invariant): Declare. * reload.c (refers_to_regno_for_reload_p): Allow R to be a pseudo register also when reg_equiv_invariant[R] is set. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@108195 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc/reload.c (push_secondary_reload): Fix typo:rsandifo2005-12-071-1/+1
| | | | | | | s/insn_constraint/scratch_constraint/. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@108154 138bc75d-0d04-0410-961f-82ee72b054a4
* PR target/21623:amylaar2005-11-241-155/+100
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * regclass.c (FORBIDDEN_INC_DEC_CLASSES): Remove SECONDARY_INPUT_RELOAD_CLASS and SECONDARY_OUTPUT_RELOAD_CLASS tests. (init_fake_stack_mems): Remove HAVE_SECONDARY_RELOADS test. (memory_move_secondary_cost, init_reg_autoinc): Remove SECONDARY_INPUT_RELOAD_CLASS / SECONDARY_OUTPUT_RELOAD_CLASS tests. Replace SECONDARY_{IN,OUT}PUT_RELOAD_CLASS use with secondary_reload_class call. (copy_cost): Likewise. Add new parameter prev_sri. Changed all callers. * reload.c (entire file): Remove HAVE_SECONDARY_RELOADS checks. (push_secondary_reload): Use secondary_reload target hook. (secondary_reload_class, scratch_reload_class): New functions. (push_reload): Remove SECONDARY_INPUT_RELOAD_CLASS and SECONDARY_OUTPUT_RELOAD_CLASS tests. Replace SECONDARY_{IN,OUT}PUT_RELOAD_CLASS use with secondary_reload_class call. * reload.h (HAVE_SECONDARY_RELOADS): Don't define nor test. (secondary_reload_class, scratch_reload_class): Declare. * reload1.c: Include target.h. (reload_adjust_reg_for_temp): New function. (reload_adjust_reg_for_icode): Likewise. (choose_reload_regs): Remove SECONDARY_INPUT_RELOAD_CLASS test. Replace SECONDARY_INPUT_RELOAD_CLASS use with secondary_reload_class call. (emit_input_reload_insns): Likewise. Rewrite secondary reload checks for inheritance. Support case when both secondary & tertiary reloads are for intermediate registers. (emit_output_reload_insns): Replace SECONDARY_OUTPUT_RELOAD_CLASS use with secondary_reload_class call. Support case when both secondary & tertiary reloads are for intermediate registers. * target-def.h (TARGET_SECONDARY_RELOAD): Provide default definition. (TARGET_INITIALIZER) Add TARGET_SECONDARY_RELOAD. * target.h (secondary_reload_info): New struct / typedef. (struct gcc_target): New member secondary_reload. * targhooks.c Include reload.h, optabs.h and recog.h. (default_secondary_reload): New function. * targhooks.h (default_secondary_reload): Declare. * doc/tm.texi: Document secondary_reload target hook. Update description of SECONDARY_*RELOAD_CLASS and reload_{in,out}<mode>. * doc/md.texi: Likewise. * sh-protos.h (sh_secondary_reload): Declare. * sh.c (TARGET_SECONDARY_RELOAD): Override. (sh_secondary_reload): New function. * sh.h (SECONDARY_INOUT_RELOAD_CLASS): Don't define. (SECONDARY_OUTPUT_RELOAD_CLASS): Likewise. (SECONDARY_INPUT_RELOAD_CLASS): Likewise. (HAVE_SECONDARY_RELOADS): Define. * sh.md (reload_indf): Rename to: (reload_indf__frn). (reload_outdf): Rename to: (reload_outdf__RnFRm). (reload_insf): Rename to: (reload_insf__frn). (reload_insi): Rename to: (reload_insi__i_fpul). git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@107468 138bc75d-0d04-0410-961f-82ee72b054a4
* * optabs.c (expand_abs_nojump): Use SCALAR_FLOAT_MODE_P instead ofbje2005-11-211-5/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | explicitly testing GET_MODE_CLASS (x) == MODE_FLOAT. * genopinit.c (gen_insn): Likewise. * reload.c (find_equiv_reg): Likewise. * loop.c (load_mems): Likewise. * rtlanal.c (may_trap_p_1, canonicalize_condition): Likewise. * cse.c (find_comparison_args, fold_rtx): Likewise. * dwarf2out.c (add_const_value_attribute): Likewise. * expr.c (convert_move): Likewise. * recog.c (general_operand, register_operand): Likewise. * reg-stack.c (replace_reg): Likewise. * tree-vect-generic.c (type_for_widest_vector_mode): Likewise. * c-common.c (handle_vector_size_attribute): Likewise. * simplify-rtx.c (simplify_const_unary_operation): Likewise. (simplify_binary_operation_1): Likewise. (simplify_const_binary_operation): Likewise. (simplify_relational_operation): Likewise. (simplify_const_relational_operation): Likewise. (simplify_immed_subreg): Likewise. * emit-rtl.c (gen_lowpart_common): Likewise. * expmed.c (expand_mult): Likewise. * stor-layout.c (layout_type): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@107322 138bc75d-0d04-0410-961f-82ee72b054a4
* PR middle-end/24912hp2005-11-191-1/+3
| | | | | | | | | | | | | PR middle-end/24750 * reload.c (find_reloads_address_1): Mention dependency on gen_reload. * reload1.c (gen_reload): For IN with an unary operation, try moving inner expression to OUT if trivial SET is not valid. Confirm that the result is valid. Move common code block into... (emit_insn_if_valid_for_reload): New function. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@107231 138bc75d-0d04-0410-961f-82ee72b054a4
* PR middle-end/24750hp2005-11-111-0/+18
| | | | | | | | * reload.c (find_reloads_address_1) <case TRUNCATE, SIGN_EXTEND, ZERO_EXTEND>: New cases. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@106804 138bc75d-0d04-0410-961f-82ee72b054a4
* 2005-10-05 Andrew Pinski <pinskia@physics.uc.edu>pinskia2005-10-051-3/+6
| | | | | | | | | | PR middle-end/20606 PR middle-end/24069 * reload.c (subst_reloads): When adding a REG_LABEL to a jump instruction, also update JUMP_LABEL. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@105013 138bc75d-0d04-0410-961f-82ee72b054a4
* PR middle-end/23135amylaar2005-08-051-2/+3
| | | | | | | | * reload.c (find_reloads_subreg_address): Pass down TYPE unchanged. Change all callers except find_reloads_toplev. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@102772 138bc75d-0d04-0410-961f-82ee72b054a4
* * cse.c (exp_equiv_p): Special case CONST_DOUBLE.rth2005-07-291-7/+17
| | | | | | | | | | | | | * cselib.c (rtx_equal_for_cselib_p): Likewise. * jump.c (rtx_renumbered_equal_p): Likewise. * loop.c (rtx_equal_for_loop_p): Tidy and special case PC, CC0, CONST_INT and CONST_DOUBLE. (rtx_equal_for_prefetch_p): Likewise, plus LABEL_REF. * reload.c (operands_match_p): Special case CONST_INT and CONST_DOUBLE; check mode earlier. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@102548 138bc75d-0d04-0410-961f-82ee72b054a4
* Update FSF address.kcook2005-06-251-2/+2
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@101317 138bc75d-0d04-0410-961f-82ee72b054a4
* * basic-block.h (rtl_bb_info): Break out head_, end_,hubicka2005-06-161-2/+2
| | | | | | | | | | | | | | | | | | | | global_live_at_start, global_live_at_end from ... (basic_block_def): ... here; update all references (BB_RTL): New flag. (init_rtl_bb_info): Declare. * cfgexpand.c (expand_gimple_basic_block): Init bb info, set BB_RTL flag. * cfgrtl.c: Include ggc.h (create_basic_block_structure): Init bb info. (rtl_verify_flow_info_1): Check BB_RTL flag and rtl_bb_info pointer. (init_rtl_bb_info): New function. (rtl_merge_block, cfglayout_merge_block): Copy global_live_at_end here. * cfghooks.c (merge_block): Do not copy global_live_at_end here. * cfg.c (clear_bb_flags): Skip BB_RTL flag. (dump_flow_info): Gueard global_live_* dumping. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@101082 138bc75d-0d04-0410-961f-82ee72b054a4
* Prevent out-of-bounds array access in reload.wilson2005-04-281-2/+2
| | | | | | | | | PR rtl-optimization/18877 * reload.c (decompose) <case REG, case SUBREG>: Handle pseudo reg number in val.start. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@98938 138bc75d-0d04-0410-961f-82ee72b054a4
* * lambda.h (lambda_vector_min_nz): Likewise.nathan2005-04-211-10/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * langhooks.h (struct lang_hooks_for_types, struct lang_hooks): Likewise. * output.h (assemble_integer, this_is_asm_operands): Likewise. * tree.h: Likewise. * vec.h: Likewise. * tree-flow-inline.h (relink_imm_use): Use gcc_assert. * optabs.c (prepare_cmp_insn, emit_cmp_and_jump_insns): Reword comments to avoid 'abort'. Use gcc_assert as necessary. * opts.c (common_handle_option): Likewise. * pretty-print.c (pp_base_format_text): Likewise. * print-rtl.c (print_rtx): Likewise. * read-rtl.c (read_rtx_filename, read_rtx_1): Likewise. * regmove.c (try_auto_increment): Likewise. * reload.c (find_valid_class, find_reloads_toplev, find_equiv_reg): Likewise. * reload1.c (reload, forget_old_reloads_1, function_invariant_p, merge_assigned_reloads): Likewise. * tree-inline.c (inline_forbidden_p_1, estimate_num_insns_1): Likewise. * tree-optimize.c (execute_todo): Likewise. * tree-outof-ssa.c (eliminate_phi): Likewise. * tree-ssa-alias.c (add_pointed_to_expr): Likewise. * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Likewise. * tree-ssa-operands.c (parse_ssa_operands, get_indirect_ref_operands, create_ssa_artficial_load_stmt): Likewise. * tree-ssa-pre.c (find_or_generate_expression): Likewise. * tree-ssanames.c (release_ssa_name): Likewise. * tree.c (int_bit_position, int_byte_position, tree_low_cst, walk_tree): Likewise. * tree-ssa-operands.c (verify_abort): Fold into .. (verify_imm_links): ... here. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@98519 138bc75d-0d04-0410-961f-82ee72b054a4
* PR20973matz2005-04-201-2/+17
| | | | | | | | * reload.c (push_reload, find_dummy_reload): Check for uninitialized pseudos. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@98460 138bc75d-0d04-0410-961f-82ee72b054a4
* * reload.c (operands_match_p): Only increment register number fordje2005-02-241-2/+5
| | | | | | | SCALAR_INT_MODE_P modes in multiple hard registers. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@95519 138bc75d-0d04-0410-961f-82ee72b054a4
* * reload.c (find_reloads): Swap address_reloaded flags whenuweigand2005-02-141-0/+4
| | | | | | | swapping commutative operands. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@95018 138bc75d-0d04-0410-961f-82ee72b054a4
* 2005-02-11 Dale Johannesen <dalej@apple.com>dalej2005-02-111-2/+4
| | | | | | | | | * cselib.c (cselib_process_insn): Clear out regs where HARD_REGNO_CALL_PART_CLOBBERED is true at a call. * reload.c (find_equiv_reg): Ditto. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@94885 138bc75d-0d04-0410-961f-82ee72b054a4
* * harg-reg-set.h (reg_class_names): Prototype global array.sayle2005-01-151-3/+1
| | | | | | | | | | | | | | | | * regclass.c (reg_class_names): Declare here and initialize to REG_CLASS_NAMES. (dump_regclass): Remove local declaration of reg_class_names. (regclass): Likewise. * cfg.c (dump_flow_info): Likewise. * ra-debug.c (reg_class_names): Likewise. * regrename.c (reg_class_names): Likewise. * reload.c (reg_class_names): Likewise. * reload1.c (spill_failure): Likewise. * config/m68hc11/m68hc11.c (reg_class_names): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@93696 138bc75d-0d04-0410-961f-82ee72b054a4
* * combine.c (expand_compound_operation) <ZERO_EXTRACT>: Addsteven2005-01-051-2/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | comment that we fall through after case. (mark_used_regs_combine): Don't expect a SIGN_EXTRACT in a SET_DEST. (distribute_links): Likewise. * cse.c (cse_insn): Likewise. * cselib.c (cselib_invalidate_mem): Likewise. * df.c: Update comments at the top of the file. (read_modify_subreg_p): Update comments here too. (df_def_record_1): Don't expect a SIGN_EXTRACT in a SET_DEST. * flow.c (mark_set_1): Likewise. (mark_used_regs): Likewise. * gcse.c (mems_conflict_for_gcse_p): Likewise. (canon_list_insert): Likewise. (mark_set): Likewise. (try_replace_reg): Likewise. (store_killed_in_insn): Likewise. * loop.c (count_one_set): Likewise. (basic_induction_var): Likewise. * postreload-gcse.c (find_mem_conflicts): Likewise. * postreload.c (reload_combine_note_store): Likewise. (move2add_note_store): Likewise. * reload.c (find_equiv_reg): Likewise. (mark_referenced_resources): Likewise. * rtlanal.c (set_noop_p): Likewise. (note_stores): Likewise. (note_uses): Likewise. * sched-deps.c (sched_analyze_1): Likewise. * sched-rgn.c (check_live_1): Likewise. (update_live_1): Likewise. * config/i860/i860.c: Likewise. * rtl.dec (SIGN_EXTRACT): Document that this cannot appear as an lvalue. (ZERO_EXTRACT): Mention that this one can be an lvalue. * doc/rtl.texi: Update documentation for bit-fields and SET. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@92974 138bc75d-0d04-0410-961f-82ee72b054a4
* * reload.c (regno_clobbered_p): Add a gcc_assert that regnosayle2004-12-231-2/+7
| | | | | | | refers to a hard register. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@92574 138bc75d-0d04-0410-961f-82ee72b054a4
* PR target/18511kkojima2004-12-231-1/+2
| | | | | | | | | * reload1.c (emit_output_reload_insns): Check if OLD is a hard register before calling regno_clobbered_p. * reload.c: Update comment for regno_clobbered_p. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@92531 138bc75d-0d04-0410-961f-82ee72b054a4
* * reload.c (SMALL_REGISTER_CLASS_P): New.aoliva2004-12-151-7/+15
| | | | | | | | (push_secondary_reload, find_reusable_reload, find_reloads): Use it instead of testing only the class size. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@92221 138bc75d-0d04-0410-961f-82ee72b054a4
* * reload.c (find_valid_class): Fix logic to test inner mode as well.dj2004-12-071-15/+26
| | | | | | | (push_reload): Pass inner mode. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@91802 138bc75d-0d04-0410-961f-82ee72b054a4
* * function.h (struct function): Remove calls_longjmp.zack2004-11-231-4/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (current_function_calls_longjmp): Delete. * tree.h (ECF_LONGJMP): Delete. (ECF_SIBCALL, ECF_PURE, ECF_SP_DEPRESSED, ECF_ALWAYS_RETURN) (ECF_LIBCALL_BLOCK): Everybody slide down one. (ECF_CONST, ECF_NORETURN, ECF_SIBCALL): Clarify comments. * builtins.c (expand_builtin_longjmp): Don't set current_function_calls_longjmp. * calls.c (special_function_p): Mark longjmp and siglongjmp with ECF_NORETURN, not ECF_LONGJMP. (emit_call_1, expand_call, emit_library_call_value_1): Don't check for ECF_LONGJMP. * tree-cfg.c (make_exit_edges, is_ctrl_altering_stmt) (need_fake_edge_p): Likewise. * config/avr/avr.h, config/ip2k/ip2k.h: Don't define NON_SAVING_SETJMP. * system.h: Poison NON_SAVING_SETJMP. * function.c (use_register_for_decl) * gcse.c (compute_hash_table_work, compute_store_table) * postreload-gcse.c (record_opr_changes) * reload.c (find_equiv_reg) * reload1.c (reload) * config/i386/i386.c (ix86_can_use_return_insn_p): Remove code conditional on NON_SAVING_SETJMP. * doc/tm.texi: Delete documentation of NON_SAVING_SETJMP. * config/i386/sysv3.h: Delete file. * config/i386/i386.c (ix86_svr3_asm_out_constructor): Delete. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@91101 138bc75d-0d04-0410-961f-82ee72b054a4
* * reload.c (refers_to_mem_for_reload_p,kazu2004-11-091-2/+5
| | | | | | | | refers_to_regno_for_reload_p): Make them static. * reload.h: Remove the corresponding prototypes. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@90349 138bc75d-0d04-0410-961f-82ee72b054a4
* * reload.c (find_reloads): When reloading a PLUS with constantuweigand2004-10-141-0/+21
| | | | | | | | | | | operand, make sure the constant is pushed to the constant pool if required. * config/s390/s390.c (s390_secondary_input_reload_class): Remove reload bug workaround. (s390_expand_plus_operand): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@89047 138bc75d-0d04-0410-961f-82ee72b054a4
* * defaults.h (REGNO_MODE_OK_FOR_BASE_P, REG_MODE_OK_FOR_BASE_P)drow2004-10-121-42/+41
| | | | | | | | | | | | | | | | | | | | | | | | (MODE_BASE_REG_REG_CLASS, REGNO_MODE_OK_FOR_REG_BASE_P) (REG_MODE_OK_FOR_REG_BASE_P): Provide default definitions. * regclass.c (record_address_regs): Remove ifdef. Use REG_MODE_OK_FOR_REG_BASE_P and MODE_BASE_REG_REG_CLASS. * regrename.c (REG_MODE_OK_FOR_BASE_P): Remove unnecessary definition. (scan_rtx_address, replace_oldest_value_addr): Use REG_MODE_OK_FOR_REG_BASE_P and MODE_BASE_REG_REG_CLASS. * reload.c (REGNO_MODE_OK_FOR_BASE_P, REG_MODE_OK_FOR_BASE_P): Remove unnecessary definitions. (find_reloads_address_1): Support REG_MODE_OK_FOR_REG_BASE_P and MODE_BASE_REG_REG_CLASS. * config/arm/arm.h (MODE_BASE_REG_CLASS): Don't check reload_completed. (MODE_BASE_REG_REG_CLASS): Define. (REGNO_MODE_OK_FOR_REG_BASE_P): Define. (REG_MODE_OK_FOR_REG_BASE_P): Define. * doc/tm.texi (Register Classes): Document MODE_BASE_REG_REG_CLASS, REG_MODE_OK_FOR_REG_BASE_P, and REGNO_MODE_OK_FOR_REG_BASE_P. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@88948 138bc75d-0d04-0410-961f-82ee72b054a4
* gcc:jsm282004-09-151-5/+8
| | | | | | | | | | | | | | | | | | | | | | | | | * attribs.c, builtins.c, c-format.c, c-pch.c, coverage.c, except.c, fold-const.c, function.c, langhooks.c, params.c, reload.c, reload1.c, stmt.c, stor-layout.c, toplev.c, tree-cfg.c, tree-dump.c, tree-mudflap.c, tree.c, varasm.c: Use %<, %> and %q for quoting in diagnostics going through pretty-print.c. Use '' for quoting in other diagnostic text. * langhooks.c: Include intl.h. Mark text locating diagnostics for translation. * Makefile.in (langhooks.o): Update dependencies. * pretty-print.h (pp_printf): Mark as accepting GCC diagnostic formats. gcc/testsuite: * g++.dg/ext/member-attr.C, g++.dg/warn/deprecated.C, gcc.dg/deprecated.c, gcc.dg/noreturn-1.c, gcc.dg/noreturn-4.c: Update expected messages. libmudflap: * testsuite/libmudflap.c/pass35-frag.c: Update expected message. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@87563 138bc75d-0d04-0410-961f-82ee72b054a4
* * reload.c (find_reloads_address): Pass correct operand touweigand2004-09-091-1/+1
| | | | | | | maybe_memory_address_p. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@87254 138bc75d-0d04-0410-961f-82ee72b054a4
* * ra-build.c (copy_insn_p, remember_move, defuse_overlap_p_1,nathan2004-09-091-222/+202
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | live_out_1, prune_hardregs_for_mode, init_one_web_common, reinit_one_web, add_subweb, add_subweb_2, init_web_parts, record_conflict, compare_and_free_webs, init_webs_defs_uses, parts_to_webs_1, parts_to_webs, reset_conflicts, check_conflict_numbers, remember_web_was_spilled, handle_asm_insn, ra_build_free): Use gcc_assert and gcc_unreachable instead of abort. * ra-colorize.c (push_list, put_web, reset_lists, put_web_at_end, put_move, remove_move, combine, select_spill, colorize_one_web, try_recolor_web, insert_coalesced_conflicts, check_colors, break_precolored_alias, restore_conflicts_from_coalesce, sort_and_combine_web_pairs, check_uncoalesced_moves): Likewise. * ra-rewrite.c (spill_coalescing, slots_overlap_p, emit_loads, reloads_to_loads, rewrite_program2, emit_colors): Likewise. * ra.c (first_hard_reg, create_insn_info, find_subweb, init_ra, check_df): Likewise. * real.c (do_add, do_multiply, do_divide, do_compare, do_fix_trunc, real_arithmetic, real_compare, real_exponent, real_ldexp, real_identical, real_to_integer, real_to_integer2, real_to_decimal, real_to_hexadecimal, real_from_integer, ten_to_ptwo, ten_to_mptwo, real_digit, real_nan, real_maxval, round_for_format, real_convert, real_to_target, real_from_target, real_hash, encode_ieee_single, encode_ieee_double, encode_ieee_extended, encode_ieee_quad, encode_vax_f, encode_vax_d, encode_vax_g, encode_i370_single, encode_i370_double, encode_c4x_single, encode_c4x_extended): Likewise. * recog.c (validate_change, validate_replace_rtx_1, asm_operand_ok, extract_insn, peep2_next_insn, peep2_reg_dead_p, peep2_find_free_register, peephole2_optimize, store_data_bypass_p, if_test_bypass_p): Likewise. * reg-stack.c (record_label_references, get_asm_operand_n_inputs, stack_result, remove_regno_note, get_hard_regnum, emit_pop_insn, emit_swap_insn, swap_to_top, move_for_stack_reg, subst_stack_regs_pat, subst_asm_stack_regs, change_stack, compensate_edge, convert_regs_1): Likewise. * regclass.c (init_reg_sets, init_reg_sets_1, memory_move_secondary_cost): Likewise. * regrename.c (note_sets, clear_dead_regs, scan_rtx_reg, scan_rtx): Likewise. * reload.c (push_secondary_reload, find_valid_class, push_reload, operands_match_p, decompose, immune_p, find_reloads, find_reloads_toplev, find_reloads_address_1, subst_reloads, copy_replacements, refers_to_regno_for_reload_p, reg_overlap_mentioned_for_reload_p): Likewise. * reload1.c (compute_use_by_pseudos, replace_pseudos_in, reload, count_pseudo, find_reg, eliminate_regs, eliminate_regs_in_insn, verify_initial_elim_offsets, finish_spills, clear_reload_reg_in_use, reload_reg_free_p, reload_reg_reaches_end_p, reloads_conflict, choose_reload_regs, merge_assigned_reloads, emit_input_reload_insns, do_output_reload, fixup_abnormal_edges): Likewise. * reorg.c (stop_search_p, emit_delay_sequence, get_jump_flags, fill_slots_from_thread, relax_delay_slots): Likewise. * resource.c (mark_referenced_resources, mark_set_resources): Likewise. * rtl.c (copy_rtx, rtx_equal_p): Likewise. * rtlanal.c (insn_dependent_p, reg_overlap_mentioned_p, dead_or_set_p, find_reg_fusage, remove_note, replace_rtx, subreg_lsb_1, subreg_regno_offset, subreg_offset_representable_p, find_first_parameter_load, can_hoist_insn_p, hoist_update_store, hoist_insn_after, hoist_insn_to_edge, nonzero_bits1): Likewise. * rtlhooks.c (gen_lowpart_general): Likewise. * sbitmap.c (sbitmap_difference): Likewise. * sched-deps.c (add_dependence, sched_analyze_1, sched_analyze_2, sched_analyze, add_forward_dependence): Likewise. * sched-ebb.c (fix_basic_block_boundaries, schedule_ebb): Likewise. * sched-rgn.c (debug_regions, compute_trg_info, schedule_region, schedule_insns): Likewise. * sched-vis.c (print_pattern): Likewise. * sdbout.c (sdbout_symbol, sdbout_toplevel_data): Likewise. * simplify-rtx.c (simplify_unary_operation, simplify_binary_operation, simplify_const_relational_operation, simplify_ternary_operation, simplify_immed_subreg, simplify_subreg, simplify_gen_subreg): Likewise. * sreal.c (copy, sreal_sub, sreal_div): Likewise. * stmt.c (force_label_rtx, expand_goto, expand_asm_operands, resolve_operand_name_1, expand_return, expand_decl, expand_anon_union_decl, emit_case_bit_tests, expand_case): Likewise. * stor-layout.c (put_pending_size, smallest_mode_for_size, int_mode_for_mode, layout_decl, finish_builtin_struct, layout_type, set_sizetype, get_mode_bounds): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@87244 138bc75d-0d04-0410-961f-82ee72b054a4
* * reload.c (find_reloads): Swap operand_loc pointers fordrow2004-09-031-3/+18
| | | | | | | find_dummy_reload if we have swapped two operands. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@87049 138bc75d-0d04-0410-961f-82ee72b054a4
* * reload.c (find_reloads_address): Make return value tri-state.uweigand2004-08-221-8/+11
| | | | | | | | | | | | | | | | Return -1 if LEGITIMIZE_RELOAD_ADDRESS succeeded. (find_reloads): Assume that reloaded addresses match 'o' or EXTRA_MEMORY_CONSTRAINT constraints only if find_reloads_address returned 1 (not -1). Omit optional reloads for address operands only if find_reloads_address returned 1 (not -1). * config/s390/s390.c (legitimize_reload_address): New function. * config/s390/s390-protos.h (legitimize_reload_address): Declare. * config/s390/s390.h (LEGITIMIZE_RELOAD_ADDRESS): Define. Call legitimize_reload_address. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@86388 138bc75d-0d04-0410-961f-82ee72b054a4