Commit Graph

544 Commits

Author SHA1 Message Date
Bernd Schmidt
e428d7383b Remove useless code
From-SVN: r30499
1999-11-12 11:39:08 +00:00
Mark Mitchell
4da896b292 cse.c (delete_trivially_dead_insns): Replace alloca with xmalloc/xcalloc.
* cse.c (delete_trivially_dead_insns): Replace alloca with
	xmalloc/xcalloc.
	* except.c (update_rethrow_references): Likewise.
	(init_eh_nesting_info): Likewise.
	* function.c (identify_blocks): Likewise.
	* gcse.c (dump_hash_table): Likewise.
	* graph.c (print_rtl_graph_with_bb): Likewise.
	* loop.c (combine_movables): Likewise.
	(move_movables): Likewise.
	(count_loop_regs_set): Likewise.
	(strength_reduce): Likewise.
	* profile.c (compute_branch_probabilities): New function, split
	out from ...
	(branch_prob): Here.  Replace alloca with xmalloc/xcalloc.
	* regclass.c (regclass): Likewise.
	* regmove.c (regmove_optimize): Likewise.
	* toplev.c (compile_file): Likewise.
	(main): Don't mess with the stack rlimit.

From-SVN: r30445
1999-11-08 04:56:18 +00:00
Jim Wilson
26132f7136 Fix cse bug that broke the ia64 port.
* cse.c (cse_insn): Revert Oct 31 change.  When computing src_elt,
	if REG_RETVAL check succeeds, then put classp in src_elt.

From-SVN: r30406
1999-11-04 23:08:13 -08:00
Richard Henderson
75c6bd46fe cse.c (cse_main): Use xmalloc, not alloca.
* cse.c (cse_main): Use xmalloc, not alloca.
        (cse_basic_block): Likewise.
        * local-alloc.c (local_alloc): Likewise.

From-SVN: r30399
1999-11-04 12:51:04 -08:00
Bernd Schmidt
c3dfacf03a Delete two useless declarations.
From-SVN: r30351
1999-11-02 16:00:03 +00:00
Jeffrey A Law
e26ef527af cse.c (cse_insn): If an insn has only a single set...
* cse.c (cse_insn): If an insn has only a single set, SRC_EQV
        is nonzero and the single set does not have an elt, then assign
        it an elt.

From-SVN: r30304
1999-10-31 19:19:25 -07:00
Richard Kenner
14a774a9d2 [multiple changes]
Fri Oct 29 15:25:07 1999  Arnaud Charlet  <charlet@ACT-Europe.FR>

	* gcov.c (DIR_SEPARATOR): Provide default.
	(output_data): Add test for MS-DOS format absolute filename.
	(fancy_abort): Correct program name.
	(open_files): Open all files in binary mode.
	* libgcc2.c (__bb_exit_func): Likewise.

	* profile.c (init_branch_prob): Specify binary when opening files.

	* flags.h (flag_unwind_tables): New decl.
	* toplev.c (flag_unwind_table): New definition.
	(f_options): Add -funwind-tables.
	(decode_g_option): Clarify warning when unknown -g option is given.
	(rest_of_compilation): If inside an inlined external function,
	pretend we are just being declared.

	* dwarf2out.c (dwarf2out_do_frame): Check -funwind_tables.
	(dwarf2out_frame_finish): Likewise.

Fri Oct 29 06:32:44 1999  Geoffrey Keating  <geoffk@cygnus.com>

	* flow.c (propagate_block): When the last reference to a label
 	before an ADDR_VEC is deleted because the reference is a dead
 	store, delete the ADDR_VEC.

Fri Oct 29 07:44:26 1999  Vasco Pedro  <vp@di.fct.unl.pt>

	* fold-const.c (merge_ranges): In not in0, but in1, handle
	upper bounds equal like subset case.

Thu Oct 28 19:22:24 1999  Douglas Rupp <rupp@gnat.com>

	* dbxout.c (dbxout_parms): Generate a second stabs line for parameters
	passed in a register but moved to the stack.

Thu Oct 28 19:12:57 1999  Sam Tardieu  <tardieu@act-europe.fr>

	* gcc.c (pass_exit_codes, greatest_status): New variables.
	(struct option_map): Add entry for "--pass-exit-codes".
	(execute): Update greatest_status if error.
	(display_help): Add documentation for -pass-exit-codes.
	(process_command): Handle -pass-exit-codes.
	(main): Look at pass_exit_codes and greatest_status on call to exit.

Thu Oct 28 18:06:50 1999  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* reload.c (find_reloads): Refine test for no input reload
	case to not includes reloads emitted after insn.

	* function.c (find_temp_slots_from_address): Handle sum involving
	a register that points to a temp slot.
	(update_temp_slot_address): Make recursive call if both old and
	new are PLUS with a common operand.
	* calls.c (expand_call): Mark temp slot for result as having
	address taken.

	* rtlanal.c (reg_referenced_p, case IF_THEN_ELSE): New case.

	* gcc.c (process_command): Add standard_exec_prefix with "GCC"
	component as well as "BINUTILS".

	* integrate.h (copy_rtx_and_substitute): New arg, FOR_LHS.
	* integrate.c (copy_rtx_and_substitute): Likewise.
	(expand_inline_function, integrate_parm_decls, integrate_decl_tree):
	All callers changed.
	* unroll.c (inital_reg_note_copy, copy_loop_body): Likewise.

	* dbxout.c (dbxout_type, case INTEGER_TYPE_NODE): If can use
	gdb extensions, write size of type; also be more consistent
	in using references when this is a subtype.

	* pa.md (extv, extzv, insv): Use define_expand to reject constant
	that is out of range.

	* loop.c (unknown_constant_address_altered): New variable.
	(prescan_loop): Initialize it.
	(note_addr_stored): Set it for RTX_UNCHANGING_P MEM.
	(invariant_p, case MEM): Remove handling for volatile and readony;
	check new variable if readonly.
	(check_dbra_loop): Chdeck unknown_constant_address_altered.

	* cse.c (canon_hash, case MEM): Do not record if BLKmode.
	(addr_affects_sp_p): Removed from note_mem_written and only
	define #ifdef AUTO_INC_DEC.

	* alpha.c (input_operand, case ADDRESSOF): Treat as REG.

	* regclass.c (record_reg_classes): Properly handle register move
	directions.

	* varasm.c (initializer_constant_valid_p, case MINUS_EXPR):
	Don't think valid if both operands are invalid.
	(struct constant_descriptor): New field RTL.
	(mark_const_hash_entry): Mark it.
	(record_constant{,_rtx}): Initialize it.
	(output_constant_def): Allocate RTL in permanent obstack and
	save in table.
	({record,compare}_constant_1): Modes must match for
	CONSTRUCTOR of ARRAY_TYPE.

	* c-common.h (initializer_constant_valid_p): Delete decl from here.
	* output.h (initializer_constant_valid_p): Move decl to here.
	* c-common.c (initializer_constant_valid_p): Delete function from here.
	* varasm.c (initializer_constant_valid_p): Move function to here.

	* tree.h (STRIP_SIGN_NOPS): New macro.
	* fold-const.c (optimize_minmax_comparison): New function.
	(invert_truthvalue, case WITH_RECORD_EXPR): New case.
	(fold): Use STRIP_SIGN_NOPS instead of STRIP_TYPE_NOPS.
	(fold, case EQ_EXPR): Call optimize_minmax_comparison and add
	cases with ABS_EXPR, NEGATE_EXPR, PLUS_EXPR, MINUS_EXPR, and
	widening conversions.
	(fold, case LE_EXPR): Rework changing unsigned to signed comparisons
	to look at size of mode, not precision of type; also add missing cases.
	(optimize_bit_field_compare, decode_field_reference): Don't try to
	optimize COMPONENT_REF of a PLACEHOLDER_EXPR.

	* dwarf2out.c (ctype.h): Include.
	(dwarf2out_set_demangle_name_func): New function.
	(size_of_line_info): Deleted.
	(output_line_info): Compute size of line info table from difference
	of labels.
	(base_type_die, add_name_attribute): Call demangle function, if any.
	(field_byte_offset): Use bits per word for variable length fields.
	(gen_array_type_die): Add array name.
	(gen_subprogram_die): Ignore DECL_INLINE if -fno-inline.
	(dwarf2out_add_library_unit_info): New function.

	* explow.c (set_stack_check_libfunc): New function.
	(stack_check_libfunc): New static variable.
	(probe_stack_range): Allow front-end to set up a libfunc to call.

	* combine.c (simplify_comparison): When making comparison in wider
	mode, check for having commuted an AND and a SUBREG.
	(contains_muldiv): New function.
	(try_combine): Call it when dividing a PARALLEL.
	(simplify_rtx, case TRUNCATE): Don't remove for umulsi3_highpart.
	(simplify_comparison, case ASHIFTRT): Recognize sign-extension of
	a PLUS.
	(record_value_for_reg): If TEM is a binary operation with two CLOBBERs,
	use one of the CLOBBERs instead.
	(if_then_else_cond): If comparing against zero, just return thing
	being compared.

	* optabs.c (expand_abs): If machine has MAX, ABS (x) is MAX (x, -x).
	Don't generate shifts and subtract if have conditional arithmetic.

	* rtl.h (delete_barrier): New declaration.
	* jump.c (jump_optimize): Set up to handle conditional call.
	In conditional arithmetic case, handle CALL_INSN followed by a BARRIER.
	(delete_barrier): New function.

	* rtl.c (read_rtx): Call fatal if bad RTL code; check for bad mode.

	* recog.c (nonmemory_operand): Accept ADDRESSOF.

	* tree.c (build_type_attribute_variant): Push to obstack of
	ttype around type_hash_canon call.

	* expr.c (placeholder_list): Move decl to file scope.
	(expand_expr): Don't force access to volatile just because its
	address is taken.
	If ignoring reference operations, just expand the operands.
	(expand_expr, case COMPONENT_REF): Propagate
	EXPAND_CONST_ADDRESS to recursive call when expanding inner.
	Refine test for using bitfield operations vs pointer punning.
	(expand_expr, case CONVERT_EXPR): If converting to
	BLKmode UNION_TYPE from BLKmode, just return inner object.
	Use proper mode in store_field call.
	Properly set sizes of object to store and total size in store_field
	call for convert to union.
	(expand_expr, case ARRAY_REF): If OP0 is in a register, put it in
	memory (like for ADDR_EXPR).  Also, don't put constant in register if
	we'll want it in memory.
	(readonly_fields_p): New function.
	(expand_expr, case INDIRECT_REF): Call it if LHS.
	(expand_assignment): Handle a RESULT_DECL where
	DECL_RTL is a PARALLEL.
	(do_jump, case WITH_RECORD_EXPR): New case.
	(get_inner_reference): Always go inside a CONVERT_EXPR
	and NOP_EXPR if both modes are the same.
	(store_field): Use bitfield operations if size of bitsize is not same
	as size of RHS's type.
	Check for bitpos not a multiple of alignment in BLKmode case.
	Do block move in largest possible alignment.
	(store_constructor): Set BITSIZE to -1 for variable size and properly
 	in case of array of BLKmode.
	(expand_expr_unaligned): New function.
	(do_compare_and_jump): Call it.

	* mips/iris5.h (SWITCHES_NEED_SPACES): New macro.
	* collect2.c (main): Only allow -ofoo if SWITCHES_NEED_SPACES
	does not include 'o'.

	* function.c (instantiate_virtual_regs_1, case SET): Handle case where
	both SET_DEST and SET_SRC reference a virtual register.
	(gen_mem_addressof): Copy RTX_UNCHANGING_P from new REG to old REG.

	* integrate.c (expand_inline_function): Handle case of setting
	virtual stack vars register (from built in setjmp); when parameter
	lives in memory, expand virtual_{stack_vars,incoming_args}_rtx early.
	(subst_constant): Add new parm, MEMONLY.
	(expand_inline_function, integrate_parm_decls): Pass new parm.
	(integrate_decl_tree): Likewise.
	(copy_rtx_and_substitute, case MEM): Do copy RTX_UNCHANGING_P.
	(try_constants): Call subst_constants twice, with MEMONLY 0 and 1.
	(copy_rtx_and_substitute, case SET): Add explicit calls to
	copy_rtx_and_substitute for both sides.

	* stmt.c (expand_asm_operands): Don't use TREE_STRING_LENGTH for
	constraints.
	(pushcase{,_range}): Convert to NOMINAL_TYPE after checking for
	within INDEX_TYPE, instead of before.
	(fixup_gotos): Use f->target_rtl, not the next insn,
	since latter may be from a later fixup.
	(expand_value_return): Correctly convert VAL when promoting function
	return; support RETURN_REG being a PARALLEL.
	(expand_return): When checking for result in regs and having
	cleanup, consider PARALLEL in DECL_RTL as being in regs.

From-SVN: r30299
1999-10-31 20:11:22 -05:00
Jeff Law
8f65050e41 Remove experimental hunk that wasn't supposed to be checked in.
From-SVN: r30298
1999-10-31 17:55:24 -07:00
Jeffrey A Law
0cedb36cbd simplify-rtx.c: New file.
* simplify-rtx.c: New file.
        * Makefile.in (OBJS): Add simplify-rtx.o
        (simplify-rtx.o): Add dependencies.
        * rtl.h (simplify_gen_binary, simplify_rtx): Add prototypes.
        * cse.c: Use simplify_gen_binary intead of cse_gen_binary.
        (cse_gen_binary, simplify_unary_operation): Delete.
        (simplify_binary_operation, simplify_plus_minus): Likewise.
        (check_fold_consts, simplify_relation_operation): Likewise.
        (simplify_ternary_operation): Likewise.
        (delete_trivially_dead_insns): Simplify the contents of the
        REG_EQUAL note before trying to substitute it into the source
        of the reg-reg copy at the end of a libcall sequence.

From-SVN: r30295
1999-10-31 17:18:23 -07: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
Mark Mitchell
e05e2395bd alias.c (init_alias_analysis): Allocate reg_known_value and reg_known_equiv_p on the heap.
* alias.c (init_alias_analysis): Allocate reg_known_value and
 	reg_known_equiv_p on the heap.  Likewise for new_reg_base_value
	and reg_seen.
	(end_alias_analysis): Free reg_known_value and reg_known_equiv_p.
	* cse.c (cse_main): Call end_alias_analysis.
	* haifa-sched.c (schedule_insns): Likewise.
	* local-alloc. (update_equiv_regs): Likewise.
	* reload1.c (reload_cse_regs): Likewise.

From-SVN: r30217
1999-10-27 17:34:59 +00:00
Kaveh R. Ghazi
ec0ce6e261 c-parse.in (cast_expr): Constify.
* c-parse.in (cast_expr): Constify.

        * cccp.c (special_symbol): Likewise.

        * cse.c (hash_cse_reg_info, cse_reg_info_equal_p): Likewise.

        * dwarf2out.c (base_type_die): Likewise.

        * global.c (allocno_compare): Likewise.

        * local-alloc.c (qty_compare_1, qty_sugg_compare_1): Likewise.

        * regclass.c (fix_register): Likewise.

        * rtl.h (fix_register): Likewise.

        * stupid.c (stupid_reg_compare): Likewise.

        * toplev.c (decode_f_option): Likewise.

        * tree.c (build_complex_type): Likewise.

From-SVN: r30196
1999-10-26 18:13:38 +00:00
Mark Mitchell
16b702cd43 cse.c (cse_end_of_basic_block): Don't return the end of a basic block reached by a branch if...
* cse.c (cse_end_of_basic_block): Don't return the end of a basic
	block reached by a branch if we're not going to actually process
	this block

From-SVN: r30109
1999-10-21 03:37:33 +00:00
Jeffrey A Law
b61a6c8113 cse.c (invalidate_for_call): Do not remove memory references from the table here.
* cse.c (invalidate_for_call): Do not remove memory references from
        the table here.  It's handled elsewhere.

From-SVN: r30076
1999-10-18 17:05:03 -06:00
Vladimir Makarov
c1edba58eb cse.c: Include hashtab.h instead of splay-tree.h (struct cse_reg_info): No longer use...
* cse.c: Include hashtab.h instead of splay-tree.h
        (struct cse_reg_info): No longer use variant union.  Add new
        field "regno".  All references changed to avoid union.
        (cse_reg_info_used_list, cse_reg_info_used_list_end): New variables.
        (free_cse_reg_info): Remove.
        (hash_cse_reg_info, cse_reg_info_equal_p): New functions.
        (get_cse_reg_info): Revamp to use expandable hash tables instead
        of splay trees.  Initialize new fields in cse_reg_info structure.
        (new_basic_block): Similarly.

From-SVN: r30014
1999-10-15 02:19:37 -06:00
Kaveh R. Ghazi
ca3075bd73 cpplib.c (if_directive_nameo): Add static prototype.
* cpplib.c (if_directive_nameo): Add static prototype.

	* cse.c (cse_insn): Remove unused variable `p'.

	* except.c (create_rethrow_ref, push_entry,
	receive_exception_label, new_eh_region_entry, find_func_region,
	clear_function_eh_region, process_nestinfo): Add static prototypes.
	(get_reg_for_handler): Hide definition.
	(process_nestinfo): Initialize variable `extra_handlers'.

	* expr.h (expand_builtin_longjmp): Add extern prototype.

	* final.c (final_addr_vec_align, align_fuzz): Add static prototypes.

	* function.c (prepare_function_start): Likewise.
	(pop_function_context_from): Mark parameter `context' with
	ATTRIBUTE_UNUSED.
	(push_temp_slots_for_block, flush_addressof): Hide definition.

	* gcov.c (init_arc, reverse_arcs, create_program_flow_graph,
	solve_program_flow_graph, calculate_branch_probs,
	function_summary, main, fancy_abort): Add prototypes.

	* gen-protos.c (add_hash, parse_fn_proto, main): Likewise.
	(add_hash): Constify a char*.

	* ggc-common.c (ggc_mark_rtx_ptr, ggc_mark_tree_ptr,
	ggc_mark_tree_varray_ptr, ggc_mark_tree_hash_table_ptr,
	ggc_mark_string_ptr, ggc_mark_tree_hash_table_entry): Add prototypes.

	* integrate.c (expand_inline_function_eh_labelmap): Likewise.

	* lists.c (free_list, zap_lists): Likewise.

From-SVN: r29783
1999-10-03 16:28:33 +00:00
Jeffrey A Law
0339ce7e77 cse.c (struct set): Delete inner_dest_loc field.
* cse.c (struct set): Delete inner_dest_loc field.
        (cse_insn): Remove assignments to inner_dest_loc field.

From-SVN: r29719
1999-09-29 23:43:58 -06:00
Jeffrey A Law
e48a7fbe7b cse.c: Update comments.
* cse.c: Update comments.
        (cse_insn): When converting a conditional/computed jump into
        an unconditional jump, always make sure a BARRIER immediately
        follows the converted jump.  Do not delete unreachable code.
        (cse_basic_block): Do not delete unreachable code.
        * toplev.c (rest_of_compilation): Move call to
        delete_trivially_dead_insns after the conditional call to
        jump_optimize.

From-SVN: r29665
1999-09-25 13:13:18 -06:00
Bernd Schmidt
6baf1cc8f8 Make it possible to prototype port-specific functions (and convert i386 to use this)
From-SVN: r29514
1999-09-20 10:00:03 +00:00
Jeffrey A Law
41babf2e0d cse.c (FIXED_BASE_PLUS_P): Do not consider referneces to arg_pointer_rtx fixed if...
* cse.c (FIXED_BASE_PLUS_P): Do not consider referneces to
        arg_pointer_rtx fixed if the argument pointer register is
        not fixed.
        (NONZERO_BASE_PLUS_P): Likewise.

From-SVN: r29425
1999-09-14 22:05:38 -06:00
Richard Henderson
a995e389c4 Replace insn_foo with insn_data.foo.
From-SVN: r29358
1999-09-12 05:46:08 -07:00
Richard Henderson
1497faf6be * cse.c (cse_main): If gc'ing, collect around cse_basic_block.
From-SVN: r29354
1999-09-11 23:26:04 -07:00
Jeff Law
c5c7673583 Merge in gcc2-ss-010999
From-SVN: r29150
1999-09-06 23:49:18 -06:00
Jeffrey A Law
8d71a51026 cse.c (delete_trivially_dead_insns): Do not skip the last insn if it is a real insn.
* cse.c (delete_trivially_dead_insns): Do not skip the last
        insn if it is a real insn.

From-SVN: r29138
1999-09-06 02:44:50 -06:00
Jeffrey A Law
61c48fbf26 cse.c (delete_trivially_dead_insns): Do not delete stores to the internal_arg_pointer.
* cse.c (delete_trivially_dead_insns): Do not delete stores to
        the internal_arg_pointer.

From-SVN: r29017
1999-08-31 16:48:58 -06:00
Zack Weinberg
ef178af3a4 rtl.h (RTL_CHECK1, RTL_CHECK2): New macros which type- and bounds- check RTL accesses if --enable-checking.
1999-08-31 12:20 -0700 Zack Weinberg <zack@bitmover.com>

	* rtl.h (RTL_CHECK1, RTL_CHECK2): New macros which type- and
	bounds- check RTL accesses if --enable-checking.
	(RTVEC_ELT): Bounds check if --enable-checking.
	(XWINT, XINT, XSTR, XEXP, XVEC, XMODE, XBITMAP, XTREE,
	XBBDEF): Use RTL_CHECK1/RTL_CHECK2 as appropriate.
	(XVECEXP, XVECLEN): Define in terms of XVEC, RTVEC_ELT, and
	GET_NUM_ELEM.
	(X0WINT, X0INT, X0STR, X0EXP, X0VEC, X0MODE, X0BITMAP, X0TREE,
	X0BBDEF, X0ADVFLAGS):  New macros for accessing '0' slots of RTXes.

	(ADDR_DIFF_VEC_FLAGS): Use X0ADVFLAGS.
	(NOTE_SOURCE_FILE): Use X0STR.
	(NOTE_BLOCK_NUMBER, NOTE_EH_HANDLER, LABEL_NUSES,
	MEM_ALIAS_SET): Use X0INT.
	(NOTE_RANGE_INFO, NOTE_LIVE_INFO, NOTE_BASIC_BLOCK,
	JUMP_LABEL, LABEL_REFS, LABEL_NEXTREF, CONTAINING_INSN):
	Use X0EXP.
	* real.h (CONST_DOUBLE_CHAIN): Use X0EXP.
	* rtl.c (copy_rtx, copy_most_rtx): Copy '0' slots with X0WINT.
	(rtl_check_failed_bounds, rtl_check_failed_type1,
	rtl_check_failed_type2, rtvec_check_failed_bounds): New
	functions.
	(fancy_abort): Fix comment.

	* cse.c (canon_hash): Read CONST_DOUBLE data slots with XWINT.
	(cse_insn): Decrement LABEL_NUSES for jump target before
	deleting jump insn.
	* emit-rtl.c (gen_rtx_CONST_DOUBLE): Use X0EXP for slot 1.
	* final.c (alter_subreg): Compute regno before changing x to
	REG; set REGNO(x) after changing it.
	* flow.c (count_basic_blocks): Use XWINT to inspect EH_REGION
	notes containing CONST_INTs.
	(delete_eh_regions): Use NOTE_EH_HANDLER.
	* function.c (put_reg_into_stack): Make reg a MEM before
	initializing it.
	(fixup_var_refs_insns):  Save REG_NOTES (insn) in case we
	delete insn.
	(gen_mem_addressof): Make reg a MEM before initializing it.
	* integrate.c (copy_rtx_and_substitute): Copy '0' slots with
	X0WINT.
	* local-alloc.c (update_equiv_regs): Zap REG_NOTES before
	deleting an insn, not after.
	(block_alloc): Only look at PATTERN(insn) if we have to, and
	only if it's format class 'i'.
	* loop.c (check_dbra_loop): Check bl->biv->add_val is a
	CONST_INT before using its INTVAL.
	* print-rtl.c (print_rtx): Use X0STR.
	* regmove.c (fixup_match_1): Don't look at PATTERN of
	non-class-'i' insn chain elements.
	* reload.c (loc_mentioned_in_p): Take address of
	in->fld[1].rtx directly.
	* reload1.c (reload): Change reg to a MEM before initializing
	it.
	* varasm.c (mark_constant_pool): Skip CONST_DOUBLES, which
	have no names.
	* config/i386/i386.md (decrement_and_branch_if_zero): Fix typo.

From-SVN: r29008
1999-08-31 19:39:10 +00:00
Kaveh R. Ghazi
5c45a8ac5f * cse.c: (fold_rtx): Cast to HOST_WIDE_INT in left shift.
From-SVN: r28993
1999-08-31 00:23:40 +00:00
Jeffrey A Law
af37f0dda9 jump.c (jump_optimize_1): Do not delete assignments to internal_arg_pointer.
* jump.c (jump_optimize_1): Do not delete assignments to
        internal_arg_pointer.
        * cse.c (delete_trivially_dead_insns): Always consider a set of
        the internal_arg_pointer live.

From-SVN: r28957
1999-08-28 19:42:28 -06:00
Jeffrey A Law
4741f6ad9a * cse.c (fold_rtx): Work around bug in Sun V5.0 compilers.
From-SVN: r28941
1999-08-27 23:41:44 -06:00
Kaveh R. Ghazi
6a651371a7 Warning fixes:
* calls.c (emit_call_1): Mark parameter `stack_size' with
	ATTRIBUTE_UNUSED.
	(expand_call): Initialize variable `insn'.
	(emit_library_call): Likewise for variable `high_to_save'.
	(emit_library_call_value): Likewise.
	(store_one_arg): Likewise for variables `lower_bound' and
	`upper_bound'.

	* combine.c (try_combine): Likewise for variables `i2_code_number'
	and `other_code_number'.
	(find_split_point): Likewise for variables `pos', `unsignedp' and
	`inner'.
	(simplify_if_then_else): Likewise for variables `op' and `c1'.
	(simplify_and_const_int): Remove unused variable `width'.
	(merge_outer_ops): Likewise.

	* cse.c (simplify_binary_operation): Cast an INTVAL() to `unsigned
	HOST_WIDE_INT' when comparing against one.
	(simplify_relational_operation): Likewise.
	(cse_insn): Initialize variables `src_eqv_volatile',
	`src_eqv_in_memory', `src_eqv_in_struct', `src_eqv_hash' and `sets'.

	* final.c (init_final): Constify parameter `filename'.
	(final_start_function): Mark parameter `optimize' with
	ATTRIBUTE_UNUSED.
	(profile_function): Likewise for parameters `first' and `optimize'.
	(output_source_line): Likewise for parameter `file'.

	* integrate.c (subst_constants): Cast a value to `size_t' when
	comparing against one.
	(mark_stores): Initialize variable `mode'.  Cast a value to
	`size_t' when comparing against one.

	* integrate.h (MAYBE_EXTEND_CONST_EQUIV_VARRAY): Likewise.

	* loop.c (move_movables): Initialize variable `first'.
	(strength_reduce): Likewise for variable `increment'.
	(check_dbra_loop): Likewise for variable `comparison_val'.  Cast a
	value to `size_t' when comparing against one.
	(load_mems): Initialize variable `end_label'.

	* output.h (init_final): Constify parameter.

	* reload.c (decompose): Initialize variable `base'.

	* reload1.c (reload): Likewise for variable `is_scalar'.
	(spill_hard_reg): Mark parameter `dumpfile' with ATTRIBUTE_UNUSED.
	(choose_reload_regs): Initialize variable `mode'.
	(emit_reload_insns): Likewise for variable `store_insn'.
	(reload_cse_noop_set_p): Mark parameter `insn' with
	ATTRIBUTE_UNUSED.
	(reload_combine): Initialize variable `set'.

	* unroll.c (unroll_loop): Likewise for variable `local_label'.
	(copy_loop_body): Cast a value to `size_t' when comparing against
	one.

	* varasm.c (assemble_variable): Initialize variable `size_tree'.
	(const_hash): Add an `else abort()' in an if-else-if-else sequence.
	(remove_from_pending_weak_list): Mark parameter `name' with
	ATTRIBUTE_UNUSED.

From-SVN: r28860
1999-08-25 13:37:46 +00:00
Bernd Schmidt
bf6bb899e1 Fix more problems from GC diffs
From-SVN: r28820
1999-08-24 12:05:09 +00: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
Zack Weinberg
8f985ec4c7 rtl.def (NOTE): Change format to "iuu0n".
1999-08-19 14:44 -0700  Zack Weinberg  <zack@bitmover.com>

	* rtl.def (NOTE): Change format to "iuu0n".
	(ADDR_DIFF_VEC): Change format to "eEee0".
	(ADDRESSOF): Change format to "eit".

	* rtl.h (rtvec): Make "elem" an array of rtx, not rtunion.
	(RTVEC_ELT): Change to match.
	(XVECEXP): Use XVEC and RTVEC_ELT.
	(INSN_UID, INSN_CODE, CODE_LABEL_NUMBER, NOTE_LINE_NUMBER,
	ADDRESSOF_REGNO, REGNO, SUBREG_WORD): Use XINT.
	(PREV_INSN, NEXT_INSN, PATTERN, REG_NOTES,
	CALL_INSN_FUNCTION_USAGE, SUBREG_REG, SET_SRC, SET_DEST,
	TRAP_CONDITION, TRAP_CODE): Use XEXP.
	(INTVAL): Use XWINT.
	(ADDRESSOF_DECL): Use XTREE.
	(SET_ADDRESSOF_DECL): Delete.
	(NOTE_DECL_NAME, NOTE_DECL_CODE, NOTE_DECL_RTL,
	NOTE_DECL_IDENTIFIER, NOTE_DECL_TYPE): Kill.  These have been
	ifdefed out since 2.6 at least.
	(gen_rtvec_vv): Delete prototype.

	* rtl.h (rtvec_alloc): rt->elem is now an array of rtx,
	not rtunion.
	(copy_most_rtx): Handle 't' format letter.
	* emit-rtl.c (gen_rtvec_v): rt_val->elem is an array of rtx.
	(gen_rtvec_vv): Delete function.  All callers changed to use
	gen_rtvec_v instead.
	* print-rtl.c (print_rtx): Move special casing of NOTEs to
	the '0' format letter.

	* function.c (gen_mem_addressof): Don't use
	SET_ADDRESSOF_DECL; provide `decl' to gen_rtx_ADDRESSOF
	instead.
	* integrate.c (copy_rtx_and_substitute): Likewise.
	Copy 't' slots with XTREE.
	(subst_constants): Treat 't' slots like '[swi]' slots.
	* cse.c (canon_hash, exp_equiv_p): Treat 't' slots like	'0' slots.
	* jump.c (rtx_equal_for_thread_p): Likewise.
	* rtlanal.c (rtx_equal_p): Likewise.
	* stmt.c (expand_end_case): gen_rtx_ADDR_DIFF_VEC now takes
	only four arguments.
	* gengenrtl.c (type_from_format): Provide correct types for
	'b' and 't' slots.


	* tree.h [ENABLE_CHECKING] (TREE_CHECK, TREE_CLASS_CHECK):
	If a recent gcc is in use (always in stage2 and beyond), use
	statement expressions, so we don't make a function call unless
	the check fails.  Evaluate arguments exactly once.
	(CHAIN_CHECK, DO_CHECK, DO_CHECK1, TREE_CHECK1,
	TREE_CLASS_CHECK1, TYPE_CHECK1, DECL_CHECK1, CST_CHECK1):
	Delete.
	(CST_OR_CONSTRUCTOR_CHECK, EXPR_CHECK): Redefine such that
	they evaluate their arguments exactly once, irrespective of
	the compiler in use.

	* tree.c [ENABLE_CHECKING]: Define whichever set of functions
	is used by the currently-enabled check macros.  This is:
	(tree_check_failed, tree_class_check_failed): For gcc.
	(tree_check, tree_class_check, cst_or_constructor_check,
	expr_check): For other compilers.

	* gencheck.c: Do not define any *_CHECK1 macros.

From-SVN: r28769
1999-08-19 22:33:38 +00:00
Geoff Keating
312f625598 cse.c (cse_insn): Call never_reached_warning when a jump is changed to be unconditional.
* cse.c (cse_insn): Call never_reached_warning when a jump is
changed to be unconditional.
* flags.h: Declare warn_notreached.
* flow.c (delete_block): Call never_reached_warning when
a block is deleted.
* jump.c (delete_barrier_successors): Call never_reached_warning
when we delete everything after a BARRIER.
(never_reached_warning): New function.
* rtl.h: Declare never_reached_warning.
* toplev.c (warn_notreached): New variable.
(lang_independent_options): Set warn_notreached
when -Wunreachable-code.
(compile_file): We need line numbers for -Wunreachable-code.

Also modify documentation to suit.

From-SVN: r28747
1999-08-18 10:43:26 +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
Jeffrey A Law
778e067718 * cse.c (cse_insn): Fix dumb thinko in last change.
From-SVN: r28466
1999-08-03 04:00:27 -06:00
Jeffrey A Law
eec9ef57bf cse.c (cse_insn): Fix loop which deletes insns after a jump that has become an unconditional jump.
* cse.c (cse_insn): Fix loop which deletes insns after a jump
        that has become an unconditional jump.

From-SVN: r28388
1999-08-01 23:53:02 -06:00
Richard Henderson
7e4ce834b2 explow.c (trunc_int_for_mode): New function.
* explow.c (trunc_int_for_mode): New function.
        (plus_constant_wide): Use it.
        * combine.c (simplify_and_const_int): Likewise.
        (merge_outer_ops): Likewise.
        (simplify_shift_const): Likewise.
        * cse.c (simplify_unary_operation): Likewise.
        (simplify_binary_operation): Likewise.
        * emit-rtl.c (operand_subword): Likewise.
        * rtl.h: Declare it.

From-SVN: r28222
1999-07-22 18:21:31 -07:00
J"orn Rennecke
15c68354e9 cse.c (cse_insn): Don't put hard register source into tables for last insn of a libcall.
* cse.c (cse_insn): Don't put hard register source into tables for
	last insn of a libcall.

From-SVN: r27550
1999-06-16 14:32:14 +01:00
Andreas Schwab
51e2a951cc cse.c (cse_insn): Copy SRC_CONST before putting it in the REG_EQUAL note.
* cse.c (cse_insn): Copy SRC_CONST before putting it in the
        REG_EQUAL note.

From-SVN: r26958
1999-05-16 18:36:36 -06: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
Mark Mitchell
30f7237966 alias.c (alias_set_compare): Remove.
* alias.c (alias_set_compare): Remove.
	(record_alias_subset): Use splay_tree_compare_ints instaed of
	alias_set_compare.
	(init_alias_once): Likewise.
	* cse.c: Include splay-tree.h.
	(reg_qty): Remove.
	(reg_tick): Likewise.
	(reg_table): Likewise.
	(cse_reg_info): New structure.
	(cse_reg_info_free_list): New variable.
	(cse_reg_info_tree): Likewise.
	(cached_regno): Likewise.
	(cached_cse_reg_info): Likewise.
	(all_minus_one): Remove.
	(consec_ints): Likewise.
	(GET_CSE_REG_INFO): New macro.
	(REG_TICK): Likewise.  Use throughout instead of reg_tick.
	(REG_IN_TABLE): Likewise.  Use throughout instead of reg_in_table.
	(REG_QTY): Likewise.  Use throughout instead of reg_qty.
	(get_cse_reg_info): New function.
	(free_cse_reg_info): Likewise.
	(new_basic_block): Reinitialize cse_reg_info_tree instead of
	reg_tick, all_minus_one, and consec_ints.
	* Makefile.in (cse.o): Depend on splay-tree.h
	* splay-tree.h (splay_tree_compare_ints): Declare.
	* splay-tree.c (splay_tree_compare_ints): Define.

From-SVN: r26069
1999-03-30 20:52:33 +00:00
J"orn Rennecke
50270076bd * cse.c (cse_insn): Don't change the result register of a libcall.
From-SVN: r25898
1999-03-22 13:55:22 +00:00
Kaveh R. Ghazi
1a87eea220 cse.c (check_fold_consts): New static function.
* cse.c (check_fold_consts): New static function.
        (cfc_args): New struct.
        (simplify_relational_operation): Use them in call to
        `do_float_handler'.
        * toplev.c (do_float_handler): New function to wrap calls to
        setjmp/set_float_handler.
        * toplev.h (do_float_handler): Add extern prototype.
        * tree.c (build_real_from_int_cst_1): New static function.
        (brfic_args): New struct.
        (build_real_from_int_cst): Use them in call to
        `do_float_handler'.

From-SVN: r25768
1999-03-14 14:02:10 +00:00
Richard Henderson
9a794e5054 * cse.c (canon_hash): Never reject hard regs in CCmode.
From-SVN: r25623
1999-03-06 18:00:27 -08:00
Franz Sirl
ac7ef8d56b cse.c (fold_rtx): Update comments for (const (minus (label) (label))) case.
* cse.c (fold_rtx): Update comments for (const (minus (label) (label)))
        case.
        (cse_insn): Avoid creating a bogus REG_EQUAL note for
        (const (minus (label) (label)))
        (record_jump_cond): Fix mismatched paren in comment.
Fixes powerpc label-label problem.
Bootstraps on the x86.

Co-Authored-By: Jeffrey A Law <law@cygnus.com>

From-SVN: r25527
1999-03-01 17:45:45 -07:00
Kaveh R. Ghazi
a015305167 cse.c (dump_class): Revert last change and make the prototype extern.
* cse.c (dump_class): Revert last change and make the prototype
       extern.

From-SVN: r25438
1999-02-25 11:43:00 +00:00
Kaveh R. Ghazi
592e5d21b1 cse.c (dump_class): Make the function definition static to match the prototype.
* cse.c (dump_class): Make the function definition static to match
       the prototype.

From-SVN: r25430
1999-02-25 09:29:10 +00:00
Mark Mitchell
a4c6502a66 cse.c (dump_class): New function.
* cse.c (dump_class): New function.
	(invalidate_memory): Fix typo in comment.
	* function.c (temp_slot): Add an alias set field.
	(assign_stack_temp): Only reuse slots if they will have the
	same alias set as before.
	(combine_temp_slots): Don't combine if -fstrict-aliasing;
	that's unsafe.
	* rtl.c (copy_rtx): Copy all the flags (in particular,
	MEM_SCALAR_P).

From-SVN: r25372
1999-02-22 13:34:33 +00: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
Richard Henderson
ee5332b81a cse.c (fold_rtx): Revert 29 Dec change.
* cse.c (fold_rtx): Revert 29 Dec change.
        (cse_insn): Revert 12 Jan change.
        * expr.c (expand_builtin): Don't emit CONST around CONSTANT_P_RTX.
        * regclass.c (reg_scan_mark_refs): Revert 29 Dec change.
        * rtl.def: Likewise.
        * rtl.h (CONSTANT_P): Likewise.
        * expr.c (emit_move_insn): Never try to flush CONSTANT_P_RTX
        to memory.
        * recog.c (immediate_operand): Accept CONSTANT_P_RTX.
        * alpha.c (input_operand): Likewise.
        * c4x.c (const_operand): Likewise.
        * explow.c (allocate_dynamic_stack_space): Use register_operand
        instead of arith_operand, which does not exist.
        * 1750a.h: Fix comment closure.
        * a29k.c (a29k_set_memflags): Fix typo in 19 Jan change.
        * arc.md (one_cmplsi2_set_cc_insn): Fix set mode mismatch.
        * arm.h (TARGET_SWITCHES): Fix typo.
        * i370.md (anon mult and div patterns): Fix set mode mismatch.
        * i860.c (output_delayed_branch): Fix operands to constrain_operands.
        (output_delay_insn): Likewise.
        * m88k.md (anon rotate insns): Fix set mode mismatch.
        (anon BLKmode moves): Commonize and fix set mode mismatches.
        * ns32k.md (udivmoddi[shq]i4_internal): Fix mode mismatch.
        * romp.md (movdf): Fix typo.

From-SVN: r24796
1999-01-20 18:21:28 -08:00
Mark Mitchell
747215f1fe Update copyrights
From-SVN: r24765
1999-01-19 12:08:36 +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
Richard Henderson
1ff136fd07 * cse.c (cse_insn): Never prefer (const (constant_p_rtx)).
From-SVN: r24637
1999-01-11 18:54:32 -08:00
Jeffrey A Law
97577254a2 cse.c (invalidate_skipped_block): Call invalidate_from_clobbers for each insn in the skipped block.
* cse.c (invalidate_skipped_block): Call invalidate_from_clobbers
        for each insn in the skipped block.
Fixes m68k codegen bug.

From-SVN: r24450
1998-12-30 16:35:49 -07:00
Richard Henderson
185ebd6c71 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>:
* rtl.def (CONSTANT_P_RTX): Clarify commentary.
        * expr.c (expand_builtin, case BUILT_IN_CONSTANT_P): Rework to
        consider constant CONSTRUCTOR constant and to defer some cases
        to cse.
        * cse.c (fold_rtx, case CONST): Add handling for CONSTANT_P_RTX.
        * regclass.c (reg_scan_mark_refs, case CONST): Likewise.
Richard Henderson  <rth@cygnus.com>
        * expr.c (init_expr_once): Kill can_handle_constant_p recognition.
        * cse.c (fold_rtx, case 'x'): Remove standalone CONSTANT_P_RTX code.

From-SVN: r24439
1998-12-29 03:36:22 -08: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
Jim Wilson
737e7965de Fix alpha-x-m32r-elf bugs.
* cse.c (simplify_unary_operation): Sign-extend constants when
	they have the most significant bit set for the target.
	* real.c (endian): Sign-extend 32 bit output values on a 64 bit
	host.
	* m32r/m32r.c (m32r_expand_prologue): Store pretend_size in
	HOST_WIDE_INT temporary before negating it.
	* m32r/m32r.md (movsi_insn+1): Use ~0xffff instead of 0xffff0000.

From-SVN: r24254
1998-12-10 09:21:35 -08:00
Jeffrey A Law
940da3246d cse.c (fold_rtx): Make autoincrement addressing mode tests be runtime selectable.
* cse.c (fold_rtx): Make autoincrement addressing mode tests be
        runtime selectable.
        * expr.c (move_by_pieces): Similarly.
        (move_by_pieces_1, clear_by_pieces, clear_by_pieces_1): Similarly.
        * flow.c (find_auto_inc): Similarly.
        (try_pre_increment): Similarly.
        * loop.c (strength_reduce): Similarly.
        * regclass.c (auto_inc_dec_reg_p): Similarly.
        * regmove.c (try_auto_increment): Similarly.
        (fixup_match_1): Similarly.
        * rtl.h (HAVE_PRE_INCREMENT): Define if not already defined.
        (HAVE_PRE_DECREMENT): Similarly.
        (HAVE_POST_INCREMENT, HAVE_POST_DECREMENT): Similarly.
        sponding changes to all target header files.

From-SVN: r23837
1998-11-24 16:15:19 -07:00
Kaveh R. Ghazi
79c9824ecb Warning fixes:
* Makefile.in (flow.o): Depend on recog.h.
        * cpplib.h (directive_table): Add missing initializiers.
        (finclude): Change type of variable `bsize' to size_t.
        * cse.c (rtx_cost): Mark parameter `outer_code' with ATTRIBUTE_UNUSED.
        * dwarfout.h (dwarfout_label): Wrap prototype in macro RTX_CODE.
        * fix-header.c (lookup_std_proto): Cast the result of `strlen' to
        `int' when comparing against one.
        (cpp_file_line_for_message): Mark parameter `pfile' with
        ATTRIBUTE_UNUSED.
        (cpp_fatal): Mark parameter `pfile' with ATTRIBUTE_UNUSED.
        * flow.c: Include recog.h.
        (sbitmap_copy): Cast arguments 1 & 2 of `bcopy' to (PTR).
        * function.c (thread_prologue_and_epilogue_insns): Mark parameter
        `f' with ATTRIBUTE_UNUSED.
        (reposition_prologue_and_epilogue_notes): Likewise.
        * genopinit.c (gen_insn): Cast argument of ctype functions to
        `unsigned char'.
        * haifa-sched.c: Include recog.h.
        (blockage_range): Cast result of UNIT_BLOCKED macro to (int) when
        comparing against one.
        * libgcc2.a (__throw): Revert ATTRIBUTE_UNUSED change for now.
        * mips-tfile.c (parse_end): Cast the argument of ctype function to
        `unsigned char'.
        (parse_ent): Likewise.
        (parse_input): Likewise.
        * optabs.c (init_libfuncs): Likewise.
        * protoize.c (find_rightmost_formals_list): Likewise.
        * recog.h (const_double_operand): Fix typo in prototype.
        * tlink.c (scan_linker_output): Cast the argument of ctype
        function to `unsigned char'.
        * toplev.c (check_lang_option): Cast the result of `strlen' to
        `int' when comparing against one.

From-SVN: r23155
1998-10-17 20:26:29 +00:00
David S. Miller
925be47cd5 cse.c (cse_basic_block): Fixup hash flushing loop so we do not accidently walk into the free list.
* cse.c (cse_basic_block): Fixup hash flushing loop so we do not
	accidently walk into the free list.  Comment how that can happen.
	(invalidate): Fix indentation.

From-SVN: r23122
1998-10-15 18:23:51 -07:00
Nick Clifton
2ce5e1b422 Check for NULL return from gen_lowpart_if_possible().
From-SVN: r23049
1998-10-13 11:39:26 +00:00
J"orn Rennecke
37053d1fe5 * cse.c (insert_regs): Fix bug in Sep 24 change.
From-SVN: r22866
1998-10-06 13:04:55 +01:00
J"orn Rennecke
34c7390981 expr.c (store_constructor): When initializing a field that is smaller than a word...
* expr.c (store_constructor): When initializing a field that is smaller
	than a word, at the start of a word, try to widen it to a full word.
	* cse.c (cse_insn): When we are about to change a register,
	remove any invalid references to it.
	(remove_invalid_subreg_refs): New function.
	(mention_regs): Special treatment for SUBREGs.
	(insert_regs): Don't strip SUBREG for call to mention_regs.
	Check if reg_tick needs to be bumped up before that call.
	(lookup_as_function): Try to match known word_mode constants when
	looking for a norrower constant.
	(canon_hash): Special treatment for SUBREGs.

From-SVN: r22567
1998-09-24 10:59:41 +01:00
Jason Merrill
63be02dbae i386.h (MODES_TIEABLE_P): Reorganize to shut up warnings.
* i386.h (MODES_TIEABLE_P): Reorganize to shut up warnings.
	* alias.c (memrefs_conflict_p): Add braces to shut up warnings.
	* cse.c (cse_basic_block): Add parens to shut up warnings.

From-SVN: r21734
1998-08-14 12:28:30 -04:00
Vladimir N. Makarov
1ed0205e35 cse.c (cse_insn): Enable subsitution inside libcall only for REG, SUBREG, MEM.
�
	* cse.c (cse_insn): Enable subsitution inside libcall only for REG,
	SUBREG, MEM.
	* rtlanal.c (replace_rtx): Prohibit replaces in	CONST_DOUBLE.

From-SVN: r21435
1998-07-28 12:54:04 +00:00
Jeffrey A Law
02e39abcc1 cse.c (count_reg_usage): Count registers used in addresses of CLOBBERs.
* cse.c (count_reg_usage): Count registers used in addresses of
        CLOBBERs.

From-SVN: r21012
1998-07-08 14:46:15 -06:00
J"orn Rennecke
759bd8b73b * cse (cse_insn): Don't make change without validation.
From-SVN: r20996
1998-07-07 14:09:07 +01:00
Mark Mitchell
2f54179908 cse.c (CSE_ADDRESS_COST): New macro, based on ADDRESS_COST, but dealing with ADDRESSOF.
* cse.c (CSE_ADDRESS_COST): New macro, based on ADDRESS_COST, but
	dealing with ADDRESSOF.
	(find_best_addr): Use it.

From-SVN: r20945
1998-07-06 09:38:46 +00:00
Jeffrey A Law
7bd8b2a885 cse.c (cse_insn): Second arg is an RTX now.
* cse.c (cse_insn): Second arg is an RTX now.  Update all callers.
        (cse_basic_block): Keep track of the current RETVAL insn for a
        libcall instead of just noting that we're in a libcall.

From-SVN: r20936
1998-07-05 17:59:03 -06:00
Mark Mitchell
9de2c71a47 cse.c (cse_insn): When SETting (MEM (ADDRESSOF (X))) to Y...
* cse.c (cse_insn): When SETting (MEM (ADDRESSOF (X))) to Y,
        don't claim that the former is equivalent to the latter.

From-SVN: r20935
1998-07-05 17:33:36 -06:00
Richard Henderson
aac5cc1620 expr.c (emit_group_load, [...]): Rewrite considering the size and alignment of the structure being manipulated.
* expr.c (emit_group_load, emit_group_store): Rewrite considering
        the size and alignment of the structure being manipulated.
        * expr.c, calls.c, function.c: Update all callers.
        * expr.h: Update prototypes.
        * cse.c (invalidate): Cope with parallels.

From-SVN: r20867
1998-06-30 22:10:51 -07:00
Richard Henderson
cff48d8f76 rtl.def (CONSTANT_P_RTX): New.
* rtl.def (CONSTANT_P_RTX): New.
        * rtl.h (CONSTANT_P): Recognize it.
        * cse.c (fold_rtx): Eliminate it.
        * expr.c (can_handle_constant_p): New variable.
        (init_expr_once): Initialize it.
        (expand_builtin): Generate CONSTANT_P_RTX if the expression is not
        immediately recognizable as a constant.

From-SVN: r20846
1998-06-30 09:19:11 -07:00
Jeff Law
9ec36da574 * Merge from gcc2 June 9, 1998 snapshot. See ChangeLog.13 for
details.

From-SVN: r20808
1998-06-29 15:40:49 -06:00
Mark Mitchell
1d22a2c164 cse.c (cse_basic_block): Don't include NOTE insns in the count that is used to decide whether or not it...
* cse.c (cse_basic_block): Don't include NOTE insns in the count
	that is used to decide whether or not it is time to erase the
	equivalence table.

From-SVN: r20548
1998-06-17 20:20:21 +00:00
Kaveh R. Ghazi
50b2596f67 Warning fixes:
* Makefile.in (varasm.o): Depend on dbxout.h.
	(cse.o): Depend on toplev.h and output.h.
	(gcse.o): Depend on output.h.
	* mips.c: Include system.h and toplev.h and remove redundant code.
	Include output.h after tree.h so all its prototypes get activated.
	* mips.md (table_jump): Remove unused variable `dest'.
	* sparc.h: Add prototype for `v8plus_regcmp_op'.
	* crtstuff.c (fini_dummy, init_dummy): Mark function definitions
	with __attribute__ ((__unused__)).
	(__frame_dummy): Provide prototype before use, wrap it with
	EH_FRAME_SECTION_ASM_OP.
	* cse.c: Move inclusion of <setjmp.h> above local headers.
  	Include toplev.h and output.h.
	* dbxout.h: Add prototype for `dbxout_begin_function'.
	* final.c (final_scan_insn): Wrap variable `max_skip' in macro
	ASM_OUTPUT_MAX_SKIP_ALIGN.
	* gcse.c: Include system.h and output.h.
	(dump_cuid_table, dump_rd_table, dump_cprop_data, dump_pre_data):
	Make extern instead of static.
	(compute_can_copy): Only declare variables `reg' and `insn' when
 	AVOID_CCMODE_COPIES is not defined.
	(record_set_info): Mark parameter `setter' with ATTRIBUTE_UNUSED.
	(hash_scan_clobber): Likewise for `x' and `insn'.
	(hash_scan_call): Likewise.
	(record_last_set_info): Likewise for `setter'.
	(mark_call): Likewise for `pat'.
	(pre_insert_insn): Wrap variable `note' in macro HAVE_cc0.
	* libgcc2.c (__bb_init_prg): Replace bzero with memset and fix the
 	length parameter so that it multiplies the number of elements by
 	the sizeof(element).
	* output.h: Add prototype for `weak_finish'.
	* recog.h: Likewise for `validate_replace_src'.
	* rtl.h: Likewise for `optimize_save_area_alloca',
 	`fix_sched_param', `purge_addressof', `gcse_main',
 	`regmove_optimize', `dbr_schedule', `branch_prob' and
 	`end_branch_prob'.
	* toplev.h: Likewise for `set_float_handler' and
 	`output_quoted_string'.
	* varasm.c: Include dbxout.h.

From-SVN: r20351
1998-06-08 18:30:27 +00:00
Andreas Schwab
7a87758dfb m68k.h: Declare more functions used in macros.
* m68k.h: Declare more functions used in macros.
        (REG_CLASS_CONTENTS): Completely embrace initializer.
        * m68k.md (adddi3, subdi3): Add abort call to avoid warning
        about returning no value.
        * cse.c (find_best_addr): Declare p and found_better only if
        needed.
        * dbxout.c (dbxout_continue): Define only if DBX_CONTIN_LENGTH > 0.
        * dwarfout.c (string_length_attribute): #if 0 away.
        * function.c (expand_function_end): Define varible blktramp only
        if needed.
        * jump.c (find_insert_position): Define only if !HAVE_cc0.
        * loop.c (combine_givs_p): Define variable tem only if needed.
        * real.c: Comment out unused functions eabs, eround,
        e{24,53,64,113}toasc and eiinfin.

From-SVN: r19998
1998-05-23 17:14:57 -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
Jeff Law
38e012594e typo typo fixes fixes
From-SVN: r19601
1998-05-06 15:09:07 -06:00
J"orn Rennecke
e89d3e6faf cse.c (cse_set_around_loop): Don't do optimization when new pseudos are created.
* cse.c (cse_set_around_loop): Don't do optimization when
	new pseudos are created.

From-SVN: r19404
1998-04-24 14:03:42 +01:00
Jeffrey A Law
c6a26dc45d cse.c (count_reg_usage): Correctly handle REG_NONNEG notes.
* cse.c (count_reg_usage): Correctly handle REG_NONNEG notes.
        (delete_trivially_dead_insns): Renamed from delete_dead_from_cse.
        * toplev.c (rest_of_compilation): Call delete_trivially_dead_insns
        instead of delete_dead_from_cse.  Also call delete_trivially_dead_insns
        between loop optimization passes.
        * rtl.h: Updated appropriately.

From-SVN: r19100
1998-04-10 18:28:07 -06:00
Jeff Law
e5e809f419 * Check in merge from gcc2. See ChangeLog.11 and ChangeLog.12
for details.

        * haifa-sched.c: Mirror recent changes from gcc2.

From-SVN: r18984
1998-04-04 06:32:39 -07:00
Jeffrey A Law
47a0b68fb6 * cse.c (rtx_cost): Only call CONST_COSTS if it is defined.
From-SVN: r18787
1998-03-23 15:55:04 -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
Kaveh R. Ghazi
8625fab57c Warning fixes, resulting in the addition of a new target macro:
* tm.texi (DEFAULT_RTX_COSTS): Document new macro.
        * arm.h (DEFAULT_RTX_COSTS): Define instead of RTX_COSTS.
        * cse.c (rtx_cost): Provide a default case in an enumeration
        switch, and call DEFAULT_RTX_COSTS if it's defined.

Co-Authored-By: Nick Clifton <nickc@cygnus.com>
Co-Authored-By: Richard Earnshaw <rearnsha@arm.com>

From-SVN: r18513
1998-03-12 12:32:24 +00:00
Kaveh R. Ghazi
5172371191 Fix warious warnings:
* c-aux-info.c: Include string.h/strings.h.
	* pa.c: Include stdlib.h.
	(pa_combine_instructions): Prototype the function.
	(pa_can_combine_p, forward_branch_p, shadd_constant_p): Likewise.
	(reloc_needed): Add default case for enumeration switch.
	(remove_useless_addtr_insns): Remove unused variable `all'.
	(hppa_expand_prologue): Add explicit braces to avoid
	ambiguous `else'.
	(output_function_epilogue): Remove unused variable `i'.
	(output_millicode_call): Remove unused variable `link'.
	(shadd_constant_p, forward_branch_p): Make the function static.
	(following_call): Explicitly declare to return int.
	(pa_reorg): Declare as void.
	(pa_combine_instructions): Declare as static void.  Add
	parentheses around && within ||.
	* pa.h: Add prototypes for pa_reorg, symbolic_operand,
	following_call, function_label_operand, lhs_lshift_cint_operand
	and zdepi_cint_p.
	* pa.md: Add parentheses around && within ||.
	* cppalloc.c: Include stdlib.h.
	* cpperror.c (cpp_print_containing_files): Remove unused variable
	`i'.  Fix format specifier in fprintf.
	* cse.c (cse_around_loop): Add explicit braces to avoid
	ambiguous `else'.
	(delete_dead_from_cse): Wrap variable `tem' in macro HAVE_cc0.
	* expr.c (expand_expr): Add parentheses around && within ||.
	* final.c (app_enable): Replace fprintf with fputs where there are
	no format specifiers and no trailing argument after the string.
	Eg, when printing ASM_APP_ON/ASM_APP_OFF.
	(app_disable): Likewise.
	(final_end_function): Likewise.
	(final_scan_insn): Likewise.  Remove unused variable `set'.
	(profile_function): Wrap empty if-statement body in {} brackets.
	* function.c: Include stdlib.h.
	(pad_below): Wrap prototype and definition in ARGS_GROW_DOWNWARD.
	(reposition_prologue_and_epilogue_notes): Add parentheses
	around assignment used as truth value.
	* integrate.c (expand_inline_function): Wrap variable
	`cc0_insn' in macro HAVE_cc0.
	* jump.c (jump_optimize): Wrap variable `q' in macro
	HAVE_cc0.  Remove unused variable `prev1'.
	* libgcc2.c (__bb_exit_trace_func): Add parentheses around &&
	within ||.  Fix format specifier in fprintf.
	(__bb_init_prg): Add parentheses around assignment used as
	truth value.
	* local-alloc.c: Include stdlib.h.
	(requires_inout): Add parentheses around assignment used
	as truth value.
	* loop.c (analyze_loop_iterations): Wrap prototype and definition
	in macro HAVE_decrement_and_branch_on_count.
	(insert_bct, instrument_loop_bct): Likewise.
	(move_movables): Add parentheses around assignment used as
	truth value.
	(consec_sets_invariant_p): Likewise.
	(maybe_eliminate_biv_1): Wrap variable `new' in macro HAVE_cc0.
	* objc/objc-act.c: Include stdlib.h.
	(lookup_method_in_protocol_list): Wrap empty else-statement body
	in braces.
	(lookup_protocol_in_reflist): Likewise.
	(objc_add_static_instance): Remove unused variables `decl_expr'
	and `decl_spec'.
	(get_objc_string_decl): Remove unused variable `decl'.
	(generate_static_references): Remove unused variables `idecl' and
	`instance'.
	(check_protocols): Wrap empty else-statement body in braces.
	* protoize.c: Include stdlib.h.
	(substr): Add parentheses around assignment used as truth value.
	(abspath): Likewise.
	(shortpath): Likewise.
	* regmove.c (fixup_match_1): Add parentheses around assignment
	used as truth value.
	* reload.c (push_secondary_reload): Remove unused variable `i'.
	(find_reloads): Add parentheses around assignment used as truth
	value.
	* reload1.c: Include stdlib.h.
	* rtl.h: Correct typo in prototype of offsettable_memref_p.
	* stmt.c (add_case_node): Add parentheses around assignment used
	as truth value.
	(case_tree2list): Likewise.
	* tree.c (valid_machine_attribute): Wrap variable `decl_attr_list'
	in macro VALID_MACHINE_DECL_ATTRIBUTE.  Wrap variable
	`type_attr_list' in macro VALID_MACHINE_TYPE_ATTRIBUTE.
	(merge_attributes): Add explicit braces to avoid ambiguous
	`else'.
	* unroll.c (copy_loop_body): Wrap variable `cc0_insn' in
	macro HAVE_cc0.
	* varasm.c: Include stdlib.h.

From-SVN: r18290
1998-02-28 07:06:53 +00:00
Jeffrey A Law
614bb5d45d cse.c (delete_dead_from_cse): If a libcall produces a constant result and that result can be substituted into...
* cse.c (delete_dead_from_cse): If a libcall produces a constant
        result and that result can be substituted into SET_SRC of the
        insn with the REG_RETVAL note, then perform the substitution
        and delete the libcall.

From-SVN: r17871
1998-02-12 07:26:47 -07:00
Jeff Law
2d8b0f3ada c-lex.c: Include <stdlib.h> and <string.h>/<strings.h>.
a
	* c-lex.c: Include <stdlib.h> and <string.h>/<strings.h>.  Add
	prototype for `handle_sysv_pragma', and make it static.  Add
	parentheses around assignment used as truth value.
	* combine.c (combine_instructions): Protect variable `prev' with
	macro HAVE_cc0.
	(can_combine_p): Protect variable `link' with AUTO_INC_DEC.
	(extract_left_shift): Add parentheses around operand of &.
	(merge_outer_ops): Avoid an empty body in an else-statement.
	(gen_rtx_combine): Remove unused variable `i'.
	* sparc/gmon-sol2.c: Include <fcntl.h>.  Make return type of
        function monstartup `void'.  Likewise for internal_mcount.  Add
        `static void' prototype for moncontrol.  Reconcile sprintf format
        vs. args.
	* sparc/sparc.c: Include <stdlib.h> and <string.h>/<strings.h>.
	Make return type of function_arg_slotno explicitly `int'.
	(reg_unused_after): Add	parentheses around assignment used as
	truth value.
	(save_regs): Add explicit braces to avoid ambiguous `else'.
	(function_arg_slotno): Add parentheses around && within ||.
	(function_arg_pass_by_reference): Likewise.
	(sparc_flat_output_function_prologue): Reconcile fprintf format
	vs. args.
	* svr4.h (ASM_OUTPUT_LIMITED_STRING): Add parentheses around
	assignment used as truth value.
	* cplus-dem.c: Include <stdlib.h>.
	(demangle_signature): Avoid an empty body in an else-statement.
	(do_type): Remove unused variable `lvl'.
	* cppexp.c: Don't have <stdlib.h> depend on MULTIBYTE_CHARS.
	Include <string.h>/<strings.h>.
	(cpp_lex): Remove unused variable `namelen'.
	(cpp_lex): Explicitly declare `num_chars' as an int.
	* cpplib.c: Avoid duplicate inclusion of <stdlib.h>, include
	<unistd.h> instead.  Explicitly declare is_system_include
	returning int.
	(make_assertion): Remove unused variable `kt'.
	(cpp_expand_to_buffer): Hide variable `obuf'.
	(output_line_command): Remove unused variables, `line_end',
	`line_cmd_buf' and `len'.
	(macarg): Remove unused variable `arg_start'.
	(special_symbol): Remove unused variable `i'.  Add parentheses
	around assignment used as truth value.
	(do_include):  Remove unused variables `pcfname' and `retried',
	hide `pcf' and `pcfbuflimit'.
	(do_line): Remove unused variable `i'.
	(finclude): Hide variable `missing_newline'.
	(cpp_handle_options): Remove unused variable `j'.
	(read_token_list): Remove unused variable `eofp'.
	(cpp_error_with_line): Remove unused variable `i'.
	(cpp_warning_with_line): Likewise.
	(cpp_pedwarn_with_line): Explicitly declare `column' as int.
	(cpp_error_from_errno): Remove unused variable `i'.
	* cse.c (invalidate): Add parentheses around assignment used as
	truth value.
	(find_best_addr): Move declaration of variable `our_cost' inside
	the conditional macro where its used.
	(fold_rtx): Avoid an empty body in an if-statement.
	(cse_insn): Wrap variables  `this_insn_cc0_mode' and
	`this_insn_cc0' in macro HAVE_cc0.
	* dwarf2out.c: Include <stdlib.h> and <string.h>/<string.h>.
	(ASM_OUTPUT_DWARF_DATA8):  Reconcile format vs. args in fprintf's.
	(output_uleb128): Likewise.
	(output_sleb128): Likewise.
	(output_cfi): Likewise.
	(output_call_frame_info): Remove unused variables `j', `fde_size'
	and `fde_pad'.
	(comp_unit_has_inlines): Hide declaration as per rest of file.
	(size_of_line_prolog): Correct typo in prototype.
	(add_arange): Likewise.
	(output_aranges): Likewise.
	(add_name_and_src_coords_attributes): Likewise.
	(gen_array_type_die): Likewise.
	(gen_inlined_subroutine_die): Likewise.
	(equate_decl_number_to_die): Remove unused variable `i'.
	(print_die): Reconcile format vs. args in fprintf's.
	(print_dwarf_line_table): Likewise.
	(output_die): Likewise.
	(output_line_info): Likewise.
	(add_subscript_info): Avoid an empty body in an else-statement.
	(gen_subprogram_die): Remove unused variable `fp_loc'.
	* dwarfout.c: Explicitly declare `next_pubname_number' as int.
	Protect `ordering_attribute' prototype with USE_ORDERING_ATTRIBUTE
	macro.  Protect `src_coords_attribute' prototype with
	DWARF_DECL_COORDINATES macro.  Hide `output_entry_point_die'
	prototype as in the rest of the file.  Likewise for
	`output_pointer_type_die' and `output_reference_type_die'.  Remove
	prototype for `type_of_for_scope'.
	(output_unsigned_leb128): Reconcile format vs. args in fprintf.
	(type_attribute): Add explicit braces to avoid ambiguous `else'.
	* final.c: Include <stdlib.h> and <string.h>/<strings.h>.
	(shorten_branches): Protect declaration of tmp_length with
	SHORTEN_WITH_ADJUST_INSN_LENGTH and ADJUST_INSN_LENGTH macros.
	(profile_function): Protect declaration of `sval' and `cxt'
	variables with appropriate macros.
	(final_scan_insn): Likewise for `note' variable.  Add explicit
	braces to avoid empty body in an if-statement.
	(output_asm_insn): Move variable `i' inside macro conditional
	where it is used.  Add parentheses around assignment used as truth
	value.
	(asm_fprintf) Likewise, likewise.
	* fix-header.c (main): Remove unused variable `done'.  Protect
	declaration of `i' with FIXPROTO_IGNORE_LIST.
	* pexecute.c: Include <unistd.h>.  Prototype `my_strerror'.
	* print-rtl.c (print_inline_rtx): Explicitly declare the parameter
	`ind'.
	* profile.c: Include <string.h>/<strings.h>.
	(instrument_arcs): Remove unused variables `note', `inverted',
	`zero' and `neg_one'.
	(branch_prob): Avoid empty body in an if-statement.
	* regclass.c: Include <stdlib.h>.
	(reg_alternate_class): Explicitly declare parameter `regno'.
	* regmove.c (regmove_optimize): Remove unused variable `p'.  Add
	parentheses around assignment used as truth value.
	(find_matches):  Remove unused variables `output_operand' and
	`matching_operand'.
	(fixup_match_1): Remove statement with no effect: "if (0) ;".
	* scan.c (sstring_append): Explicitly declare `count' as int.
	(scan_string): Explicitly declare parameter `init' as int.
	* sched.c: Include <stdlib.h>.
	(BLOCKAGE_RANGE): Add parentheses around arithmetic in operand of |.
	(rank_for_schedule): Add parentheses around assignment used as
	truth value.
	(schedule_block): Likewise.
	(regno_use_in): Likewise.
	(schedule_insns): Remove unused variable `i'.
	* toplev.c: Include <stdlib.h> and <string.h>/<strings.h>.
	(v_message_with_decl): Remove unused variable `n'.
	(botch): Explicitly declare parameter `s' as char *.
	(main): Add parentheses around assignment used as truth value.
	* tree.c (make_node): Protect the variable `kind' with the
	GATHER_STATISTICS macro.
	(real_value_from_int_cst): Move variable `e' inside conditional
	macro area where it is used.
	(tree_last): Add parentheses around assignment used as truth value.
	(build1): Protect the variable `kind' with the GATHER_STATISTICS
	macro.
	(print_obstack_statistics): Reconcile format vs. args in fprintf.
	Protect variables `i', `total_nodes', and `total_bytes' with the
	GATHER_STATISTICS macro.
Lots more -W -Wall warnings disappear.

From-SVN: r17515
1998-01-27 15:11:37 -07:00
Michael Tiemann
e82ad93d64 cse.c (simplify_ternary_operation): Don't try to simplify IF_THEN_ELSE expressions (created by combine) that don't...
* cse.c (simplify_ternary_operation): Don't try to simplify
        IF_THEN_ELSE expressions (created by combine) that don't use
        relational operators.

From-SVN: r17472
1998-01-25 04:12:26 -07:00
Jeffrey A Law
ed1ecb1930 cse.c (simplify_ternary_operation): Handle more IF_THEN_ELSE simplifications.
* cse.c (simplify_ternary_operation): Handle more IF_THEN_ELSE
        simplifications.

From-SVN: r17465
1998-01-23 16:06:03 -07:00
David S. Miller
7bcac048fd varasm.c (immed_double_const): Add casts to HOST_WIDE_INT where necessary.
* varasm.c (immed_double_const): Add casts to HOST_WIDE_INT where
        necessary.
        (const_hash): Hash val is unsigned long.
        (SYMHASH): Likewise.
        * tree.c (TYPE_HASH): Type of hash val is unsigned long.
        * print-tree.c (print_node_brief): HOST_PTR_PRINTF format wants a
        char pointer, not HOST_WIDE_INT.
        (print_node): Likewise.  Also hash is unsigned long not
        HOST_WIDE_INT.
        * cse.c (canon_hash): Hash is unsigned long not HOST_WIDE_INT.

From-SVN: r17403
1998-01-17 15:50:40 -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
Jeff Law
c85f7c16ad Bring in final gcc-2.8.0 changes.
From-SVN: r17355
1998-01-14 13:57:58 -07:00
Jeffrey A Law
5b5a2a1ecc * cse.c (rtx_cost): Remove conflicting default case.
From-SVN: r17245
1997-12-27 14:44:26 -07:00
Jim Wilson
556c714b3d cse.c (max_insn_uid): New variable.
* cse.c (max_insn_uid): New variable.
        (invalidate): Remove CYGNUS LOCAL patch.
        (cse_around_loop): Use max_insn_uid.
        (cse_main): Set max_insn_uid.

From-SVN: r17231
1997-12-24 15:54:37 -07:00
Kaveh R. Ghazi
9e04c65a52 cse.c (rtx_cost): Add default case in enumeration switch.
* cse.c (rtx_cost): Add default case in enumeration switch.
        * fix-header.c (recognized_macro): Likewise.
        (recognized_extern): Likewise.
        (write_rbrac): Likewise.
        * objc/objc-act.c (encode_aggregate): Likewise.
        (gen_declarator): Likewise.
        (gen_declspecs): Likewise.

From-SVN: r17186
1997-12-22 02:31:41 -07:00
Jeff Law
956d69504d Merge from gcc-2.8
From-SVN: r16987
1997-12-06 17:31:01 -07:00
Jeff Law
da932f04bf m68k.c: Include tree.h for dwarf2out_cfi_label.
* m68k.c: Include tree.h for dwarf2out_cfi_label.

        * gcc.c (process_command): Do not take address of function fatal when
        calling lang_specific_driver.

        * config/i386/cygwin32.h (DWARF2_UNWIND): Exception handling
        doesn't work with it yet, so set it to 0.
        * config/i386/xm-cygwin32.h (NO_SYS_SIGLIST): Define.

        * cse.c (cse_insn): Check for invalid entries when taking references.
More assorted pending patches.

From-SVN: r16978
1997-12-06 08:48:29 -07:00
Jeffrey A Law
85c3ba60dd cse.c (cse_insn): Don't look at JUMP_LABEL field of a conditionl return.
* cse.c (cse_insn): Don't look at JUMP_LABEL field of a conditionl
        return.
        (cse_end_of_basic_block): Similarly.

From-SVN: r16534
1997-11-16 23:51:20 -07:00
Jeff Law
e9a25f70a0 Update mainline egcs to gcc2 snapshot 971021.
From-SVN: r16278
1997-11-02 14:19:36 -07:00
Jim Wilson
3bf1b08254 Patches to fix minor optimizer bugs
Patches to fix minor optimizer bugs
	* expmed.c (extract_bit_field): Don't make flag_force_mem disable
	extzv for memory operands.
	* cse.c (simplify_ternary_operation, case IF_THEN_ELSE): Collapse
	redundant conditional moves to single operand.

From-SVN: r16129
1997-10-20 16:49:48 -07:00
Jeffrey A Law
135d84b899 * cse.c (this_insn_cc0_mode): Initialize.
From-SVN: r15816
1997-09-30 23:46:27 -06:00
David S. Miller
9524f769a7 combine.c (try_combine): Use NULL_RTX instead of '0' where appropriate in calls to gen_rtx().
* combine.c (try_combine): Use NULL_RTX instead of '0' where
        appropriate in calls to gen_rtx().
        * cse.c (cse_main): Likewise.
        * emit-rtl.c (gen_label_rtx): Likewise.
        * expr.c (init_expr_once): Likewise.
        * haifa-sched.c (flush_pending_lists, sched_analyze_insn,
        sched_analyze, init_rgn_data_dependences,
        compute_block_backward_dependences): Likewise.
        * sched.c (schedule_insns): Likewise.
        * varasm.c (immed_double_const): Likewise.

From-SVN: r15630
1997-09-22 11:41:48 -06:00
Jeffrey A Law
cb3bb2a765 cse.c (simplify_relational_operation): Set h0u just like h0s.
* cse.c (simplify_relational_operation): Set h0u just like h0s.
        Similarly for h1u and h1s.

From-SVN: r15616
1997-09-21 19:28:22 -06:00
Jeffrey A Law
05ef889761 cse.c (simplify_relational_operation): If MODE specifies a mode wider than HOST_WIDE_INT...
* cse.c (simplify_relational_operation): If MODE specifies a
        mode wider than HOST_WIDE_INT, then the high word of a CONST_INT
        is derived from the sign bit of the low word.

Brought over from r5900 branch.

From-SVN: r15454
1997-09-15 15:37:39 -06:00
Jim Wilson
bc4ddc77a0 Fix irix6 execute/921117-1.c c-torture failure.
* cse.c (cse_insn): Don't record BLKmode values.

From-SVN: r15024
1997-09-01 16:43:03 -07:00
Jeffrey A Law
9ae8ffe751 * Integrate alias analysis changes from jfc@mit.edu
* Makefile.in (OBJS): Add alias.o
        (alias.o): Add dependencies.
        * alias.c: New file.
        * sched.c: Remove alias analysis code.  It lives in alias.c now.
        (reg_last_uses_size): Declare.
        (sched_analyze_2): Add new arguments to true_dependence.
        (sched_analyze_insn): Use reg_last_uses_size instead of max_reg.
        (schedule_block): Initialize reg_last_uses_size.
        (schedule_insns): Always call init_alias_analysis.
        * calls.c (expand_call): Note calls to malloc, calloc, and realloc;
        mark return value from such functions as a pointer and keep track of
        them for alias analysis.  If a return value from a function is a
        pointer, mark it as such.
        * combine.c (distribute_notes): Handle REG_NOALIAS.
        * cse.c (struct write_data): Delete.  No longer needed.
        (invalidate): Don't call set_nonvarying_address_components anymore.
        Use true_dependence to decide if an entry should be removed from
        the hash table.
        (invalidate_memory): Remove WRITES argument, simplify appropriately.
        Fix all callers.
        (note_mem_written): Similarly for WRITE_PTR argument.
        (invalidate_from_clobbers): Similarly for W argument.
        (invalidate_for_call): Remove memory elements from the hash table.
        (refers_to_mem_p, cse_rtx_addr_varies_p): Deleted.
        (cse_rtx_varies_p): New function.  Derived from old
        cse_rtx_addr_varies_p.
        (cse_insn): Remove WRITES_MEMORY and INIT variables and all references.
        Don't call note_mem_written anymore.  Stack pushes invalidate the stack
        pointer if PUSH_ROUNDING is defined.  No longer need to call
        cse_rtx_addr_varies_p to decide if a MEM should be invalidated.
        (skipped_writes_memory): Remove variable.
        (invalidate_skipped_set): Simplify and wewrite to use invalidate_memory.
        (invalidate_skipped_block): Simplify for new alias analysis code.
        (cse_set_around_loop): Likewise.
        (cse_main): Call init_alias_analysis.
        * flags.h (flag_alias_check, flag_argument_noalias): Declare.
        * toplev.c (flag_alias_check, flag_argument_noalias): Define.
        (f_options): Add new alias checking arguments.
        (main): Set flag_alias_check when optimizing.
        * local_alloc (validate_equiv_mem_from_store): Add new arguments
        to true_dependence.
        (memref_referenced_p): Likewise.
        * loop.c (NUM_STORES): Increase to 30.
        (prescan_loop): Only non-constant calls set unknown_address_altered.
        (invariant_p): Add new arguments to true_dependence.
        (record_giv): Initialize unrolled and shared fields.
        (emit_iv_add_mult): Call record_base_value as needed.
        * loop.h (struct induction): Add unrolled and shared fields.
        * unroll.c  (unroll_loop): Call record_base_value as needed.
        (copy_loop_body): Likewise.
        (final_biv_value): Likewise.
        (final_giv_value): Likewise.
        (find_splittable_regs): Likewise.  Only create one new pseudo
        if we have multiple address GIVs that were combined with the same
        dst_reg GIV.  Note when a new register is created due to unrolling.
        * rtl.c (reg_note_name): Add REG_NOALIAS.
        * rtl.h (enum reg_note): Similarly.
        (rtx_varies_p, may_trap_p, side_effects_p): Declare.
        (volatile_refs_p, volatile_insn_p, remove_note): Likewise.
        (note_stores, refers_to_regno_p, reg_overlap_mentioned_p): Likewise.
        (true_dependence, read_dependence, anti_dependence): Likewise.
        (output_dependence, init_alias_analysis, end_alias_analysis): Likewise.
        (mark_user_reg, mark_reg_pointer): Likewise.
jfc's alias analysis code.

From-SVN: r14768
1997-08-11 14:07:24 -06:00
Richard Kenner
5a03c8c401 (cse_insn): Ignore paradoxical SUBREGs unless we are looking for such.
From-SVN: r14625
1997-08-02 13:48:13 -04:00
Jim Wilson
9a252d2903 (find_best_addr): Add missing rtx_cost arguments.
From-SVN: r14367
1997-07-01 15:29:59 -07:00
Doug Evans
71d306d1b1 Delete erroneous references to (pseudo) in comments.
From-SVN: r14325
1997-06-26 21:21:38 +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
954a5693c0 (notreg_cost): New function, extracted from COST macro.
(COST): Use notreg_cost.

From-SVN: r14075
1997-05-17 16:00:55 -04:00
Richard Kenner
50196afaca (cse_insn): Don't record a SRC that's a MEM and the same as a
REG_EQUIV note if DEST is set more than once.

From-SVN: r14074
1997-05-17 15:13:18 -04:00
Richard Kenner
5d595063ff (fold_rtx, case PLUS): When seeing if negative of constant is around,
make sure not dealing with largest negative.

From-SVN: r13953
1997-04-21 16:30:16 -04:00
Richard Kenner
5887325513 (canon_reg, cse_insn): Don't examine insn_n_dups if recog_memoized
fails to find a match.

From-SVN: r13888
1997-04-13 14:51:22 -04:00
Doug Evans
899bf2bfa5 cse.c (invalidate_from_clobbers): Delete unnecessary test for (clobber nil).
* cse.c (invalidate_from_clobbers): Delete unnecessary test for
	(clobber nil).

From-SVN: r13618
1997-02-07 18:56:07 +00:00
Ian Lance Taylor
38734e55b3 Get the right COST for a SUBREG when truncating
From-SVN: r13549
1997-01-23 20:05:52 +00:00
Ian Lance Taylor
f95182a4a9 Check SMALL_REGISTER_CLASSES at runtime
From-SVN: r13302
1996-12-13 01:00:49 +00:00
Richard Kenner
9255709cac (fold_rtx): Fold inside ASM_OPERANDS.
From-SVN: r12788
1996-09-23 18:43:54 -04:00
Richard Kenner
a2cabb29bd Correct comments.
From-SVN: r12775
1996-09-23 10:25:56 -04:00
Richard Kenner
9ad91d7115 (canon_hash, cse_insn): MEM is not unchanging if it is in the frame (since
the temp slot might be reused).

From-SVN: r12562
1996-07-24 21:47:52 -04:00
Jim Wilson
5dbc849954 (note_mem_written): Varying structure memory access with
AND address can alias scalars.

From-SVN: r12417
1996-07-08 16:33:15 -07:00
Mike Stump
0f41302f47 formatting tweaks
From-SVN: r12390
1996-07-03 22:07:53 +00:00
Jim Wilson
2d91790329 (simplify_binary_operation...
(simplify_binary_operation, case MULT): Check for case
where width is larger than HOST_BITS_PER_WIDE_INT, and upper most
bit is set.  We can not generate a simple shift in this case.

From-SVN: r12238
1996-06-07 19:36:34 -07:00
Jim Wilson
0b0ee36cd9 (cse_process_notes): Handle SUBREG like ZERO_EXTEND.
From-SVN: r11864
1996-04-21 14:51:42 -07:00
Richard Kenner
f47c02fa79 (invalidate_skipped_set): Ignore CLOBBER after calling
note_mem_written, not before.

From-SVN: r11786
1996-04-15 08:49:02 -04:00
Richard Kenner
2ebcccf3a3 (simplify_unary_operation): Add new arg to REAL_VALUE_FROM_INT.
From-SVN: r11765
1996-04-14 08:54:55 -04:00
Jim Wilson
dcb97651d7 (note_mem_written): Delete obsolete code for handling
(mem (scratch)).

From-SVN: r11585
1996-03-20 15:26:55 -08:00
Richard Kenner
8c87f107ff (find_best_addr): Make sure folded address better before using.
From-SVN: r10873
1995-12-27 15:25:35 -05:00
Richard Kenner
f353588ada (insert): Don't put a REG into qty_const.
From-SVN: r10607
1995-11-26 14:47:28 -05:00
Richard Kenner
85e4d983f3 (invalidate): For a pseudo register, do a loop to invalidate all table
entries, irrespective of mode.

From-SVN: r10556
1995-11-05 11:02:07 -05:00
Richard Kenner
890465354d (set_nonvarying_address_components, case AND): Add *pend to end.
(set_nonvarying_address_components, case AND): Add *pend to end.  Add
constant to start instead of subtracting it.

From-SVN: r10426
1995-10-03 12:25:50 -04:00
Richard Kenner
a5dfb4eee2 (recorded_label_ref): New variable.
(insert): Set instead of cse_jumps_altered.
(cse_main): Initialize it and return 1 if nonzero at end.

From-SVN: r10368
1995-09-16 08:38:04 -04:00
Richard Kenner
970c9acebf (insert): Set cse_jumps_altered when inserting a LABEL_REF.
From-SVN: r10366
1995-09-15 18:24:09 -04:00
Richard Kenner
969c851727 (canon_hash, CONST_DOUBLE): Hash integer and real differently.
From-SVN: r10303
1995-08-31 19:03:23 -04:00
Richard Kenner
abc95ed36d Fix spelling errors.
From-SVN: r10289
1995-08-28 06:54:22 -04:00
Richard Kenner
9c6b0bae3c (set_nonvarying_address_components): Handle addresses which are the sum of two constant pseudo regs.
(set_nonvarying_address_components): Handle addresses which are the sum of
two constant pseudo regs.
(cse_rtx_addr_varies_p): Likewise.

From-SVN: r10220
1995-08-13 18:45:42 -04:00
Richard Kenner
98369a0f8a (cse_insn): When do special handling for (set REG0 REG1), must delete
REG_EQUAL note from insn if it mentions REG0.

From-SVN: r10169
1995-07-26 09:31:00 -04:00
Richard Kenner
e6a125a009 (cse_insn): Ifdef out code that pre-truncates src_folded.
From-SVN: r10127
1995-07-14 08:15:00 -04:00
Richard Kenner
940d9d638b Update FSF address.
From-SVN: r9959
1995-06-15 07:33:25 -04:00
Richard Kenner
146135d6db (cse_basic_block): Fix test for whether block ends with a barrier.
Return next insn, not 0, if block ends in a barrier.

From-SVN: r9916
1995-06-09 18:05:54 -04:00
Richard Kenner
940fd0b54c (simplify_unary_operation, case FLOAT, UNSIGNED_FLOAT): Truncate to
requested mode.

From-SVN: r9872
1995-06-05 07:31:38 -04:00
Richard Kenner
9faa82d8c0 Fix typos in comments.
From-SVN: r9712
1995-05-16 08:39:54 -04:00
Richard Kenner
c256df0bf7 (cse_insn): Properly set IN_MEMORY for SET_DEST.
From-SVN: r9547
1995-04-30 07:19:15 -04:00
Richard Kenner
cceb347c21 (simplify_unary_operation): #ifdef POINTERS_EXTEND_UNSIGNED, handle
sign- or zero-extending addresses.

From-SVN: r9333
1995-04-07 16:04:38 -04:00
Torbjorn Granlund
ad89d6f68a (simplify_unary_operation): Sign-extend constants when they have the most significant bit set for the target.
(simplify_unary_operation): Sign-extend constants when
they have the most significant bit set for the target.
(simplify_binary_operation): Likewise.

From-SVN: r9309
1995-04-03 23:19:02 +00:00
Jim Wilson
c27b5c621a (simplify_relational_operation): Don't simplify A-B for
compare of A and B when the compare is unsigned.

From-SVN: r9296
1995-04-02 14:34:42 -07:00
Richard Kenner
783e5bca05 (cse_insn): When emitting a BARRIER, don't put it after a deleted
insn.

From-SVN: r9283
1995-04-01 09:36:47 -05:00
Richard Kenner
a9c6464d87 (simplify_unary_operation): If operand mode is VOIDmode for
UNSIGNED_FLOAT and operand looks negative, can't simplify.

From-SVN: r9081
1995-02-25 06:55:11 -05:00
Richard Kenner
3826a3da7f Update comments.
From-SVN: r8811
1995-01-25 14:40:53 -05:00
Jim Wilson
4879acf67e (simplify_unary_operation): Cast constant 1 to HOST_WIDE_INT
before shifting left to form mask.

From-SVN: r8707
1994-12-29 11:17:28 -08:00
Torbjorn Granlund
29d72c4b69 (simplify_binary_operation): Do (x - (x & y)) -> (x & ~y).
From-SVN: r8494
1994-11-17 23:31:20 +00:00
Ian Lance Taylor
f76b9db287 Check target endianness at run time, not compile time
From-SVN: r8470
1994-11-16 21:10:09 +00:00
Richard Kenner
d50d63c056 (simplify_unary_operation, case TRUNCATE): Set LV and HV.
From-SVN: r8375
1994-11-01 18:39:35 -05:00
Richard Kenner
1a8e9a8e05 (cse_insn): Don't record a DEST a paradoxical SUBREG and SRC is a
SIGN_EXTEND or ZERO_EXTEND.

From-SVN: r8354
1994-10-28 18:55:05 -04:00
Jim Wilson
8ae2b8f6f1 (merge_equiv_classes, cse_insn): Call rehash_using_reg after insert_regs.
(merge_equiv_classes, cse_insn): Call rehash_using_reg
after insert_regs.
(canon_hash): Don't use qty_const to compute hash code for a
register.

From-SVN: r8319
1994-10-20 13:06:59 -07:00
Richard Kenner
1bbd065b6c (cse_insn): Don't call force_const_mem on (const (truncate)).
From-SVN: r8231
1994-10-06 17:38:35 -04:00
Jim Wilson
68c1e17399 Fix prototype for invalidate.
From-SVN: r8127
1994-09-23 16:15:54 -07:00
Jim Wilson
bb4034b322 (invalidate): New parameter FULL_MODE. All callers changed.
(set_nonvarying_address_components): Modify initial comment.
(cse_insn): When call invalidate for dest, use the actual dest not
inner_dest.

From-SVN: r8124
1994-09-23 12:54:07 -07:00
Richard Kenner
f1636e8ad8 (cse_around_loop): Don't invalidate SUBREG unless it's a SUBREG of a
REG.

From-SVN: r8085
1994-09-15 13:21:49 -04:00
Richard Kenner
0e227018ba (invalidate_for_call): Properly set IN_TABLE.
From-SVN: r8073
1994-09-10 09:50:27 -04:00
Richard Kenner
af3869c1cc (record_jump_cond): Don't do anything if OP0 and OP1 are already
equivalent.

From-SVN: r7984
1994-08-25 19:21:18 -04:00
Richard Kenner
e650cbda8f (fold_rtx): When folding tablejump, allow LABEL_REF to be in arg0;
also allow other arg to be MINUS, not just be equivalent to it.

From-SVN: r7939
1994-08-17 18:03:37 -04:00
Richard Kenner
336d6f0a7e (set_nonvarying_address_components): If BASE is CONST_INT, add value to start and set BASE to const0_rtx.
(set_nonvarying_address_components): If BASE is CONST_INT, add value to start
and set BASE to const0_rtx.
(refers_to_mem_p): Don't do it here.

From-SVN: r7911
1994-08-12 19:05:07 -04:00
Richard Kenner
8e0ac43b33 (simplify_unary_operation): Clean up some mode and size checks with
CONST_DOUBLEs; TRUNCATE should do nothing.

From-SVN: r7853
1994-08-02 19:06:41 -04:00
Richard Kenner
67a3773731 (fold_rtx, case MEM): Surround TRUNCATE for jump table entry with a CONST.
(fold_rtx, case '1'): Handle operand 0 of a CONST.
(fold_rtx, case PLUS): Handle (const (minus (label_ref) (label_ref))).

From-SVN: r7832
1994-07-30 12:58:42 -04:00
Richard Kenner
f54d49248d (canon_hash, exp_equiv_p): Refer to string in SYMBOL_REF with XSTR,
not XEXP.

From-SVN: r7650
1994-07-04 11:14:54 -04:00
Richard Kenner
138cec5908 (simplify_unary_operation, case UNSIGNED_FLOAT): Add missing cast to
unsigned.

From-SVN: r7547
1994-06-23 19:05:47 -04:00
Richard Earnshaw
b5a09c4171 (simplify_binary_operation, case MINUS): Check mode of op0,
instead of op1, before calling plus_constant.

From-SVN: r7510
1994-06-17 14:51:43 +00:00
Richard Kenner
c85663b1a8 (set_nonvarying_address_components): Rework and also handle an AND
used for non-aligned accesses.

From-SVN: r7503
1994-06-16 06:47:10 -04:00
Richard Kenner
7ac4a26649 (simplify_unary_operation): Fix typo in last change.
From-SVN: r7495
1994-06-15 19:20:18 -04:00
Richard Kenner
4c9a05bc55 Cast pointer operands to bzero, bcopy, and bcmp to (char *).
From-SVN: r7472
1994-06-14 18:19:28 -04:00
Richard Kenner
62c0ea12e9 (simplify_unary_operation): Correctly and consistently handle
CONST_INT cases for FLOAT and UNSIGNED_FLOAT.

From-SVN: r7470
1994-06-14 17:53:33 -04:00
Richard Kenner
6cdbaec41b (cse_insn): Correctly check for two modes being the same number of
words.

From-SVN: r7292
1994-05-13 15:12:01 -04:00
Jim Wilson
7b3ab05e78 (cse_insn): Set src_eqv if the dest is a STRICT_LOW_PART.
From-SVN: r7278
1994-05-11 14:44:22 -07:00
Richard Kenner
f1e7c95f89 (cse_insn): Invalidate CLOBBERed registers.
(count_reg_usage): Count registers in USE rtls on CALL_INSNs.

From-SVN: r7237
1994-05-06 17:45:07 -04:00
Richard Kenner
560c94a2b9 Use CONST_DOUBLE_FROM_REAL_VALUE macro for immed_real_const_1.
From-SVN: r7113
1994-04-21 15:27:24 -04:00
Richard Kenner
45620ed410 No longer handle LSHIFT.
From-SVN: r7020
1994-04-10 08:03:37 -04:00
Richard Kenner
92f9aa5176 (cse_insn): Add missing definition of var TEM; clean up shadowed uses.
From-SVN: r6920
1994-03-30 16:52:21 -05:00
Richard Kenner
2aef6202ad (cse_insn): Remove decl of unused variable TEM.
From-SVN: r6877
1994-03-25 14:00:02 -05:00
Richard Kenner
6ab832bc31 (FIXED_REGNO_P): Treate global regs as fixed.
(CHEAP_REGNO): Renamed from CHEAP_REG.
(CHEAP_REG): New macro; user var in hard reg is cheap.
(COST): Pass RTL to CHEAP_REG, not regno.
(rtx_cost, case REG): Likewise.

From-SVN: r6836
1994-03-21 07:36:48 -05:00
Richard Kenner
831522a46e (simplify_binary_operation): Protect real_value_truncate inside
handler.

From-SVN: r6767
1994-03-13 08:30:11 -05:00
Richard Kenner
1a7c818bd6 (simplify_relational_operation): Fix typos; use
ARG_POINTER_REGNUM and FRAME_POINTER_REGNUM in condtionals.

From-SVN: r6730
1994-03-09 12:07:12 -05:00
Richard Kenner
9ff08f70f3 (count_reg_usage, case SET): If SRC has side-effects, count a usage of
DEST in it.

From-SVN: r6631
1994-02-26 16:11:04 -05:00
Torbjorn Granlund
be8fe47095 Conditionalize special treatment of
PIC_OFFSET_TABLE_REGNUM on PIC_OFFSET_TABLE_REG_CALL_CLOBBERED.

From-SVN: r6539
1994-02-12 13:48:02 +00:00
Richard Kenner
3c54377553 (canon_hash, case LABEL_REF, SYMBOL_REF): Avoid warning on 64-bit
machines.

From-SVN: r6487
1994-02-06 08:40:29 -05:00
Richard Kenner
7bac1be089 (memory_extend_rtx): New variable.
(cse_main): Initialize it.
(cse_insn): See if we have already loaded a MEM in a wider  mode.

From-SVN: r6484
1994-02-05 08:05:42 -05:00
Jim Wilson
f6516aeee4 (find_best_addr): Limit number of cse_gen_binary calls to
20 per iteration.

From-SVN: r6449
1994-01-31 16:02:12 -08:00
Richard Kenner
2197a88a8c (HASHBITS): Removed.
(HASH, struct set, canon_hash, safe_hash, remove_from_table):
Generate and use unsigned hash values, to avoid potential trouble
with signed shift/overflow.
Also name variables consistently: "hash", not "hash_code".
(lookup, lookup_for_remove, insert, merge_equiv_classes): Likewise.
(invalidate, rehash_using_reg, invalidate_for_call): Likewise.
(find_best_addr, record_jump_cond, cse_insn):  Likewise.

From-SVN: r6431
1994-01-25 08:29:50 -05:00
Richard Kenner
28bad1cbc3 (simplify_relational_operation): Don't do anything with CC0 in
addition to MODE_CC values.

From-SVN: r6376
1994-01-10 19:31:01 -05:00
Richard Kenner
64812ded25 (simplify_relational_operation): Correct declaration of variables
holding parts of constants.

From-SVN: r6351
1994-01-02 08:14:22 -05:00
Richard Kenner
a432f20d05 (simplify_relational_operation): Rewrite and simplify.
Add case when we can simplify A-B for compare of A and B.

From-SVN: r6344
1993-12-31 06:47:13 -05:00
Richard Kenner
c407b802da (simplify_binary_operation, case MULT): Don't convert to ASHIFT if
still generating RTL.

From-SVN: r6340
1993-12-29 06:51:45 -05:00
Richard Kenner
a83afb65d0 (simplify_binary_operation, fold_rtx): Allow some FP simplications with -ffast-math.
(simplify_binary_operation, fold_rtx): Allow some FP simplications
with -ffast-math.
(simplify_relational_operation): FP comparisons can be reversed
if -ffast-math is specified.

From-SVN: r6334
1993-12-27 08:48:17 -05:00
Richard Kenner
79644f0689 (count_reg_usage): Don't count a register used within a SET that sets it.
(delete_dead_from_cse): Pass new parm to count_reg_usage.

From-SVN: r6327
1993-12-26 08:30:32 -05:00
Richard Kenner
c2cc077888 (fold_rtx...
(fold_rtx, case PLUS): If we have (plus A B), A is equivalent to a
negative constant, and the negated constant is in register, convert to
(minus A C) where C is the register containing the negated constant.

From-SVN: r6326
1993-12-26 07:55:11 -05:00
Richard Kenner
089481a600 (simplify_unary_operations): Check that operations really are
double-word before doing them.

From-SVN: r6310
1993-12-25 06:05:04 -05:00
Richard Kenner
3308590619 (simplify_binary_operation): Fix typo in CONST_DOUBLE change.
From-SVN: r6309
1993-12-24 21:54:55 -05:00
Richard Kenner
30d69925b6 (simplify_binary_operation, case PLUS, MINUS):
Simplify such things as (X >> 1) - X.

From-SVN: r6308
1993-12-24 21:24:39 -05:00
Jeff Law
4433322379 cse.c (cse_insn): Set "cse_jumps_altered" when collapsing a switch statement into an...
* cse.c (cse_insn): Set "cse_jumps_altered" when collapsing
        a switch statement into an unconditional jump.
        * toplev.c (rest_of_compilation): Rerun jump_optimize
        before the second CSE pass.

From-SVN: r6305
1993-12-24 12:36:04 -07:00
Richard Kenner
fe87324067 (simplify_binary_operation): Can fold multi-word operations when first is CONST_INT.
(simplify_binary_operation): Can fold multi-word operations when first is
CONST_INT.
(simplify_binary_operation, case PLUS, MINUS): Don't call plus_constant when
OP0 is VOIDmode.

From-SVN: r6298
1993-12-24 06:53:52 -05:00
Torbjorn Granlund
4d61f8c559 (simplify_binary_operation, case *SHIFT*): Reduce arg1 as
defined by SHIFT_COUNT_TRUNCATED.

From-SVN: r6296
1993-12-24 11:46:16 +00:00
Richard Kenner
a4e262bcec (delete_reg_equiv): Don't reference elements of REG_{NEXT,PREV}_EQV
that are not defined.

From-SVN: r6276
1993-12-23 06:57:20 -05:00
Richard Stallman
2708da920e (cse_insn): Call `invalidate' also for STRICT_LOW_PART and ZERO_EXTRACT (three places).
(cse_insn):  Call `invalidate' also for STRICT_LOW_PART and
ZERO_EXTRACT (three places).
(invalidate_from_clobbers): Likewise (two places).
(cse_around_loop): Likewise.
(invalidate_skipped_set): Likewise.
(cse_set_around_loop): Likewise.

From-SVN: r5993
1993-11-04 08:30:30 +00:00
Richard Stallman
0af62b41cd (cse_insn): When using src_related, copy the rtx.
Likewise for src_eqv_here.

From-SVN: r5922
1993-10-27 23:22:38 +00:00
Richard Stallman
76fb0b6041 (fold_rtx): Alter previous change: don't fold the shift
if the count exceeds the width of the value inside the subreg.

(note_mem_written): (mem (scratch)) means clobber everything.

(fold_rtx): Special case handling for folding
a subreg of the result of a left shift.

From-SVN: r5854
1993-10-21 02:43:58 +00:00
Richard Stallman
eb5ad42ab3 (record_jump_cond): At end, make missing equivalences
first, and then merge them.

From-SVN: r5769
1993-10-13 04:03:24 +00:00
Richard Kenner
85c0a55631 (simplify_binary_operation): Test value of SHIFT_COUNT_TRUNCATED if it
is defined.

From-SVN: r5731
1993-10-11 07:39:02 -04:00
Richard Kenner
2bb81c86de (record_jump_cond): Rehash OP1 if OP0's insert_regs returns nonzero.
From-SVN: r5631
1993-10-06 06:56:50 -04:00
Torbjorn Granlund
cdf4112f22 (insert_regs): Always return something.
(simplify_unary_operation): Remove unused variable.
(cse_process_notes): Likewise.
(invalidate_skipped_block): Likewise.
(cse_set_around_loop): Likewise.

From-SVN: r5555
1993-10-02 00:27:43 +00:00
Doug Evans
8bc169f258 cse.c: (FIXED_REGNO_P): HARD_FRAME_POINTER_REGNUM is fixed.
* cse.c: (FIXED_REGNO_P): HARD_FRAME_POINTER_REGNUM is fixed.
(CHEAP_REG): HARD_FRAME_POINTER_REGNUM is cheap.
(FIXED_BASE_PLUS): Allow hard frame pointer as base.
(NONZERO_BASE_PLUS_P): Likewise.
(cannon_hash, case REG): Add HARD_FRAME_POINTER_REGNUM to list of
special registers for SMALL_REGISTER_CLASSES.
(find_best_addr): Addresses containing HARD_FRAME_POINTER_REGNUM
cannot be replaced.
(cse_main): value in HARD_FRAME_POINTER_REGNUM is preserved across calls.

From-SVN: r5451
1993-09-24 19:38:20 +00:00
Richard Kenner
f3becefd60 (fold_rtx, case MINUS): Copy result obtained from hash table.
From-SVN: r5347
1993-09-17 18:13:33 -04:00
Richard Kenner
31c85c78b1 (fold_rtx, case SUBREG): If paradoxical SUBREG of a constant, return
the constant.

From-SVN: r5346
1993-09-17 18:10:33 -04:00
Jim Wilson
f7911249bb (cse_insn): After inserting src_eqv...
(cse_insn): After inserting src_eqv, check to see if it is
identical to any uninserted SET_SRCs, and if so, set their src_elt
to src_eqv_elt.

From-SVN: r5129
1993-08-10 12:11:27 -07:00
Richard Stallman
9c3b4c8be3 Include stdio.h before rtl.h.
From-SVN: r4884
1993-07-09 05:09:25 +00:00
Richard Stallman
9d1bedcf3a (simplify_binary_operation, case MINUS): Fix backwards
test added in last change.

From-SVN: r4859
1993-07-06 20:31:01 +00:00
Richard Kenner
cbf6a543dc (simplify_*_operation, fold_rtx, record_jump_cond, cse_insn): Use
INTEGRAL_MODE_P and FLOAT_MODE_P.

From-SVN: r4780
1993-06-27 21:20:38 -04:00
Richard Kenner
5f6be9da2e Fix typo in copyright line.
From-SVN: r4686
1993-06-17 15:16:45 -04:00
Richard Stallman
ffcf63937c (invalidate_skipped_set): Promote "nonscalar" to "all".
From-SVN: r4679
1993-06-14 23:16:31 +00:00
Richard Stallman
5d5ea90929 (record_jump_cond): Look up op1 again after inserting op0.
From-SVN: r4669
1993-06-12 23:42:59 +00:00
Richard Stallman
4908e50870 (fold_rtx): Correct check for associating shifts and ending up with a shift count too large...
(fold_rtx): Correct check for associating shifts and
ending up with a shift count too large; convert to the
largest valid for ASHIFTRT and don't fold all others.

From-SVN: r4585
1993-05-28 22:40:33 +00:00
Richard Kenner
8e7e536500 (simplify_binary_operation, simplify_relational_operation): Check for
MODE_CC modes, not just CCmode.

From-SVN: r4352
1993-05-06 05:44:05 -04:00
Richard Stallman
2e794ee866 (record_jump_cond): Use mode of op0 or op1, not MODE,
when testing for narrowing or widening subregs.

From-SVN: r4301
1993-05-02 12:43:15 +00:00
Richard Stallman
709ab4fc49 (simplify_binary_operation): Reject CCmode in A & (~A) -> 0.
Also fix typos in previous change.

From-SVN: r4295
1993-05-01 16:55:51 +00:00
Richard Stallman
31dcf83f63 (cse_insn): Reset the INSN_CODE for conditional
or computed jumps which have been converted into simplejumps.

From-SVN: r4287
1993-04-30 16:04:40 +00:00
Richard Kenner
dbbe64450e (simplify_binary_operation, case SMAX): Cast to unsiged HOST_WIDE_INT
instead of unsigned int.

From-SVN: r4259
1993-04-28 14:56:43 -04:00
Richard Kenner
54b1de5550 (invalidate): Use proper type for in_table.
From-SVN: r4208
1993-04-24 11:39:59 -04:00
Richard Kenner
5a3d4befaf (simplify_binary_operation...
(simplify_binary_operation, case MULT): When testing for
floating-point equality, make sure we do so inside a region protected
from traps.

From-SVN: r3963
1993-03-31 15:57:24 -05:00
Richard Kenner
1ff0c00d9f (insert_regs): If a REG already is in a class but not in the mode we
want, don't do anything to the classes.

From-SVN: r3951
1993-03-31 07:00:31 -05:00
Richard Stallman
d3159aee6e (simplify_binary_operation): real_value_truncate returns REAL_VALUE_TYPE.
(simplify_binary_operation): real_value_truncate
returns REAL_VALUE_TYPE.
Convert rtx_code into tree_code for argument to REAL_ARITHMETIC.

(simplify_unary_operation): Use new ..._RNDZINT macros
instead of casting value of REAL_VALUE_FIX_TRUNCATE
and REAL_VALUE_UNSIGNED_FIX_TRUNCATE.

From-SVN: r3943
1993-03-31 05:53:29 +00:00
Richard Kenner
6d44728adf (CHEAP_REG): Add missing parens.
From-SVN: r3861
1993-03-23 20:16:17 -05:00
Jim Wilson
7fe34fdfe7 (cse_process_notes): Replace NULL_RTX with just zero.
From-SVN: r3795
1993-03-19 18:17:48 -08:00
Richard Kenner
fb5c8ce64a (simplify_plus_minus): Count CONSTs coming in and going out...
(simplify_plus_minus): Count CONSTs coming in and going out; we have
simplified things if we have more CONSTs going out even if we have the
same number of total terms.

From-SVN: r3787
1993-03-19 06:29:40 -05:00
Richard Kenner
e7bb59fa6c (FIXED_REGNO_P): Remove previous change; all callers but one already check.
(CHEAP_REG): Only call FIXED_REGNO_P for hard regs.
(fold_rtx): Clarify comments.

From-SVN: r3762
1993-03-16 17:41:57 -05:00
James Van Artsdalen
9798977501 (FIXED_REGNO_P): Pseudos can't be fixed regs.
From-SVN: r3757
1993-03-16 09:54:12 +00:00
Richard Kenner
b7d9299b30 (simplify_plus_minus): Remove last change.
(simplify_plus_minus): Remove last change.  Instead, count initial
operands and test against that count to see if we did anything.

From-SVN: r3748
1993-03-15 17:38:40 -05:00
Richard Kenner
7463703395 (simplify_plus_minus): Reject "simplifications" that are too complex
in form.

From-SVN: r3733
1993-03-14 09:37:43 -05:00
Richard Kenner
5931019b79 (simplify_plus_minus): Correct sign error in expanding NOT.
From-SVN: r3732
1993-03-14 06:32:20 -05:00
Richard Kenner
91a60f374f (simplify_plus_minus): When seeing if we have reduced the number of operands...
(simplify_plus_minus): When seeing if we have reduced the number of
operands, ensure we count a CONST result as two operands.

From-SVN: r3729
1993-03-13 20:45:44 -05:00
Richard Kenner
7b0d7bd0c9 (refers_to_mem_p): Use rtx_equal_p to see if bases are equal.
From-SVN: r3719
1993-03-12 17:43:28 -05:00
Richard Kenner
6500fb4361 (set_nonvarying_address_components): Fix type mismatch with caller.
(refers_to_mem_p): Call properly in second call.

From-SVN: r3718
1993-03-12 17:39:19 -05:00
Richard Kenner
ac07e0665d (CHEAP_REG): New macro; makes virtual regs cheap too.
(COST): Use CHEAP_REG.
(rtx_cost, case REG): Use CHEAP_REG to return zero for some REGs.

From-SVN: r3708
1993-03-11 19:02:37 -05:00
Jeff Law
f451db8990 cse.c (set_nonvarying_address_components): New function.
* cse.c (set_nonvarying_address_components): New function.
	(invalidate): Use set_nonvarying_address_components instead of
	computing them.
	(refers_to_mem_p): Likewise.  Simplify checks for conflicting
	memory accesses.  Make static.

From-SVN: r3703
1993-03-11 05:46:36 -07:00
Richard Kenner
96b0e48171 (cse_gen_binary, simplify_plus_minus): New functions.
(find_best_addr): Use cse_gen_binary.
(simplify_binary_operation, fold_rtx): Likewise.
Remove most special-cases for PLUS and MINUS and call
simplify_plus_minus instead.
Clean up some tests for FP.

From-SVN: r3680
1993-03-08 16:57:16 -05:00
Richard Kenner
6cd4575ea1 Add prototypes for static functions.
(struct cse_basic_block_data): Move to front of file since it constains
struct used in a prototype.
(refers_to_p, find_best_addr): Now static.

From-SVN: r3675
1993-03-08 07:24:14 -05:00
Richard Kenner
6076248a1e (simplify_binary_operation): Move integer CONST_DOUBLE folding out of REAL_IS_NOT_DOUBLE conditional.
(simplify_binary_operation): Move integer CONST_DOUBLE folding out of
REAL_IS_NOT_DOUBLE conditional.
(simplify_relational_operation): Put float CONST_DOUBLE folding under a
REAL_IS_NOT_DOUBLE conditional.
Add folding for integer CONST_DOUBLE comparisons.

From-SVN: r3661
1993-03-05 17:52:35 -05:00
Jim Wilson
2d08d5b656 (note_mem_written): QImode varying structure memory accesses can alias scalars.
From-SVN: r3654
1993-03-05 09:45:15 -08:00
Richard Kenner
02b8f30077 (simplify_relation_operation): We can compute the result of a comparison of...
(simplify_relation_operation): We can compute the result of a
comparison of CONST_INTs no matter what mode the computation is to be
done in.

From-SVN: r3372
1993-01-27 19:23:36 -05:00
Richard Kenner
721f13b342 (simplify_binary_operation, case SMAX): Correctly compute largest
possible signed integer.

From-SVN: r3360
1993-01-26 19:32:45 -05:00
Brendan Kehoe
a3b5c94a75 * cse.c (fold_rtx): Call itself with missing arg INSN as NULL_RTX.
From-SVN: r3214
1993-01-12 18:31:09 -05:00
Richard Kenner
164c8956a0 (max_uid): New variable.
(cse_end_of_basic_block): Use it to ignore insns made by CSE.
(cse_main): Set it.

From-SVN: r2846
1992-12-08 06:21:29 -05:00
Richard Kenner
7722328eef (cse_insn): Always pass result of canon_reg through validate_change
before using it in insn.

From-SVN: r2835
1992-12-04 19:17:47 -05:00
Richard Stallman
aee9dc31f9 (canon_reg): Don't call validate_change if INSN is zero.
From-SVN: r2511
1992-10-18 19:56:07 +00:00
Richard Kenner
6702af89af (cse_insn): Add missing call to apply_change_group.
From-SVN: r2481
1992-10-15 16:55:08 -04:00
Richard Stallman
2166571b8f (simplify_binary_operation): Insure that folded >> extends
the sign even if the host bootstrap compiler doesn't.

From-SVN: r2446
1992-10-14 01:20:21 +00:00
Richard Kenner
b8b88835df (PATHLENGH): Change from 20 to 10 to speed up compilations.
From-SVN: r2367
1992-10-08 04:44:02 -04:00
Richard Kenner
f12564b4c0 (simplify_unary_operation, case SIGN_EXTEND): Use HOST_BITS_PER_WIDE_INT,
not HOST_BITS_PER_INT.

From-SVN: r2219
1992-09-23 19:26:03 -04:00
Richard Stallman
13c9910fdd (find_comparison_args): New args PMODE1, PMODE2.
(fold_rtx, record_jump_equiv): Use them to get modes of comparison.
(fold_rtx): Associate MINUS with nested PLUS.

From-SVN: r2197
1992-09-21 03:51:25 +00:00
Richard Stallman
e8d76a395e (fold_rtx): For SUBREG, actually test subreg_lowpart_p in the code to handle narrowing subregs.
(fold_rtx): For SUBREG, actually test subreg_lowpart_p in the
code to handle narrowing subregs.  And exclude binary ops like DIV
where truncating the args is not valid.

From-SVN: r2160
1992-09-19 04:48:37 +00:00
Richard Stallman
21d12b804d (simplify_binary_operation): For DIV by 0, do nothing.
From-SVN: r2066
1992-09-07 05:32:35 +00:00
Richard Kenner
b2796a4bdd (find_comparison_args): Look for comparison operations if the second arg is 0 in any mode.
(find_comparison_args): Look for comparison operations if the second arg is
0 in any mode.
(record_jump_cond): Don't make classes equivalent for floating-point equality
comparison.

From-SVN: r1900
1992-08-19 18:19:34 -04:00
Richard Kenner
c7c955eebc (fold_rtx): Fix typo in two FLOAT_STORE_FLAG_VALUE tests.
From-SVN: r1837
1992-08-14 14:44:54 -04:00
Richard Kenner
f89e32e950 (simplify_unary_operation): Remove "else".
From-SVN: r1828
1992-08-14 07:41:11 -04:00
Torbjorn Granlund
858a47b165 Fix spelling errors in comments.
From-SVN: r1825
1992-08-14 11:33:04 +00:00
Richard Kenner
c4fd10e7e2 (canon_hash): Use HOST_WIDE_INT instead of int when casting pointers
to integers.

From-SVN: r1750
1992-08-02 21:38:38 -04:00
Richard Kenner
58c8c59349 entered into RCS
From-SVN: r1731
1992-07-31 08:13:38 -04:00
Richard Kenner
0dadecf681 *** empty log message ***
From-SVN: r1614
1992-07-17 05:57:24 -04:00
Richard Stallman
e7a522bae6 *** empty log message ***
From-SVN: r1560
1992-07-11 22:23:31 +00:00
Charles Hannum
82a5e8985c *** empty log message ***
From-SVN: r1477
1992-07-06 20:21:37 +00:00
Richard Kenner
906c4e36c6 *** empty log message ***
From-SVN: r1473
1992-07-06 16:04:13 -04:00
Richard Stallman
51b003476e *** empty log message ***
From-SVN: r1455
1992-07-06 00:23:00 +00:00
Richard Stallman
d80e9fd70c *** empty log message ***
From-SVN: r1432
1992-07-04 19:02:06 +00:00
Richard Kenner
4b980e20ad *** empty log message ***
From-SVN: r1318
1992-06-28 06:10:54 -04:00
Richard Kenner
e4600702d9 *** empty log message ***
From-SVN: r1313
1992-06-27 13:49:28 -04:00
Richard Kenner
42495ca044 *** empty log message ***
From-SVN: r1296
1992-06-26 07:06:07 -04:00
Richard Stallman
f72aed244a *** empty log message ***
From-SVN: r1263
1992-06-24 03:59:40 +00:00
Richard Stallman
5352b11a95 *** empty log message ***
From-SVN: r1232
1992-06-22 03:40:10 +00:00
Richard Kenner
77fa0940a0 *** empty log message ***
From-SVN: r1223
1992-06-20 06:51:46 -04:00
Richard Kenner
c610adec56 *** empty log message ***
From-SVN: r1219
1992-06-18 17:39:37 -04:00
Richard Stallman
e4890d4537 *** empty log message ***
From-SVN: r1162
1992-06-04 22:27:23 +00:00
Richard Stallman
6a5293dc3b *** empty log message ***
From-SVN: r1141
1992-06-02 21:28:08 +00:00
Richard Kenner
05c33dd84f *** empty log message ***
From-SVN: r1120
1992-05-29 06:44:10 -04:00
Richard Kenner
178c39f68b *** empty log message ***
From-SVN: r1087
1992-05-25 21:33:51 -04:00
Richard Kenner
c2a47e48d5 *** empty log message ***
From-SVN: r1045
1992-05-22 06:33:37 -04:00
Richard Stallman
a6acbe157b *** empty log message ***
From-SVN: r999
1992-05-17 07:07:44 +00:00
Richard Stallman
830a38eec6 *** empty log message ***
From-SVN: r947
1992-05-09 18:45:46 +00:00
Jim Wilson
6f90e075cd *** empty log message ***
From-SVN: r905
1992-05-05 10:27:49 -07:00
Richard Kenner
21648b45ae *** empty log message ***
From-SVN: r823
1992-04-23 07:17:07 -04:00
Richard Kenner
e5f6a288fb *** empty log message ***
From-SVN: r790
1992-04-18 22:12:25 -04:00
Richard Kenner
fc3ffe8309 *** empty log message ***
From-SVN: r754
1992-04-16 22:05:56 -04:00
Richard Kenner
8b3686ed86 *** empty log message ***
From-SVN: r688
1992-04-05 12:34:53 -04:00
Richard Stallman
538b78e7ec *** empty log message ***
From-SVN: r584
1992-03-24 22:20:30 +00:00
Richard Stallman
d45cf215ee *** empty log message ***
From-SVN: r472
1992-03-14 05:07:15 +00:00
Richard Kenner
7afe21cc91 Initial revision
From-SVN: r360
1992-02-27 07:50:43 -05:00