Commit Graph

360 Commits

Author SHA1 Message Date
Andreas Schwab
ccc4ae070d reload1.c (gen_mode_int): New function.
* reload1.c (gen_mode_int): New function.
        (reload_cse_move2add): Use it to generate the new constants.

From-SVN: r26834
1999-05-07 18:34:55 -07:00
Richard Henderson
4eea167258 reload1.c (emit_reload_insns): Also find equivalent mems for subregs of pseudos.
* reload1.c (emit_reload_insns): Also find equivalent mems
        for subregs of pseudos.

From-SVN: r26444
1999-04-14 03:00:12 -07:00
Jeffrey A Law
01e752d386 cse.c (flush_hash_table): New function.
* cse.c (flush_hash_table): New function.
        (cse_insn): Flush the hash table when we encounter a volatile asm.
        (cse_basic_block): Use flush_hash_table instead of doing it
        inline.
        * reload1.c (reload_cse_regs_1): Flush known register values if
        we encounter a volatile asm.

From-SVN: r26304
1999-04-08 18:29:45 -06:00
Jeffrey A Law
0a76126bfe * reload1.c (reload): Remove accidental code duplication.
From-SVN: r26042
1999-03-28 07:33:50 -07:00
J"orn Rennecke
8593b74599 reload1.c (choose_reload_regs): If output-reloading for a simple move insn...
reload1.c (choose_reload_regs): If output-reloading for a
	simple move insn, try to inherit an equivalence for the input.

From-SVN: r25946
1999-03-24 13:44:58 +00:00
Jeff Law
65954bd8cb i386.h (PREFERRED_STACK_BOUNDARY): Define.
* i386.h (PREFERRED_STACK_BOUNDARY): Define.
        * i386.c (ix86_compute_frame_size): New function.
        (ix86_prologue, ix86_epilogue): Use it.
        * i386.h (INITIAL_ELIMINATION_OFFSET): Likewise.
        * reload1.c: Provide default for PREFERRED_STACK_BOUNDARY.

From-SVN: r25909
1999-03-22 15:47:07 -07:00
J"orn Rennecke
02eb1393dc reload1.c (reload_as_needed): Set reload_is_output_reload / reload_has_output_reload for auto_inc expressions...
* reload1.c (reload_as_needed): Set reload_is_output_reload /
	reload_has_output_reload for auto_inc expressions that could be
	reloaded.  Call forget_old_reloads for REG_INC notes.

From-SVN: r25899
1999-03-22 14:27:23 +00:00
Kaveh R. Ghazi
8db99db275 Warning fixes:
* cccp.c (create_definition): Cast to U_CHAR* when assigning to one.
        * cppfiles.c (read_and_prescan): Likewise.
        Start a #define in column 0.
        * cpplib.c (cpp_define): Cast to U_CHAR* when assigning to one.
        (cpp_push_buffer): Likewise for cpp_buffer*.
        (do_include): Change the type of `fbeg' and `fend' to unsigned char*.
        (do_endif): Cast to char* when assigning to one.
        (do_assert): Likewise.
        (do_unassert): Likewise.
        (cpp_read_check_assertion): Change the type of `name' to U_CHAR*.
        Don't do unnecessary cast to char* anymore.
        * genrecog.c (make_insn_sequence): Cast to char** when assigning
        to one.  Cast the first argument of bzero to PTR.
        * loop.c (strength_reduce): Remove unused variable `note'.
        * reload1.c (new_insn_chain): Cast to struct insn_chain* when
        assigning to one.
        * rtl.c (copy_rtx): Use memcpy instead of bcopy.

From-SVN: r25860
1999-03-19 12:43:55 +00:00
J"orn Rennecke
13bb79d45e reload1.c (eliminate_regs): Don't keep REG_DEAD notes around for things that were eliminated.
* reload1.c (eliminate_regs): Don't keep REG_DEAD notes around for
	things that were eliminated.

From-SVN: r25823
1999-03-17 13:31:30 +00:00
Michael Hayes
2dfa9a87f6 rtlanal.c (auto_inc_p): New function.
* rtlanal.c (auto_inc_p): New function.
        * rtl.h (auto_inc_p): Prototype it.
	* reload1.c (add_auto_inc_notes): New function.
	(reload): Strip REG_INC notes and call add_auto_inc_notes
	for each insn to restore them correctly.

From-SVN: r25774
1999-03-15 01:52:49 +00:00
Jim Wilson
a8edca885e Patch to fix reload abort while compiling hpux-x-m68k-aout gdb.
* reload1.c (calculate_needs_all_insns): When ignore equivalence
	setting insn, clear need_elim, need_reload, and need_operand_change.

From-SVN: r25728
1999-03-12 04:39:59 -08:00
J"orn Rennecke
3900dc09bc reload.1c (delete_address_reloads_1): Check for reloads of CURRENT_INSN even if it sets DST.
* reload.1c (delete_address_reloads_1):  Check for reloads of
	CURRENT_INSN even if it sets DST.

From-SVN: r25701
1999-03-11 12:44:27 +00:00
J"orn Rennecke
0c7f225984 reload1.c (choose_reload_regs): When inheriting from the frame pointer, don't clobber it.
* reload1.c (choose_reload_regs): When inheriting from the frame
	pointer, don't clobber it.

From-SVN: r25669
1999-03-10 10:59:54 +00:00
J"orn Rennecke
43f854cf48 reload1.c (reload_combine_note_store): Fix calculation of number of affected registers.
* reload1.c (reload_combine_note_store): Fix calculation of number
	of affected registers.

From-SVN: r25657
1999-03-09 16:05:48 +00:00
J"orn Rennecke
d62dab419a reload1.c (emit_reload_insns): If pseudo that can't be replaced with its equivalent constant...
* reload1.c (emit_reload_insns): If pseudo that can't be replaced
	with its equivalent constant, fall back to reload_in.

From-SVN: r25604
1999-03-05 13:43:54 +00:00
Richard Henderson
e881bb1b1b Flow rewrite to use basic block structures and edge lists.
From-SVN: r25450
1999-02-25 15:45:42 -08:00
Jeffrey A Law
f93233bbe9 reload1.c (reload_combine_note_store): Second argument is no longer unused/ignored.
* reload1.c (reload_combine_note_store): Second argument is no
        longer unused/ignored.  Handle multi-register hard regs.
        (move2add_note_store): Simplify.

From-SVN: r25124
1999-02-10 02:13:41 -07:00
Jeffrey A Law
54ca6ffa13 reload1.c (reload_combine_note_store): Be more careful with STRICT_LOW_PART, ZERO_EXTRACT and SIGN_EXTRACT.
* reload1.c (reload_combine_note_store): Be more careful with
        STRICT_LOW_PART, ZERO_EXTRACT and SIGN_EXTRACT.
        (move2add_note_store): Likewise.

From-SVN: r25055
1999-02-06 02:41:08 -07:00
Bernd Schmidt
121315ea08 reload1.c (reload_cse_regs_1): Undo Jan 16 patch.
* reload1.c (reload_cse_regs_1): Undo Jan 16 patch.
        * reload.c (find_reusable_reload): New function, broken out of
        push_reload.  Add code to verify that none of the involved
        outputs are subject to earlyclobbers.
        (push_reload): Break out new function find_reusable_reload.
        Delete "register" keyword for IN, OUT args.

From-SVN: r25010
1999-02-03 13:11:56 -07:00
Jeffrey A Law
ab87f8c8d1 Merge in gcc2 snapshot 19980929. See gcc/ChangeLog and gcc/FSFChangeLog for
details.

From-SVN: r24879
1999-01-26 18:43:17 -07:00
Kaveh R. Ghazi
9b3142b340 final.c (bb_str): Qualify a char* with the keyword `const'.
* final.c (bb_str): Qualify a char* with the keyword `const'.
        (add_bb_string, final_scan_insn, output_asm_insn): Likewise.
        * fix-header.c (read_scan_file): Likewise.
        * genoutput.c (output_epilogue, process_template): Likewise.
        * local-alloc.c (requires_inout, block_alloc): Likewise.
        * output.h (output_asm_insn, assemble_string): Likewise.
        * recog.c (recog_constraints, check_asm_operands,
        decode_asm_operands, extract_insn, preprocess_constraints,
        constrain_operands): Likewise.
        * recog.h (operand_alternative, recog_constraints, insn_template,
        insn_outfun, insn_operand_constraint, insn_name): Likewise.
        * regclass.c (record_reg_classes, scan_one_insn): Likewise.
        * regmove.c (find_matches): Likewise.
        * reload.c (alternative_allows_memconst): Likewise.
        * reload1.c (constraint_accepts_reg_p,
        reload_cse_simplify_operands): Likewise.
        * rtl.h (decode_asm_operands): Likewise.
        * scan.h (fn_decl): Likewise.
        * varasm.c (assemble_string): Likewise.

From-SVN: r24834
1999-01-23 19:45:50 +00:00
Mark Mitchell
c6df88cbec rtl.h (rtx_def): Update documentation.
* rtl.h (rtx_def): Update documentation.
	(MEM_IN_STRUCT_P): Likewise.
	(MEM_SCALAR_P): New macro.
	(MEM_COPY_ATTRIBUTES): Likewise.
	(MEM_SET_IN_STRUCT_P): Likewise.
	* rtl.texi (MEM_SCALAR_P): Document.
	* alias.c (canon_rtx): Use MEM_COPY_ATTRIBUTES.
	(fixed_scalar_and_varying_struct_p): New function.  Use
	MEM_SCALAR_P rather than !MEM_IN_STRUCT_P.
	(aliases_everything_p): Likewise.
	(true_dependence): Use them.
	(write_dependence_p): New function, containing code common to
	anti_dependence and output_dependence.
	(anti_dependence): Use it.
	(output_dependence): Likewise.
	* calls.c (save_fixed_argument_area): Don't clear
	MEM_IN_STRUCT_P.
	(expand_call): Use MEM_SET_IN_STRUCT_P.
	(emit_library_call): Don't clear MEM_IN_STRUCT_P.
	(emit_library_call_value): Likewise.
	(store_one_arg): Use MEM_SET_IN_STRUCT_P.
	* combine.c (simplify_rtx): Use MEM_COPY_ATTRIBUTES.
	(make_extraction): Likewise.
	(simplify_shift_const): Likewise.
	(gen_lowpart_for_combine): Likewise.
	* cse.c (gen_lowpart_if_possible): Use MEM_COPY_ATTRIBUTES.
	* emit-rtl.c (operand_subword): Likewise.
	(change_address): Likewise.
	* explow.c (stabilize): Use MEM_COPY_ATTRIBUTES.
	* expr.c (protect_from_queue): Use MEM_COPY_ATTRIBUTES.
	(emit_group_store): Use MEM_SET_IN_STRUCT_P.
	(copy_blkmode_from_reg): Likewise.
	(store_field): Likewise.
	(expand_expr): Remove bogus guesswork setting MEM_IN_STRUCT_P
	heuristically.  Use MEM_SET_IN_STRUCT_P.
	(get_memory_rtx): Likewise.
	* final.c (alter_subreg): Use MEM_COPY_ATTRIBUTES.
	* function.c (assign_stack_temp): Clear MEM_SCALAR_P and
	MEM_ALIAS_SET on newly returned MEMs.
	(assign_temp): Use MEM_SET_IN_STRUCT_P.
	(put_reg_into_stack): Likewise.
	(fixup_var_refs1): Use MEM_COPY_ATTRIBUTES.
	(gen_mem_addressof): Use MEM_SET_IN_STRUCT_P.
	(assign_parms): Likewise.
	(expand_function): Likewise.
	* integrate.c (expand_inline_function): Likewise.
	(copy_rtx_and_substitute): Use MEM_COPY_ATTRIBUTES.
	* loop.c (note_addr_stored): Remove check on MEM_IN_STRUCT_P.
	* optabs.c (gen_move_insn): Use MEM_COPY_ATTRIBUTES.
	* print-rtl.c (print_rtx): Print /f for frame_related.
	* recog.c (validate_replace_rtx_1): Use MEM_COPY_ATTRIBUTES.
	* reload1.c (reload): Copy MEM_SCALAR_P as well.
	* stmt.c (expand_decl): Use MEM_SET_IN_STRUCT_P.
	(expand_anon_union_decl): Use MEM_COPY_ATTRIBUTES.
	* varasm.c (make_decl_rtl): Use MEM_SET_IN_STRUCT_P.
	(output_constant_def): Likewise.
	* a29k.c (a29k_set_memflags_1): Take scalar_p.
	Set MEM_SCALAR_P.
	(a29k_set_memflags): Use it.
	* alpha.c (get_aligned_mem): Use MEM_COPY_ATTRIBUTES.
	* c4x.c (c4x_scan_for_ld): Likewise.
	* h8300.c (fix_bit_operand): Likewise.
	* m88k.c (legitimize_address): Likewise.
	(block_move_loop): Likewise.
	(block_move_no_loop): Likewise.
	(block_move_sequence): Likewise.
	(m88k_builtin_saveregs): Use MEM_SET_IN_STRUCT_P.
	* mips/abi64.h (SETUP_INCOMING_VARARGS): Likewise.
	* rs6000.c (expand_block_move_insn): Use MEM_COPY_ATTRIBUTES.
	* sh.c (sh_builtin_saveregs): Use MEM_SET_IN_STRUCT_P.
	* arm.h (arm_gen_load_multiple): Take scalar_p.
	(arm_store_load_multiple): Likewise.
	* arm.c (arm_gen_load_multiple): Likewise.
	(arm_gen_store_multiple): Likewise.
	(arm_gen_movstrqi): Treat MEM_SCALAR_P like MEM_IN_STRUCT_P.

From-SVN: r24759
1999-01-19 10:32:33 +00:00
Kaveh R. Ghazi
47c3ed988b Warning fixes:
* loop.c (insert_bct): Hide the definition of variables
        `increment_direction', `compare_direction', `add_iteration' and
        `loop_var_mode'.
        * recog.c (mode_dependent_address_p): Mark parameter `addr' with
        ATTRIBUTE_UNUSED.  Mark label `win' with ATTRIBUTE_UNUSED_LABEL.
        (mode_independent_operand): Mark label `lose' with
        ATTRIBUTE_UNUSED_LABEL.
        * regclass.c (n_occurrences): Remove prototype and definition.
        * reload.c (find_reloads_address_1): Mark variable `tem' with
        ATTRIBUTE_UNUSED.
        * reload1.c (reload): Cast the first two arguments of `bcopy' to PTR.
        * sbitmap.c (sbitmap_copy): Likewise.
        * scan-decls.c (scan_decls): Hide label `handle_comma'.
        * toplev.c (output_lang_identify): Mark prototype with
        ATTRIBUTE_UNUSED.
        * tree.c (make_node): Cast the first argument of `bzero' to PTR.
        (make_tree_vec): Likewise.
        (build1): Likewise.
        * varasm.c (assemble_static_space): Mark variable `tem' with
        ATTRIBUTE_UNUSED.

From-SVN: r24740
1999-01-18 06:17:31 +00:00
Jeffrey A Law
148e9d570a reload1.c (reload_cse_regs_1): Do not call reload_cse_simplify_operands for an insn with asm operands.
* reload1.c (reload_cse_regs_1): Do not call
        reload_cse_simplify_operands for an insn with asm operands.

From-SVN: r24707
1999-01-16 15:50:19 -07:00
Richard Henderson
a5cad80034 Update copyrights.
From-SVN: r24624
1999-01-11 15:15:28 -08:00
Richard Henderson
3b413743e0 basic-block.h (basic_block_head): Rename to x_basic_block_head.
* basic-block.h (basic_block_head): Rename to x_basic_block_head.
        (basic_block_end): Rename to x_basic_block_end.
        (BLOCK_HEAD, BLOCK_END): Update.
        * caller-save.c: Change basic_block_head/end references to
        BLOCK_HEAD/END.
        * combine.c, flow.c, function.c, gcse.c, global.c: Likewise.
        * graph.c, haifa-sched.c, local-alloc.c, regclass.c: Likewise.
        * regmove.c, reload1.c, reorg.c, sched.c: Likewise.

From-SVN: r24622
1999-01-11 14:37:20 -08:00
Jeffrey A Law
f67c2384cb reload1.c (reload_as_needed): Verify that the insn satisfies its constraints after replacing a register...
* reload1.c (reload_as_needed): Verify that the insn satisfies its
        constraints after replacing a register address with an autoincrement
        address for reload inheritance purposes.

From-SVN: r24449
1998-12-30 16:14:25 -07:00
Kaveh R. Ghazi
973838fdb3 Warning fixes:
* alias.c (record_alias_subset): Remove ignored `&'.
        (init_alias_once): Likewise.
        * c-lex.c (UNGETC): Cast first argument of comma expression to void.
        * config/mips/mips.c (mips_asm_file_end): Cast the result of
        fwrite to `int' when comparing against one.
        * config/mips/mips.h (CAN_ELIMINATE): Add parens around && within ||.
        (INITIAL_ELIMINATION_OFFSET): Add braces to avoid ambiguous `else'.
        * cse.c (rehash_using_reg): Change type of variable `i' to
        unsigned int.
        * dwarf2out.c (initial_return_save): Cast -1 to unsigned before
        assigning it to one.
        * except.c (duplicate_eh_handlers): Remove unused variable `tmp'.
        * final.c (final_scan_insn): Likewise for variable `i'.
        (output_asm_insn): Cast a char to unsigned char when used as an
        array index.
        * gcse.c (compute_pre_ppinout): Cast -1 to SBITMAP_ELT_TYPE when
        assigning it to one.
        * loop.c (strength_reduce): Remove unused variables `count' and `temp'.
        * recog.c (preprocess_constraints): Cast a char to unsigned char
        when used as an array index.
        * regmove.c (find_matches): Likewise.
        * reload1.c (calculate_needs): Add default case in switch.
        (eliminate_regs_in_insn): Initialize variable `offset'.
        (set_offsets_for_label): Change type of variable `i' to unsigned.
        (reload_as_needed): Wrap variable `i' in macro check on
        AUTO_INC_DEC || INSN_CLOBBERS_REGNO_P.
        * scan-decls.c (scan_decls): Mark parameters `argc' and `argv'
        with ATTRIBUTE_UNUSED.  Cast variable `start_written' to size_t
        when comparing against one.
        * stor-layout.c (layout_decl): Cast maximum_field_alignment to
        unsigned when comparing against one.  Likewise for
        GET_MODE_ALIGNMENT().
        (layout_record): Cast record_align to int when comparing against a
        signed value.
        (layout_type): Cast TYPE_ALIGN() to int when comparing against a
        signed value.
        * tree.c (get_identifier): Cast variable `len' to unsigned when
        comparing against one.
        (maybe_get_identifier): Likewise

From-SVN: r24403
1998-12-23 07:09:01 +00:00
Jeffrey A Law
2ae7465155 toplev.c (rest_of_compilation): Do not set reload_completed.
Wed Dec 23 00:10:01 1998  Jeffrey A Law  (law@cygnus.com)
        * toplev.c (rest_of_compilation): Do not set reload_completed.
        * reload1.c (reload): Set reload_completed before calling
        cleanup_subreg_operands.

From-SVN: r24400
1998-12-22 16:13:41 -07:00
Richard Henderson
3d0ec3b37c * reload1.c (emit_reload_insns): Check `set' not null before use.
From-SVN: r24399
1998-12-22 16:00:27 -07:00
Nick Clifton
80599fd90c Delete REG_RETVAL and REG_LIBCALL notes after completeing reload
From-SVN: r24310
1998-12-14 14:13:26 +00:00
J"orn Rennecke
404d95c460 reload1.c (compute_use_by_pseudos): Allow reg_renumber[regno] < 0 after reload.
* reload1.c (compute_use_by_pseudos): Allow reg_renumber[regno] < 0
        after reload.

From-SVN: r24287
1998-12-12 16:26:22 -07:00
J"orn Rennecke
b063450945 Approved by Jeffrey A Law:
* reload1.c (reload_combine): Use BASIC_BLOCK_LIVE_AT_START
	to determine if a register is live at a jump destination.
	Everything is dead at a BARRIER.

From-SVN: r24258
1998-12-11 04:59:25 +00:00
J"orn Rennecke
ed937a1993 reload1.c (reload_combine, [...]): Make USE_RUID always valid.
* reload1.c (reload_combine, reload_combine_note_store):
	Make USE_RUID always valid.
	(reload_combine): Check if BASE is clobbered too early.

From-SVN: r24216
1998-12-09 11:39:17 +00:00
Jeffrey A Law
122a860e70 * reload1.c (current_function_decl): Tweak declaration.
From-SVN: r24191
1998-12-08 05:14:30 -07:00
Jeffrey A Law
dfb7c80fc7 * reload1.c (current_function_decl): Declare.
From-SVN: r24183
1998-12-08 02:45:02 -07:00
Nathan Sidwell
d6633f01f4 reload1.c (eliminate_regs): Don't do anything, if we're not generating code.
�
        * reload1.c (eliminate_regs): Don't do anything, if we're not
        generating code.

From-SVN: r24168
1998-12-07 15:10:45 -07:00
Jeffrey A Law
45c85c4e71 reload1.c (reload): Do not set reload_completed or split insns here.
* reload1.c (reload): Do not set reload_completed or split insns
        here.  Instead...
        * toplev.c (rest_of_compilation): Set reload_completed after
        reload returns.  Split insns after reload_cse has run.

From-SVN: r24037
1998-12-01 07:36:51 -07:00
J"orn Rennecke
78a2bc0856 reload1.c (emit_reload_insns): Clear spill_reg_store when doing a new non-inherited reload from the same pseudo.
* reload1.c (emit_reload_insns): Clear spill_reg_store
        when doing a new non-inherited reload from the same pseudo.

From-SVN: r24029
1998-12-01 03:53:54 -07:00
J"orn Rennecke
2b49ee3981 local-alloc.c (function_invariant_p): New function.
* local-alloc.c (function_invariant_p): New function.
	(update_equiv_regs): Use function_invariant_p instead of CONSTANT_P
	to decide if an equivalence should be recorded.
	* reload1.c (num_eliminable_invariants): New static variable.
	(reload): Set it.  Use function_invariant_p instead of CONSTANT_P
	to decide if an equivalence should be recorded.
	Unshare PLUS.
	(calculate_needs_all_insns): Skip insns that only set an equivalence.
	Take num_eliminable_invariants into account when deciding
	if register elimination should be done.
	(reload_as_needed): Take num_eliminable_invariants into account
	when deciding if register elimination should be done.
	(eliminate_regs): Handle non-constant reg_equiv_constant.
	* rtl.h (function_invariant_p): Declare.

From-SVN: r24026
1998-12-01 10:00:11 +00:00
Jeff Law
f1db357664 toplev.c (no_new_pseudos): Define.
* toplev.c (no_new_pseudos): Define.
        (rest_of_compilation):  Set no_new_pseudos as needed.
        * emit-rtl.c (gen_reg_rtx): Abort if we try to create a new pseudo
        if no_new_pseudos is set.
        * rtl.h (no_new_pseudos): Declare it.
        * reload1.c (reload): Update comments.
        * md.texi: Corresponding changes.
        * reload1.c (reg_used_in_insn): Renamed from reg_used_by_pseudo.
        (choose_reload_regs): Rename it here as well.  When computing it,
        also merge in used hardregs.

From-SVN: r23855
1998-11-25 03:31:24 -07:00
Graham Stott
5828374fd9 reload1.c (reload): Remove unused variable.
* reload1.c (reload): Remove unused variable.
        (reload_reg_free_for_value_p): Add missing parameter definition.
        * jump.c (jump_optimize): Remove unused variable.

From-SVN: r23839
1998-11-24 16:51:45 -07:00
Jeffrey A Law
9969bb2c99 reload1.c (eliminate_regs): Do not lose if eliminate_regs is called without reload having been called earlier.
* reload1.c (eliminate_regs): Do not lose if eliminate_regs is called
        without reload having been called earlier.

From-SVN: r23748
1998-11-21 19:46:22 -07:00
J"orn Rennecke
701d55e8d8 * Early auto_inc reloads don't conflict with outputs.
From-SVN: r23716
1998-11-19 15:22:25 +00:00
J"orn Rennecke
25963977c6 reload1.c (reload_reg_free_for_value_p): When considered reload has an output...
* reload1.c (reload_reg_free_for_value_p): When considered reload
	has an output, matching inputs are not sufficient to avoid conflict.

From-SVN: r23687
1998-11-17 14:26:40 +00:00
J"orn Rennecke
dfe96118e5 reload1.c (reload_reg_free_before_p): Delete.
* reload1.c (reload_reg_free_before_p): Delete.
	Changed all callers to use reload_reg_free_for_value_p instead.
	(reload_reg_free_for_value_p): Handle more reload types.
	A RELOAD_FOR_INPUT doesn't conflict with its
	RELOAD_FOR_INPUT_ADDRESS / RELOAD_FOR_INPADDR_ADDRESS.
	Add special case for OUT == const0_rtx.
	Added ignore_address_reloads argument.  Changed all callers.

From-SVN: r23675
1998-11-16 13:04:01 +00:00
J"orn Rennecke
135eb61ca4 Handle equivalences that have been obscured by gcse:
* reload1.c (reload): Handle equivalences set up in multiple places.
	* local-alloc.c (reg_equiv_init_insns): New variable.
	(no_equiv): New function.
	(update_equiv_regs): Handle equivalences set up in multiple places.
	Don't ignore an insn just because its destination is likely to be
	spilled.

From-SVN: r23610
1998-11-11 19:36:29 +00:00
Jeffrey A Law
a3a24aa619 reload1.c (delete_output_reload_insn): If a pseudo is set multiple times, then it can not be completely replaced.
* reload1.c (delete_output_reload_insn): If a pseudo is set multiple
	times, then it can not be completely replaced.
Fixes mis-compilation of wave5 in spec92.

From-SVN: r23581
1998-11-08 19:12:55 -07:00
Jeffrey A Law
8f5db3c196 reload1.c (reload): If we can not perform a particular elimination when we thought we could earlier...
* reload1.c (reload): If we can not perform a particular elimination
        when we thought we could earlier, then we must always iterate through
        the loop at least one more time.
x86 should bootstrap with -O9 -fomit-frame-pointer again.

From-SVN: r23552
1998-11-06 17:02:03 -07:00
Bernd Schmidt
d30e8ef0dc reload1.c (emit_reload_insns): When rewriting the SET_DEST of a previous insn to store directly into our...
* reload1.c (emit_reload_insns):  When rewriting the SET_DEST of a
        previous insn to store directly into our reload register, make sure
        that if the source of the previous insn is a reload register, its
        spill_reg_store and spill_reg_stored_to values are cleared.

From-SVN: r23550
1998-11-06 12:22:36 -07:00