Commit Graph

600 Commits

Author SHA1 Message Date
Kazu Hirata
cba9e10abb emit-rtl.c (reverse_comparison): Remove.
* emit-rtl.c (reverse_comparison): Remove.
	* rtl.h: Remove the corresponding prototype.

From-SVN: r97032
2005-03-25 02:23:57 +00:00
Paolo Bonzini
14f02e7315 combine.c (combine_simplify_rtx, [...]): Adjust calls to reverse_comparison.
2005-03-21  Paolo Bonzini  <bonzini@gnu.org>

	* combine.c (combine_simplify_rtx, simplify_if_then_else,
	simplify_logical, if_then_else_cond, known_cond,
	simplify_comparison): Adjust calls to reverse_comparison.
	Don't use combine_reversed_comparison_code).
	(combine_reversed_comparison_code): Remove.
	(reversed_comparison): Using reversed_comparison_code, move it...
	* jump.c (reversed_comparison): ... here.
	* rtl.h (reversed_comparison): Add prototype.

From-SVN: r96801
2005-03-21 14:38:01 +00:00
Paolo Bonzini
9ce921aba8 rtl.h (struct rtx_hooks): Add gen_lowpart_no_emit.
2005-03-21  Paolo Bonzini  <bonzini@gnu.org>

	* rtl.h (struct rtx_hooks): Add gen_lowpart_no_emit.
	* rtlhooks.c (gen_lowpart_no_emit_general): New.
	* rtlhooks-def.h (gen_lowpart_no_emit_general): Declare.
	(RTL_HOOKS_GEN_LOWPART_NO_EMIT): New.
	* simplify-rtx.c (simplify_binary_operation_1): Use it.

From-SVN: r96799
2005-03-21 14:30:51 +00:00
Richard Sandiford
7445392c29 * rtl.h (copy_rtx_ptr_loc, print_rtx_ptr_loc, join_c_conditions)
(print_c_condition): Declare.
	* read-rtl.c (ptr_loc): New structure.
	(ptr_locs, ptr_loc_obstack, joined_conditions)
	(joined_conditions_obstack): New variables.
	(leading_ptr_hash, leading_ptr_eq_p, set_rtx_ptr_loc)
	(get_rtx_ptr_loc, copy_rtx_ptr_loc, print_rtx_ptr_loc)
	(join_c_conditions, print_c_condition): New functions.
	(apply_macro_to_string): Associate the new string with the same
	source location as the old one.
	(add_condition_to_string): Use join_c_conditions.
	(read_string): Use set_rtx_ptr_loc to record a filename and line
	number for the string.
	(read_rtx): Initialize the new variables above.
	* genattrtab.c (write_test_expr, write_attr_value): Use
	print_c_condition.
	* genconditions.c (write_header): Don't define MAYBE_EVAL.  Move its
	comment above the GCC_VERSION check.
	(write_one_condition): Use print_rtx_ptr_loc and print_c_condition.
	Inline the definition of MAYBE_EVAL.
	* genemit.c (gen_expand, gen_split): Use print_rtx_ptr_loc.
	* genoutput.c (process_template): Likewise.
	* genpreds.c (write_predicate_subfunction): Likewise.
	(write_predicate_expr): Use print_c_condition.
	* genrecog.c (write_cond): Likewise.
	* gensupport.c (process_rtx): Use join_c_conditions to join the
	conditions of a define_insn_and_split.  Record a source location
	for the string after the "&&".
	(alter_test_for_insn): Use join_c_conditions.

From-SVN: r95883
2005-03-04 11:10:35 +00:00
J"orn Rennecke
0a63483247 recog.c (verify_changes, [...]): New functions, broken out of apply_change_group.
* recog.c (verify_changes, confirm_change_group): New functions,
	broken out of apply_change_group.
	(apply_change_group): Use them.
	* recog.h (verify_change, confirm_change_group): Declare.
	* rtl.h (redirect_jump_2): Declare.
	* jump.c (redirect_exp, invert_exp): Delete.
	(invert_exp_1): Take second parameter.  Return value.  Changed caller.
	(redirect_jump_2): New function, broken out of redirect_jump.
	(redirect_jump): Use redirect_jump_1 and redirect_jump_2.
	(invert_jump): Use invert_jump_1 and redirect_jump_2.
	* ifcvt.c (dead_or_predicable): Use redirect_jump_2.

From-SVN: r95813
2005-03-02 22:02:32 +00:00
Kazu Hirata
321cf1f25e calls.c (emit_call_1): Don't use REG_ALWAYS_RETURN.
* calls.c (emit_call_1): Don't use  REG_ALWAYS_RETURN.
	(emit_library_call_value_1): Don't use LCT_ALWAYS_RETURN and
	REG_ALWAYS_RETURN.
	* cfgrtl.c (need_fake_edge_p): Likewise.
	* combine.c (distribute_notes): Likewise.
	* emit-rtl.c (try_split): Likewise.
	* recog.c (peephole2_opimize): Likewise.
	* reg-notes.def (ALWAYS_RETURN): Remove.
	* rtl.h (LCT_ALWAYS_RETURN): Remove.
	* tree-cfg.c (need_fake_edge_p): Don't use ECF_ALWAYS_RETURN.
	* tree.h (ECF_ALWAYS_RETURN): Remove.

From-SVN: r95690
2005-02-28 18:18:26 +00:00
Paolo Bonzini
0a67e02c3a simplify-rtx.c (simplify_unary_operation_1, [...]): New, extracted from...
2005-02-28 Paolo Bonzini <bonzini@gnu.org>

	* simplify-rtx.c (simplify_unary_operation_1,
	simplify_const_unary_operation): New, extracted from...
	(simplify_unary_operation): ... this one.
	(simplify_binary_operation_1,
	simplify_const_binary_operation): New, extracted from...
	(simplify_binary_operation): ... this one.
	* rtl.h (simplify_const_unary_operation,
	simplify_const_binary_operation): Add prototypes.

From-SVN: r95686
2005-02-28 15:29:43 +00:00
Kazu Hirata
e22857eb9d flow.c (recompute_reg_usage): Remove all arguments.
* flow.c (recompute_reg_usage): Remove all arguments.
	* passes.c (rest_of_compilation): Adjust the call to
	recompute_reg_usage.
	* rtl.h: Adjust the prototype for recompute_reg_usage.

From-SVN: r95058
2005-02-15 07:19:51 +00:00
Paolo Bonzini
cf94b0fccc rtlanal.c (non_rtx_starting_operands, [...]): New.
2005-01-24  Paolo Bonzini  <bonzini@gnu.org>

	* rtlanal.c (non_rtx_starting_operands, for_each_rtx_1,
	init_rtlanal): New.
	(for_each_rtx): Call for_each_rtx_1.
	* rtl.h (init_rtlanal): Declare.
	* toplev.c (backend_init): Call init_rtlanal.

From-SVN: r94146
2005-01-24 08:55:47 +00:00
Roger Sayle
0d28269256 expmed.c (expand_mult_highpart): Make static.
* expmed.c (expand_mult_highpart): Make static.  Change type of
	constant multiplier argument from unsigned HOST_WIDE_INT to rtx.
	(expand_divmod): Updates calls to expand_mult_highpart by using
	gen_int_mode to pass a CONST_INT rtx.
	* rtl.h (expand_mult_highpart): Remove prototype.

From-SVN: r94139
2005-01-24 02:28:15 +00:00
Richard Henderson
f4770271b2 rtl.def (CONST_VECTOR): Use RTX_CONST_OBJ.
* rtl.def (CONST_VECTOR): Use RTX_CONST_OBJ.
        * rtl.h (CONSTANT_P): Don't special case CONST_VECTOR.

From-SVN: r93958
2005-01-20 03:03:23 -08:00
Paolo Bonzini
c80a0f261b bb-reorder.c (fix_edges_for_rarely_executed_code): Remove last parameter to reg_scan.
2005-01-15  Paolo Bonzini <bonzini@gnu.org>

	* bb-reorder.c (fix_edges_for_rarely_executed_code): Remove
	last parameter to reg_scan.
	* loop.c (loop_optimize): Likewise.
	* passes.c (rest_of_handle_tracer, rest_of_handle_if_conversion,
	rest_of_handle_web, rest_of_handle_cfg, rest_of_handle_jump_bypass,
	rest_of_handle_life, rest_of_handle_cse, rest_of_handle_cse2,
	rest_of_handle_gcse, rest_of_handle_loop_optimize,
	rest_of_handle_loop2, rest_of_handle_jump2): Likewise.
	* regclass.c (reg_scan): Likewise, for the declaration.
	* rtl.h (reg_scan): Likewise, for the prototype.

From-SVN: r93758
2005-01-17 08:46:19 +00:00
Kazu Hirata
6a29dc8b1b rtlanal.c (regs_set_between_p): Remove.
* rtlanal.c (regs_set_between_p): Remove.
	* rtl.h: Remove the corresponding prototype.

From-SVN: r93685
2005-01-15 04:14:10 +00:00
Kazu Hirata
103a83e0fa c-tree.h, [...]: Remove unused prototypes.
* c-tree.h, coverage.h, langhooks-def.h, optabs.h, output.h,
	rtl.h, targhooks.h, tree-flow.h, tree-mudflap.h, tree.h:
	Remove unused prototypes.

From-SVN: r93651
2005-01-14 17:53:28 +00:00
Richard Henderson
1466e38701 re PR rtl-optimization/15289 (reload error with non-lowpart subregs)
PR rtl-opt/15289
        * emit-rtl.c (gen_complex_constant_part): Remove.
        (gen_realpart, gen_imagpart): Remove.
        * rtl.h (gen_realpart, gen_imagpart): Remove.
        * expmed.c (extract_bit_field): Remove CONCAT hack catering to
        gen_realpart/gen_imagpart.
        * expr.c (write_complex_part, read_complex_part): New.
        (emit_move_via_alt_mode, emit_move_via_integer, emit_move_resolve_push,
        emit_move_complex_push, emit_move_complex, emit_move_ccmode,
        emit_move_multi_word): Split out from ...
        (emit_move_insn_1): ... here.
        (expand_expr_real_1) <COMPLEX_EXPR>: Use write_complex_part.
        <REALPART_EXPR, IMAGPART_EXPR>: Use read_complex_part.
        * function.c (assign_parm_setup_reg): Hard-code transformations
        instead of using gen_realpart/gen_imagpart.

From-SVN: r91571
2004-12-01 10:13:31 -08:00
Richard Henderson
beb7268481 rtl.h (validate_subreg): Declare.
* rtl.h (validate_subreg): Declare.
        * emit-rtl.c (validate_subreg): New.
        (gen_rtx_SUBREG): Use it.
        * simplify-rtx.c (simplify_subreg): Likewise.
        (simplify_gen_subreg): Likewise.  Remove duplicate asserts.
        * expr.c (emit_move_insn_1): Tidy complex move code.  Use memory
        fallback whenever gen_realpart/gen_imagpart would not be able to
        create SUBREGs.

From-SVN: r91126
2004-11-23 16:09:03 -08:00
Richard Henderson
6f9e35784d emit-rtl.c, rtl.h (subreg_hard_regno): Remove.
* emit-rtl.c, rtl.h (subreg_hard_regno): Remove.
        * caller-save.c (mark_set_regs): Use subreg_regno instead.
        * final.c (alter_subreg): Likewise.
        * local-alloc.c (reg_is_born): Likewise.

From-SVN: r91115
2004-11-23 15:10:18 -08:00
Kazu Hirata
d78db45956 emit-rtl.c (classify_insn): Make it static.
* emit-rtl.c (classify_insn): Make it static.
	* rtl.h: Remove the corresponding prototype.

From-SVN: r90894
2004-11-19 02:55:34 +00:00
Kazu Hirata
ac141aead6 basic-block.h, [...]: Remove unused prototypes.
* basic-block.h, c-common.h, df.h, expr.h, output.h, rtl.h,
	tree-chrec.h, tree-flow.h, tree-scalar-evolution.h,
	tree-ssa-live.h, tree.h: Remove unused prototypes.

From-SVN: r90821
2004-11-17 22:06:00 +00:00
Kazu Hirata
c1dc94c40a c-common.c (walk_stmt_tree): Remove.
* c-common.c (walk_stmt_tree): Remove.
	* c-common.h: Remove the corresponding prototype.

From-SVN: r90619
2004-11-14 12:55:15 +00:00
Steven Bosscher
d67fb775b3 cse.c (CHEAP_REGNO): Redefine using REGNO_PTR_FRAME_P and HARD_REGISTER_NUM_P.
* cse.c (CHEAP_REGNO): Redefine using REGNO_PTR_FRAME_P and
	HARD_REGISTER_NUM_P.

	* cselib.c (new_cselib_val): Make comment correct and more detailed.
	* flow.c (mark_set_1): Likewise.

	* except.c (duplicate_eh_region_1, duplicate_eh_region_2,
	duplicate_eh_regions): Remove.
	* except.h (duplicate_eh_regions): Remove prototype.
	* integrate.c (get_label_from_map, copy_rtx_and_substitute,
	global_const_equiv_varray): Remove.
	* integrate.h (get_label_from_map, copy_rtx_and_substitute,
	global_const_equiv_varray, set_label_in_map): Remove prototypes,
	extern declaration, and #define.
	(MAYBE_EXTEND_CONST_EQUIV_VARRAY, SET_CONST_EQUIV_DATA): Remove.
	(struct inline_remap): Remove.
	* varray.c (struct element): Remove entry for const_equiv_data.
	* varray.h (struct const_equiv_data): Remove.
	(enum varray_data_enum) <VARRAY_DATA_CONST_EQUIV>: Remove.
	(union varray_data_tag) <const_equiv>: Remove.
	(VARRAY_CONST_EQUIV_INIT, VARRAY_CONST_EQUIV,
	VARRAY_PUSH_CONST_EQUIV, VARRAY_TOP_CONST_EQUIV): Remove.

	* regstack.c (record_label_references): Remove unused function.

	* rtl.def (VALUE): Update comment.
	(LABEL_REF): Remove unused operand 2.
	* rtl.h (struct rtx_def): Update for removed accessor macros.
	(XCADVFLAGS, INSN_DEAD_CODE_P, LINE_NUMBER, CONTAINING_INSN,
	REG_LOOP_TEST_P): Remove.
	(ADDR_DIFF_VEC_FLAGS, CSELIB_VAL_PTR, LABEL_NEXTREF): Add comments.
	* web.c (entry_register): Don't copy REG_LOOP_TEST_P.
	* doc/rtl.texi (INSN_DEAD_CODE_P, REG_LOOP_TEST_P): Remove.

From-SVN: r90580
2004-11-13 14:18:04 +00:00
Kazu Hirata
a5d3e50dcd cfglayout.c (choose_inner_scope): Make it static.
* cfglayout.c (choose_inner_scope): Make it static.
	* rtl.h: Remove the corresponding prototype.

From-SVN: r90502
2004-11-11 23:10:10 +00:00
Kazu Hirata
04e2b4d390 alias.c (record_alias_subset, [...]): Make them static.
* alias.c (record_alias_subset, addr_side_effect_eval):
	Make them static.
	* alias.h: Remove the prototype for record_alias_subset.
	* expr.h: Remove the commented-out prototype for
	record_alias_subset.
	* rtl.h: Remove the prototype for addr_side_effect_eval.

From-SVN: r90501
2004-11-11 23:08:56 +00:00
Kazu Hirata
3f5d8b4b19 emit-rtl.c (copy_most_rtx): Remove.
* emit-rtl.c (copy_most_rtx): Remove.
	* rtl.h: Remove the corresponding prototype.

From-SVN: r90356
2004-11-09 17:46:06 +00:00
Kazu Hirata
f014fc4707 jump.c (cleanup_barriers): Use delete_insn instead of delete_barrier.
* jump.c (cleanup_barriers): Use delete_insn instead of
	delete_barrier.
	(delete_barrier): Remove.
	* rtl.h: Remove the corresponding prototype.

From-SVN: r90090
2004-11-04 23:24:46 +00:00
Steven Bosscher
75473b0257 cfgloop.h (struct loop): Update comment.
* cfgloop.h (struct loop): Update comment.
	* cse.c (cse_main): Remove obsolete comment.

	* expr.h (gen_cond_trap): Move prototype under functions provided
	by optabs.c.
	(canonicalize_condition, get_condition): Move to...
	* rtl.h (canonicalize_condition, get_condition): ...here.
	(branch_target_load_optimize): Add comment that this function is
	in bt-load.c.
	* loop.c (canonicalize_condition, get_condition): Move to...
	* rtlanal.c (canonicalize_condition, get_condition): ...here.
	* sched-deps.c (get_condition): Rename to sched_get_condition.
	(add_dependence): Update this caller.

From-SVN: r89995
2004-11-02 17:59:46 +00:00
Kazu Hirata
4fe8591b52 varasm.c (get_pool_mode_for_function, [...]): Remove.
* varasm.c (get_pool_mode_for_function, get_pool_offset):
	Remove.
	* rtl.h: Remove the corresponding prototypes.

From-SVN: r89465
2004-10-22 18:48:15 +00:00
Pat Haugen
b757b9f8b2 simplify-rtx.c (mode_signbit_p): Externalize function...
2004-10-18  Pat Haugen  <pthaugen@us.ibm.com>

        * simplify-rtx.c (mode_signbit_p): Externalize function...
        * rtl.h (mode_signbit_p): ... to here.
        * combine.c (simplify_shift_const): Recognize PLUS signbit as
        canonical form of XOR signbit and move to outer op.

From-SVN: r89235
2004-10-18 14:46:06 -04:00
Kazu Hirata
9b1f72c413 basic-block.h: Remove the prototypes for can_hoist_insn_p...
* basic-block.h: Remove the prototypes for can_hoist_insn_p,
	hoist_insn_after, and hoist_insn_to_edge.
	* rtl.h: Remove the prototypes for reg_referenced_between_p,
	no_jumps_between_p, and insn_dependent_p.
	* rtlanal.c (no_jumps_between_p, reg_referenced_between_p,
	insn_dependent_p, insn_dependent_p_1, hoist_test_store,
	can_hoist_insn_p, hoist_update_store, hoist_insn_after,
	hoist_insn_to_edge): Remove.

From-SVN: r88860
2004-10-10 22:06:04 +00:00
Kazu Hirata
971e29f612 emit-rtl.c (last_label_num, [...]): Remove.
* emit-rtl.c (last_label_num, base_label_num): Remove.
	(max_label_num): Always return label_num.
	(set_new_last_label_num, restore_emit_status): Remove.
	(init_emit): Don't initialize last_label_num.
	* function.c (pop_function_context_from): Don't call
	restore_emit_status.
	* function.h: Remove the prototype for restore_emit_status.
	* rtl.h: Remove the prototype for set_new_last_label_num.

From-SVN: r88789
2004-10-08 19:59:26 +00:00
Zdenek Dvorak
a82bbcbbbe re PR rtl-optimization/17791 (doloop can produce wrong code causes Ada bootstrap failure)
PR rtl-optimization/17791
	* loop-doloop.c (doloop_modify): Take number of iterations as
	argument.
	(doloop_optimize): Extend or shorten the number of iterations
	when changing mode of counter register.
	* loop-iv.c (lowpart_subreg): Export.
	* rtl.h (lowpart_subreg): Declare.

From-SVN: r88668
2004-10-07 06:20:34 +00:00
Kazu Hirata
7922a3bb6b basic-block.h: Remove the prototype for flow_preorder_transversal_compute.
* basic-block.h: Remove the prototype for
	flow_preorder_transversal_compute.
	* cfganal.c (dfst_node): Remove.
	(flow_preorder_transversal_compute): Likewise.
	* rtl.h: Remove the prototype for get_jump_table_offset.
	* rtlanal.c (get_jump_table_offset): Remove.

From-SVN: r88580
2004-10-05 22:55:59 +00:00
Jan Hubicka
a710247903 re PR debug/13974 (bad line marker in debug info)
PR debug/13974
	* cfgrtl.c (try_redirect_by_replacing_jump,
	force_nonfallthru_and_redirect, commit_one_edge_insertion,
	cfg_layout_merge_blocks):  Do not attach any line number information
	to newly inserted instructions.
	* emit-rtl.c (emit_insn*_before, emit_insn*_after): Rename to
	emit_insn_*_noloc.
	(emit_*insn_before, emit_insn*_after): New.
	(emit_*insn_before_setloc, emit_*insn_after_setloc): Do not overwrite
	existing locators.
	* rtl.h (emit_*insn_before_noloc, emit_*insn_after_noloc): Declare.
	(emit_*insn_before_sameloc, emit_*insn_after_sameloc): Kill.

From-SVN: r88358
2004-09-30 21:25:52 +00:00
Richard Henderson
41bf2a8b17 re PR middle-end/17503 (quadratic behaviour in invalid_mode_change_p)
PR rtl-opt/17503
        * regclass.c (subregs_of_mode): Turn into an htab.  Make static.
        (som_hash, som_eq): New.
        (init_subregs_of_mode, record_subregs_of_mode): New.
        (cannot_change_mode_set_regs): Rewrite for htab implementation.
        (invalid_mode_change_p): Likewise.
        * combine.c (gen_lowpart_for_combine): Use record_subregs_of_mode.
        * flow.c (mark_used_regs): Likewise.
        (life_analysis): Use init_subregs_of_mode.
        * regs.h (subregs_of_mode): Remove.
        * rtl.h (init_subregs_of_mode, record_subregs_of_mode): Declare.

From-SVN: r88067
2004-09-24 12:47:05 -07:00
Zdenek Dvorak
c94583fe55 unroll.c: Removed.
* unroll.c: Removed.
	* loop.h: Removed.
	* Makefile.in (LOOP_H, unroll.o): Removed.
	(toplev.o, passes.o, stmt.o, integrate.o, loop.o): Remove LOOP_H
	dependency.
	* alias.c (init_alias_analysis): Remove flag_old_unroll_loops
	reference.
	* cfgloop.h (LOOP_PREFETCH, loop_optimize): Moved from loop.h.
	* common.opt (fold-unroll-loops, fold-unroll-all-loops): Removed.
	* loop.c: Do not include loop.h.
	(LOOP_INFO, LOOP_MOVABLES, LOOP_REGS, LOOP_IVS, INSN_LUID,
	REGNO_FIRST_LUID, REGNO_LAST_LUID, enum g_types, struct induction,
	struct iv_class, enum iv_mode, struct iv, REG_IV_TYPE, REG_IV_INFO,
	REG_IV_CLASS, struct loop_ivs, struct loop_mem_info, struct loop_reg,
	struct loop_regs, struct loop_movables, struct loop_info): Moved
	from loop.h.
	(back_branch_in_range_p, fold_rtx_mult_add, biv_total_increment,
	reg_dead_after_loop, final_biv_value, loop_find_equiv_value,
	find_common_reg_term, loop_iterations, final_giv_value): Moved
	from unroll.c.
	(uid_luid, uid_loop, max_uid_for_loop, max_reg_before_loop,
	loop_dump_stream, for_each_insn_in_loop, express_from,
	extend_value_for_giv, loop_iv_add_mult_emit_before,
	loop_iv_add_mult_sink, loop_iv_add_mult_hoist,
	loop_insn_first_p, get_condition_for_loop,
	loop_insn_emit_before, loop_insn_hoist,
	loop_insn_sink): Made static.
	(loop_invariant_p): Made static.  Removed flag_old_unroll_loops
	reference.
	(strength_reduce): Do not call unroller.
	(record_giv): Do not initialize unrolled field.
	(prescan_loop): Do not set loop_info->preconditioned.
	* passes.c: Do not include loop.h.
	(rest_of_handle_loop_optimize): Do not call unroller.
	* predict.c: Do not include loop.h.
	* rtl.h (NOTE_PRECONDITIONED): Removed.
	* stmt.c: Do not include loop.h.
	* toplev.c: Do not include loop.h.
	(process_options): Do not handle flag_old_unroll_loops.

	* doc/invoke.texi (fold-unroll-loops, fold-unroll-all-loops):
	Documentation removed.
	* doc/passes.texi (unroll.c, loop.h): Documentation removed.

From-SVN: r87485
2004-09-14 07:43:08 +00:00
Richard Sandiford
57406c63cd rtl.h (read_rtx): Change prototype.
* rtl.h (read_rtx): Change prototype.
	* read-rtl.c (read_rtx): Provide the caller with both an rtx and a
	line number.  Return true on success.
	* gensupport.c (process_include, init_md_reader_args_cb): Adjust
	callers accordingly.

From-SVN: r86657
2004-08-27 10:12:51 +00:00
Steven Bosscher
5affca016a cse.c (cse_around_loop, [...]): Remove.
* cse.c (cse_around_loop, cse_check_loop_start,
	cse_set_around_loop): Remove.
	(cse_basic_block): Remove the around_loop argument.
	(cse_end_of_basic_block): Remove the after_loop argument.
	(cse_main): Likewise.
	* rtl.h (cse_main): Update prototype.
	* passes.c (rest_of_handle_cse, rest_of_handle_cse2,
	rest_of_handle_gcse): Update cse_main calls.

From-SVN: r86546
2004-08-25 12:31:01 +00:00
Nathan Sidwell
b3d1f5b404 Makefile.in (BUILD_ERRORS): Set to build-errors.
* Makefile.in (BUILD_ERRORS): Set to build-errors.
	(errors.o): New target for host.
	(build-errors.o): New target for build.
	(genobjs): Replace errors.o with build-errors.
	(gengenrtl$(buildexeext)): Add $(BUILD_ERRORS).
	(GCOV_OBJS, GCOV_DUMP_OBJS): Add errors.o.
	(fix-headers$(build_exeext)): Add $(BUILD_ERRORS).
	(fix-header.o): Add errors.h
	* collect2.c (fancy_abort): Add parameters.
	* collect2.h (fancy_abort): Don't declare.
	* errors.h (fancy_abort): Don't declare.
	* errors.c: Include either bconfig.h or config.h.
	(fancy_abort): Trim filename.
	* fix-header.c (v_fatal, fatal): Remove.
	(progname): Remove definition.
	(main): Set progname here.
	* gcc.c (fancy_abort): Add parameters.
	* gcc.h (fancy_abort): Remove declaration.
	* gcov.c (fancy_abort): Remove.
	* rtl.h (fancy_abort): Don't declare.
	(abort): Don't define.
	* tree.h (fancy_abort): Don't declare.
	(abort): Don't define.
	* system.h (fancy_abort): Declare.
	(abort): Define to fancy_abort.
	* fixinc/Makefile.in (ALLOBJ): Add ../build-errors.o
	* java/jv-scan.c (fancy_abort): Add.

From-SVN: r86424
2004-08-23 11:57:02 +00:00
Zack Weinberg
826c956468 insn-notes.def, [...]: New files.
* insn-notes.def, reg-notes.def: New files.
	* rtl.h: Use them to define enum insn_note and enum reg_note.
	* rtl.c: Use them to define note_insn_name and reg_note_name.

	* modulo-sched.c, sched-rgn.c, final.c: NOTE_DISABLE_SCHED_OF_BLOCK
	renamed to NOTE_INSN_DISABLE_SCHED_OF_BLOCK.

From-SVN: r86212
2004-08-18 22:31:03 +00:00
Richard Henderson
542a8afa8a emit-rtl.c (gen_const_mem): New.
* emit-rtl.c (gen_const_mem): New.
        * rtl.h (gen_const_mem): Declare.
        * expr.c (do_tablejump): Use it.
        * varasm.c (force_const_mem): Likewise.
        * config/darwin.c (machopic_indirect_data_reference): Likewise.
        (machopic_legitimize_pic_address): Likewise.
        * config/arm/arm.c (legitimize_pic_address): Likewise.
        * config/i386/i386.c (legitimize_pic_address): Likewise.
        (legitimize_tls_address): Likewise.
        * config/ia64/ia64.c (ia64_expand_tls_address): Likewise.
        * config/ia64/ia64.md (load_fptr): Likewise.
        * config/m32r/m32r.c (m32r_legitimize_pic_address): Likewise.
        * config/pa/pa.c (legitimize_pic_address): Likewise.
        * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Likewise.
        (rs6000_emit_move): Likewise.
        * config/s390/s390.c (legitimize_pic_address): Likewise.
        (legitimize_tls_address): Likewise.
        * config/s390/s390.md (casesi): Likewise.
        * config/sh/sh.c (sh_reorg): Likewise.
        * config/sparc/sparc.c (legitimize_pic_address): Likewise.
        * config/v850/v850.md (casesi): Likewise.

        * config/darwin.c (machopic_indirect_call_target): Set MEM_NOTRAP_P.
        * config/sh/sh.c (prepare_move_operands): Remove incorrect
        use of MEM_READONLY_P.

From-SVN: r86207
2004-08-18 14:08:35 -07:00
Steven Bosscher
0516f6fe82 Makefile.in (OBJS-common): Add postreload-gcse.c.
* Makefile.in (OBJS-common): Add postreload-gcse.c.
	Add new postreload-gcse.o.
	* cse.c (SAFE_HASH): Define as wrapper around safe_hash.
	(lookup_as_function, insert, rehash_using_reg, use_related_value,
	equiv_constant): Use SAFE_HASH instead of safe_hash.
	(exp_equiv_p): Export.  Add for_gcse argument when comparing
	for GCSE.
	(lookup, lookup_for_remove, merge_equiv_classes, find_best_addr,
	find_comparison_args, fold_rtx, cse_insn): Update callers.
	(hash_rtx): New function derived from old canon_hash and bits
	from gcse.c hash_expr_1.
	(canon_hash_string): Rename to hash_rtx_string.
	(canon_hash, safe_hash): Make static inline.  Call hash_rtx.
	* cselib.c (hash_rtx): Rename to cselib_hash_rtx.
	(cselib_lookup): Update this caller.
	* gcse.c (modify_mem_list_set, canon_modify_mem_list_set):
	Make static.
	(hash_expr): Call hash_rtx.
	(ldst_entry): Likewise.
	(expr_equiv_p): Call exp_equiv_p.
	(struct unoccr, hash_expr_1, hash_string_1, lookup_expr,
	reg_used_on_edge, reg_set_between_after_reload_p,
	reg_used_between_after_reload_p, get_avail_load_store_reg,
	is_jump_table_basic_block, bb_has_well_behaved_predecessors,
	get_bb_avail_insn, hash_scan_set_after_reload,
	compute_hash_table_after_reload,
	eliminate_partially_redundant_loads, gcse_after_reload,
	get_bb_avail_insn, gcse_after_reload_main): Remove.
	* postreload-gcse.c: New file, reincarnating most of the above.
	* rtl.h (exp_equiv_p, hash_rtx): New prototypes.
	(gcse_after_reload_main): Update prototype.
	* timevar.def (TV_GCSE_AFTER_RELOAD): New timevar.
	* passes.c (rest_of_handle_gcse2): Use it.

From-SVN: r86206
2004-08-18 20:53:59 +00:00
Richard Henderson
389fdba06a rtl.h (MEM_READONLY_P): Replace RTX_UNCHANGING_P.
* rtl.h (MEM_READONLY_P): Replace RTX_UNCHANGING_P.
	* alias.c (true_dependence): Update to match new semantics.
	(canon_true_dependence, write_dependence_p): Likewise.
	(anti_dependence, output_dependence): Update write_dependence_p args.
	(unchanging_anti_dependence): Remove.
	* calls.c (purge_mem_unchanging_flag): Remove.
	(fixup_tail_calls): Don't call it.
	(expand_call): Don't add unchanging memory to function usage.
	* expr.c (emit_block_move_via_libcall): Likewise.
	(clear_storage_via_libcall): Don't clobber RTX_UNCHANGING_P mems.
	(get_subtarget): Don't use RTX_UNCHANGING_P.
	(expand_assignment, store_constructor, expand_expr_real_1): Likewise.
	(do_tablejump): Set MEM_READONLY_P, not RTX_UNCHANGING_P.
	* combine.c (get_last_value_validate): Use MEM_READONLY_P.
	* cse.c (insert): Don't use RTX_UNCHANGING_P.
	(cse_insn, canon_hash): Use MEM_READONLY_P.
	* emit-rtl.c (set_mem_attributes_minus_bitpos): Use MEM_READONLY_P
	instead of RTX_UNCHANGING_P.
	* explow.c (maybe_set_unchanging): Remove.
	* expr.h (maybe_set_unchanging): Remove.
	* flow.c (insn_dead_p, mark_used_regs): Use anti_dependence.
	* function.c (assign_stack_temp_for_type): Don't use RTX_UNCHANGING_P.
	(assign_parm_setup_reg, expand_function_start): Likewise.
	* integrate.c (copy_rtx_and_substitute): Likewise.
	* ra-rewrite.c (emit_colors): Likewise.
	* regmove.c (copy_src_to_dest, regmove_optimize): Likewise.
	(fixup_match_1): Likewise.
	* reload1.c (reload, alter_reg): Likewise.
	* local-alloc.c (validate_equiv_mem): Check MEM_READONLY_P,
	not RTX_UNCHANGING_P.
	(equiv_init_varies_p): Likewise.
	* loop-invariant.c (check_maybe_invariant): Likewise.
	* resource.c (mark_referenced_resources, mark_set_resources): Likewise.
	* loop.c (note_addr_stored): Likewise.
	(prescan_loop): Likewise. Don't check function usage for clobbered
	unchanging memory.
	* rtlanal.c (rtx_unstable_p): Check MEM_READONLY_P,
        not RTX_UNCHANGING_P.
	(rtx_varies_p, modified_between_p, modified_in_p): Likewise.
	* varasm.c (force_const_mem): Likewise.
	* stmt.c (expand_decl): Don't set RTX_UNCHANGING_P.
	* web.c (entry_register): Likewise.
	* tree-gimple.h (get_base_address): Move decl ...
	* tree.h: ... here.
	* doc/rtl.texi (MEM_READONLY_P): Replace RTX_UNCHANGING_P.

	* config/alpha/alpha.c (alpha_set_memflags_1): Rewrite to be
	called via for_each_rtx.  Copy MEM_SCALAR_P, MEM_NOTRAP_P too.
	(alpha_set_memflags): Update to match.

	* config/darwin.c (machopic_indirect_data_reference): Set
	MEM_READONLY_P instead of RTX_UNCHANGING_P.
	(machopic_indirect_call_target): Likewise.
	(machopic_legitimize_pic_address): Likewise.
	* config/arm/arm.c (legitimize_pic_address, arm_gen_load_multiple,
	arm_gen_store_multiple, arm_gen_movmemqi): Likewise.
	* config/arm/arm.md (load_multiple, store_multiple): Likewise.
	* config/frv/frv.md (symGOT2reg): Likewise.
	* config/i386/i386.c (legitimize_pic_address,
	legitimize_tls_address, ix86_split_to_parts): Likewise.
	* config/ia64/ia64.c (ia64_expand_tls_address): Likewise.
	* config/ia64/ia64.md (load_fptr): Likewise.
	* config/m32r/m32r.c (m32r_legitimize_pic_address): Likewise.
	* config/m68k/m68k.c (legitimize_pic_address): Likewise.
	* config/mcore/mcore.c (block_move_sequence): Likewise.
	* config/mn10300/mn10300.md (symGOT2reg): Likewise.
	* config/pa/pa.c (legitimize_pic_address): Likewise.
	* config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Likewise.
	(rs6000_emit_move): Likewise.
	* config/s390/s390.c (legitimize_pic_address): Likewise.
	(legitimize_tls_address): Likewise.
	* config/s390/s390.md (casesi): Likewise.
	* config/sh/sh.c (prepare_move_operands, sh_reorg): Likewise.
	* config/sh/sh.md (symGOT2reg): Likewise.
	* config/sparc/sparc.c (legitimize_pic_address): Likewise.
	* config/v850/v850.md (casesi): Likewise.

	* config/ia64/ia64.c (gen_thread_pointer): Don't set RTX_UNCHANGING_P.
	* config/iq2000/iq2000.c (save_restore_insns): Likewise.
	* config/mips/mips.c (mips_restore_gp): Likewise.
	(mips_save_restore_reg, mips16_gp_pseudo_reg): Likewise.
	* config/sh/sh.c (sh_reorg): Likewise.

From-SVN: r86178
2004-08-18 01:25:01 -07:00
Paolo Bonzini
7c27e184c8 Makefile.in: Regenerate.
2004-08-17  Paolo Bonzini  <bonzini@gnu.org>

	* Makefile.in: Regenerate.
	* configure: Regenerate.

	* Makefile.def (bootstrap-stage): Rename extra_*_flags to
	stage_*_flags.
	* Makefile.tpl (configure-[+module+], all-[+module+]): Exit
	for bootstrapped modules if toplevel bootstrap is going.
	(GCC bootstrap): Generate per-stage targets for all bootstrapped
	modules.  Adjust for changes in Makefile.def.  Enable several
	rules even in non-bootstrap mode, just to avoid peppering the
	template with unnecessary "@if/@endif gcc-bootstrap" pairs.
	(stage-[+prev+]-bubble): Remove.

	* Makefile.def (Dependencies): Depend on all-build-bison,
	all-build-flex, all-build-byacc, all-build-texinfo, rather
	than the host variations.
	* Makefile.tpl (BUILD_DIR_PREFIX): Remove.  Replace throughout
	with BUILD_SUBDIR.
	(BISON): Update for recent Bisons.
	(YACC): Fix typo.
	(cross): Depend on all-build.
	(all): Do not depend on all-build.
	(prebootstrap): Remove.
	(dep-kind): Accept separate prefixes for MODULE and ON variables.
	(Prebootstrap dependencies): Add them to the per-stage targets
	and to all-prebootstrap.
	* configure.in (build_configdirs): Always enable build_tools.
	(BUILD_DIR_PREFIX): Remove.

	* Makefile.def (gcc): Add target variable.
	(gdb, expect, guile, tk, tix): Replace with_x with extra_make_flags.
	* Makefile.tpl (Autogenerated `all-*' targets): Invoke $(TARGET-*)
	in the recursive `make', instead of hardwiring `all'.
	(Autogenerated TARGET-* variables): New.

gcc/ChangeLog:
2004-08-17  Paolo Bonzini  <bonzini@gnu.org>

	* configure.ac: Trust toplevel's notion of BISON/FLEX/MAKEINFO.
	No need to check if in a cross configuration.
	* configure: Regenerate.

	* calls.c (precompute_register_parameters):
	Inline preserve_subexpressions_p ().
	* expmed.c (expand_mult_const, emit_store_flag): Likewise.
	* optabs.c (expand_binop, expand_twoval_binop, prepare_cmp_insn):
	Likewise.
	* expr.c (get_subtarget): Likewise.
	* rtl.h (preserve_subexpressions_p): Remove.
	* stmt.c (preserve_subexpressions_p): Remove.

	* dojump.c (do_jump) <COND_EXPR, EQ_EXPR, NE_EXPR,
	TRUTH_ANDIF_EXPR, TRUTH_ORIF_EXPR, COMPOUND_EXPR>:
	Abort on gimplified cases.

From-SVN: r86111
2004-08-17 07:27:16 +00:00
Paolo Bonzini
7efcb746da Makefile.in (GTFILES): Remove stmt.c
2004-08-09  Paolo Bonzini  <bonzini@gnu.org>

	* Makefile.in (GTFILES): Remove stmt.c
	(stmt.o): Do not depend on gt-stmt.h.
	* emit-rtl.c (emit_line_note): Do not call
	set_file_and_line_for_stmt.
	* expr.c (expand_expr_real_1) <SWITCH_EXPR>: Let expand_case
	do everything.
	* function.c (free_after_parsing): Do not free STMT field.
	(allocate_struct_function): Do not call init_stmt_for_function.
	(assign_stack_temp_for_type): Do not accept values of keep
	other than 0 or 1.
	(init_temp_slots): Do not initialize removed variables.
	* function.h (struct function): Remove STMT, X_TARGET_TEMP_SLOT_LEVEL
	and X_VAR_TEMP_SLOT_LEVEL fields.
	* rtl.h (set_file_and_line_for_stmt): Remove.
	* stmt.c (struct nesting, ALLOC_NESTING, POPSTACK,
	struct stmt_status, cond_stack, case_stack, nesting_stack,
	nesting_depth, emit_locus, set_file_and_line_for_stmt,
	same_case_target_p, init_stmt_for_function, emit_nop,
	expand_start_cond, expand_start_elseif, expand_start_else,
	expand_elseif, expand_end_cond): Remove.
	(preserve_subexpressions_p): Remove references to CFUN->STMT.
	(expand_start_case, expand_end_case_type): Remove, merge into...
	(expand_case): ... this one, including other bits from
	expand_expr_real_1.  Inline same_case_target_p.  Turn members
	of CASE_STACK into local variables.
	(emit_case_bit_tests): Inline same_case_target_p.
	(add_case_node): Add HEAD argument, return new head of the list,
	do not handle default label here.
	* tree.h (expand_start_cond, expand_end_cond, expand_start_else,
	expand_start_elseif, current_nesting_level, expand_start_case,
	expand_end_case_type, expand_end_case, add_case_node,
	init_stmt_for_function, expand_elseif): Remove prototypes.
	(expand_case): Add prototype.

From-SVN: r85712
2004-08-09 07:14:17 +00:00
Mostafa Hagog
d72372e46a common.opt (freschedule-modulo-scheduled-loops): New flag.
2004-08-08  Mostafa Hagog  <mustafa@il.ibm.com>
	Ayal Zaks <zaks@il.ibm.com>

	* common.opt (freschedule-modulo-scheduled-loops): New flag.
	* final.c (final_scan_insn): Handle NOTE_DISABLE_SCHED_OF_BLOCK.
	* modulo-sched.c (sms_schedule): Emit a note to disable scheduling
	when -freschedule-modulo-scheduled-loops flag is not specified.
	(sms_schedule_by_order, ps_insn_advance_column, add_node_to_ps,
	add_node_to_ps, ps_has_conflicts, ps_add_node_check_conflicts):
	More accurate placing of insn in row of partial schedule.
	(ps_insn_find_column): New function.
	* rtl.h (NOTE_DISABLE_SCHED_OF_BLOCK): New note.
	* sched-rgn.c (sched_is_disabled_for_current_region_p): New.
	(schedule_region): Use sched_is_disabled_for_current_region_p.
	* docs/invoke.texi: Document -freschedule-modulo-scheduled-loops.

Co-Authored-By: Ayal Zaks <zaks@il.ibm.com>

From-SVN: r85696
2004-08-08 21:35:53 +00:00
Zack Weinberg
7e7ec48e73 Makefile.in (RTL_BASE_H, RTL_H): Correct.
* Makefile.in (RTL_BASE_H, RTL_H): Correct.
	(BUILD_RTL): Remove $(BUILD_PREFIX) from ggc-none.o.
	(genobjs): Add errors.o, ggc-none.o, and min-insn-modes.o.
	(read-rtl.o, gensupport.o, genconfig.o, genflags.o, gencodes.o)
	(genconstants.o, genemit.o, genopinit.o, genrecog.o, genextract.o)
	(genpeep.o, genattr.o, genattrtab.o, genautomata.o, genoutput.o)
	(genconditions.o): Depend on $(RTL_BASE_H) not $(RTL_H).
	(ggc-none.o, errors.o): Move rule to generators section;
	correct dependencies.
	(min-insn-modes.o): Move rule to generators section; remove
	unnecessary explicit command; correct dependencies.
	(print-rtl.o, print-rtl1.o): Correct dependencies.
	($(BUILD_PREFIX_1)errors.o. $(BUILD_PREFIX_1)ggc-none.o): Delete rule.
	(mostlyclean): Update.

	* errors.c: Include bconfig.h not config.h.  Correct comment.
	* gengtype.c, genpreds.c: Don't define NO_GENRTL_H.
	* ggc-none.c: Include bconfig.h; not config.h or tm.h.
	* print-rtl.c: Don't include tm_p.h.

	* rtl.h: Move forward-decl of struct function down where it's
	needed.  Include genrtl.h #ifndef GENERATOR_FILE, not
	#ifndef NO_GENRTL_H.  Remove unnecessary #ifdef BUFSIZ statements.

From-SVN: r85574
2004-08-04 20:55:08 +00:00
Gabriel Dos Reis
9ce88f5e94 rtl.h (union rtunion_def): Have all members start with the prefix "rt_".
* rtl.h (union rtunion_def): Have all members  start with the
        prefix "rt_".
        (XINT, XSTR, XEXP, XVEC, XMODE, XBITMAP, XTREE, XBBDEF, XTMPL,
        X0INT, X0UINT, X0STR, X0EXP, X0VEC, X0MODE, X0BITMAP, X0TREE,
        X0MEMATTR, X0BBDEF, X0REGATTR, XCINT, XCUINT, XCSTR, XCEXP,
        XCVEC, XCMODE, XCBITMAP, XCTREE, XCBBDEF, XC2EXP): Adjust
        members
        access.
        * gengtype.c (adjust_field_rtx_def): Likewise.
        * rtlanal.c (loc_mentioned_in_p): Likewise.

From-SVN: r85434
2004-08-02 10:29:26 +00:00
Steven Bosscher
4586b4cadc rtl.c (currently_expanding_to_rtl): New.
* rtl.c (currently_expanding_to_rtl): New.
	* rtl.h (currently_expanding_to_rtl): Export it.
	* cfgexpand.c (tree_cfg_expand): Set/clear it at entry/exit.

	* config/alpha/alpha.c (alpha_expand_mov): Remove old RTL
	inliner hack.
	* config/sh/sh.c: Replace rtx_equal_function_value_matters
	with currently_expanding_to_rtl.
	* config/sh/sh.md: Likewise.
	* config/ia64/ia64.c (got_symbolic_operand): Likewise.

From-SVN: r85287
2004-07-29 07:37:16 +00:00
Steven Bosscher
3fbd86b1a8 cfgexpand.c (tree_expand_cfg): Fix comment.
* cfgexpand.c (tree_expand_cfg): Fix comment.

	* calls.c (expand_call): Ignore rtx_equal_function_value_matters.
	* function.c (purge_single_hard_subreg_set, purge_hard_subreg_sets):
	Remove.
	(prepare_function_start): Don't set rtx_equal_function_value_matters.
	* integrate.c (copy_rtx_and_substitute): Don't test for it.
	* passes.c (rest_of_compilation): Don't call purge_hard_subreg_sets.
	Don't set rtx_equal_function_value_matters.  Don't register RTL hooks
	here again.  Update leading comment.
	* rtl.c (rtx_equal_function_value_matters): Remove.
	(rtx_equal_p): Don't test for it.
	* simplify-rtx.c (simplify_binary_operation, simplify_subreg):
	Likewise.

	* rtl.h (enum insn_note): Remove NOTE_INSN_LOOP_END_TOP_COND.
	* rtl.c (note_insn_name): Likewise.
	* emit-rtl.c (remove_unnecessary_notes): Don't handle it.
	* final.c (final_scan_insn): Likewise.

	* except.c (finish_eh_generation): Don't call cfg_cleanup from here.
	* passes.c (rest_of_handle_eh): Do it here.

	* stmt.c (struct nesting): Remove struct nesting block member.
	(struct stmt_status): Remove x_block_start_count field.
	(current_block_start_count): Remove.

From-SVN: r85228
2004-07-27 19:09:32 +00:00
Richard Sandiford
35b6b437aa re PR rtl-optimization/16643 (verify_local_live_at_start ICE after crossjumping & cfgcleanup)
PR rtl-optimization/16643
	* cfglayout.h (cfg_layout_initialize): Add a flags parameter.
	* cfglayout.c (cfg_layout_initialize): Pass it to cleanup_cfg.
	* basic-block.h (reorder_basic_blocks): Add a flags parameter.
	* cfglayout.c (reorder_basic_blocks): Pass it to cfg_layout_initialize.
	(partition_hot_cold_basic_blocks): Pass 0 to cfg_layout_initialize.
	* function.c (thread_prologue_and_epilogue_insns): Likewise.
	* rtl.h (tracer): Add a flags parameter.
	* tracer.c (tracer): Pass it to cfg_layout_initialise.
	* passes.c (rest_of_handle_stack_regs): Pass 0 to reorder_basic_blocks.
	(rest_of_handle_reorder_blocks): Update calls to tracer and
	reorder_basic_blocks, passing CLEANUP_UPDATE_LIFE if appropriate.
	(rest_of_handle_tracer): Pass 0 to tracer.
	(rest_of_handle_loop2): Pass 0 to cfg_layout_initialize.

From-SVN: r85191
2004-07-26 14:34:19 +00:00