Commit Graph

52 Commits

Author SHA1 Message Date
Kaveh R. Ghazi 3d994c6bef alias.c: PROTO -> PARAMS.
* alias.c: PROTO -> PARAMS.
	* basic-block.h: Likewise.
	* bitmap.c: Likewise.
	* bitmap.h: Likewise.
	* builtins.c: Likewise.
	* c-aux-info.c: Likewise.
	* caller-save.c: Likewise.
	* calls.c: Likewise.

From-SVN: r31338
2000-01-11 23:27:40 +00:00
Bernd Schmidt 239a0f5ba5 Change some regsets to regset_heads
From-SVN: r31032
1999-12-20 12:13:01 +00:00
J"orn Rennecke 285f3cf09a caller-save.c (insert_one_insn): Returns struct insn_chain *.
* caller-save.c (insert_one_insn): Returns struct insn_chain *.
	Handle live_throughout / dead_or_set instead of live_before /
	live_after.
	(save_call_clobbered_regs): Get register livenessinformation from
	chain->live_throughout.
	(add_stored_regs): New function.
	(insert_restore, insert_save): Add restored / saved registers to
	dead_or_set.
	* global.c (reg_dies): New parameter chain.
	(reg_becomes_live): Third parameter is regs_set now.
	Changed all callers.
	(reg_dies): New parameter chain.  Changed all callers.
	(build_insn_chain): Set live_throughout instead of
	live_before / live_after.
	* reload.h (struct insn_chain): Replace members live_before /
	live_after with live_throughout / dead_or_set.
	* reload1.c (new_insn_chain): Handle live_throughout / dead_or_set
	instead of live_before / live_after.
	(maybe_fix_stack_asms, find_reload_regs, finish_spills): Likewise.
	(order_regs_for_reload, find_reg, finish_spills): Likewise.
	(choose_reload_regs_init): Likewise.
	* stupid.c (current_chain, find_clobbered_regs): Delete.
	(stupid_life_analysis): Set chain->live_throughout chain->dead_or_set
	instead of chain->live_before / chain->live_after.
	(mark_hard_ref): New function.
	(stupid_mark_refs): Call mark_hard_ref. Clear chain->live_throughout.

From-SVN: r30957
1999-12-15 14:57:29 +00:00
Mark Mitchell 848323170b rtl.h (note_stores): Add additional paramter.
* rtl.h (note_stores): Add additional paramter.
	* rtlanal.c (reg_set_p_1): Take additional paramter.
	(reg_set_last_1): Likewise.
	(reg_set_p): Adjust call to note_stores.
	(reg_set_last): Likewise.
	(note_stores): Pass data parameter to worker function.
	* alias.c (record_set): Take additional parameter.
	(init_alias_analysis): Pass it.
	* caller-save.c (mark_set_regs): Take additional parameter.
	(save_call_clobbered_regs): Pass NULL to note_stores.
	* combine.c (set_nonzero_bits_and_sign_copies): Take additional
	parameter.
	(record_dead_and_set_regs_1): Likewise.
	(reg_dead_at_p_1): Likewise.
	(combine_instructions): Adjust calls to note_stores.
	(try_combine): Likewise.
	(record_dead_insn): Remove.
	(record_dead_and_set_regs): Adjust calls to note_stores.
	(reg_dead_at_p): Likewise.
	* cse.c (invalidate_skipped_set): Take additional parameter.
	(cse_check_loop_start): Likewise.
	(cse_check_loop_start_value): Remove.
	(cse_set_around_loop): Adjust calls to note_stores.
	* flow.c (notice_stack_pointer_modification): Take additional
	parameter.  Remove duplicate declaration.
	(record_volatile_insns): Adjust calls to note_stores.
	* gcse.c (record_set_info): Take additional parameter.
	(record_last_set_info): Likewise.
	(invalidate_nonnull_info): Likewise.
	(record_set_insn): Remove.
	(compute_sets): Adjust calls to note_stores.
	(last_set_insn): Remove.
	(compute_hash_table): Adjust calls to note_stores.
	(insert_insn_end_bb): Likewise.
	(delete_null_pointer_checks): Likewise.
	* global.c (mark_reg_store): Take additional parameter.
	(mark_reg_clobber): Likewise.
	(reg_becomes_live): Likewise.
	(global_conflicts): Adjust calls to note_stores.
	(build_insn_chain): Likewise.
	* integrate.c (note_modified_parmregs): Take additional parameter.
	(mark_stores): Likewise.  Make it static.
	(save_for_inline_nocopy): Adjust calls to note_stores.
	(try_constants): Likewise.
	* integrate.h (mark_stores): Remove declaration.
	* jump.c (mark_modified_reg): Take additional parameter.
	(thread_jumps): Adjust calls to note_stores.
	* local-alloc.c (validate_equiv_mem_from_store): Take additional
	parameter.
	(no_equiv): Likewise.
	(reg_is_set): Likewise.
	(validate_equiv_mem): Adjust calls to note_stores.
	(update_equiv_regs): Likewise.
	(block_alloc): Likewise.
	* loop.c (note_set_pseudo_multiple_uses_retval): Remove.
	(note_addr_stored): Take additional parameter.
	(note_set_pseudo_multiple_uses): Likewise.
	(record_initial): Likewise.
	(prescan_loop): Adjust calls to note_stores.
	(strength_reduce): Likewise.
	(check_dbra_loop): Likewise.
	* regmove.c (flags_set_1): Take additional paramter.
	(mark_flags_life_zones): Adjust calls to note_stores.
	* reload1.c (mark_not_eliminable): Take additional parameter.
	(forget_old_reloads_1): Likewise.
	(reload_cse_invalidate_rtx): Likewise.
	(reload_cse_check_clobber): Likewise.
	(reload_combine_note_store): Likewise.
	(move2add_note_store): Likewise.
	(reload): Adjust calls to note_stores.
	(reload_as_needed): Likewise.
	(emit_reload_insns): Likewise.
	(reload_cse_regs_1): Likewise.
	(reload_cse_record_set): Adjust calls to reload_cse_invalidate_rtx.
	(reload_combine): Adjust calls to note_stores.
	* resource.c (update_live_status): Take additional paramter.
	(mark_target_live_regs): Adjust calls to note_stores.
	* stupid.c (find_clobbered_regs): Take additional parameter.
	(stupid_life_analysis): Adjust calls to note_stores.

From-SVN: r30221
1999-10-27 19:27:41 +00:00
Jeff Law 87ff35c2fe Update copyright dates.
From-SVN: r29736
1999-09-30 16:08:56 -06: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
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 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
Jeff Law 92691d7d53 caller-save.c (insert_one_insn): Initialize the live_before and live_after register sets.
(
        * caller-save.c (insert_one_insn): Initialize the live_before and
        live_after register sets.

From-SVN: r23789
1998-11-23 02:39:24 -07:00
Bernd Schmidt 0eadeb15bc recog.h (enum op_type): Define.
* recog.h (enum op_type): Define.
        (constrain_operands): Adjust prototype.
        (recog_op_type): Declare new variable.
        * recog.c (recog_op_type): New variable.
        (insn_invalid_p): Allow modifying an asm statement after reload.
        (extract_insn): Set up recog_op_type.
        (constrain_operands): Lose INSN_CODE_NUM arg.  All callers changed.
        Don't compute operand types, use recog_op_type.
        Use the information computed by extract_insn instead of the previous
        method of finding it by insn code number.
        * caller-save.c (init_caller_save): Use extract_insn, not insn_extract.
        * reorg.c (fill_slots_from_thread): Likewise.
        * reload1.c (reload_as_needed): Likewise.
        (gen_reload): Likewise.
        (inc_for_reload): Likewise.
        (reload_cse_simplify_operands): Likewise.
        Use the information computed by extract_insn instead of the previous
        method of finding it by insn code number.
        * genattrtab.c (write_attr_case): Generate call to extract_insn, not
        insn_extract.
        * final.c (final_scan_insn): Use extract_insn, not insn_extract.
        (cleanup_operand_subregs): Use extract_insn, not insn_extract.
        Use the information computed by extract_insn instead of the previous
        method of finding it by insn code number.
        * regmove.c (find_matches): Likewise.  Change meaning of the return
        value to be nonzero if the optimization can be performed, zero if
        not.  All callers changed.
        Shorten some variable names to fix formatting problems.
        (regmove_optimize): Shorten some variable names to fix formatting
        problems.
        Use the information computed by extract_insn instead of the previous
        method of finding it by insn code number.
        * regclass.c (scan_one_insn): Likewise.
        (record_reg_classes): Don't compute operand types, use recog_op_type.
        * reload.c (find_reloads): Lose CONSTRAINTS1 variable; use
        recog_constraints instead.

From-SVN: r23529
1998-11-04 14:25:00 -07:00
Kaveh R. Ghazi e51712db0d Warning fixes:
* Makefile.in (sched.o): Depend on recog.h.
        * alias.c (REG_BASE_VALUE): Cast the result of REGNO() macro to
        (unsigned) when comparing against one.
        (find_base_value): Likewise.
        (record_base_value): Cast variable `regno' to (unsigned) when
        comparing against one.  Cast the result of REGNO() macro to
        (unsigned) when comparing against one.
        (memrefs_conflict_p): Change type of variables `r_x' and `r_y'  to
        unsigned.
        (init_alias_analysis): Add unsigned variable `ui'.  Use it as loop
        variable where an unsigned index is needed.
        * caller-save.c (init_caller_save): Cast `-1' to (enum insn_code)
        before comparing against one.
        * collect2.c: Add prototypes for functions `error', `fatal' and
        `fatal_perror'.  Make these functions take variable arguments
        instead of faking it with a fixed number of args.
        (write_c_file_stat): Cast the argument of ctype macro to (unsigned
        char).
        * combine.c (can_combine_p): Mark parameter `pred' with
        ATTRIBUTE_UNUSED.
        (find_split_point): Cast variable `src' to (unsigned
        HOST_WIDE_INT) when comparing against one.
        HOST_WIDE_INT) when comparing against one.
        (simplify_rtx): Cast 1 to (unsigned HOST_WIDE_INT) in shift.
        (simplify_logical): Likewise.
        (force_to_mode): Cast result of INTVAL() macro to (unsigned
        HOST_WIDE_INT) when comparing against one.  Cast 1 to (unsigned
        HOST_WIDE_INT) in shift.
        (simplify_and_const_int): Cast result of INTVAL() macro to
        `unsigned HOST_WIDE_INT' when comparing against one.
        (merge_outer_ops): Cast variable const0 to `unsigned
        HOST_WIDE_INT' when comparing against the result of
        GET_MODE_MASK() macro.
        (simplify_comparison): Likewise for variable `c0'.  Cast variable
        `const_op' to `unsigned HOST_WIDE_INT' when comparing against
        one.  Cast `1' to `unsigned HOST_WIDE_INT' in shift.  Cast the
        result of `GET_MODE_MASK()/2' to `HOST_WIDE_INT' when comparing
        against one.  Cast `1' to `unsigned HOST_WIDE_INT' in shift.  Cast
        result of INTVAL() macro to `unsigned HOST_WIDE_INT' when
        comparing against one.
        (distribute_notes): Wrap variable `cc0_setter' in macro `HAVE_cc0'.
        config/mips/mips.c (gen_int_relational): Cast result of INTVAL()
        macro to `unsigned HOST_WIDE_INT' when comparing against one.
        (output_block_move): Cast `sizeof' expression to (int) when
        comparing against one.
        (function_arg): Cast BITS_PER_WORD to `unsigned' when comparing
        against one.
        (save_restore_insns): Cast `base_offset' to `long' to match format
        specifier in fprintf.
        * config/mips/mips.h (Pmode): Cast the result of `Pmode' macro
        to `enum machine_mode'.
        * flow.c (life_analysis_1): Remove unused variable `insn'.
        * gcc.c (translate_options): Move variables `j' and `k' into the
        scope in which they are used.  Change their types to `size_t'.
        (set_spec): Cast the argument of ctype macro to `unsigned char'.
        (read_specs): Likewise.
        (process_command): Cast `sizeof' to (int) when comparing against one.
        (do_spec_1): Cast the argument of ctype macro to `unsigned char'.
        (handle_braces): Cast both sides of `==' expression to `long' to
        ensure sign matching.
        (main): Cast variable `i' to `int' when comparing against one.
        * gcov-io.h (__fetch_long): Change type of parameter `bytes' from
        int to size_t.  Cast variable `i' to size_t when comparing against
        one.
        * genattrtab.c (convert_set_attr_alternative): Remove unused
        parameter `insn_code'.  All callers changed.
        (convert_set_attr): Likewise.
        * genrecog.c (add_to_sequence): Cast result of XVECLEN() macro to
        size_t when comparing against one.  Likewise for variable `len'.
        * global.c (global_alloc): Cast variable `max_regno' to size_t
        when comparing against one.  Likewise for variable `max_allocno'.
        * jump.c (sets_cc0_p): Mark parameter `x' with ATTRIBUTE_UNUSED.
        * local-alloc.c (validate_equiv_mem_from_store): Mark parameter
        `set' with ATTRIBUTE_UNUSED.
        (find_free_reg): Cast `sizeof' expression to (int) when comparing
        against one.
        * loop.c (count_loop_regs_set): Remove unused variable `dest'.
        (strength_reduce): Mark parameter `bct_p' with ATTRIBUTE_UNUSED.
        (get_condition): Cast variable `const_val' to `unsigned
        HOST_WIDE_INT' when comparing against one.  Cast unsigned
        expression to HOST_WIDE_INT when comparing against one.
        (insert_loop_mem): Mark parameter `data' with ATTRIBUTE_UNUSED.
        (load_mems_and_recount_loop_regs_set): Cast variable `nregs' to
        `unsigned' when comparing against one.
        * protoize.c (is_id_char): Change type of parameter `ch' to
        unsigned char.
        (munge_compile_params): Cast argument of ctype macro to (const
        unsigned char).
        (process_aux_info_file): Cast variable `aux_info_size' to int when
        comparing against one.
        (forward_to_next_token_char): Cast argument of ctype macro to
        `const unsigned char'.
        (edit_formals_lists): Likewise.
        (find_rightmost_formals_list): Likewise.
        (add_local_decl): Likewise.
        (add_global_decls): Likewise.
        (edit_fn_definition): Likewise.
        (do_cleaning): Likewise.
        (scan_for_missed_items): Likewise.
        (edit_file): Cast variable `orig_size' to (int) when comparing
        against one.
        (main): Cast argument of ctype macro to `const unsigned char'.
        * recog.c (const_int_operand): Mark parameter `mode' with
        ATTRIBUTE_UNUSED.
        * regclass.c (record_reg_classes): Change type of variable `c' to
        `unsigned char'.  Cast `char' array index to `unsigned char'.
        * reload.c (push_secondary_reload): Cast argument to
        REG_CLASS_FROM_LETTER() macro to `unsigned char'.
        * reload1.c (calculate_needs): Cast `char' array index to
        `unsigned char'.
        (set_label_offsets): Change type of variable `i' to unsigned int.
        Cast result of XVECLEN() macro to unsigned when comparing against
        one.
        (mark_not_eliminable): Change type of variable `i' to unsigned.
        (order_regs_for_reload): Likewise.  Cast `max_regno' to unsigned
        when comparing against one.
        (reload_as_needed): Cast macro NUM_ELIMINABLE_REGS to (int) when
        comparing against one.
        (choose_reload_regs): Hide unused label `fail'.
        (reload_cse_simplify_operands): Cast `char' array index to
        `unsigned char'.
        (reload_combine_note_store): Mark parameter `set' with
        ATTRIBUTE_UNUSED.  Cast UNITS_PER_WORD to unsigned when comparing
        against one.
        (reload_cse_move2add): Remove unused variable `src2'.
        * sched.c: Include recog.h.
        (sched_note_set): Remove unused parameter `b'.  All callers
        changed.
        (split_hard_reg_notes): Likewise for parameter `orig_insn'.
        (blockage_range): Cast result of UNIT_BLOCKED() macro to (int)
        when comparing against one.
        * stupid.c (stupid_find_reg): Mark parameter `changes_size' with
        ATTRIBUTE_UNUSED.  Cast `sizeof' expression to (int) when
        comparing against one.
        * unroll.c (precondition_loop_p): Remove unused parameter
        `loop_end'.  All callers changed.

From-SVN: r23079
1998-10-14 09:02:55 +00:00
Bernd Schmidt 7609e7209a reload.h (compute_use_by_pseudos): Declare.
* reload.h (compute_use_by_pseudos): Declare.
	* reload1.c (spilled_pseudos, insns_need_reload): New variables.
	(something_needs_reloads): Delete variable.
	(finish_spills): New function.
	(compute_use_by_pseudos): New function.
	(delete_caller_save_insns): Lose argument FIRST.  All callers changed.
	Use the reload_insn_chain instead of walking the rtl directly.
	(reload): Allocate and free spilled_pseudos.
	Ensure that all calls of spill_hard_reg are followed by a call to
	finish_spills.
	Use the insns_need_reload list instead of something_needs_reloads
	to find out if reload_as_needed must be called.
	Clear unused_insn_chains at the end.
	(calculate_needs_all_insns): Lose FIRST parameter.  All callers
	changed.
	Delete code to keep track of current basic block.
	Walk reload_insn_chain instead of the rtl structure.  Build the
	insns_need_reload chain.
	Remember which insns need reloading/elimination by setting the
	appropriate fields in struct insn_chain, not by putting modes on the
	insn.
	(calculate_needs): Lose THIS_BLOCK arg.  Accept arg CHAIN instead of
	arg INSN.  All callers changed.
	Delete declaration of struct needs.
	Don't set something_needs_reloads.
	Record insn needs in the CHAIN argument.
	(spill_hard_reg): Record the affected pseudos in spilled_pseudos.
	(reload_as_needed): Lose FIRST arg.  All callers changed.
	Walk the reload_insn_chain instead of the rtx structure.
	Delete code to keep track of current basic block.
	Rename one of the NEXT variables to OLD_NEXT.
	(allocate_reload_reg): Accept arg CHAIN instead of arg INSN.  All
	callers changed.
	(choose_reload_regs): Likewise.
	(emit_reload_insns): Replace INSN and BB args with arg CHAIN.  All
	callers changed.
	* caller-save.c (MOVE_MAX_WORDS): New macro.  Use it throughout
	instead of (MOVE_MAX / UNITS_PER_WORD) computation.
	(hard_regs_live, hard_regs_need_restore): Delete variables.
	(n_regs_saved): Now static.
	(referenced_regs, this_insn_sets): New variables.
	(setup_save_areas): Restructure the code a bit.
	(restore_referenced_regs): Delete function.
	(mark_referenced_regs): New function, similar to the old
	restore_referenced_regs, but mark registers in referenced_regs.
	(clear_reg_live): Delete function.
	(mark_set_regs): Renamed from set_reg_live.  All callers changed.
	Only mark registers in this_insn_sets.
	(save_call_clobbered_regs): Rework this function to walk the
	reload_insn_chain instead of using the list of instructions directly.
	Delete code to keep track of register lives, compute live regs on the
	fly from information in the chain.
	Instead of calling restore_referenced_regs, use mark_referenced_regs,
	then walk the set it computes and call insert_restore as appropriate.
	(insert_restore): Lose INSN and BLOCK args.  Add CHAIN arg.  All
	callers changed.
	Restructure the code a bit.  Test hard_regs_saved instead of
	hard_regs_need_restore.
	(insert_save): Lose INSN and BLOCK args.  Add CHAIN and TO_SAVE
	args.  All callers changed.
	Restructure the code a bit.  Use TO_SAVE to determine which regs to
	save instead of more complicated test.
	(insert_one_arg): Lose INSN and BLOCK args.  Add CHAIN arg.  All
	callers changed.
	Create a new insn_chain structure for the new insn and place it
	into the chain.
	* rtl.texi: Update documentation to reflect that reload no longer
	puts modes on the insns.

From-SVN: r23074
1998-10-13 19:14:42 -06:00
Bernd Schmidt 437a710df0 caller-save.c (restore_referenced_regs): Lose mode argument.
* caller-save.c (restore_referenced_regs): Lose mode argument.
	(insert_save): Lose mode argument.
	(insert_restore): Lose mode argument.
	(insert_one_insn): Lose mode argument.
	(save_call_clobbered_regs): Lose mode argument.
	(setup_save_areas): Take no argument and return void.  All callers
	changed.
	Don't verify validity of memory addresses.
	* reload.h (setup_save_ares): Adjust prototype.
	(save_call_clobbered_regs): Likewise.
	* reload1.c (delete_caller_save_insns): New function.
	(caller_save_spill_class): Delete variable.
	(caller_save_group_size): Delete variable.
	(reload): Call setup_save_areas and save_call_clobbered_regs
	in the main loop, before calling calculate_needs_all_insns.
	Don't call save_call_clobbered_regs after the loop.
	Call delete_caller_save_insns at the end of an iteration if
	something changed.
	Delete code to manage caller_save_spill_class.
	Emit the final note before setting reload_first_uid.
	Simplify test that determines whether reload_as_needed gets run.
	(calculate_needs): Delete code to manage caller_save_spill_class.

From-SVN: r22876
1998-10-06 18:13:49 -06:00
Jeff Law 4554e20d80 caller-save.c (insert_save_restore): Break this function up into new functions insert_restore...
�
	* caller-save.c (insert_save_restore): Break this function up
	into new functions insert_restore, insert_save and insert_one_insn.
	All callers changed.
	(insert_restore): New function, mostly broken out of
	insert_save_restore.
	(insert_save): Likewise.
	(insert_one_insn): Likewise.
	(restore_referenced_regs): New argument BLOCK.  All callers changed.
	(save_call_clobbered_regs): Don't keep track of basic block boundaries
	in this function, do it in insert_one_insn instead.

From-SVN: r22754
1998-10-02 04:25:57 -06:00
Jeff Law 8d5c8167c9 regs.h (HARD_REGNO_CALLER_SAVE_MODE): New macro.
* regs.h (HARD_REGNO_CALLER_SAVE_MODE): New macro.
        * caller-save.c (init_caller_save): Use it.
        * tm.texi: Document HARD_REGNO_CALLER_SAVE_MODE.

From-SVN: r22682
1998-09-30 11:21:12 -06:00
Graham Stott 2e107e9ea1 alias.c: Include toplev.h
* alias.c: Include toplev.h
        * caller-save.c: Include toplev.h
        * combine.c: Include toplev.h
        * flow.c Include toplev.h
        * global.c: Include toplev.h
        * jump.c: Include toplev.h
        * local-alloc.c: Include toplev.h
        * loop.c: Include toplev.h
        * regmove.c: Include toplev.h
        * stupid.c: Include toplev.h
        * unroll.c: Include toplev.h
        * Makefile.in: Add toplev.h dependencies.

From-SVN: r20623
1998-06-19 17:37:04 -06:00
Kaveh R. Ghazi d6f4ec5199 Warning fixes:
* Makefile.in (c-lang.o): Depend on c-tree.h, c-lex.h and toplev.h.
	(c-lex.o): Depend on output.h.
	(c-common.o): Likewise.
	(stmt.o): Likewise.
	(calls.o): Likewise.
	(integrate.o): Depend on toplev.h.
	(regclass.o): Depend on output.h.
	(final.o): Depend on reload.h.
	* c-common.c: Include output.h.
	(check_format_info): Remove unused variable `integral_format'.
	* c-decl.c (print_lang_decl): Mark parameters `file', `node' and
	`indent' with ATTRIBUTE_UNUSED.
	(print_lang_type): Likewise.
	(maybe_build_cleanup): Likewise for parameter `decl'.
	(copy_lang_decl): Likewise for parameter `node'.
	* c-lang.c: Include c-tree.h, c-lex.h and toplev.h.
	(lang_print_xnode): Mark parameters `file', `node' and `indent'
 	with ATTRIBUTE_UNUSED.
	(lookup_interface): Likewise for parameter `arg'.
	(is_class_name): Likewise.
	(maybe_objc_check_decl): Likewise for parameter `decl'.
	(maybe_objc_comptypes): Likewise for parameters `lhs', `rhs' and
	`reflexive'.
	(maybe_objc_method_name): Likewise for parameter `decl'.
	(build_objc_string): Likewise for parameters `len' and `str'.
	* c-lex.c: Include output.h.
	* c-lex.h (position_after_white_space): Correct typo in prototype.
	* c-tree.h (finish_file, c_expand_start_cond, c_expand_start_else,
 	c_expand_end_cond, init_iterators): Add prototypes.
	* caller-save.c (set_reg_live): Mark parameters `reg' and `setter'
	with ATTRIBUTE_UNUSED.
	* calls.c: Include output.h.
	* cccp.c (pipe_closed): Mark parameter `signo' with
 	ATTRIBUTE_UNUSED.
	* combine.c: Move inclusion of expr.h to after insn-config.h.
	* iris6.h (ASM_IDENTIFY_GCC, ASM_IDENTIFY_LANGUAGE): Don't define
	as empty, rather define as ((void)0).
	* sparc.c (sparc_check_64): Add braces around ambiguous `else'.
	Add parentheses around assignment used as truth value.
	* cplus-dem.c (squangle_mop_up): Change return type to void.
	(internal_cplus_demangle): Remove unused parameter `options'.
	All callers changed.
	(cplus_demangle_opname): Remove function wide variable `int i' and
 	replace with `size_t i' at each location where it is used.
	(cplus_demangle_opname): change type of `i' from int to size_t.
	* cppexp.c (right_shift): Mark parameter `pfile' with
	ATTRIBUTE_UNUSED.
	* cpphash.c (cpp_lookup): Likewise.
	(cpp_hash_cleanup): Likewise.
	* cpplib.c (parse_name): Add a prototype and make it static.
	(null_underflow): Mark parameter `pfile' with ATTRIBUTE_UNUSED.
	(null_cleanup): Likewise for parameters `pbuf' and `pfile'.
	(macro_cleanup): Likewise for parameter `pfile'.
	(file_cleanup): Likewise.
	* cpplib.h (cpp_reader_init, cpp_options_init, cpp_start_read,
 	cpp_read_check_assertion, skip_rest_of_line): Add prototypes.
	* crtstuff.c (force_to_data, __CTOR_LIST__, force_to_data,
	__DTOR_END__, __FRAME_END__): Mark with ATTRIBUTE_UNUSED.
	* cse.c (cse_check_loop_start): Mark parameter `set' with
 	ATTRIBUTE_UNUSED.
	* dbxout.c (flag_minimal_debug, have_used_extensions,
	source_label_number): Move inside macro wrapper check against
	defined (DBX_DEBUGGING_INFO) || defined (XCOFF_DEBUGGING_INFO).
	* dwarf2out.c (gen_entry_point_die): Hide prototype and definition.
	* except.h (doing_eh): Provide prototype.
	* expr.c: Move inclusion of expr.h to after insn-config.h.
	* final.c: Include reload.h.
	(shorten_branches): Cast the first argument of bzero to char *.
	* fix-header.c (cpp_print_containing_files): Mark parameter
 	`pfile' with ATTRIBUTE_UNUSED.
	(cpp_fatal): Likewise.
	* flow.c (find_basic_blocks_1): Cast the first argument of bzero
	to char *.
	* genattrtab.c (make_length_attrs): Change the type of variable
	`i' from int to size_t.
	(zero_fn): Mark parameter `exp' with ATTRIBUTE_UNUSED.
	(one_fn): Likewise.
	* genextract.c (main): When generating insn-extract.c, mark
	variable `junk' with ATTRIBUTE_UNUSED.
	* gengenrtl.c (gencode): When generating genrtl.c, cast the first
	argument of bzero to char*.
	* integrate.c: Include toplev.h.
	* libgcc2.c: Wrap `struct exception_table' and
	`find_exception_handler' in macro DWARF2_UNWIND_INFO.
	* objc/Make-lang.in (objc-act.o): Depend on toplev.h.
	* objc/objc-act.c: Include toplev.h.
	(lang_print_xnode): Mark parameters `file', `node' and `indent'
	with ATTRIBUTE_UNUSED.
	(finish_protocol): Likewise for parameter `protocol'.
	* output.h (declare_weak): Add prototype.
	(decode_reg_name): Don't wrap with TREE_CODE macro.
	(assemble_alias): Add prototype.
	* regclass.c: Include output.h.
	* reload.h (reloads_conflict): Add prototype.
	* rtl.h (print_rtl_single, mark_elimiation, reg_class_subset_p,
	output_func_start_profiler): Add prototypes.
	* rtlanal.c (reg_set_p_1): Mark parameters `x' and `pat' with
 	ATTRIBUTE_UNUSED.
	* scan-decls.c: Include scan.h.
	* scan.h (recognized_function, recognized_extern): Add prototypes.
	* stmt.c: Include output.h.
	* toplev.c (error_for_asm, warning_for_asm): Remove prototypes.
	(output_lang_identify): Hide prototype and definition.
	(float_signal): Mark parameter `signo' with ATTRIBUTE_UNUSED.
	(pipe_closed): Likewise.
	* toplev.h (count_error, strip_off_ending, error_for_asm,
 	warning_for_asm): Add prototypes.

From-SVN: r19712
1998-05-13 12:40:39 +00:00
Jeffrey A Law aefdd5abe0 c-lex.c (yylex): Initialize traditional_type, ansi_type and type.
* c-lex.c (yylex): Initialize traditional_type, ansi_type and type.
        * caller-save.c (insert_save_restore): Initialize pat, code and
        numregs.
        * emit-rtl.c (push_to_sequence): Initialize top.
        (push_topmost_sequence): Likewise.
        * genattrtab.c (simplify_by_exploding): Initialize defval.
        * profile.c (branch_prob): Initialize dest.
        * rtl.h (note_stores): Remove duplicate prototype.
        (GEN_INT): Re-instate cast of second arg to HOST_WIDE_INT.
Fix some warnings.
        * cplus-dem.c (gnu_special): Don't get confused by .<digits>
        strings that are not actually lengths.
A change from libiberty that didn't make it into the gcc copy.

From-SVN: r18942
1998-04-01 16:18:11 -07:00
Kaveh R. Ghazi 670ee92097 Major cutover to using system.h:
* Makefile.in (alias.o, bitmap.o, c-aux-info.o, c-common.o,
        c-decl.o, c-iterate.o, c-lang.o, c-lex.o, c-pragma.o, c-typeck.o,
        caller-save.o, calls.o, collect2.o, combine.o, cse.o, dbxout.o,
        dwarf2out.o, dwarfout.o, emit-rtl.o, except.o, explow.o, expmed.o,
        expr.o, final.o, flow.o, function.o, getpwd.o, global.o,
        integrate.o, jump.o, local-alloc.o, loop.o, optabs.o, pexecute.o,
        prefix.o, print-rtl.o, print-tree.o, profile.o, real.o, recog.o,
        reg-stack.o, regclass.o, regmove.o, reload.o, reload1.o, reorg.o,
        rtl.o, rtlanal.o, sdbout.o, stmt.o, stor-layout.o, stupid.o,
        tlink.o, toplev.o, tree.o, unroll.o, varasm.o, xcoffout.o): Depend
        on system.h.
        * alias.c, bitmap.c, c-aux-info.c, c-common.c, c-decl.c,
        c-iterate.c, c-lang.c, c-lex.c, c-pragma.c, c-typeck.c,
        caller-save.c, calls.c, collect2.c, combine.c, cse.c, dbxout.c,
        dwarf2out.c, dwarfout.c, emit-rtl.c, except.c, explow.c, expmed.c,
        expr.c, final.c, flow.c, function.c, gcc.c, getpwd.c, global.c,
        integrate.c, jump.c, local-alloc.c, loop.c, optabs.c, pexecute.c,
        prefix.c, print-rtl.c, print-tree.c, profile.c, real.c, recog.c,
        reg-stack.c, regclass.c, regmove.c, reload.c, reload1.c, reorg.c,
        rtl.c, rtlanal.c, sched.c, sdbout.c, stmt.c, stor-layout.c,
        stupid.c, tlink.c, toplev.c, tree.c, unroll.c, varasm.c,
        xcoffout.c: Include system.h.  Organize include ordering so
        that stdarg/varargs comes before other system headers.  Remove
        spurious casts of functions assured of a prototype in system.h.

From-SVN: r18726
1998-03-20 14:58:42 +00:00
Jeffrey A Law 29a820586a varasm.c (output_constant_pool): Bring back 'done' label inside an appropriate #ifdef.
* varasm.c (output_constant_pool): Bring back 'done' label inside
        an appropriate #ifdef.
        * bitmap.c (bitmap_element_allocate): Wrap variable 'i' in an
        appropriate #ifdef.
        (bitmap_copy, bitmap_operation): Likewise.
        * combine.c (combinable_i3pat): Similarly for 'src'.
        * function.c (fixup_var_refs_1): Similarly for 'outerdest'.
        (locate_and_pad_parm): Similarly for 'reg_parm_stack_space'.
        * regclass.c (copy_cost): Similarly for 'secondary_class'.
        * reload.c (make_memloc): Simliarly for 'i'.
        (find_reloads_address_1): Similarly for 'link'.
        * reload1.c (reload): Similarly for 'previous_frame_pointer_needed'.
        (emit_reload_insns): Similarly for 'second_reloadreg'.
        * unroll.c (iteration_info): Similarly for 'v'.
        * caller-save.c (insert_save_restore): Remove unused variable 'i'.
        * calls.c (expand_call): Similarly for 'i'.
        (emit_library_call, emit_library_call_value): Similarly for 'mode'.
        * fold-const.c (strip_compund_expr): Similarly for 'type'.
        * function.c (fixup_var_refs_1): Similarly  for 'width'.
        (fixup_memory_subreg): Similarly for 'saved'.
        (locate_and_pad_parm): Similarly for 'boundary_in_bytes.'
        (setjmp_protect): Similarly for 'sub'.
        (thread_prologue_and_epilogue_insns): Similarly for 'insn'.
        * loop.c (record_giv): Similarly for 'p'.
        (combine_givs): Similarly for 'temp_iv'.
        (indirect_jump_in_function_p): Similarly for 'is_indirect_jump'.
        * recog.c (validate_replace_rtx_1): Similarly for 'width'.
        * tree.c (get_set_constructor_bytes): Similarly for 'vals'.
        * unroll.c (unroll_loop): Similarly for 'copy'.
        (iteration_info): Similarly for 'b'.
        * varasm.c (assemble_string): Similarly for 'i'.
        * i386.h (LEGITIMIZE_ADDRESS): Similarly for 'orig_x'.

From-SVN: r17973
1998-02-13 18:13:58 -07:00
Richard Henderson 38a448ca5d alias.c: Change all uses of gen_rtx(FOO...) to gen_rtx_FOO...
* alias.c: Change all uses of gen_rtx(FOO...) to gen_rtx_FOO;
change gen_rtx(expr...) to gen_rtx_fmt_foo(expr...).
* caller-save.c, calls.c, combine.c, cse.c: Likewise.
* dwarf2out.c, except.c, explow.c, expmed.c, expr.c: Likewise.
* final.c, flow.c, function.c, genpeep.c, haifa-sched.c: Likewise.
* halfpic.c, integrate.c, jump.c, local-alloc.c, loop.c: Likewise.
* profile.c, recog.c, reg-stack.c, regclass.c, regmove.c: Likewise.
* reload.c, reload1.c, reorg.c, sched.c, stmt.c, stupid.c: Likewise.
* unroll.c, varasm.c: Likewise.
* config/alpha/alpha.c, config/alpha/alpha.md: Likewise.

From-SVN: r17357
1998-01-14 15:10:50 -08:00
Richard Henderson 1914f5da24 reload.h, [...]: Revert March 15 change.
* reload.h, reload1.c (eliminate_regs), caller-save.c, dbxout.c,
	dwarfout.c, dwarf2out.c, reload.c, sdbout.c: Revert March 15 change.
	* reload.c (push_reload): If WORD_REGISTER_OPERATIONS, reload the
	SUBREG_REG if the word count is unchanged.
	* reload1.c (eliminate_regs) [case SET]: If W_R_O, preserve
	subregs of identical word size for push_reload.

From-SVN: r17105
1997-12-15 09:55:58 -08:00
Michael Meissner 8e08106d3e Use REG_SET macros
From-SVN: r14250
1997-06-16 18:40:41 +00:00
Michael Meissner 916b1701c2 abstract regset stuff into macros
From-SVN: r14147
1997-06-05 10:24:03 +00:00
Michael Meissner b1f21e0aef Use accessor macros to access arrays based on regno; move many of the arrays into a single structure.
From-SVN: r14140
1997-05-30 18:19:19 +00:00
Richard Kenner fa1610e95b Change all calls to eliminate_regs.
From-SVN: r13705
1997-03-15 07:17:02 -05:00
Mike Stump 0f41302f47 formatting tweaks
From-SVN: r12390
1996-07-03 22:07:53 +00:00
Richard Kenner 0887bd4b9a (save_call_clobbered_regs): If AUTO_INC_DEC, mark register indicated
by REG_INC notes as live so they will be saved.

From-SVN: r10010
1995-06-19 16:30:25 -04:00
Richard Kenner 940d9d638b Update FSF address.
From-SVN: r9959
1995-06-15 07:33:25 -04:00
Richard Kenner ef0e53ce93 Replace MAX_UNITS_PER_WORD with MIN_UNITS_PER_WORD.
From-SVN: r8904
1995-02-10 19:06:12 -05:00
Richard Kenner 0e6362d984 (insert_save_restore): Change from USE and CLOBBER insns to using
CALL_INSN_FUNCTION_USAGE.

From-SVN: r7243
1994-05-06 17:49:35 -04:00
Doug Evans d0c6176a4d (choose_hard_reg_mode): Delete from here.
From-SVN: r7086
1994-04-20 03:36:09 +00:00
Richard Kenner 69887ad921 Remove previous Berg change.
From-SVN: r6998
1994-04-08 18:08:42 -04:00
Richard Kenner 54bd7fd4f6 Avoid #ifdef HARD_REG_SET.
From-SVN: r6974
1994-04-06 07:07:02 -04:00
Doug Evans dc17cfda7d (MAX_MOVE_MAX, MAX_UNITS_PER_WORD): New macros.
(regno_save_mode, regno_save_mem): Use them.

From-SVN: r5102
1993-08-07 19:58:54 +00:00
Richard Stallman 73737e867f (restore_referenced_regs): New variable saveregs which is number of regs to save at a time...
(restore_referenced_regs): New variable saveregs
which is number of regs to save at a time, instead of numregs,
which is total number of registers to save.

From-SVN: r4445
1993-05-14 04:22:03 +00:00
Richard Kenner c1f0402289 Add prototypes for static functions.
(choose_hard_reg_mode): Add missing parameters declaration.

From-SVN: r3886
1993-03-26 17:29:57 -05:00
Jim Wilson 193013107a (CEIL): Delete.
(restore_referenced_regs): New var NUMREGS.  Pass NUMREGS to
insert_save_restore instead of using using CEIL.

From-SVN: r3427
1993-02-05 15:35:32 -08:00
Richard Kenner b5c2c9bc2f (setup_save_areas): Don't assign save area for a group if some
register in the group has already been assigned an area.

From-SVN: r3000
1992-12-30 07:02:45 -05:00
Richard Stallman 34536f93eb (save_call_clobbered_regs): Ensure any insns we add
are in the same basic block as the insn we added them for.

From-SVN: r2726
1992-11-09 20:07:35 +00:00
Richard Stallman 39fa348549 (setup_save_areas): Don't look at WORDS_BIG_ENDIAN.
From-SVN: r2049
1992-09-03 23:25:40 +00:00
Richard Stallman 9233f8ce48 (insert_save_restore): Correct test for
determining whether multiple registers can be saved.

From-SVN: r2042
1992-09-03 07:13:23 +00:00
Jeff Law c515799cd1 caller-save.c (init_caller_save): If we were unable to find a simple insn which meets all its constraints to save...
* caller-save.c (init_caller_save): If we were unable to
	find a simple insn which meets all its constraints to save
	and restore with a single insn in a mode, then set
	regno_save_mode to VOIDmode to insure that this mode is never
	used to caller-save the	current register.

From-SVN: r2038
1992-09-02 17:08:44 -06:00
Jeff Law d8ed9afb2c caller-save.c (restore_referenced_regs): When restoring a referenced hard register...
* caller-save.c (restore_referenced_regs): When restoring a
	referenced hard register, use CEIL instead of truncating
	divide to determine the maximum number of registers to
	restore.
	(insert_save_restore): Document maxrestore parameter.
	(CEIL): Define.

From-SVN: r2003
1992-08-31 08:05:07 -06:00
Jeff Law f95361c8d0 Major rework to have caller-saves emit load/store double insns when...
Major rework to have caller-saves emit load/store double insns when
	possible and to avoid useless resaving of registers restored for
	source accesses only.
	* caller-save.c (toplevel): All arrays are multi-dimensional to
	hold information for multiple save/restore insns.  New variable
	hard_regs_need_restore.
	(choose_hard_reg_mode): New argument `nregs' indicating how many
	hard registers are desired.  All callers changed.
	(init_caller_save): Change initialization to handle multiple
	register saves.  A call-used register can not be live across
	if we can not find a single register mode to save it in.
	(multiple register saves are optional)
	(init_save_areas): Change initialization of regno_save_mem to
	handle multiple register saves.
	(setup_save_areas): Allocate space for consecutive hard registers
	in aligned consecutive memory locations.   When allocating space
	for consecutive hard registers, also initialize regno_save_mem
	for each hard register stored as a single word.
	(save_call_clobbered_regs): Initialize hard_regs_need_restore.
	Set hard_regs_need_restore to hard_regs_saved after crossing
	a call.  Also recompute n_regs_saved.  At the end of a basic block
	we need only restore registers in hard_regs_need_restore.
	(set_reg_live, clear_reg_live): Do the right thing for
	hard_regs_need_restore and hard_regs_saved.
	(restore_referenced_regs): Just return if X is a clobber.
	Test hard_regs_need_restore to determine when to restore a hard
	register from the save area.
	(insert_save_restore): Now returns the number of extra registers
	saved/restored.  New argument `maxrestore' which constrains how
	many hard registers should be restored.  All callers changed.
	Do stores of consecutive registers with double store insns if
	possible.  Else do them with single word insns. Likewise for
	loads, except constrained by maxrestore.  Set hard_regs_saved
	and hard_regs_need_restore appropriately to minimize useless
	saves into the save area.  Test against	hard_regs_need_restore
	when trying to restore multiple regs and similarly test against
	hard_regs_saved when storing multiple regs.

From-SVN: r1964
1992-08-26 13:41:20 -06:00
Charles Hannum 3245eea08a entered into RCS
From-SVN: r1466
1992-07-06 19:55:04 +00:00
Richard Kenner 916f14f12b *** empty log message ***
From-SVN: r727
1992-04-11 20:30:30 -04:00
Richard Kenner 09835ed242 *** empty log message ***
From-SVN: r676
1992-04-03 19:22:29 -05:00