Commit Graph

148 Commits

Author SHA1 Message Date
Alexandre Oliva 422be3c3cc final.c (output_addr_const): Simplify.
* final.c (output_addr_const) [LABEL_REF]: Simplify.
[MINUS]: Enclose non-CONST_INTs in parentheses.
[default]: Try OUTPUT_ADDR_CONST_EXTRA.
* tm.texi (OUTPUT_ADDR_CONST_EXTRA): Document it.
* varasm.c (decode_rtx_const) [CONST]: If it's not something
PLUS or MINUS a CONST_INT, use the whole CONST with offset 0
instead of abort()ing.
* sh.c (output_pic_addr_const): Removed.  Fixed all callers.
* sh.h (OUTPUT_ADDR_CONST_EXTRA): New.  Handle the UNSPECs
formerly handled in output_pic_addr_const.
* sh.md (sym_label2reg, symPLT_label2reg): Enclose UNSPEC
operands of MINUS in CONSTs so that decode_rtx_const() will
accept them.

From-SVN: r37691
2000-11-23 06:37:23 +00:00
Alexandre Oliva 43c0563453 sh.md (mova_const): New pattern.
* config/sh/sh.md (mova_const): New pattern.
(GOTaddr2picreg): Use it.
* config/sh/sh.c (broken_move): Match it.
(mova_p): Don't match it.
(machine_dependent_reorg): Adjust it.

From-SVN: r37690
2000-11-23 06:20:16 +00:00
Alexandre Oliva 4773afa487 sh.h (FIRST_GENERAL_REG, [...]): New.
* config/sh/sh.h (FIRST_GENERAL_REG, LAST_GENERAL_REG): New.
Moved most register-number #defines...
* config/sh/sh.md (define_constants): ... here.  Use macros to
refer to registers and unspecs.
* config/sh/sh.c: Likewise.

From-SVN: r37683
2000-11-23 04:22:48 +00:00
Joern Rennecke 1c32dd2b28 Comment typo fix.
From-SVN: r37664
2000-11-22 18:49:02 +00:00
Bernd Schmidt bd6758592b Fix sh problems at -O0
From-SVN: r37582
2000-11-20 14:17:59 +00:00
Joseph Myers 2e09e75ade calls.c (expand_call, [...]): Use memcpy () instead of bcopy ().
* calls.c (expand_call, emit_library_call_value_1), collect2.c
	(scan_prog_file), config/a29k/a29k.c (print_operand),
	config/sparc/sparc.c (order_regs_for_local_alloc): Use memcpy ()
	instead of bcopy ().
	* real.h: Use memcmp () instead of bcmp ().
	* config/m88k/m88k.c (m88k_layout_frame), config/sh/sh.c
	(split_branches), config/sparc/sparc.c (ultra_flush_pipeline,
	ultrasparc_sched_init, ultrasparc_sched_reorder),
	config/sparc/sparc.h (CONDITIONAL_REGISTER_USAGE): Use memset ()
	instead of bzero ().
	* config/vax/xm-xms.h (FILE_NAME_NONDIRECTORY): Use strrchr ()
	instead of rindex ().
	* configure.in: Don't check for bzero, bcmp, index or rindex.
	* configure, config.in: Regenerate.
	* system.h: Don't include declarations for bzero, bcmp, index or
	rindex.
	* config/i386/xm-beos.h, config/rs6000/xm-beos.h: Don't define
	bzero, bcmp, index or rindex.

java:
	* parse.y (create_new_parser_context): Use memset () instead of
	bzero ().

From-SVN: r37334
2000-11-09 07:45:15 +00:00
J"orn Rennecke 4b9580a58c sh-protos.h (reg_no_subreg_operand, [...]): Don't declare.
* sh-protos.h (reg_no_subreg_operand, emit_fpscr_use): Don't declare.
	(fp_extended_operand, emit_fpscr_use): Likewise.
	* sh.c (reg_no_subreg_operand, fp_extended_operand): Delete functions.
	(fpul_operand): New function.
	* sh.h (PREDICATE_CODES): Remove reg_no_subreg_operand and
	fp_extended_operand.  Add fpul_operand.
	* sh.md (mulsf3, mulsf3_i4): Use fp_arith_reg_operand for "f" operands.
	(mulsf3_ie, macsf3, cmpgtsf_t, cmpeqsf_t, ieee_ccmpeqsf_t): Likewise.
	(cmpgtsf_t_i4, cmpeqsf_t_i4, ieee_ccmpeqsf_t_4, negsf2): Likewise.
	(negsf2_i, sqrtsf2, sqrtsf2_i, abssf2, abssf2_i, adddf3): Likewise.
	(adddf3_i, subdf3, subdf3_i, muldf3, muldf3_i, divdf3): Likewise.
	(divdf3_i): Likewise.
	(floatsisf2): Likewise.  Use fpul_operand for 'y' operand.
	(floatsisf2_i4, floatsisf2_ie, fix_truncsfsi2): Likewise.
	(fix_truncsfsi2_i4, fixsfsi, floatsidf2, floatsidf2_i): Likewise.
	(fix_truncdfsi2, fix_truncdfsi2_i, extendsfdf2): Likewise.
	(extendsfdf2_i4, truncdfsf2, truncdfsf2_i4): Likewise.

From-SVN: r37158
2000-10-31 15:34:27 +00:00
Mark Mitchell 1f8f4a0b31 Remove obstacks.
* Makefile.in (ggc-callbacks.o): Remove target.
	(flow.o): Depend on GGC_H.
	* alias.c (init_alias_analysis):
	Remove ggc_p conditionals.
	(end_alias_analysis): Likewise.
	* basic-block.h (init_flow): New function.
	(allocate_reg_life_data): Declare.
	* bb-reorder.c	(function_obstack): Replace with ...
	(flow_obstack): ... new variable.
	(fixup_reorder_chain): Use it.
	* c-decl.c (ggc_p): Remove.
	(caller-save.c): Don't call oballoc/obfree.
	* combine.c (struct
	undobuf): Remove storage.
	(try_combine): Don't call oballoc.
	(undo_all): Don't call obfree.
	* cse.c (insert): Use xmalloc, not
	oballoc.
	(cse_main): Adjust accordingly.
	* dwarf2out.c (save_rtx): Remove
	obstack code.
	(dwarf2out_init): Remove ggc_p conditionals.
	* emit-rtl.c (rtl_obstack): Remove.
	(gen_rtx_CONST_INT): Remove ggc_p conditionals.
	(make_insn_raw): Likewise.
	(emit_insn_before): Likewise.
	(emit_insn_after): Likewise.
	(emit_insn): Likewise.
	(gen_sequence): Likewise.
	(copy_insn_1): Remove handling of `b' RTL components.
	(init_emit_once): Remove ggc_p conditionals.
	* except.c (create_rethrow_ref): Don't fool with obstacks.
	(add_partial_entry): Likewise.
	(call_get_eh_context): Likewise.
	(begin_protect_partials): Likewise.
	(protect_with_terminate): Likewise.
	* explow.c
	(plus_constant_wide): Likewise.
	* expr.c (init_expr_once):
	Likewise.
	(emit_block_move): Likewise.
	(clear_storage): Likewise.
	(expand_expr): Likewise.
	* flow.c (function_obstack): Remove.
	(flow_obstack): New variable.
	(flow_firstobj): Likewise.
	(create_base_block): Use the flow_obstack.
	(split_block): Likewise.
	(split_edge): Likewise.
	(calculate_global_regs_live): Likewise.
	(allocate_bb_life_data): Make it static.  Likewiwse.
	(init_flow): New function.
	(size_int_type_wide): Remove ggc_p conditionals.
	* function.c
	(push_function_context_to): Don't call save_tree_status.
	(pop_function_context_from): Or restore_tree_status.
	(assign_stack_local_1): Don't call push_obstacks.
	(find_fixup_replacement): Use xmalloc.
	(fixup_var_refs_insns): Free the storage.
	(insns_for_mem_walk): Don't mess with obstacks.
	(instantiate_decls): Likewise.
	(trampoline_address): Likewise.
	(expand_function_end): Likewise.
	* function.h (sturct function):
	Remove obstack-related variables.
	(save_tree_status): Don't declare.
	(restore_tree_status): Likewise.
	* gcse.c (compute_can_copy):
	Don't call oballoc/obfree.
	* genattrtab.c (operate_exp): Remove
	ggc_p conditionals.
	(simplify_cond): Likewise.
	(simplify_test_exp): Don't mess with obstacks.
	(optimize_attrs): Likewise.
	* gengenrtl.c (gendef): Don't include
	ggc_p conditionals.
	* ggc-callbacks.c (ggc_p): Remove.
	* ggc-none.c (ggc_p): Remove.
	* ggc.h (ggc_p): Don't declare.
	* integrate.c (save_for_inline): Don't mess with obstacks.
	(integrate_decl_tree): Likewise.
	(output_inline_function): Likewise.
	* lists.c
	(init_EXPR_INSN_LIST_cache): Likewise.
	* loop.c (temp_obstack):
	Remove.
	(rtl_obstack): Likewise.
	(init_loop): Don't mess with obstacks.
	(reg_address_cost): Free BIVs and GIVs.
	(check_insns_for_bivs): Use xmalloc, not oballoc.
	(find_mem_givs): Likewise.
	(record_biv): Likewise.
	(general_induction_var): Likewise.
	(product_cheap_p): Likewse.
	* optabs.c (init_one_libfunc): Remove
	ggc_p conditional.
	* print-tree.c (debug_tree): Don't use
	oballoc/obfree.
	(print_node): Likewise.
	* profile.c (output_func_start_profiler):
	Remove call to temporary_allocation.
	* reload1.c
	(eliminate_regs_in_insn): Don't mess with obstacks.
	* resource.c
	(mark_target_live_regs): Use xmalloc.
	(free_resource_info): Free the memory.
	* rtl.c (rtl_obstack):
	Remove.
	(rtvec_alloc): Don't mess with obstacks.
	(rtx_alloc): Likewise.
	(rtx_free): Remove.
	(copy_rtx): Don't handle `b' cases.
	(read_rtx): Use a local rtl_obstack.
	* rtl.h (oballoc): Remove.
	(obfree): Likewise.
	(pop_obstacks): Likewise.
	(push_obstacks): Likewise.
	(allocate_bb_life_data): Likewise.
	(allocate_reg_life_data): Likewise.
	(rtx_free): Likewise.
	* sdbout.c (sdbout_queue_anonymous_type):
	Use tree_cons, not saveable_tree_cons.
	* simplify-rtx.c
	(cselib_init): Don't mess with obstacks.
	* stmt.c
	(mark_block_nesting): Mark the label_chain.
	(epxand_label): Use ggc_alloc, not oballoc.
	(clear_last_expr): Don't mess with obstacks.
	(expand_decl_cleanup): Likewise.
	(expand_dcc_cleanup): Likewise.
	(expand_dhc_cleanup): Likewise.
	(expand_anon_union_decl): Likewise.
	(add_case_node): Use xmalloc, not oballoc.
	(free_case_nodes): New function.
	(expand_end_case): Call it.
	* stor-layout.c (layout_type): Don't
	mess with obstacks.
	(layout_type): Likewise.
	* toplev.c (wrapup_global_declarations):
	Likewise.
	(compile_file): Remove ggc_p conditionals.
	(rest_of_compilation): Call init_flow.  Remove ggc_p conditionals.
	(decode_f_option): Remove ggc_p conditionals.
	* tree.c
	(function_maybepermanent_obstack): Remove.
	(maybepermanent_obstack): Likewise.
	(function_obstack): Likewise.
	(tmeporary_obstack): Likewise.
	(momentary_obstack): Likewise.
	(temp_decl_obstack): Likewise.
	(saveable_obstack): Likewise.
	(rtl_obstack): Likewise.
	(current_obstack): Likewise.
	(expression_obstack): Likewise.
	(struct obstack_stack): Likewise.
	(obstack_stack): Likewise.
	(obstack_stack_obstack): Likewise.
	(maybepermanent_firstobj): Likewise.
	(temporary_firstobj): Likewise.
	(momentary_firstobj): Likewise.
	(temp_decl_firstobj): Likewise.
	(momentary_function_firstobj): Likewise.
	(all_types_permanent): Likewise.
	(struct momentary_level): Likewise.
	(momentary_stack): Likewise.
	(init_obstacks): Remove initialization of removed obstacks.
	(save_tree_status): Remove.
	(restore_tree_status): Likewise.
	(temporary_allocation): Liekwise.
	(end_temporary_allocation): Liekwise.
	(resume_temporary_allocation): Likewise.
	(saveable_allocation): Likewise.
	(push_obstacks): Likewise.
	(push_obstacks_nochange): Likewise.
	(pop_obstacks): Likewise.
	(allocation_temporary_p): Likewise.
	(permanent_allocation): Likewise.
	(preserve_data): Likewise.
	(preserve_initializer): Likewise.
	(rtl_in_current_obstack): Likewise.
	(rtl_in_saveable_obstack): Likewise.
	(oballoc): Likewise.
	(obfree): Likewise.
	(savealloc): Likewise.
	(expralloc): Likewise.
	(print_obstack_name): Likewise.
	(debug_obstack): Likewise.
	(object_permanent_p): Likewise.
	(push_momentary): Likewise.
	(perserve_momentary): Likewise.
	(clear_momentary): Likewise.
	(pop_momentary): Likewise.
	(pop_momentary_nofree): Likewise.
	(suspend_momentary): Likewise.
	(resume_momentary): Likewise.
	(make_node): Don't set TREE_PERMANENT.
	(copy_node): Remove ggc_p conditionals.  Don't set TYPE_OBSTACK.
	Don't set TREE_PERMANENT.
	(get_identifier): Remove ggc_p conditionals.
	(build_string): Likewise.
	(make_tree_vec): Likewise.
	(build_decl_list): Remove.
	(build_expr_list): Likewise.
	(tree_cons): Remove ggc_p conditionals.
	(decl_tree_cons): Remove.
	(expr_tree_cons): Likewise.
	(perm_tree_cons): Likewise.
	(temp_tree_cons): Likewise.
	(saveable_tree_cons): Likewise.
	(build1): Remove ggc_p conditionals.
	(build_parse_node): Likewise.
	(build_type_attribute_variant): Don't mess with obstacks.
	(build_type_copy): Likewise.
	(type_hash_canon): Likewise.
	(build_pointer_type): Likewise.
	(build_reference_type): Likewise.
	(build_index_type): Likewise.
	(build_range_type): Likewise.
	(dump_tree_statistics): Don't print obstack information.
	* tree.h
	(struct tree_common): Remove permanent_flag.
	(TREE_PERMANENT): Remove.
	(TREE_SET_PERMANENT): Likewise.
	(TYPE_OBSTACK): Likewise.
	(struct tree_type): Remove obstack.
	(oballoc): Remove.
	(savealloc): Likewise.
	(build_decl_list): Likewise.
	(build_expr_list): Likewise.
	(perm_tree_cons): Likewise.
	(temp_tree_cons): Likewise.
	(saveable_tree_cons): Likewise.
	(decl_tree_cons): Likewise.
	(expr_tree_cons): Likewise.
	(suspend_momentary): Likewise.
	(allocation_temporary_p): Likewise.
	(resume_momentary): Likewise.
	(push_obstacks_nochange): Likewise.
	(permanent_allocation): Likewise.
	(push_momentary): Likewise.
	(clear_momentary): Likewise.
	(pop_momentary): Likewise.
	(end_temporary_allocation): Likewise.
	(pop_obstacks): Likewise.
	(push_obstacks): Likewise.
	(pop_momentary_nofree): LIkewise.
	(preserve_momentary): Likewise.
	(saveable_allocation): Likewise.
	(temporary_allocation): Likewise.
	(resume_temporary_allocation): Likewise.
	(perserve_initializer): Likewise.
	(debug_obstack): Likewise.
	(rtl_in_current_obstack): Likewise.
	(rtl_in_saveable_obstack): Likewise.
	(obfree): Likewise.
	* varasm.c (current_obstack): Remove.
	(saveable_obstack): Remove.
	(rtl_obstack): Remove.
	(immed_double_const): Don't mess with obstacks.
	(immed_real_cons): Likewise.
	(output_constant_def): Likewise.
	(init_varasm_status): Use xcalloc.
	(mark_pool_constant): Mark the pool constant itself.
	(free_varasm_status): Free memory.
	(decode_rtx_const): Call bzero directly, rather than expanding it
	inline.
	(record_rtx_const): Don't mess with obstacks.
	(force_const_mem): Likewise.
	* config/arm/arm.c (arm_encode_call_attribute): Remove ggc_p
	conditionals.
	(aof_pic_entry): Likewise.
	* config/ia64/ia64.c (ia64_encode_section_info): Likewise.
	* config/m32r/m32r.c (m32r_encode_section_info): Likewise.
	* config/pa/pa.c (saveable_obstack): Remove.
	(rtl_obstack): Likewise.
	(current_obstack): Likewise.
	(output_call): Don't mess with obstacks.
	(hppa_encode_label): Remove ggc_p conditionals.
	* config/romp/romp.c (get_symref): Don't mess with obstacks.
	* config/rs6000/rs6000.c (output_toc): Remove ggc_p conditional.
	(rs6000_encode_section_info): Likewise.
	* config/sh/sh.c (get_fpscr_rtx): Likewise.

From-SVN: r36856
2000-10-13 06:26:46 +00:00
J"orn Rennecke 50ceefc2f5 sh.c (addsubcosts): CONST is not cheap.
* sh.c (addsubcosts): CONST is not cheap.
	(find_barrier): For Sh1, take alignment after jumps into account.

From-SVN: r36512
2000-09-18 20:31:28 +01:00
Bernd Schmidt 42d5d0f171 Fix for sh minipool generation
From-SVN: r36500
2000-09-18 17:21:25 +00:00
Bernd Schmidt 2e361e5924 Avoid problems with reloading fpul in HImode
From-SVN: r36499
2000-09-18 17:12:32 +00:00
Alexandre Oliva 40fc375d0a sh.c (sh_expand_prologue): Mark GOTaddr2picreg as MAYBE_DEAD.
* config/sh/sh.c (sh_expand_prologue): Mark GOTaddr2picreg as
MAYBE_DEAD.
(sh_expand_epilogue): Take the PIC register into account when
computing the frame size.

From-SVN: r36496
2000-09-18 16:45:48 +00:00
Alexandre Oliva 55eec6605c sh.c (nonpic_symbol_mentioned_p): Check LABEL_REFs.
* config/sh/sh.c (nonpic_symbol_mentioned_p): Check LABEL_REFs.
* config/sh/sh.md (sym_label2reg, symPLT_label2reg): Protect
LABEL_REFs with a PIC-safe unspec.

From-SVN: r36495
2000-09-18 16:41:22 +00:00
Zack Weinberg 8b97c5f8ef c-pragma.h: Define HANDLE_GENERIC_PRAGMAS if REGISTER_TARGET_PRAGMAS is defined.
* c-pragma.h: Define HANDLE_GENERIC_PRAGMAS if
	REGISTER_TARGET_PRAGMAS is defined.  Duplicate some
	definitions from cpplib.h.
	* cpplib.h: Don't typedef struct cpp_reader if c-pragma.h has
	already done it.
	* tm.texi: Document HANDLE_PRAGMA as no longer supported.  Add
	documentation for REGISTER_TARGET_PRAGMAS.

	* c-lex.c: Include cpplib.h before c-pragma.h.  Define a
	default-pragma callback to implement -Wunknown-pragmas if
	USE_CPPLIB.
	* c-parse.in: Move all includes to top of file.
	* c-pragma.c: Include cpplib.h before c-pragma.h.  Include
	tm_p.h.
	(dispatch_pragma): Put the namespace in the -Wunknown-pragmas
	warning.
	(init_pragma): If REGISTER_TARGET_PRAGMAS is defined, call it.

	* arm.h, arm-protos.h, arm.c,
	  c4x.h, c4x-protos.h, c4x.c,
	  h8300.h, h8300-protos.h, h8300.c,
	  i370.h, i370-protos.h, i370.c,
	  i960.h, i960-protos.h, i960.c,
	  sh.h, sh-protos.h, sh.c,
	  v850.h, v850-protos.h, v850.c: Convert HANDLE_PRAGMA-based
	pragmata scheme to use REGISTER_TARGET_PRAGMAS instead.

	* d30v.h: Don't mention HANDLE_PRAGMA in comment.  Add
	multiple include guard.
	* i370.md (untyped_call): Use GEN_CALL.
	(umodsi3): Remove unused variable.
	* sh/elf.h: Don't undef HANDLE_SYSV_PRAGMA.
	* v850.c (output_move_single, output_move_double): Constify
	return value.
	(print_operand): Constify a char *.
	* v850.h (struct small_memory_info): Constify name member.

From-SVN: r36249
2000-09-07 22:24:34 +00:00
Bernd Schmidt 630c79be17 Changes in cse.c/loop.c cost calculations
From-SVN: r36192
2000-09-06 09:20:38 +00:00
Alexandre Oliva 1a66cd67e2 t-elf, [...]: New files.
* config/sh/t-elf, config/sh/crt1.asm, config/sh/crti.asm,
config/sh/crtn.asm: New files.
* config/sh/t-sh (EXTRA_MULTILIB_PARTS): Set.
(crt1.o, crti.o, crtn.o): New targets.
* configure.in [sh-*-elf*, sh-*-rtemself*] (tmake_file): Added
sh/t-elf.
* configure: Rebuilt.
* config/sh/sh.h (INIT_SECTION_ASM_OP, FINI_SECTION_ASM_OP,
STARTFILE_SPEC, ENDFILE_SPEC, CRT_CALL_STATIC_FUNCTION): Define.
* config/sh/elf.h (INIT_SECTION_ASM_OP, FINI_SECTION_ASM_OP):
Undefine for config/elfos.h to redefine.
(STARTFILE_SPEC, ENDFILE_SPEC): Redefine after config/elfos.h.


* config/sh/sh-protos.h (nonpic_symbol_mentioned_p,
legitimize_pic_address, output_pic_addr_const): Declare.
* config/sh/sh.h (CONDITIONAL_REGISTER_USAGE): Fix PIC register.
(PREFERGOT_BIT, TARGET_PREFERGOT): Likewise.
(TARGET_SWITCHES): New switch -mprefergot.
(OVERRIDE_OPTIONS): Set flag_no_function_cse unless -mprefergot.
(PIC_OFFSET_TABLE_REGNUM): Define.
(GOT_SYMBOL_TABLE): Likewise.
(LEGITIMIZE_ADDRESS): Use legitimize_pic_address.
(ENCODE_SECTION_INFO): Define.
(FINALIZE_PIC): New macros.
(LEGITIMATE_PIC_OPERAND_P, SYMBOLIC_CONST_P): New macro.
(ASM_OUTPUT_INT, ASM_OUTPUT_SHORT): Use output_pic_addr_const.
* config/sh/sh.c (print_operand_address): Use output_pic_addr_const.
(prepare_move_operands): Call emit_pic_move or
emit_pic_const_move if appropriate.
(output_far_jump): For PIC, use braf and output long offset.
(machine_dependent_reorg):
(sh_expand_prologue): Save and initialize the PIC register.
(sh_expand_epilogue): Restore it.
(initial_elimination_offset): Account for it.
(nonpic_symbol_mentioned_p): New function.
(legitimize_pic_address): Likewise.
(output_pic_addr_const): Likewise.
* config/sh/sh.md (calli_pcrel, call_valuei_pcrel): New insns.
(call, call_value): Use them.
(GOTaddr2picreg, sym_label2reg, symGOT2reg, symGOTOFF2reg,
symPLT_label2reg): New expands.
* invoke.texi (SH Options): Document -mprefergot.

From-SVN: r36111
2000-09-02 03:28:47 +00:00
Kaz Kojima 89e43e3315 sh.md (cmpeqdi_t splitter): Fix a reverse testing.
* config/sh/sh.md (cmpeqdi_t splitter): Fix a reverse testing.

	* config/sh/sh.c (prepare_scc_operands): Apply force_reg to
	sh_compare_op1 when the mode is DImode and sh_compare_op1 isn't
	const0_rtx.

From-SVN: r35889
2000-08-22 20:39:56 +01:00
Alexandre Oliva 8845e874be sh.md (fpu_switch0, [...]): Simplify.
* config/sh/sh.md (fpu_switch0, fpu_switch1): Simplify.
* config/sh/sh.c (fpscr_set_from_mem): Use them.

From-SVN: r35792
2000-08-18 19:10:43 +00:00
Alexandre Oliva a6f463a028 sh.h (EXTRA_CONSTRAINT_Q): Adjust to GNU Coding Standards.
* sh.h (EXTRA_CONSTRAINT_Q): Adjust to GNU Coding Standards.
* sh.c (expand_block_move): Break long lines.
(expand_ashiftrt, fpscr_set_from_mem): Likewise.
* sh.md (mulsi3): Likewise.
(movdi): Adjust spacing.

From-SVN: r35548
2000-08-07 09:58:29 +00:00
Rodney Brown 2c3c49dec3 alias.c (mark_constant_function): Use INSN_P.
* alias.c (mark_constant_function): Use INSN_P.
	(init_alias_analysis): Likewise.
	* combine.c (combine_instructions): Use INSN_P.
	(can_combine_p): Likewise.
	(try_combine): Likewise.
	(distribute_notes): Likewise.
	(distribute_links): Likewise.
	* cse.c (cse_around_loop): Use INSN_P.
	(invalidate_skipped_block): Likewise.
	(cse_set_around_loop): Likewise.
	(cse_end_of_basic_block): Likewise.
	(delete_trivially_dead_insns): Likewise.
	* emit-rtl.c (unshare_all_rtl_again): Use INSN_P.
	(unshare_all_rtl_1): Likewise.
	(next_cc0_user): Likewise.
	(try_split make_insn_raw): Likewise.
	(remove_unnecessary_notes): Likewise.
	* final.c (shorten_branches): Use INSN_P.
	(leaf_renumber_regs): Likewise.
	(leaf_renumber_regs_insn): Likewise.
	* flow.c (find_label_refs): Use INSN_P.
	(verify_wide_reg): Likewise.
	(notice_stack_pointer_modification): Likewise.
	(count_or_remove_death_notes): Likewise.
	(verify_flow_info): Likewise.
	(clear_log_links): Likewise.
	* function.c (fixup_var_refs_insns): Use INSN_P.
	(compute_insns_for_mem): Likewise.
	* gcse.c (alloc_gcse_mem): Use INSN_P.
	(compute_sets): Likewise.
	(compute_hash_table): Likewise.
	(classic_gcse): Likewise.
	(cprop): Likewise.
	(insert_insn_end_bb): Likewise.
	(delete_null_pointer_checks_1): Likewise.
	* global.c (expand_preferences): Use INSN_P.
	(build_insn_chain): Likewise.
	* graph.c (node_data): Use INSN_P.
	* haifa-sched.c (priority): Use INSN_P.
	(rm_line_notes): Likewise.
	(rm_other_notes): Likewise.
	(find_insn_reg_weight): Likewise.
	(init_target_units): Likewise.
	(schedule_block): Likewise.
	(compute_block_forward_dependences): Likewise.
	(debug_dependencies): Likewise.
	(set_priorities): Likewise.
	* integrate.c (function_cannot_inline_p): Use INSN_P.
	(save_parm_insns): Likewise.
	(copy_insn_list): Likewise.
	* jump.c (mark_all_labels): Use INSN_P.
	(never_reached_warning): Likewise.
	* lcm.c (optimize_mode_switching): Use INSN_P.
	* local-alloc.c (validate_equiv_mem): Use INSN_P.
	(memref_used_between_p): Likewise.
	(update_equiv_regs): Likewise.
	(block_alloc): Likewise.
	(no_conflict_p): Likewise.
	* loop.c (scan_loop): Use INSN_P.
	(find_and_verify_loops): Likewise.
	(count_loop_regs_set): Likewise.
	(loop_reg_used_before_p): Likewise.
	(strength_reduce): Likewise.
	(recombine_givs): Likewise.
	(check_dbra_loop): Likewise.
	(load_mems): Likewise.
	(try_copy_prop): Likewise.
	* print-rtl.c (print_rtx): Use INSN_P.
	* recog.c (find_single_use): Use INSN_P.
	* reg-stack.c (stack_regs_mentioned): Use INSN_P.
	(next_flags_user): Likewise.
	(swap_rtx_condition): Likewise.
	* regmove.c (mark_flags_life_zones): Use INSN_P.
	(optimize_reg_copy_1): Likewise.
	(optimize_reg_copy_2): Likewise.
	(optimize_reg_copy_3): Likewise.
	(reg_is_remote_constant_p): Likewise.
	(fixup_match_2): Likewise.
	(regmove_optimize): Likewise.
	(fixup_match_1): Likewise.
	* regrename.c (build_def_use): Use INSN_P.
	(replace_reg_in_block): Likewise.
	(consider_use): Likewise.
	* reload.c (find_equiv_reg): Use INSN_P.
	* reload1.c (reload): Use INSN_P.
	(maybe_fix_stack_asms): Likewise.
	(calculate_needs_all_insns): Likewise.
	(reload_as_needed): Likewise.
	(emit_output_reload_insns): Likewise.
	(delete_address_reloads_1): Likewise.
	(reload_cse_regs_1): Likewise.
	(reload_combine): Likewise.
	(reload_cse_move2add): Likewise.
	* reorg.c (redundant_insn): Use INSN_P.
	(dbr_schedule): Likewise.
	* resource.c (find_dead_or_set_registers): Use INSN_P.
	(mark_target_live_regs): Likewise.
	* rtlanal.c (reg_used_between_p): Use INSN_P.
	(reg_referenced_between_p): Likewise.
	(reg_set_between_p): Likewise.
	(reg_set_p): Likewise.
	(single_set): Likewise.
	(multiple_sets): Likewise.
	(find_last_value): Likewise.
	(reg_set_last): Likewise.
	(find_reg_note): Likewise.
	(find_regno_note): Likewise.
	* sibcall.c (sequence_uses_addressof): Use INSN_P.
	* simplify-rtx.c (cselib_process_insn): Use INSN_P.
	* ssa.c (find_evaluations): Use INSN_P.
	(rename_block): Likewise.
	(rename_equivalent_regs): Likewise.
	* unroll.c (loop_find_equiv_value): Use INSN_P.
	(set_dominates_use): Likewise.
	* varasm.c (mark_constant_pool): Use INSN_P.
	(mark_constants): Likewise.
	* config/alpha/alpha.c (alpha_does_function_need_gp): Use INSN_P.
	(alphaev4_next_group): Likewise.
	(alphaev5_next_group): Likewise.
	* config/c4x/c4x.c (c4x_process_after_reload): Use INSN_P.
	(c4x_rptb_rpts_p): Likewise.
	* config/mips/mips.c (mips16_optimize_gp): Use INSN_P.
	* config/rs6000/rs6000.c (uses_TOC): Use INSN_P.
	(rs6000_adjust_priority): Likewise.
	* config/sh/sh.c (sh_loop_align): Use INSN_P.
	(machine_dependent_reorg): Likewise.
	(split_branches): Likewise.
	* config/tahoe/tahoe.c (tahoe_cmp_check): Use INSN_P.

From-SVN: r35494
2000-08-04 14:28:08 -06:00
Bernd Schmidt 7e2fda6e4a From Joern Rennecke:
* sh.h (CPP_SPEC, TARGET_SWITCHES): Add m4-nofpu.
	* sh.md (udivsi3, divsi3): Don't use libcalls that use the FPU
	unless TARGET_SH3E is set.
	* t-sh (MULTILIB_MATCHES): Add m2=m4-nofpu.

	* sh.md (ashlsi3_d, ashlsi3_k): Remove, replace with
	(ashlsi3_std): New pattern.
	(ashlsi3 expander): Use it for TARGET_SH3.
	* sh.c (gen_ashift): Use it instead of ashlsi3_k.

From-SVN: r35411
2000-08-01 18:45:53 +00:00
Alexandre Oliva 9d98a69423 Makefile.in (INSN_ATTR_H): New macro.
* Makefile.in (INSN_ATTR_H): New macro.  Replace all dependencies
on insn-attr.h with it.
* genattr.c: Generate `#include "insn-addr.h"' if HAVE_ATTR_length.
* insn-addr.h: New header.
(insn_addresses_): Renamed from insn_addresses.
(INSN_ADDRESSES_DEFN, INSN_ADDRESSES, INSN_ADDRESSES_ALLOC,
INSN_ADDRESSES_FREE, INSN_ADDRESSES_SET_P, INSN_ADDRESSES_SIZE,
INSN_ADDRESSES_NEW): New macros.
* genattrtab.c (write_test_expr): Use new macros.
* final.c (insn_addresses, init_insn_lengths): Likewise.
(align_fuzz, shorten_branches): Likewise.
(final): Likewise.  Do not reject new insns if their addresses
have been added to INSN_ADDRESSES.
* config/arm/arm.c, config/avr/avr.c: Use new macros.
* config/h8300/h8300.c, config/i370/i370.c: Likewise.
* config/m88k/m88k.c, config/pa/pa.c, config/pa/pa.md: Likewise.
* config/sparc/sparc.c, config/sparc/sparc.md: Likewise.
* config/sh/sh.c: Likewise.
(output_branchy_insn): Use INSN_ADDRESSES_NEW.

From-SVN: r35307
2000-07-28 02:17:26 +00:00
Clinton Popetz 8ceaac3c6e sh.c (gen_far_branch, [...]): Update to reflect new prototypes for redirect_jump and invert_jump.
* config/sh/sh.c (gen_far_branch, split_branches): Update
	to reflect new prototypes for redirect_jump and invert_jump.
	(sh_insn_length_adjustment): Get rid of const warnings.

From-SVN: r34113
2000-05-23 16:10:17 -04:00
J"orn Rennecke 9342c0c4a9 sh.c (sh_insn_length_adjustment): New function.
* sh.c (sh_insn_length_adjustment): New function.
	* sh-protos.h (sh_insn_length_adjustment): Declare.
	* sh.h (ADJUST_INSN_LENGTH): Use it.

From-SVN: r32942
2000-04-06 00:12:53 +01:00
Clinton Popetz b1b41fe4ac sh.c: (barrier_align): Handle a delay slot that is filled with an insn from the jump...
* config/sh/sh.c: (barrier_align): Handle a delay slot that is
	filled with an insn from the jump target.

From-SVN: r32371
2000-03-06 16:17:44 -05:00
Joern Rennecke 475f26dde6 Comment typo fix.
From-SVN: r32242
2000-02-28 21:42:55 +00:00
Jeff Law 4592bdcbb8 Fix copyrights.
From-SVN: r32198
2000-02-26 14:44:42 -07:00
J"orn Rennecke 0ad913af75 sh.c (calc_live_regs): Multiply value assigned to *COUNT_PTR by UNITS_PER_WORD.
* sh.c (calc_live_regs): Multiply value assigned to *COUNT_PTR by
	UNITS_PER_WORD.  Change caller initial_elimination_offset.
	(rounded_frame_size): Take into account that argument pushed has
	changed.  Fix TARGET_ALIGN_DOUBLE problem.

From-SVN: r32152
2000-02-25 20:12:02 +00:00
J"orn Rennecke e5f8d4c0c7 Fix bug exposed by reload.c no longer rounding the frame size to BIGGEST_ALIGNMENT:
Fix bug exposed by reload.c no longer rounding the frame
	size to BIGGEST_ALIGNMENT:
	* sh.c (rounded_frame_size): New function.
	(sh_expand_prologue, sh_expand_epilogue): Use it.
	(initial_elimination_offset): Likewise.

From-SVN: r32138
2000-02-24 22:14:14 +00:00
J"orn Rennecke afbc290536 Fix breakage from 6th Feb thread_prologue_and_epilogue_insns change:
* sh-protos.h (sh_need_epilogue): Declare.
	* sh.c (sh_need_epilogue_known): New static variable.
	(sh_need_epilogue): New function.
	(function_epilogue): Clear need_epilogue_known.
	* sh.md (return): Split into expander / insn pattern.
	Make the expander conditional on ! sh_need_epilogue ().

From-SVN: r32136
2000-02-24 20:09:30 +00:00
J"orn Rennecke 2148624a44 final.c (shorten_branches): Make value passed to LABEL_ALIGN conform to documentation.
* final.c (shorten_branches): Make value passed to LABEL_ALIGN
	conform to documentation.
	* sh.h (LABEL_ALIGN): If aligning loops, call sh_label_align
	to check for special cases.
	* sh-protos.h (sh_label_align): Declare.
	* sh.c (sh_label_align): Define.

From-SVN: r32114
2000-02-23 17:18:15 +00:00
J"orn Rennecke c284306145 sh.h (OVERRIDE_OPTIONS): Don't set sh_addr_diff_vec_mode.
* sh.h (OVERRIDE_OPTIONS): Don't set sh_addr_diff_vec_mode.
	(sh_addr_diff_vec_mode): Don't declare.
	* sh.c (sh_addr_diff_vec_mode): Delete.

From-SVN: r32000
2000-02-16 03:23:40 +00:00
J"orn Rennecke 9f09b1f272 Makefile.in (lcm.o): Depend on insn-attr.h.
* Makefile.in (lcm.o): Depend on insn-attr.h.
	* basic-block.h (optimize_mode_switching): Declare.
	* lcm.c (tm_p.h, insn-attr.h): #include.
	(seginfo, bb_info): New structs.
	(antic, transp, comp, delete, insert) : New file-scope static variables.
	(new_seginfo, add_seginfo, make_preds_opaque, reg_dies): New functions.
	(reg_becomes_live, optimize_mode_switching): Likewise.
	* tm.texi: Add description of mode switching macros.
	* toplev.c (rest_of_compilation): Call optimize_mode_switching.

	* sh-protos.h (remove_dead_before_cse): Remove prototype.
	(fldi_ok, fpscr_set_from_mem): New prototypes.
	* sh.h (OPTIMIZATION_OPTION): Remove sh_flag_remove_dead_before_cse set.
	(CONST_DOUBLE_OK_FOR_LETTER_P, SECONDARY_INPUT_RELOAD_CLASS):
	Disable fldi for (TARGET_SH4 && ! TARGET_FMOVD).
	(sh_flag_remove_dead_before_cse): Remove declaration.
	(NUM_MODES_FOR_MODE_SWITCHING, OPTIMIZE_MODE_SWITCHING): New macros.
	(MODE_USES_IN_EXIT_BLOCK, MODE_NEEDED, MODE_AT_ENTRY): Likewise.
	(MODE_PRIORITY_TO_MODE, EMIT_MODE_SET): Likewise.
	* sh.c (broken_move): Disable fldi for (TARGET_SH4 && ! TARGET_FMOVD).
	(barrier_align): Allow for JUMP_INSNS containing a parallel.
	(machine_dependent_reorg): Remove sh_flag_remove_dead_before_cse set.
	(fldi_ok): New function.
	(get_fpscr_rtx): Add fpscr_rtx as GC root.
	(emit_sf_insn): Only generate fpu switches when optimize < 1.
	(emit_df_insn): Likewise.
	(expand_fp_branch, emit_fpscr_use, remove_dead_before_cse): Delete.
	(sh_flag_remove_dead_before_cse): Delete.
	(get_free_reg, fpscr_set_from_mem): New functions.
	* sh.md (movdf, movsf): Remove no_new_pseudos code.
	(return): Remove emit_fpscr_use / remove_dead_before_cse calls.

Co-Authored-By: Andrew MacLeod <amacleod@cygnus.com>

From-SVN: r31990
2000-02-15 22:34:33 +00:00
Kaveh R. Ghazi 9f8f4efee3 Makefile.in (TREE_H, [...]): Depend on version.h.
* Makefile.in (TREE_H, collect2.o, gcc.h, mips-tfile.o, cccp.o,
	cpphash.o, cppinit.o, protoize.o, unprotoize.o): Depend on version.h.

	* cccp.c: Include version.h and/or don't declare `version_string'.
	* collect2.c: Likewise.
	* alpha.c: Likewise.
	* arm/aof.h: Likewise.
	* arm/coff.h: Likewise.
	* arm/elf.h: Likewise.
	* arm/pe.h: Likewise.
	* arm/tcoff.h: Likewise.
	* arm/telf.h: Likewise.
	* arm/tpe.h: Likewise.
	* arm/vxarm.h: Likewise.
	* convex/convex.c: Likewise.
	* i386/dgux.c: Likewise.
	* i386/sun386.h: Likewise.
	* m88k/m88k.c: Likewise.
	* mcore/mcore-pe.h: Likewise.
	* mips/mips.h: Likewise.
	* romp/romp.h: Likewise.
	* sh/sh.c: Likewise.
	* cpphash.c: Likewise.
	* cppinit.c: Likewise.
	* dwarf2out.c: Likewise.
	* dwarfout.c: Likewise.
	* gcc.c: Likewise.
	* gcc.h: Likewise.
	* mips-tfile.c: Likewise.
	* protoize.c: Likewise.
	* toplev.c: Likewise.
	* tree.h: Likewise.

	* version.c (version_string): Constify a char*.

	* version.h: New file.

ch:
	* grant.c: Don't declare `version_string'.

f:
	* g77spec.c: Don't declare `version_string'.

java:
	* Makefile.in (jv-scan, jcf-dump, gcjh): Depend on and link with
	version.o.
	(jcf-dump.o, gjavah.o, jv-scan.o): Depend on version.h.

	* gjavah.c: Include version.h.

	* jcf-dump.c: Likewise.

	* jv-scan.c: Likewise.

From-SVN: r31984
2000-02-15 16:36:35 +00:00
J"orn Rennecke 10db12e0c6 Back out prepare_scc_operands changes from this afternoon.
From-SVN: r31515
2000-01-19 21:57:38 +00:00
J"orn Rennecke 21d17d9c84 * sh.c (prepare_scc_operands): Add EQ case.
From-SVN: r31514
2000-01-19 21:49:21 +00:00
J"orn Rennecke eda44c7832 sh.c (prepare_scc_operands): Abort if no compare insn is available.
* sh.c (prepare_scc_operands): Abort if no compare insn is available.
	(find_barrier, gen_block_redirect, split_branches): Fix indentation.
	(calc_live_regs): Likewise.

From-SVN: r31507
2000-01-19 20:00:09 +00:00
Kaveh R. Ghazi 318881c06e sh-protos.h: New file.
* sh-protos.h: New file.

	* sh.c: Include insn-config.h, toplev.h, recog.h and tm_p.h.
	Add static prototypes.  Fix compile time warnings.

	* sh.h: Move prototypes to sh-protos.h.  Fix compile time warnings.
	* sh.md: Likewise.
	* elf.h: Likewise.

From-SVN: r31418
2000-01-14 16:28:59 +00:00
Richard Henderson 514066a133 sh.c (sh_builtin_saveregs): Use get_varargs_alias_set.
* sh.c (sh_builtin_saveregs): Use get_varargs_alias_set.
        (sh_build_va_list, sh_va_start, sh_va_arg): New.
        * sh.h (BUILD_VA_LIST_TYPE): New.
        (EXPAND_BUILTIN_VA_START, EXPAND_BUILTIN_VA_ARG): New.

From-SVN: r29415
1999-09-14 16:29:48 -07:00
Jeff Law c5c7673583 Merge in gcc2-ss-010999
From-SVN: r29150
1999-09-06 23:49:18 -06:00
Kaveh R. Ghazi 6f7d635c0e rtl.h (rtx_format): Constify a char*.
* rtl.h (rtx_format): Constify a char*.

	* rtl.c (rtx_format): Likewise.
	(copy_rtx, copy_most_rtx, read_rtx): Likewise.
	(init_rtl): Use accessor macro, not `rtx_format'.

	* alias.c (rtx_equal_for_memref_p, find_symbolic_term): Constify a
	char*.

	* caller-save.c (mark_referenced_regs): Likewise.

	* combine.c (subst, make_compound_operation, known_cond,
	gen_rtx_combine, update_table_tick, get_last_value_validate,
	use_crosses_set_p, mark_used_regs_combine, move_deaths): Likewise.

	* cse.c (rtx_cost, mention_regs, canon_hash, exp_equiv_p,
	refers_to_p, canon_reg, fold_rtx, cse_process_notes,
	count_reg_usage): Likewise.

	* emit-rtl.c (gen_rtx, copy_rtx_if_shared, reset_used_flags):
	Likewise.

	* final.c (leaf_renumber_regs_insn): Likewise.

	* flow.c (mark_used_regs, find_use_as_address, dump_flow_info,
	dump_edge_info, count_reg_references): Likewise.

	* function.c (fixup_var_refs_1, walk_fixup_memory_subreg,
	fixup_stack_1, purge_addressof_1, instantiate_virtual_regs_1):
	Likewise.

	* gcse.c (oprs_unchanged_p, hash_expr_1, expr_equiv_p,
	oprs_not_set_p, expr_killed_p, compute_transp, find_used_regs,
	add_label_notes): Likewise.

	* genattrtab.c (attr_rtx, attr_copy_rtx, encode_units_mask,
	clear_struct_flag, count_sub_rtxs, count_alternatives,
	compares_alternatives_p, contained_in_p, walk_attr_value,
	write_expr_attr_cache): Likewise.

	* genconfig.c (walk_insn_part): Likewise.

	* genemit.c (max_operand_1, gen_exp): Likewise.

	* genextract.c (walk_rtx): Likewise.

	* genflags.c (num_operands): Likewise.

	* genoutput.c (scan_operands): Likewise.

	* genpeep.c (match_rtx): Likewise.

	* genrecog.c (add_to_sequence): Likewise.

	* haifa-sched.c (may_trap_exp, sched_analyze_2, attach_deaths):
	Likewise.

	* integrate.c (save_constants, copy_for_inline,
	copy_rtx_and_substitute, subst_constants, restore_constants):
	Likewise.

	* jump.c  (mark_jump_label, invert_exp, redirect_exp,
	rtx_renumbered_equal_p, rtx_equal_for_thread_p): Likewise.

	* local-alloc.c (contains_replace_regs, memref_referenced_p):
	Likewise.

	* loop.c (record_excess_regs, rtx_equal_for_loop_p,
	add_label_notes, replace_call_address, count_nonfixed_reads,
	invariant_p, find_single_use_in_loop, find_mem_givs,
	find_life_end, maybe_eliminate_biv_1, update_reg_last_use):
	Likewise.

	* print-rtl.c (reg_names, print_rtx): Likewise.

	* recog.c (validate_replace_rtx_1, find_single_use_1): Likewise.

	* reg-stack.c (stack_regs_mentioned_p, record_label_references,
	record_reg_life_pat, swap_rtx_condition, goto_block_pat,
	print_blocks): Likewise.

	* regclass.c (fix_register, record_address_regs,
	reg_scan_mark_refs): Likewise.

	* regmove.c (stable_but_for_p): Likewise.

	* reload.c (loc_mentioned_in_p, operands_match_p,
	find_reloads_toplevsubst_reg_equivs, find_reloads_address_1,
	copy_replacements, refers_to_regno_for_reload_p,
	refers_to_mem_for_reload_p, find_inc_amount, regno_clobbered_p,
	reload_when_needed_name, reg_class_names, debug_reload_to_stream):
	Likewise.

	* reload1.c (eliminate_regs, scan_paradoxical_subregs,
	delete_address_reloads_1, count_occurrences,
	reload_cse_mem_conflict_p, reload_combine_note_use,
	add_auto_inc_notes): Likewise.

	* resource.c (mark_referenced_resources, mark_set_resources):
	Likewise.

	* rtlanal.c (rtx_unstable_p, rtx_varies_p, rtx_addr_varies_p,
	reg_mentioned_p, regs_set_between_p, modified_between_p,
	modified_in_p, refers_to_regno_p, reg_overlap_mentioned_p,
	rtx_equal_p, volatile_insn_p, volatile_refs_p, side_effects_p,
	may_trap_p, inequality_comparisons_p, replace_rtx, replace_regs,
	jmp_uses_reg_or_mem, for_each_rtx, regno_use_in): Likewise.

	* sched.c (sched_analyze_2, attach_deaths): Likewise.

	* stupid.c (stupid_mark_refs): Likewise.

	* unroll.c (remap_split_bivs): Likewise.

	* varasm.c (mark_constants): Likewise.

	* a29k/a29k.c (uses_local_reg_p): Likewise.

	* alpha/alpha.c (summarize_insn): Likewise.

	* arm/arm.c (symbol_mentioned_p, label_mentioned_p,
	eliminate_lr2ip): Likewise.

	* arm/thumb.c (symbol_mentioned_p, label_mentioned_p): Likewise.

	* i386/i386.c (symbolic_reference_mentioned_p, copy_all_rtx,
	reg_mentioned_in_mem): Likewise.

	* ns32k/ns32k.c (global_symbolic_reference_mentioned_p,
	symbolic_reference_mentioned_p): Likewise.

	* romp/romp.c (unsigned_comparisons_p, hash_rtx): Likewise.

	* sh/sh.c (regs_used, mark_use): Likewise.

	* vax/vax.c (vax_rtx_cost): Likewise.

From-SVN: r28784
1999-08-20 23:05:25 +00:00
Jim Wilson ab1672a333 Fix -O0 core dump reported by Fred Fish.
* config/sh/sh.c (machine_dependent_reorg): Only call PUT_MODE on
	note if it is non-NULL.

From-SVN: r28653
1999-08-10 17:26:38 -07:00
Bernd Schmidt 49ad7cfa7a Include function.h in most files.
Include function.h in most files.  Remove most of the global variables
duplicated in function.h.  Add accessor macros for them which access
current_function.  Delete INLINE_HEADER rtx and related code, replace
with code using struct function to store inlining related data.

From-SVN: r28626
1999-08-09 14:00:21 +00:00
Richard Henderson 648d2ffce8 m32r.h (EXPAND_BUILTIN_SAVEREGS): Likewise.
* m32r.h (EXPAND_BUILTIN_SAVEREGS): Likewise.
        * m88k.h, m88k.c: Likewise.
        * mn10300.h, mn10300.c: Likewise.
        * pa.h, pa.c: Likewise.
        * rs6000.h, rs6000.c: Likewise.
        * sh.h, sh.c: Likewise.
        * sparc.h, sparc.c: Likewise.

From-SVN: r28245
1999-07-25 18:21:59 -07:00
J"orn Rennecke b8794099b7 sh.c (machine_dependent_reorg): When fixing up fp pcloads...
* sh.c (machine_dependent_reorg): When fixing up fp pcloads,
	remove the clobber of r0 and change the REG_UNUSED note to
	REG_INC.

From-SVN: r27676
1999-06-21 20:21:48 +01:00
J"orn Rennecke 4d070fd3cd Fix pcrel too far problems due to upping CACHE_LOG on SH2:
* sh.c (barrier_align): Don't return early for normal branch/barrier
        when optimizing for SH2.

From-SVN: r27333
1999-06-03 22:48:04 +01:00
J"orn Rennecke eb3881bf7d sh.c (fixup_addr_diff_vecs): Emit braf reference label.
* sh.c (fixup_addr_diff_vecs): Emit braf reference label.
	(braf_label_ref_operand): Delete.
	* sh.h (PREDICATE_CODES): Remove braf_label_ref_operand.
	* sh.md (casesi_jump_2): Operand1 is now the inside of a
	label_ref, and has no predicate.
	The patten has a predicate to guard against invalid substitutions.
	(dummy_jump): Delete.
	(casesi): Update use of casesi_jump_2.

From-SVN: r27329
1999-06-03 21:00:16 +01:00
J"orn Rennecke 66c0b347bc sh.c (fp_arith_reg_operand): Actually test if reg is suitable for FP arithmetic.
* sh.c (fp_arith_reg_operand): Actually test if reg is suitable
	for FP arithmetic.  Changed caller.
	* sh.md (subsf3, subsf_i): Use fp_arith_reg_operand.

From-SVN: r25670
1999-03-10 11:07:32 +00:00
J"orn Rennecke 0aa692fc03 sh.c (force_into): New function.
* sh.c (force_into): New function.
	(expand_block_move): Use it.

From-SVN: r25540
1999-03-02 16:42:59 +00:00
J"orn Rennecke 9ab70a9bd7 sh.h (PASS_IN_REG_P): For TARGET_HITACHI, don't pass structures in registers.
* sh.h (PASS_IN_REG_P):  For TARGET_HITACHI, don't pass structures
	in registers.
	* expr.h (PRETEND_OUTGOING_VARARGS_NAMED): Provide default definition.
	* function.c (assign_parms): Honour PRETEND_OUTGOING_VARARGS_NAMED.
	* calls.c (expand_call): Likewise.
	* sh.c (sh_expand_prologue): For TARGET_HITACHI, don't push varargs /
	stdarg arguments.
	* sh.h (CPP_SPEC): Add -D__HITACHI__ for -mhitachi.
	(FUNCTION_ARG):  For TARGET_HITACHI, don't pass unnamed
	arguments in registers.
	(PRETEND_OUTGOING_VARARGS_NAMED): Define.
	* va-sh.h (entire file): If __HITACHI__ is defined, use sh[123]
	flavour varargs.

From-SVN: r25440
1999-02-25 14:02:32 +00:00