Commit Graph

974 Commits

Author SHA1 Message Date
Richard Henderson
fe9841365e target-def.h (TARGET_MUST_PASS_IN_STACK): New.
* target-def.h (TARGET_MUST_PASS_IN_STACK): New.
	* target.h (struct gcc_target): Add calls.must_pass_in_stack.
	* expr.h (MUST_PASS_IN_STACK): Remove.
	* system.h (MUST_PASS_IN_STACK): Poison.
	* tree.h (must_pass_in_stack_var_size): Declare.
	(must_pass_in_stack_var_size_or_pad): Declare.
	* calls.c (must_pass_in_stack_var_size): New.
	(must_pass_in_stack_var_size_or_pad): Rename from
	default_must_pass_in_stack.
	* config/alpha/alpha.c (unicosmk_must_pass_in_stack): New.
	(TARGET_MUST_PASS_IN_STACK): New.
	* config/alpha/unicosmk.h (MUST_PASS_IN_STACK): Remove.
	* config/fr30/fr30.c (fr30_must_pass_in_stack): New.
	(TARGET_MUST_PASS_IN_STACK): New.
	* config/fr30/fr30.h (MUST_PASS_IN_STACK): Remove.
	* config/frv/frv.c (frv_must_pass_in_stack): New.
	(TARGET_MUST_PASS_IN_STACK): New.
	* config/frv/frv.h (MUST_PASS_IN_STACK): Remove.
	* config/i386/i386-protos.h (ix86_must_pass_in_stack): Remove.
	* config/i386/i386.c (TARGET_MUST_PASS_IN_STACK): New.
	(ix86_must_pass_in_stack): Make static.
	* config/i386/i386.h (MUST_PASS_IN_STACK): Remove.
	* config/ia64/ia64.c (TARGET_MUST_PASS_IN_STACK): New.
	* config/ia64/ia64.h (MUST_PASS_IN_STACK): Remove.
	* config/m32r/m32r.c (TARGET_MUST_PASS_IN_STACK): New.
	* config/m32r/m32r.h (MUST_PASS_IN_STACK): Remove.
	* config/mcore/mcore-protos.h (mcore_must_pass_on_stack): Remove.
	* config/mcore/mcore.c (TARGET_MUST_PASS_IN_STACK): New.
	(mcore_must_pass_on_stack): Remove.
	* config/mcore/mcore.h (MUST_PASS_IN_STACK): Remove.
	* config/mips/mips.c (TARGET_MUST_PASS_IN_STACK): New.
	* config/mips/mips.h (MUST_PASS_IN_STACK): Remove.
	* config/pa/pa.c (TARGET_MUST_PASS_IN_STACK): New.
	* config/pa/pa.h (MUST_PASS_IN_STACK): Remove.
	* config/rs6000/aix.h (MUST_PASS_IN_STACK): Remove.
	* config/rs6000/linux64.h (MUST_PASS_IN_STACK): Remove.
	* config/rs6000/rs6000.c (rs6000_must_pass_in_stack): New.
	(TARGET_MUST_PASS_IN_STACK): New.
	* config/sh/sh.c (TARGET_MUST_PASS_IN_STACK): New.
	* config/sh/sh.h (MUST_PASS_IN_STACK): Remove.
	* config/sparc/sparc.c (TARGET_MUST_PASS_IN_STACK): New.
	* config/sparc/sparc.h (MUST_PASS_IN_STACK): Remove.
	* config/xtensa/xtensa.c (TARGET_MUST_PASS_IN_STACK): New.
	* config/xtensa/xtensa.h (MUST_PASS_IN_STACK): Remove.
	* doc/tm.texi (TARGET_MUST_PASS_IN_STACK): Update from
	MUST_PASS_IN_STACK.

	* calls.c, function.c, config/alpha/alpha.c, config/alpha/alpha.h,
	config/alpha/unicosmk.h, config/alpha/vms.h, config/c4x/c4x.c,
	config/cris/cris.h, config/fr30/fr30.c, config/fr30/fr30.h,
	config/frv/frv.c, config/i386/i386.c, config/iq2000/iq2000.c,
	config/mcore/mcore.c, config/mcore/mcore.h, config/mips/mips.c,
	config/mmix/mmix.c, config/mmix/mmix.h, config/rs6000/rs6000.c,
	config/sh/sh.c, config/sh/sh.h, config/stormy16/stormy16.c,
	config/xtensa/xtensa.c: Use target hook.

From-SVN: r84606
2004-07-13 00:45:09 -07:00
Steve Ellcey
5e89a381f9 function.c (expand_function_start): Ensure r_save is in Pmode.
* function.c (expand_function_start): Ensure r_save is in Pmode.
	* calls.c (prepare_call_address): Ensure static_chain_value is
	  in Pmode.
	* builtins.c (expand_builtin_nonlocal_goto): Ensure r_label and
          r_save_area are in Pmode.
	* config/ia64/ia64.c (ia64_initialize_trampoline): Ensure addr,
	  fnaddr, and static_chain are in Pmode.

From-SVN: r84584
2004-07-12 22:45:14 +00:00
Jerry Quinn
4b4bf9414f alias.c (nonlocal_mentioned_p, [...]): Use, LABEL_P, JUMP_P, CALL_P, NONJUMP_INSN_P, INSN_P, NOTE_P, BARRIER_P.
2004-07-08  Jerry Quinn  <jlquinn@optonline.net>

	* alias.c (nonlocal_mentioned_p, nonlocal_referenced_p,
	nonlocal_set_p, init_alias_analysis): Use, LABEL_P, JUMP_P, CALL_P,
	NONJUMP_INSN_P, INSN_P, NOTE_P, BARRIER_P.
	* bb-reorder.c (mark_bb_for_unlikely_executed_section,
	add_labels_and_missing_jumps, find_jump_block,
	fix_crossing_unconditional_branches, add_reg_crossing_jump_notes):
	Likewise.
	* bt-load.c (btr_referenced_p, compute_defs_uses_and_gen,
	link_btr_uses, move_btr_def): Likewise.
	* builtins.c (expand_builtin_longjmp, expand_builtin_nonlocal_goto,
	expand_builtin_expect_jump): Likewise.
	* caller-save.c (save_call_clobbered_regs, insert_one_insn): Likewise.
	* calls.c (expand_call, emit_library_call_value_1): Likewise.
	* cfganal.c (forwarder_block_p): Likewise.
	* cfgbuild.c (inside_basic_block_p, count_basic_blocks,
	make_label_edge, rtl_make_eh_edge, make_edges, find_basic_blocks_1,
	find_bb_boundaries): Likewise.
	* cfgcleanup.c (try_simplify_condjump, try_forward_edges,
	merge_blocks_move_predecessor_nojumps,
	merge_blocks_move_successor_nojumps, insns_match_p,
	flow_find_cross_jump, outgoing_edges_match, try_crossjump_to_edge,
	try_optimize_cfg): Likewise.
	* cfgexpand.c (expand_block, construct_exit_block): Likewise.
	* cfglayout.c (skip_insns_after_block, label_for_bb,
	record_effective_endpoints, insn_locators_initialize,
	fixup_reorder_chain, update_unlikely_executed_notes): Likewise.
	* cfgmainloop.c (create_loop_notes): Likewise.
	* cfgrtl.c (delete_insn, delete_insn_chain,
	create_basic_block_structure, rtl_delete_block, free_bb_for_insn,
	update_bb_for_insn, rtl_merge_blocks, rtl_can_merge_blocks,
	block_label, try_redirect_by_replacing_jump, last_loop_beg_note,
	redirect_branch_edge, force_nonfallthru_and_redirect,
	rtl_tidy_fallthru_edge, back_edge_of_syntactic_loop_p,
	rtl_split_edge, commit_one_edge_insertion, print_rtl_with_bb,
	update_br_prob_note, rtl_verify_flow_info_1, rtl_verify_flow_info,
	purge_dead_edges, cfg_layout_redirect_edge_and_branch,
	cfg_layout_delete_block, cfg_layout_can_merge_blocks_p,
	cfg_layout_merge_blocks, rtl_block_ends_with_call_p,
	need_fake_edge_p, rtl_flow_call_edges_add): Likewise.
	* combine.c (combine_instructions, can_combine_p, try_combine,
	find_split_point, record_dead_and_set_regs, reg_dead_at_p,
	distribute_notes, distribute_links, insn_cuid): Likewise.
	* cse.c (fold_rtx, cse_insn, cse_around_loop,
	invalidate_skipped_block, cse_set_around_loop,
	cse_end_of_basic_block, cse_main, cse_basic_block,
	cse_condition_code_reg): Likewise.
	* cselib.c (cselib_process_insn): Likewise.
	* ddg.c (create_ddg): Likewise.
	* df.c (df_insn_refs_record, df_bb_rd_local_compute, df_insns_modify):
	Likewise.
	* dwarf2out.c (dwarf2out_stack_adjust, dwarf2out_frame_debug,
	gen_label_die, dwarf2out_var_location): Likewise.
	* emit-rtl.c (get_first_nonnote_insn, get_last_nonnote_insn,
	next_insn, previous_insn, next_nonnote_insn, prev_nonnote_insn,
	last_call_insn, active_insn_p, next_label, prev_label,
	link_cc0_insns, next_cc0_user, try_split, add_insn_after,
	add_insn_before, remove_insn, add_function_usage_to,
	reorder_insns, find_line_note, remove_unnecessary_notes,
	emit_insn_after_1, classify_insn): Likewise.
	* except.c (convert_from_eh_region_ranges_1, emit_to_new_bb_before,
	connect_post_landing_pads, sjlj_mark_call_sites,
	sjlj_emit_function_enter, sjlj_emit_function_exit, reachable_handlers,
	can_throw_internal, can_throw_external, set_nothrow_function_flags,
	convert_to_eh_region_ranges): Likewise.
	* explow.c (optimize_save_area_alloca): Likewise.
	* expr.c (expand_expr_real): Likewise.
	* final.c (insn_current_reference_address, compute_alignments,
	shorten_branches, final, scan_ahead_for_unlikely_executed_note,
	final_scan_insn, output_asm_label, leaf_function_p): Likewise.
	* flow.c (first_insn_after_basic_block_note, delete_dead_jumptables,
	propagate_block_delete_insn, propagate_one_insn,
	init_propagate_block_info, propagate_block, libcall_dead_p,
	mark_set_1, attempt_auto_inc, find_auto_inc, try_pre_increment):
	Likewise.
	* function.c (instantiate_virtual_regs,	reorder_blocks_1,
	expand_function_start, expand_function_end, contains,
	thread_prologue_and_epilogue_insns,
	reposition_prologue_and_epilogue_notes): Likewise.
	* gcse.c (constprop_register, bypass_conditional_jumps,
	insert_insn_end_bb, gcse_after_reload): Likewise.
	* genemit.c (gen_expand, gen_split): Likewise.
	* genpeep.c (gen_peephole, main): Likewise.
	* global.c (build_insn_chain): Likewise.
	* graph.c (node_data, print_rtl_graph_with_bb): Likewise.
	* haifa-sched.c (unlink_other_notes, unlink_line_notes,
	get_block_head_tail, no_real_insns_p, rm_line_notes, save_line_notes,
	restore_line_notes, rm_redundant_line_notes, rm_other_notes,
	ok_for_early_queue_removal, set_priorities, sched_init): Likewise.
	* ifcvt.c (count_bb_insns, first_active_insn, last_active_insn,
	cond_exec_process_insns, end_ifcvt_sequence, noce_process_if_block,
	merge_if_block, block_jumps_and_fallthru_p, find_if_block,
	dead_or_predicable): Likewise.
	* integrate.c (try_constants): Likewise.
	* jump.c (rebuild_jump_labels, cleanup_barriers,
	purge_line_number_notes, init_label_info, mark_all_labels,
	squeeze_notes, get_label_before, get_label_after,
	reversed_comparison_code_parts, simplejump_p, pc_set,
	returnjump_p, onlyjump_p, follow_jumps, mark_jump_label,
	delete_barrier, delete_prior_computation, delete_computation,
	delete_related_insns, delete_for_peephole, redirect_jump):
	Likewise.
	* lcm.c (optimize_mode_switching): Likewise.
	* local-alloc.c (validate_equiv_mem, update_equiv_regs, block_alloc):
	Likewise.
	* loop-doloop.c (doloop_valid_p, doloop_optimize): Likewise.
	* loop-invariant.c (find_exits, find_invariants_bb): Likewise.
	* loop-iv.c (simplify_using_assignment): Likewise.
	* loop.c (compute_luids, loop_optimize, scan_loop, libcall_other_reg,
	libcall_benefit, skip_consec_insns, move_movables, prescan_loop,
	find_and_verify_loops, labels_in_range_p, for_each_insn_in_loop,
	loop_bivs_init_find, strength_reduce, check_insn_for_bivs,
	check_insn_for_givs, check_final_value, update_giv_derive,
	basic_induction_var, product_cheap_p, check_dbra_loop,
	loop_insn_first_p, last_use_this_basic_block,
	canonicalize_condition, get_condition, loop_regs_scan, load_mems,
	try_copy_prop, LOOP_BLOCK_NUM, loop_dump_aux): Likewise.
	* modulo-sched.c (doloop_register_get, find_line_note, sms_schedule,
	sms_schedule_by_order): Likewise.
	* optabs.c (emit_no_conflict_block, emit_libcall_block): Likewise.
	* postreload.c (reload_cse_simplify_operands, reload_combine,
	reload_cse_move2add): Likewise.
	* predict.c (can_predict_insn_p, estimate_probability,
	expected_value_to_br_prob, process_note_predictions): Likewise.
	* print-rtl.c (print_rtx, print_rtl, print_rtl_single): Likewise.
	* profile.c (branch_prob): Likewise.
	* ra-build.c (live_out_1, livethrough_conflicts_bb,
	detect_webs_set_in_cond_jump): Likewise.
	* ra-debug.c (ra_print_rtx_object, ra_debug_insns,
	ra_print_rtl_with_bb): Likewise.
	* ra-rewrite.c (insert_stores, rewrite_program2): Likewise.
	* recog.c (next_insn_tests_no_inequality, find_single_use,
	split_all_insns, peephole2_optimize, if_test_bypass_p): Likewise.
	* reg-stack.c (next_flags_user, record_label_references,
	emit_swap_insn, swap_rtx_condition, subst_stack_regs,
	compensate_edge, convert_regs_1): Likewise.
	* regclass.c (scan_one_insn): Likewise.
	* regmove.c (optimize_reg_copy_1, optimize_reg_copy_2, fixup_match_2,
	regmove_optimize, fixup_match_1, single_set_for_csa,
	combine_stack_adjustments_for_block): Likewise.
	* regrename.c (build_def_use, copyprop_hardreg_forward_1): Likewise.
	* reload.c (find_reloads, find_reloads_address_1, subst_reloads,
	find_equiv_reg): Likewise.
	* reload1.c (reload, calculate_needs_all_insns, set_label_offsets,
	reload_as_needed, emit_input_reload_insns, do_output_reload,
	delete_output_reload, delete_address_reloads_1, fixup_abnormal_edges):
	Likewise.
	* reorg.c (find_end_label, emit_delay_sequence,
	delete_from_delay_slot, delete_scheduled_jump, optimize_skip,
	get_jump_flags, rare_destination, mostly_true_jump,
	try_merge_delay_insns, redundant_insn, own_thread_p,
	fill_simple_delay_slots, fill_slots_from_thread,
	fill_eager_delay_slots, relax_delay_slots, make_return_insns,
	dbr_schedule): Likewise.
	* resource.c (find_basic_block, next_insn_no_annul,
	find_dead_or_set_registers, mark_target_live_regs): Likewise.
	* rtl.h (RTX_PREV): Likewise.
	* rtlanal.c (global_reg_mentioned_p, no_labels_between_p,
	no_jumps_between_p, reg_used_between_p, reg_referenced_between_p,
	reg_set_p, find_last_value, dead_or_set_regno_p, find_reg_fusage,
	find_regno_fusage, pure_call_p, replace_label, rtx_referenced_p_1,
	tablejump_p, computed_jump_p, insns_safe_to_move_p,
	find_first_parameter_load, can_hoist_insn_p): Likewise.
	* sched-deps.c (get_condition, add_dependence, sched_analyze_2,
	sched_analyze_insn, sched_analyze, add_forward_dependence): Likewise.
	* sched-ebb.c (fix_basic_block_boundaries, add_deps_for_risky_insns,
	schedule_ebbs): Likewise.
	* sched-rgn.c (is_cfg_nonregular, find_conditional_protection,
	is_conditionally_protected, can_schedule_ready_p,
	add_branch_dependences, debug_dependencies): Likewise.
	* stmt.c (emit_nop, expand_start_case, emit_jump_if_reachable):
	Likewise.
	* unroll.c (unroll_loop, copy_loop_body, back_branch_in_range_p,
	reg_dead_after_loop, loop_find_equiv_value, loop_iterations,
	set_dominates_use, ujump_to_loop_cont): Likewise.
	* var-tracking.c (prologue_stack_adjust, vt_initialize): Likewise.
	* varasm.c (output_constant_pool_1): Likewise.

From-SVN: r84341
2004-07-09 03:29:35 +00:00
Alexandre Oliva
652eb7440c expr.h (FUNCTION_ARG_PARTIAL_NREGS): Default to 0.
* expr.h (FUNCTION_ARG_PARTIAL_NREGS): Default to 0.
(FUNCTION_ARG_PASS_BY_REFERENCE): Likewise.
(FUNCTION_ARG_CALLEE_COPIES): Likewise.
* calls.c: Remove ifdefs of macros above.
* functions.c: Likewise.
* expr.c: Likewise.

From-SVN: r84300
2004-07-08 16:57:48 +00:00
Richard Henderson
ac45df5dba except.c (expand_eh_region_start, [...]): Remove.
* except.c (expand_eh_region_start, expand_eh_region_end,
	expand_eh_handler, expand_eh_region_end_cleanup,
	expand_start_all_catch, expand_start_catch, expand_end_catch,
	expand_end_all_catch, expand_eh_region_end_allowed,
	expand_eh_region_end_must_not_throw, expand_eh_region_end_throw,
	expand_eh_region_end_fixup): Remove.
	* stmt.c (struct nesting): Remove stack_level, innermost_stack_block,
	cleanups, outer_cleanups, label_chain, exception_region.
	(struct goto_fixup): Remove stack_level, cleanup_list_list.
	(struct label_chain): Remove.
	(struct stmt_status): Remove x_stack_block_stack.
	(stack_block_stack, expand_goto_internal, expand_fixup, expand_fixups,
	fixup_gotos, save_stack_pointer, expand_decl_cleanup,
	expand_decl_cleanup_eh, expand_cleanups, start_cleanup_deferral,
	end_cleanup_deferral, last_cleanup_this_contour,
	containing_blocks_have_cleanups_or_stack_level,
	any_pending_cleanups): Remove.
	(expand_null_return_1): Take no arguments.
	(expand_label, expand_naked_return, expand_return,
	expand_start_bindings_and_block, expand_end_bindings, expand_decl,
	expand_anon_union_decl, expand_start_case, pushcase, pushcase_range,
	expand_end_case_type): Don't use any of them.
	* calls.c (expand_call): Likewise.
	* dojump.c (do_jump): Likewise.
	* function.c (expand_function_end): Likewise.
	* expr.c (store_expr, expand_expr_real_1): Likewise.
	(safe_from_p): Don't handle WITH_CLEANUP_EXPR, CLEANUP_POINT_EXPR.
	(expand_expr_real_1): Don't handle WITH_CLEANUP_EXPR,
	CLEANUP_POINT_EXPR, TARGET_EXPR, TRY_CATCH_EXPR, CATCH_EXPR,
	EH_FILTER_EXPR, TRY_FINALLY_EXPR, GOTO_SUBROUTINE_EXPR.
	* fold-const.c (fold_checksum_tree): Use first_rtl_op.
	* gengtype.c (adjust_field_tree_exp): Remove rtl op handling.
	* gimplify.c (gimplify_cleanup_point_expr): Renumber operands
	for WITH_CLEANUP_EXPR.
	(gimple_push_cleanup): Likewise.
	* integrate.c (copy_decl_for_inlining): Don't DECL_TOO_LATE.
	* print-tree.c (print_node): Likewise.
	* tree-pretty-print.c (dump_generic_node): Remove GOTO_SUBROUTINE_EXPR.
	* tree.c (first_rtl_op): Always just TREE_CODE_LENGTH.
	(has_cleanups): Remove GOTO_SUBROUTINE_EXPR.
	* tree.def (WITH_CLEANUP_EXPR): Remove op1 and op2.
	(GOTO_SUBROUTINE_EXPR): Remove.
	* tree.h (WITH_CLEANUP_EXPR_RTL): Remove.
	(DECL_TOO_LATE): Remove.
	* except.h, tree.h: Update decls.
ada/
	* trans.c (gnat_to_gnu <N_Handled_Sequence_Of_Statements>): Update
	commentary.
cp/
	* cp-tree.h (expand_eh_spec_block): Remove.
java/
	* expr.c (case_identity, get_primitive_array_vtable,
	java_expand_expr, emit_init_test_initialization): Remove.
	* java-tree.h (java_expand_expr): Remove.
	* lang.c (LANG_HOOKS_EXPAND_EXPR): Remove.

From-SVN: r84275
2004-07-08 00:46:07 -07:00
Paolo Bonzini
97b0ade303 explow.c (optimize_save_area_alloca): Do not accept parameters.
2004-07-08  Paolo Bonzini  <bonzini@gnu.org>

	* explow.c (optimize_save_area_alloca): Do not accept parameters.
	* passes.c (rest_of_handle_final): Handle symout.
	(rest_of_handle_new_regalloc, rest_of_handle_old_regalloc):
	Push timevar here.
	(rest_of_handle_sched): Break out SMS.  Remove ifs for
	flag_schedule_insns and flag_modulo_sched.
	(rest_of_handle_addressof, rest_of_handle_cse2): Garbage
	collect at the end.
	(rest_of_handle_gcse2): Put under timevar TV_RELOAD_CSE_REGS.
	(rest_of_handle_partition_blocks, rest_of_handle_sms,
	rest_of_handle_if_after_reload, rest_of_handle_peephole2,
	rest_of_handle_mode_switching, rest_of_handle_jump,
	rest_of_handle_guess_branch_prob, rest_of_handle_eh,
	rest_of_handle_jump2, rest_of_handle_postreload,
	rest_of_handle_flow2, rest_of_clean_state,
	rest_of_handle_shorten_branches,
	rest_of_handle_prologue_epilogue,
	rest_of_handle_branch_target_load_optimize): New.
	(rest_of_compilation): Call the above.  Remove ggc_collect
	calls moved to rest_of_handle_*.
	* rtl.h (optimize_save_area_alloca): Do not accept parameters.

	* dwarf2out.c (dwarf2out_begin_prologue): Use TREE_NOTHROW.
	* except.c (set_nothrow_function_flags): Set TREE_NOTHROW.
	* except.h (set_nothrow_function_flags): Update comment.
	* function.c (current_function_nothrow): Remove.
	* output.h (current_function_nothrow): Remove.
	* passes.c (rest_of_compilation): Do not set TREE_NOTHROW.
	* config/arm/arm.c (arm_compute_func_type): Use TREE_NOTHROW.

From-SVN: r84274
2004-07-08 07:42:02 +00:00
Alexandre Oliva
6b70713d28 function.c (assign_parm_find_data_types): Call FUNCTION_ARG_PASS_BY_REFERENCE only if it's defined.
* function.c (assign_parm_find_data_types): Call
FUNCTION_ARG_PASS_BY_REFERENCE only if it's defined.

From-SVN: r84241
2004-07-07 23:02:22 +00:00
John David Anglin
477eff9602 re PR middle-end/16392 (function.c:3192: error: `stack_args_size' undeclared)
PR c/16392
	* function.c (assign_parms): Fix typo from previous change.

From-SVN: r84217
2004-07-07 18:40:02 +00:00
Roger Sayle
09b5267035 calls.c (load_register_parameters): Call expand_shift instead of expand_binop with ashl_optab (or other shift...
* calls.c (load_register_parameters): Call expand_shift instead
	of expand_binop with ashl_optab (or other shift optab) directly.
	* expr.c (emit_group_load, emit_group_store): Likewise.
	* function.c (assign_parm_setup_block): Likewise.
	* stmt.c (shift_return_value): Likewise.

From-SVN: r84134
2004-07-05 21:57:44 +00:00
Richard Henderson
b6448565bd function.c (assign_parm_setup_reg): Properly rename variables in FUNCTION_ARG_CALLEE_COPIES section.
* function.c (assign_parm_setup_reg): Properly rename variables in
        FUNCTION_ARG_CALLEE_COPIES section.

From-SVN: r84128
2004-07-05 11:43:47 -07:00
Richard Kenner
8963a5172c function.c, [...]: Move max_size hook to type hooks; remove bogus PARAMS.
* function.c, langhooks-def.h, langhooks.h: Move max_size hook
	to type hooks; remove bogus PARAMS.

From-SVN: r84113
2004-07-05 10:22:28 -04:00
Richard Henderson
6071dc7fe9 function.c (struct assign_parm_data_all): New.
* function.c (struct assign_parm_data_all): New.
        (struct assign_parm_data_one): New.
        (assign_parms_initialize_all, assign_parms_augmented_arg_list,
        assign_parm_find_data_types, assign_parms_setup_varargs,
        assign_parm_find_entry_rtl, assign_parm_is_stack_parm,
        assign_parm_find_stack_rtl, assign_parm_adjust_entry_rtl,
        assign_parm_adjust_stack_rtl, assign_parm_setup_block_p,
        assign_parm_setup_block, assign_parm_setup_reg,
        assign_parm_setup_stack, assign_parms_unsplit_complex): Split from ...
        (assign_parms): ... here.

From-SVN: r84105
2004-07-04 21:24:40 -07:00
Richard Henderson
8fff4fc136 rtl.def (ADDRESSOF): Remove.
* rtl.def (ADDRESSOF): Remove.
	* alias.c (rtx_equal_for_memref_p): Don't handle addressof.
	(find_base_term, memrefs_conflict_p): Likewise.
	* cse.c (fixed_base_plus_p, find_best_addr: Likewise.
	(fold_rtx, cse_insn, set_live_p): Likewise.
	* dwarf2out.c (mem_loc_descriptor): Likewise.
	(add_location_or_const_value_attribute): Likewise.
	* emit-rtl.c (copy_insn_1): Likewise.
	* explow.c (memory_address): Likewise.
	* expmed.c (store_split_bit_field): Likewise.
	* expr.c (expand_expr_real_1): Likewise.
	* function.c (instantiate_decl
	(instantiate_virtual_regs_1, fix_lexical_addr): Likewise.
	* genrecog.c (preds, validate_pattern): Likewise.
	* integrate.c (copy_rtx_and_substitute): Likewise.
	* recog.c (general_operand, register_operand): Likewise.
	(memory_address_p): Likwise.
	* reload1.c (eliminate_regs, elimination_effects): Likewise.
	* rtl.c (copy_rtx): Likewise.
	* rtlanal.c (rtx_unstable_p, rtx_varies_p): Likewise.
	(rtx_addr_can_trap_p, nonzero_address_p, address_cost): Likewise.
	* rtlhooks.c (gen_lowpart_general): Likewise.
	* stmt.c (expand_asm_operands): Likewise.
	* web.c (entry_register, replace_ref, web_main): Likewise.
	* config/alpha/alpha.c (input_operand, alpha_legitimate_address_p,
	alpha_expand_block_move, alpha_expand_block_clear): Likewise.
	* config/arm/arm.c (thumb_rtx_costs): Likewise.
	* config/c4x/c4x.c (c4x_valid_operands): Likewise.
	* config/frv/frv.c (move_destination_operand, move_source_operand,
	condexec_dest_operand, condexec_source_operand,
	condexec_memory_operand): Likewise.
	* config/h8300/h8300.h (PREDICATE_CODES): Likewise.
	* config/ia64/ia64.c (general_xfmode_operand): Likewise.
	(destination_xfmode_operand): Likewise.
	* config/mips/mips.h (PREDICATE_CODES): Likewise.
	* config/mn10300/mn10300.c (mn10300_address_cost_1): Likewise.
	* config/s390/s390.c (general_s_operand): Likewise.
	* config/s390/s390.md (mov*): Likewise.
	* config/sparc/sparc.h (PREDICATE_CODES): Likewise.

	* c-typeck.c (c_mark_addressable): Don't put_var_into_stack.
	* expr.c (expand_expr_real_1): Likewise.
	* stmt.c (expand_decl): Likewise.
	* config/c4x/c4x.c (c4x_expand_builtin): Likewise.

	* function.c (struct fixup_replacement, struct insns_for_mem_entry,
	postponed_insns, put_var_into_stack, put_reg_into_stack,
	schedule_fixup_var_refs, fixup_var_refs, find_fixup_replacement,
	fixup_var_refs_insns, fixup_var_refs_insns_with_hash,
	fixup_var_refs_insn, fixup_var_refs_1, fixup_memory_subreg,
	walk_fixup_memory_subreg, fixup_stack_1, optimize_bit_field,
	gen_mem_addressof, flush_addressof, put_addressof_into_stack,
	purge_bitfield_addressof_replacements, purge_addressof_replacements,
	purge_addressof_1, insns_for_mem_hash, insns_for_mem_comp,
	struct insns_for_mem_walk_info, insns_for_mem_walk,
	compute_insns_for_mem, is_addressof, purge_addressof, setjmp_protect,
	setjmp_protect_args): Remove.
	(push_function_context_to): Don't handle var_refs_queue.
	(pop_function_context_from, free_after_compilation): Likewise.
	(instantiate_virtual_regs): Don't handle parm_reg_stack_loc.
	(assign_parms, allocate_struct_function): Likewise.
	(use_register_for_decl): New.
	(expand_function_end): Don't setjmp_protect.
	* function.h (struct emit_status): Update commentary.
	(struct function): Remove x_max_parm_reg, x_parm_reg_stack_loc.
	(max_parm_reg, parm_reg_stack_loc): Remove.
	* passes.c (DFI_addressof): Remove.
	(dump_file_info): Remove addressof.
	(rest_of_handle_addressof): Remove.
	(rest_of_compilation): Don't call it.
	* rtl.h (ADDRESSOF_REGNO, ADDRESSOF_DECL): Remove.
	* stmt.c (expand_decl): Use use_register_for_decl.
	* tree.h: Update decls.
	* web.c (mark_addressof): Remove.
	* doc/invoke.texi (-dF): Remove.

ada/
        * utils2.c (gnat_mark_addressable): Don't put_var_into_stack.
cp/
        * typeck.c (cxx_mark_addressable): Don't put_var_into_stack.
fortran/
        * f95-lang.c (gfc_mark_addressable): Don't put_var_into_stack.
treelang/
        * treetree.c (tree_mark_addressable):  Don't put_var_into_stack.

From-SVN: r84072
2004-07-04 01:07:15 -07:00
Richard Kenner
e30bb772cb langhooks-def.h (LANG_HOOKS_TYPE_MAX_SIZE): New langhook.
* langhooks-def.h (LANG_HOOKS_TYPE_MAX_SIZE): New langhook.
	* langhooks.h (strct lang_hooks): New field type_max_size.
	* function.c (assign_temp): Call it.

From-SVN: r84053
2004-07-03 09:40:47 -04:00
Richard Henderson
82c8274320 c-decl.c (grokdeclarator): Don't frob current_function_decl around variable_size.
* c-decl.c (grokdeclarator): Don't frob current_function_decl
        around variable_size.
        (set_decl_nonlocal): Remove.
        (store_parm_decls): Add stmts for pending sizes.
        * calls.c (calls_function, calls_function_1): Remove.
        (precompute_arguments): Don't call it.
        * cfgexpand.c (set_save_expr_context): Remove.
        (tree_expand_cfg): Don't call it.
        * dwarf2out.c (add_bound_info): Don't handle SAVE_EXPR.
        (dwarf2out_finish): Likewise.
        * expr.c (emit_block_move): Adjust addresses to BLKmode.
        (store_constructor): Don't pre-evaluate SAVE_EXPR.
        (safe_from_p): Don't queue SAVE_EXPRs.
        (expand_expr_real_1 <case SAVE_EXPR>): Rewrite to expect,
        or build plain VAR_DECLs.
        * fold-const.c (twoval_comparison_p): Don't look at SAVE_EXPR_RTL.
        (fold): Likewise.
        (fold_checksum_tree): Don't special-case SAVE_EXPR.
        * function.c (free_after_compilation): Don't clear x_save_expr_regs.
        (put_var_into_stack): Don't handle SAVE_EXPR.
        (gen_mem_addressof): Likewise.
        * function.h (struct function): Remove x_save_expr_regs.
        (save_expr_regs): Remove.
        * gengtype.c (adjust_field_tree_exp): Don't special-case SAVE_EXPR.
        * print-tree.c (print_node): Don't dump SAVE_EXPR_NOPLACEHOLDER.
        * stor-layout.c (variable_size): Don't set it.
        (force_type_save_exprs, force_type_save_exprs_1): Remove.
        * tree-inline.c (remap_save_expr): Remove fn argument.  Update
        all callers.  Don't set SAVE_EXPR_CONTEXT.
        * tree-inline.h (remap_save_expr): Update decl.
        * tree.c (save_expr): Update build size.
        (first_rtl_op): Don't handle SAVE_EXPR.
        (unsave_expr_1, contains_placeholder_p): Likewise.
        (decl_function_context): Likewise.
        * tree.def (SAVE_EXPR): Remove args 1 and 2.
        * tree.h (SAVE_EXPR_CONTEXT, SAVE_EXPR_RTL): Remove.
        (SAVE_EXPR_NOPLACEHOLDER, SAVE_EXPR_PERSISTENT_P): Remove.
cp/
        * tree.c (cp_unsave_r): Update remap_save_expr call.
java/
        * jcf-write.c (generate_bytecode_insns <case SAVE_EXPR>): Rewrite.

From-SVN: r84036
2004-07-02 17:15:50 -07:00
Richard Henderson
4dfa034295 tree.def (RTL_EXPR): Remove.
* tree.def (RTL_EXPR): Remove.
        * c-typeck.c (lvalue_p): Don't handle it.
        * expr.c (safe_from_p): Likewise.
        (expand_expr_real_1): Likewise.
        * fold-const.c (non_lvalue, operand_equal_p, fold): Likewise.
        (fold_checksum_tree, tree_expr_nonnegative_p): Likewise.
        * gengtype.c (adjust_field_tree_exp): Likewise.
        * stmt.c (warn_if_unused_value): Likewise.
        * tree-gimple.c (recalculate_side_effects): Likewise.
        * tree-pretty-print.c (dump_generic_node): Likewise.
        * tree.c (make_node_stat, first_rtl_op, unsave_expr_1): Likewise.
        (unsafe_for_reeval, stabilize_reference, build1_stat): Likewise.
        * tree.h (RTL_EXPR_SEQUENCE, RTL_EXPR_RTL, RTL_EXPR_ALT_RTL): Remove.

        * stmt.c (struct stmt_status): Remove x_last_expr_type,
        x_last_expr_value, x_last_expr_alt_rtl, x_expr_stmts_for_value.
        (last_expr_type, last_expr_value, last_expr_alt_rtl): Remove.
        (expand_expr_stmt): Merge with expand_expr_stmt_value.  Remove
        all the bits that tracked last_expr.
        (expand_end_bindings): Don't track last_expr.
        (expand_start_stmt_expr, expand_end_stmt_expr): Remove.
        (clear_last_expr): Remove.
        (expand_asm): Don't call it.
        (expand_asm_operands, expand_end_cond): Likewise.
        (expand_naked_return, expand_null_return_1): Likewise.
        * c-typeck.c (c_begin_compound_stmt): Likewise.
        * cfgexpand.c (expand_block): Use expand_expr_stmt.
        * expr.c (expand_expr_real_1): Likewise.
        * tree.h: Update prototypes.

        * function.h (struct sequence_stack): Remove sequence_rtl_expr.
        (struct emit_status): Remove sequence_rtl_expr.
        (struct function): Remove x_rtl_expr_chain.
        (seq_rtl_expr, rtl_expr_chain): Remove.
        * function.c (struct temp_slot): Remove rtl_expr.
        (assign_stack_temp_for_type): Don't set it.
        (free_temp_slots, pop_temp_slots): Don't check it.
        (free_after_compilation): Don't clear x_rtl_expr_chain.
        (fixup_var_refs): Don't search it.
        (preserve_rtl_expr_result, free_temps_for_rtl_expr): Remove.
        * emit-rtl.c (start_sequence): Don't use sequence_rtl_expr
        or seq_rtl_expr.
        (push_topmost_sequence): Likewise.
        (end_sequence, init_emit): Likewise.
        (start_sequence_for_rtl_expr): Remove.
        * expmed.c (make_tree): Build a VAR_DECL instead of an RTL_EXPR.
        * rtl.h (preserve_rtl_expr_result): Remove.

ada/
        * trans.c (gnat_stabilize_reference): Don't handle RTL_EXPR.
        * utils.c (max_size): Likewise.

cp/
        * class.c (fixed_type_or_null): Don't handle RTL_EXPR.
        * method.c (synthesize_method): Don't clear_last_expr.
        * name-lookup.c (maybe_push_cleanup_level): Likewise.

From-SVN: r84009
2004-07-01 18:15:43 -07:00
Jerry Quinn
3c0cb5de6a alias.c (get_alias_set, [...]): Use MEM_P.
2004-07-01  Jerry Quinn  <jlquinn@optonline.net>

	* alias.c (get_alias_set, canon_rtx, get_addr,
	nonoverlapping_memrefs_p, nonlocal_referenced_p_1, memory_modified_1):
	Use MEM_P.
	* builtins.c (expand_builtin_prefetch, expand_builtin_profile_func,
	expand_builtin): Likewise.
	* calls.c (expand_call, emit_library_call_value_1, store_one_arg):
	Likewise.
	* combine.c (can_combine_p, combinable_i3pat, try_combine,
	find_split_point, combine_simplify_rtx, simplify_set, make_extraction,
	rtx_equal_for_field_assignment_p, gen_lowpart_for_combine,
	record_dead_and_set_regs_1, get_last_value_validate,
	mark_used_regs_combine, move_deaths, unmentioned_reg_p_1): Likewise.
	* cse.c (check_dependence, canon_hash, equiv_constant,
	gen_lowpart_if_possible, cse_insn, invalidate_from_clobbers,
	cse_around_loop, cse_check_loop_start, cse_set_around_loop,
	count_reg_usage): Likewise.
	* cselib.c (rtx_equal_for_cselib_p, add_mem_for_addr, cselib_lookup,
	cselib_invalidate_mem, cselib_invalidate_rtx, cselib_record_set,
	cselib_record_sets): Likewise.
	* dbxout.c (PARM_PASSED_IN_MEMORY, dbxout_symbol,
	dbxout_symbol_location, dbxout_parms, dbxout_reg_parms): Likewise.
	* ddg.c (mark_mem_use, mark_mem_store, rtx_mem_access_p): Likewise.
	* df.c (df_uses_record): Likewise.
	* dojump (do_jump): Likewise.
	* dwarf2out.c (stack_adjust_offset, mem_loc_descriptor,
	loc_descriptor_from_tree, rtl_for_decl_location, add_bound_info,
	decl_start_label): Likewise.
	* emit-rtl.c (gen_complex_constant_part, gen_highpart,
	operand_subword, change_address_1, make_safe_from): Likewise.
	* explow.c (break_out_memory_refs, copy_all_regs, validize_mem,
	stabilize, force_not_mem): Likewise.
	* expmed.c (store_bit_field, store_split_bit_field, extract_bit_field,
	expand_mult_const, expand_divmod, emit_store_flag): Likewise.
	* expr.c (convert_move, convert_modes, emit_block_move,
	emit_group_load, emit_group_store, clear_storage, emit_move_insn,
	emit_move_insn_1, expand_assignment, store_expr,
	store_constructor_field, store_constructor, store_field,
	force_operand, safe_from_p, expand_expr_real_1, expand_increment):
	Likewise.
	* final.c (cleanup_subreg_operands, alter_subreg,
	get_mem_expr_from_op): Likewise.
	* flow.c (notice_stack_pointer_modification_1,
	init_propagate_block_info, insn_dead_p, mark_set_1, mark_used_regs):
	Likewise.
	* function.c (mark_temp_addr_taken, preserve_temp_slots,
	preserve_rtl_expr_result, put_var_into_stack, fixup_var_refs_1,
	optimize_bit_field, flush_addressof, purge_addressof_1,
	instantiate_decl, instantiate_virtual_regs_1, assign_parms,
	setjmp_protect, setjmp_protect_args, fix_lexical_addr,
	keep_stack_depressed): Likewise.
	* ifcvt.c (noce_try_cmove_arith, noce_try_abs, noce_operand_ok,
	noce_process_if_block, find_memory): Likewise.
	* integrate.c (subst_constants, allocate_initial_values): Likewise.
	* local-alloc.c (validate_equiv_mem_from_store, memref_referenced_p,
	update_equiv_regs): Likewise.
	* loop.c (scan_loop, prescan_loop, note_addr_stored, check_store,
	maybe_eliminate_biv_1, find_mem_in_note_1): Likewise.
	* optabs.c (expand_abs, emit_unop_insn): Likewise.
	* passes.c (rest_of_handle_final): Likewise.
	* postreload.c (reload_cse_simplify_set, reload_cse_simplify_operands,
	move2add_note_store): Likewise.
	* ra-build.c (detect_remat_webs): Likewise.
	* ra-debug.c (dump_static_insn_cost): Likewise.
	* ra-rewrite.c (slots_overlap_p, insert_stores): Likewise.
	* recog.c (validate_change, apply_change_group, cancel_changes,
	validate_replace_rtx_1, general_operand, register_operand,
	nonmemory_operand, push_operand, pop_operand, memory_operand,
	indirect_operand, asm_operand_ok, offsettable_memref_p,
	offsettable_nonstrict_memref_p, constrain_operands,
	store_data_bypass_p): Likewise.
	* reg-stack.c (subst_stack_regs_pat): Likewise.
	* regclass.c (record_operand_costs, scan_one_insn, record_reg_classes,
	copy_cost, reg_scan_mark_refs): Likewise.
	* regmove.c (optimize_reg_copy_3, stack_memref_p,
	combine_stack_adjustments_for_block): Likewise.
	* regrename.c (copyprop_hardreg_forward_1): Likewise.
	* reload.c (can_reload_into, push_reload, decompose, immune_p,
	find_reloads, find_reloads_address, find_reloads_address_1,
	reg_overlap_mentioned_for_reload_p, refers_to_mem_for_reload_p,
	find_equiv_reg): Likewise.
	* reload1.c (reload, eliminate_regs, eliminate_regs_in_insn,
	reload_as_needed, choose_reload_regs, emit_input_reload_insns,
	do_input_reload, emit_reload_insns, gen_reload, delete_output_reload,
	delete_address_reloads): Likewise.
	* resource.c (mark_referenced_resources): Likewise.
	* rtlanal.c (get_jump_table_offset, count_occurrences,
	reg_referenced_p, reg_set_p, set_of_1, set_noop_p,
	reg_overlap_mentioned_p, note_uses, replace_regs, nonzero_bits1,
	num_sign_bit_copies1): Likewise.
	* rtlhooks.c (gen_lowpart_general): Likewise.
	* sched-deps.c (sched_analyze_1, sched_analyze_2): Likewise.
	* sdbout.c (PARM_PASSED_IN_MEMORY, sdbout_symbol,
	sdbout_toplevel_data, sdbout_parms, sdbout_reg_parms,
	sdbout_global_decl): Likewise.
	* simplify-rtx.c (simplify_subreg): Likewise.
	* stmt.c (expand_asm_operands, expand_expr_stmt_value, expand_decl,
	expand_anon_union_decl, expand_end_case_type): Likewise.
	* unroll.c (calculate_giv_inc): Likewise.
	* var-tracking.c (stack_adjust_offset_pre_post,
	bb_stack_adjust_offset, track_expr_p, count_uses, add_uses,
	add_stores, compute_bb_dataflow, vt_get_decl_and_offset,
	vt_add_function_parameters): Likewise.
	* varasm.c (make_var_volatile, notice_global_symbol,
	assemble_external, decode_addr_const, mark_weak,
	default_encode_section_info): Likewise.

From-SVN: r83980
2004-07-01 12:52:53 +00:00
Richard Henderson
b79c52841b function.h (struct function): Remove x_function_call_count.
* function.h (struct function): Remove x_function_call_count.
        (function_call_count): Remove.
        * calls.c (expand_call): Don't set it.
        * integrate.c (copy_rtx_and_substitute): Likewise.

        * function.h (struct function): Remove x_cleanup_label.
        (cleanup_label): Remove.
        * stmt.c (expand_value_return): Don't use it.
        * function.c (free_after_compilation): Don't set it.
        (expand_function_start): Likewise.  Remove parms_have_cleanups arg.
        * cfgexpand.c (tree_expand_cfg): Update call.
        * tree.h (expand_function_start): Update decl.

From-SVN: r83966
2004-07-01 02:54:20 -07:00
Richard Henderson
e3b63af7b5 function.c (identify_blocks, [...]): Remove.
* function.c (identify_blocks, identify_blocks_1): Remove.
        * function.h (identify_blocks): Remove.
        * rtl.h (NOTE_INSN_BLOCK_BEG): Update comment.

From-SVN: r83961
2004-07-01 01:23:29 -07:00
Richard Henderson
4025c040c5 function.h (struct function): Remove x_whole_function_mode_p.
* function.h (struct function): Remove x_whole_function_mode_p.
        * c-decl.c (store_parm_decls): Don't set it.
        * tree-optimize.c (tree_rest_of_compilation): Likewise.
        * passes.c (rest_of_compilation): Don't check it.
        * stmt.c (expand_fixup): Likewise.
        * function.c (fixup_var_refs_insn): Remove unused variable.
fortran/
        * trans-decl.c (gfc_generate_function_code): Don't set
        x_whole_function_mode_p.
        (gfc_generate_constructors): Likewise.

From-SVN: r83947
2004-06-30 18:12:19 -07:00
Richard Henderson
6a0bec2ce1 tree.h (immediate_size_expand): Delete.
* tree.h (immediate_size_expand): Delete.
        * stor-layout.c (immediate_size_expand): Delete.
        (variable_size): Don't look at it.
        * c-decl.c (push_parm_decl): Don't frob immediate_size_expand.
        (start_function): Likewise.
        * cfgexpand.c (construct_exit_block): Likewise.
        * function.c (init_function_start, expand_function_end): Likewise.
        * tree-optimize.c (tree_rest_of_compilation): Likewise.
cp/
        * decl.c (start_preparsed_function): Don't set immediate_size_expand.
        * method.c (use_thunk): Likewise.
fortran/
        * trans-decl.c (gfc_generate_function_code): Don't set
        immediate_size_expand.
        (gfc_generate_constructors): Likewise.

From-SVN: r83946
2004-06-30 17:38:38 -07:00
Richard Henderson
521d8de07f function.h (struct function): Remove x_last_parm_insn, inl_last_parm_insn.
* function.h (struct function): Remove x_last_parm_insn,
        inl_last_parm_insn.
        (last_parm_insn): Remove.
        * function.c (free_after_compilation): Don't clear them.
        (fixup_var_refs_insn, assign_parms): Don't set them.

From-SVN: r83939
2004-06-30 16:58:18 -07:00
Richard Henderson
0671a8a0b9 * function.c, rtl.h (get_first_nonparm_insn): Remove.
From-SVN: r83936
2004-06-30 15:30:30 -07:00
Per Bothner
3c20847b83 Conditionally compile support for --enable-mapped_location.
* basic-block.h (struct edge_def):  Use new source_locus typedef.
	* c-common.c (fname_decl):  Update save/clear/store of input_location.
	(c_do_switch_warnings):  Update for USE_MAPPED_LOCATION case.
	* c-decl.c:  Likewise.
	* c-dump.c (dump_stmt):  Likewise.
	* c-gimplify.c (c-gimplify.c):  Generalize using SET_EXPR_LOCATION.
	* c-lex.c (cb_line_change):  If USE_MAPPED_LOCATION use token's	src_loc
	to set input_location direction, rather than using linemap_lookup.
	(fe_file_change, cb_def_pragma):  Again use source_location directly.
	* c-opts.c (saved_lineno):  Remove static variable.
	(c_common_post_options, c_common_init):  Don't bothner to save,
	clear and restore input_Location - now handled by lang_dependent_init.
	* function.c (init_function_start):  Use new DECL_IS_BUILTIN macro.
	* xcoffout.c (xcoff_assign_fundamental_type_number):  Likewise.

From-SVN: r83919
2004-06-30 11:05:07 -07:00
Alan Modra
afc066ef35 function.c (assign_parms): Don't abort with zero size stack parm failing the PARM_BOUNDARY check.
* function.c (assign_parms): Don't abort with zero size stack
	parm failing the PARM_BOUNDARY check.

From-SVN: r83840
2004-06-29 13:24:07 +09:30
Richard Henderson
a926b253fc re PR middle-end/16026 (ICE in function.c:4804, assign_parms, when -mpowerpc64 & half-word operation)
PR middle-end/16026
        * function.c (assign_parms): Don't abort for overaligned PARALLEL.

From-SVN: r83525
2004-06-22 16:54:46 -07:00
Richard Kenner
44de5aeb00 alias.c (adjust_offset_for_component_ref): Use component_ref_field_offset.
* alias.c (adjust_offset_for_component_ref): Use
	component_ref_field_offset.
	* c-decl.c (build_array_declarator): Add news args for ARRAY_REF.
	* c-gimplify.c (gimplify_expr_stmt): Use alloc_stmt_list.
	(gimplify_decl_stmt): Call gimplify_type_sizes for type.
	For decl, call gimplify_one_sizepos and use statement list.
	(gimplify_compound_literal_expr): New arg PRE_P.
	Add statement to PRE_P list and return DECL.
	(c_gimplify_expr, case COMPOUND_LITERAL_EXPR): Add arg to
	gimplify_compound_literal_expr.
	* c-tree.h (getdecls): Deleted.
	* c-typeck.c (build_component_ref): Add operand for COMPONENT_REF.
	(build_array_ref): Add two operands for ARRAY_REF.
	(build_unary_op): Set TREE_INVARIANT and TREE_CONSTANT for
	COMPOUND_LITERAL_EXPR.
	* coverage.c (tree_coverage_counter_ref): Add new operands
	for ARRAY_REF.
	* emit-rtl.c (component_ref_for_mem_expr): Add new operand
	for COMPONENT_REF.
	(set_mem_attributes_minus_bitpos): Use array_ref_low_bound
	and array_ref_element_size.
	(widen_memory_access):Use component_ref_field_offset.
	* explow.c (update_nonlocal_goto_save_area): Add two operands
	for ARRAY_REF.
	* expr.c (array_ref_element_size, array_ref_low_bound): New functions.
	(component_ref_field_offset): Likewise.
	(get_inner_reference): Use them.
	(expand_expr_real_1, case ARRAY_REF): Use array_ref_low_bound.
	* fold-const.c (fold, case EQ_EXPR): Properly handle DECL_SIZE.
	(fold_read_from_constant_string): Use array_ref_low_bound.
	Verify that result is a character type.
	(build_fold_indirect_ref): Add two operands for ARRAY_REF.
	* function.c (expand_function_start): Likewise.
	* gimple-low.c (expand_var_p): Delete duplicated line.
	* gimplify.c: Add static decls for local functions.
	(cgraph.h): Now included.
	(create_tmp_var): Remove check for ARRAY_TYPE.
	(copy_if_shared_r): Look at bounds and sizes of types.
	(build_and_jump): Return alloc_stmt_list instead of build_empty_stmt.
	(gimplify_exit_expr, shortcut_cond_expr): Likewise.
	(gimplify_save_expr, gimple_push_cleanup): Likewise.
	(gimplify_init_constructor): Likewise.
	WANT_VALUE now bool.
	If empty list with no result wanted, return GS_UNHANDLED.
	Add additional operands for ARRAY_REF and COMPONENT_REF.
	(canonicalize_component_ref): Convert to &array[L].
	(gimplify_array_ref_to_plus): Use array_ref_element_size and
	array_ref_lower_bound.
	(build_addr_expr_with_type, build_addr_expr): New functions.
	(gimplify_compound_lval): WANT_LVALUE now bool.
	Major rework to allow handle_component_p and initialize and
	gimplify new operands for ARRAY_REF, ARRAY_RANGE_REF, and
	COMPONENT_REF.
	(gimplify_array_ref): Deleted.
	(gimplify_self_mod_expr): WANT_VALUE now bool.
	(gimplify_modify_expr): Gimplify to_p and from_p later.
	Factor out code into gimplify_modify_expr_rhs and call twice.
	Move variable-size code earlier and handle PLACEHOLDER_EXPR.
	(gimplify_modify_expr_rhs, gimplify_variable_sized_compare): New fns.
	(gimplify_addr_expr, case VIEW_CONVERT_EXPR): New case.
	(gimplify_expr, case ARRAY_REF): Delete special case.
	Instead handle like COMPONENT_REF; also do ARRAY_RANGE_REF,
	IMAGPART, and REALPART the same way.
	(gimplify_expr, case VIEW_CONVERT_EXPR): New case.
	(gimplify_expr): Call gimplify_variable_sized_compare if applicable.
	Call alloc_stmt_list instead of build_empty_stmt.
	Deal with _REF that's volatile.
	(gimplify_type_sizes, gimplify_one_sizepos): New functions.
	(unshare_body, unvisit_body): New functions.
	(gimplify_body): Call them.
	* stmt.c (expand_stack_alloc): Don't expand TYPE_MAX_VALUE.
	* stor-layout.c (get_pending_sizes): Don't change SAVE_EXPR_CONTEXT.
	* tree-alias-common.c (get_alias_var): Also skip ARRAY_RANGE_REF.
	* tree-cfg.c (tree_node_can_be_shared): Treat ARRAY_RANGE_REF
	like ARRAY_REF.
	(verify_expr, case ADDR_EXPR): Use handled_component_p.
	* tree-dfa.c (get_virtual_var): Likewise.
	* tree-dump.c (dequeue_and_dump, case COMPONENT_REF, ARRAY_REF):
	New cases to dump new operands; likewise for ARRAY_RANGE_REF.
	* tree-eh.c (tree_could_trap, case ARRAY_RANGE_REF): Like ARRAY_REF.
	* tree-gimple.c (is_gimple_addr_expr_arg): Add ARRAY_RANGE_REF
	and INDIRECT_REF.
	(get_base_address): Use handled_component_p.
	* tree-gimple.h (gimplify_type_sizes, gimplify_one_sizepos): New.
	* tree-line.c (walk_tree): Walk more things for types and decls.
	* tree-mudflap.c (mf_build_check_statement_for): Add new operands
	for ARRAY_REF and COMPONENT_REF.
	(mx_xform_derefs_1): Clean up usage of decl sizes.
	* tree-nested.c (build_addr): Use handled_component_p.
	(walk_stmts, case CATCH_EXPR): Add missing "break".
	(get_static_chain, get_frame_field): Add new operand for COMPONENT_REF.
	(finalize_nesting_tree_1): Likewise.
	(convert_nonlocal_reference, case ARRAY_RANGE_REF): Like ARRAY_REF
	and process additional operands.
	(convert_local_reference): Likewise.
	* tree-outof-ssa.c (discover_nonconstant_array_refs_r): Treat
	ARRAY_RANGE_REF similarly to ARRAY_REF.
	* tree-pretty-print.c (dump_generic_node, case QUAL_UNION_TYPE): Handle
	like RECORD_TYPE.
	(dump_generic_node, case COMPONENT_REF): Print offset operand.
	(dump_generic_node, case ARRAY_RANGE_REF): Treat like ARRAY_REF
	and print lower bound and element size for both.
	(op_prio, case ARRAY_RANGE_REF): Like ARRAY_REF.
	* tree-sra.c (csc_build_component_ref): Add new operand.
	(scalarize_call_expr): Use get_base_address.
	* tree-ssa-ccp.c (widen_bitfield): Clean up size handling.
	(maybe_fold_offset_to_array_ref): Rework to handle input having an
	ARRAY_REF, refine handling of lower bound, and add new operands
	for ARRAY_REF.
	(maybe_fold_to_component_ref): Add new operand for COMPONENT_REF.
	(maybe_fold_stmt_indirect): Only fold *&B to B if types match.
	(maybe_fold_stmt_addition): Only handle constant lower bound.
	* tree-ssa-operands.c (get_expr_operands): Minor rearrangements.
	Treat ARRAY_REF and ARRAY_RANGE_REF the same; look at extra operands.
	Look at new offset operand of COMPONENT_REF.
	* tree-ssa.c (set_is_used): Use handled_component_p.
	* tree.c (substitute_in_expr, case COMPONENT_REF): Add new operand.
	(stabilize_reference, case COMPONENT_REF): Likewise.
	(stabilize_reference, case ARRAY_RANGE_REF, ARRAY_REF): Similarly.
	(recompute_tree_invariant_for_addr_expr): Completely rework to
	be more precise.  Also set TREE_SIDE_EFFECTS.
	(build1_stat, case ARRAY_EXPR): Don't handle TREE_SIDE_EFFECTS here.
	(build2_stat, build3_stat, build4_stat): For references,
	propagate TREE_THIS_VOLATILE.
	(get_unwidened): Add new operand for COMPONENT_REF.
	(get_narrower): Likewise; use host_integerp for DECL_SIZE.
	* tree.def (COMPONENT_REF): Add new operand.
	(ARRAY_REF, ARRAY_RANGE_REF): Add two new operands.
	* tree.h (array_ref_element_size, array_ref_low_bound): New decls.
	(component_ref_field_offset): Likewise.
	* config/alpha/alpha.c (alpha_va_start): Add new op for COMPONENT_REF.
	(alpha_gimplify_va_arg): Likewise.
	* config/i386/i386.c (ix86_va_start, ix86_gimplify_va_arg): Likewise.
	* config/i860/i860.c (i860_va_start, i860_va_arg): Likewise.
	* config/iq2000/iq2000.c (iq2000_va_arg): Likewise.
	* config/mips/mips.c (mips_va_start, mips_va_arg): Likewise.
	* config/rs6000/rs6000.c (rs6000_va_start, rs6000_gimplify_va_arg):
	Likewise.
	* config/s390/s390.c (s390_va_start, s390_gimplify_va_arg): Likewise.
	* config/sh/sh.c (sh_va_start, sh_va_arg): Likewise.
	* config/stormy16/stormy16.c (xstormy1_expand_builin_va_start):
	Likewise.
	(xstormy16_expand_builtin_va_arg): Likewise.
	* config/xtensa/xtensa.c (xtensa_va_start, xtensa_va_arg): Likewise.

	* cp/call.c (build_vfield_ref): Add new operand for COMPONENT_REF.
	(build_new_method_call): Likewise.
	* cp/decl.c (local_variable_p_walkfn): Don't walk into types.
	* cp/decl2.c (grok_array_decl): Add new operands for ARRAY_REF.
	(build_anon_union_vars): Add new operand for COMPONENT_REF.
	* cp/init.c (buld_new): Add new operand for ARRAY_REF.
	* cp/method.c (do_build_copy_constructor): New op for COMPONENT_REF.
	(do_build_assign_ref): Likewise.
	* cp/parser.c (cp_parser_direct_new_declarator): Add new operands
	for ARRAY_REF.
	(cp_parser_direct_declarator): Likewise.
	* cp/pt.c (tsubst): Likewise.
	(tsubst_copy, tsubst_copy_and_build): Likewise; also add new operand
 	for COMPONENT_REF.
	* cp/semantics.c (finish_non_static_data_member): Add new operand
	for COMPONENT_REF.
	* cp/typeck.c (build_class_member_access_expr): Likewise.
	(build_class_member_access_expr, finish_class_member_access_expr):
	Likewise.
	(build_ptrmemfunc_access_expr): Likewise.
	(build_array_ref): Add new operands for ARRAY_REF.
	* cp/typeck2.c (split_nonconstant_init_1): Likewise; COMPONENT_REF too.
	* cp/tree.c (count_trees_r, no_linkage_helper): Don't walk in types.

	* fortran/f95-lang.c (LANG_HOOKS_GIMPLE_BEFORE_INLINING): Deleted.
	* fortran/trans-array.c (gfc_conv_descriptor_data): Add operand
	for COMPONENT_REF.
	(gfc_conv_descriptor_offset, gfc_conv_descriptor_dtype): Likewise.
	(gfc_conv_descriptor_dimension, gfc_conv_descriptor_stride): Likewise.
	(gfc_conv_descriptor_lbound, gfc_conv_descriptor_ubound): Likewise.
	* fortran/trans-common.c (create_common): Likewise.
	* fortran/trans-expr.c (gfc_conv_component_ref): Likewise.
	* fortran/trans-io.c (set_parameter_value): Likewise.
	(set_parameter_ref, set_string, set_flag, io_result): Likewise.
	(transfer_expr): Likewise.
	* fortran/trans-decl.c (gfc_trans_auto_character_variable):
	Set up to get DECL_SIZE and DECL_SIZE_UNIT gimplified.
	(gfc_simplify_function): New function.
	(gfc_generate_function-code): Properly handle nested functions.
	* fortran/trans.c (gfc_build_array_ref): Add two new operands
	for ARRAY_REF.

	* java/class.c (build_class_ref): Add new operand for COMPONENT_REF.
	(build_static_field_ref): Likewise and add new operands for ARRAY_REF.
	* java/constants.c (build_ref_from_constant_pool): Likewise.
	* java/expr.c (build_java_array_length_access): Likewise.
	(build_get_class, build_field_ref, build_known_method_ref): Likewise.
	(invoke_build_dtable, build_invokevirtual): Likewise.
	(build_invokeinterface, java_expand_expr): Likewise.
	(emit_init_test_initialization): Likewise.
	* java/java-gimplify.c (java_gimplify_new_array_init): Likewise.
	* java/parse.y (make_qualifed_name, build_array_ref): Likewise.

	* objc/ojbc-act.c (generate_static_references): Add additional
	operands to ARRAY_REF.
	(generate_strings, build_method_prototype_list_template): Likewise.
	(generate_protocol_list): Likewise.

From-SVN: r83474
2004-06-21 23:07:05 -04:00
Richard Henderson
ebca59c355 re PR target/15941 (new fails gcc.dg/compat/struct-by-value-11 and gcc.dg/compat/struct-by-value-1)
PR target/15941
	* function.c (assign_parms): If not padding upward or intentionally
	forcing upward padding, take offset_rtx into account when determining
	the alignment for stack_parm.

From-SVN: r83396
2004-06-19 19:24:56 +00:00
Jan Hubicka
eb4e1c013c function.c (free_after_compilation): Do not free computed_goto_common*.
* function.c (free_after_compilation): Do not free computed_goto_common*.
	* function.h (struct function): Kill computed_goto_common*.
	* stmt.c (expand_computed_goto): Do not commonize the computed gotos.
	* tree-cfg.c (disband_implicit_edges): Do not forward across the
	commonized computed goto.

From-SVN: r83393
2004-06-19 18:52:04 +00:00
Paolo Bonzini
fd743bc109 emit-rtl.c (unshare_all_rtl_1): New name of unshare_all_rtl.
2004-06-18  Paolo Bonzini  <bonzini@gnu.org>

	* emit-rtl.c (unshare_all_rtl_1): New name of unshare_all_rtl.
	(unshare_all_rtl_again): Call unshare_all_rtl_1.
	(unshare_all_rtl): New.
	* function.c (instantiate_virtual_regs): Remove parameters.
	* function.h (instantiate_virtual_regs): Add prototype.
	* rtl.h (unshare_all_rtl): Add prototype.
	* tree.h (instantiate_virtual_regs, unshare_all_rtl): Remove
	prototype.
	* passes.c: Remove assertions on the parameters to
	rest_of_handle_* functions.  Remove the parameters to
	the functions, replacing decl with current_function_decl
	and insns with get_insns ().

From-SVN: r83341
2004-06-18 07:33:08 +00:00
Jerry Quinn
f8cfc6aa07 alias.c (record_set, [...]): Use REG_P.
2004-06-15  Jerry Quinn  <jlquinn@optonline.net>

	* alias.c (record_set, record_base_value, canon_rtx, get_addr,
	nonlocal_mentioned_p_1, init_alias_analysis): Use REG_P.
	* bt-load.c (find_btr_reference, insn_sets_btr_p, note_btr_set):
	Likewise.
	* builtins.c (expand_builtin_setjmp, expand_builtin_apply,
	expand_builtin_mathfn, expand_builtin_strlen, expand_builtin_memcmp,
	expand_builtin_strcmp, expand_builtin_strncmp,
	expand_builtin_frame_address): Likewise.
	* caller-save.c (mark_set_regs, add_stored_regs, mark_referenced_regs,
	insert_one_insn): Likewise.
	* calls.c (prepare_call_address, precompute_register_parameters,
	precompute_arguments, expand_call, emit_library_call_value_1): Likewise.
	* cfganal.c (flow_active_insn_p): Likewise.
	* combine.c (set_nonzero_bits_and_sign_copies, can_combine_p,
	combinable_i3pat, try_combine, find_split_point, COMBINE_RTX_EQUAL_P,
	subst, combine_simplify_rtx, simplify_if_then_else, simplify_set,
	make_extraction, recog_for_combine, gen_lowpart_for_combine,
	simplify_comparison, record_dead_and_set_regs_1,
	record_dead_and_set_regs, record_promoted_value,
	check_promoted_subreg, get_last_value_validate, get_last_value,
	reg_dead_at_p_1, reg_bitfield_target_p, distribute_notes,
	unmentioned_reg_p_1): Likewise.
	* conflict.c (mark_reg): Likewise.
	* cse.c (HASH, COST, COST_IN, approx_reg_cost_1, notreg_cost,
	mention_regs, insert_regs, lookup, lookup_for_remove, insert,
	merge_equiv_classes, flush_hash_table, invalidate,
	remove_invalid_refs, remove_invalid_subreg_refs, rehash_using_reg,
	invalidate_for_call, use_related_value, canon_hash, exp_equiv_p,
	cse_rtx_varies_p, canon_reg, find_best_addr, fold_rtx, equiv_constant,
	record_jump_cond, cse_insn, addr_affects_sp_p,
	invalidate_from_clobbers, cse_process_notes, cse_around_loop,
	cse_set_around_loop, count_reg_usage, set_live_p, cse_change_cc_mode,
	cse_cc_succs, cse_condition_code_reg): Likewise.
	* cselib.c (cselib_reg_set_mode, rtx_equal_for_cselib_p,
	cselib_lookup, cselib_invalidate_regno, cselib_invalidate_rtx,
	cselib_record_set, cselib_record_sets): Likewise.
	* dbxout.c (dbxout_symbol_location, dbxout_parms, dbxout_reg_parms,
	dbxout_block): Likewise.
	* df.c (df_ref_record, df_def_record_1, df_uses_record): Likewise.
	* dojump.c (do_jump): Likewise.
	* dwarf2out.c (dwarf2out_frame_debug_expr, is_pseudo_reg,
	is_based_loc, rtl_for_decl_location): Likewise.
	* emit-rtl.c (set_reg_attrs_for_parm, set_decl_rtl,
	set_decl_incoming_rtl, mark_user_reg): Likewise.
	* explow.c (copy_all_regs, copy_all_regs, memory_address, force_reg,
	copy_to_suggested_reg, allocate_dynamic_stack_space,
	probe_stack_range, hard_function_value): Likewise.
	* expmed.c (store_bit_field, store_fixed_bit_field,
	store_split_bit_field, extract_bit_field, extract_fixed_bit_field,
	extract_split_bit_field, expand_divmod, emit_store_flag_force):
	Likewise.
	* expr.c (convert_move, convert_modes,
	block_move_libcall_safe_for_call_parm, emit_group_load, use_reg,
	use_group_regs, emit_move_insn, emit_move_insn_1,
	compress_float_constant, push_block, emit_single_push_insn,
	emit_push_insn, get_subtarget, expand_assignment, store_expr,
	store_constructor, store_field, force_operand, safe_from_p,
	expand_expr_real_1, expand_increment, do_store_flag, do_tablejump):
	Likewise.
	* final.c (profile_function, final_scan_insn, alter_subreg,
	get_mem_expr_from_op, output_asm_operand_names, output_operand,
	only_leaf_regs_used, leaf_renumber_regs_insn): Likewise.
	* flow.c (verify_wide_reg_1, mark_regs_live_at_end,
	find_regno_partial, propagate_one_insn, init_propagate_block_info,
	insn_dead_p, libcall_dead_p, mark_set_1, not_reg_cond,
	attempt_auto_inc, find_auto_inc, mark_used_regs,
	count_or_remove_death_notes_bb): Likewise.
	* function.c (find_temp_slot_from_address, update_temp_slot_address,
	preserve_temp_slots, put_var_into_stack, fixup_var_refs_insn,
	fixup_var_refs_1, fixup_stack_1, optimize_bit_field, flush_addressof,
	put_addressof_into_stack, purge_addressof_1, insns_for_mem_walk,
	purge_single_hard_subreg_set, instantiate_decl,
	instantiate_virtual_regs_1, aggregate_value_p, assign_parms,
	promoted_input_arg, setjmp_vars_warning, setjmp_args_warning,
	setjmp_protect, setjmp_protect_args, fix_lexical_addr,
	expand_function_start, diddle_return_value, clobber_return_register,
	expand_function_end, keep_stack_depressed, handle_epilogue_set,
	update_epilogue_consts): Likewise.
	* genemit.c (gen_exp, gen_insn): Likewise.
	* genrecog.c (make_insn_sequence): Likewise.
	* global.c (global_conflicts, expand_preferences, mark_reg_store,
	mark_reg_conflicts, set_preference, reg_becomes_live,
	build_insn_chain, mark_reg_change): Likewise.
	* haifa_sched.c (CONST_BASED_ADDRESS_P, find_set_reg_weight):
	Likewise.
	* ifcvt.c (noce_try_abs, noce_get_condition, noce_process_if_block):
	Likewise.
	* integrate.c (copy_rtx_and_substitute, try_constants,
	subst_constants, mark_stores, allocate_initial_values): Likewise.
	* jump.c (reversed_comparison_code_parts, delete_prior_computation,
	delete_computation, rtx_renumbered_equal_p, true_regnum,
	reg_or_subregno): Likewise.
	* lcm.c (reg_dies, reg_becomes_live): Likewise.
	* local-alloc.c (validate_equiv_mem_from_store, validate_equiv_mem,
	update_equiv_regs, no_equiv, block_alloc, combine_regs, reg_is_set,
	wipe_dead_reg, no_conflict_p): Likewise.
	* loop-iv.c (simple_reg_p, simple_set_p, kill_sets,
	iv_get_reaching_def, iv_analyze_biv, altered_reg_used, mark_altered,
	simple_rhs_p, simplify_using_assignment, implies_p): Likewise.
	* loop.c (scan_loop, combine_movables, rtx_equal_for_loop_p,
	move_movables, note_set_pseudo_multiple_uses, consec_sets_invariant_p,
	find_single_use_in_loop, count_one_set, loop_bivs_init_find,
	loop_givs_rescan, check_insn_for_bivs, check_insn_for_givs,
	valid_initial_value_p, simplify_giv_expr, consec_sets_giv,
	loop_regs_update, check_dbra_loop, maybe_eliminate_biv,
	maybe_eliminate_biv_1, record_initial, update_reg_last_use,
	canonicalize_condition, loop_regs_scan, load_mems, try_copy_prop,
	try_swap_copy_prop): Likewise.
	* optabs.c (expand_binop, expand_vector_binop, expand_vector_unop,
	expand_abs, emit_no_conflict_block, emit_libcall_block, expand_float):
	Likewise.
	* postreload.c (reload_cse_simplify, reload_cse_simplify_set,
	reload_cse_simplify_operands, reload_combine,
	reload_combine_note_store, reload_combine_note_use,
	reload_cse_move2add, move2add_note_store): Likewise.
	* print-rtl.c (print_rtx): Likewise.
	* ra-build.c (copy_insn_p, remember_move, init_one_web_common,
	contains_pseudo, handle_asm_insn): Likewise.
	* ra-debug.c (ra_print_rtx_object, dump_constraints,
	dump_static_insn_cost): Likewise.
	* ra-rewrite.c (slots_overlap_p, emit_colors,
	remove_suspicious_death_notes): Likewise.
	* recog.c (validate_replace_rtx_1, find_single_use_1, find_single_use,
	register_operand, scratch_operand, nonmemory_operand,
	constrain_operands): Likewise.
	* reg-stack (check_asm_stack_operands, remove_regno_note,
	emit_swap_insn, swap_rtx_condition, subst_stack_regs_pat,
	subst_asm_stack_regs): Likewise.
	* regclass.c (scan_one_insn, record_reg_classes, copy_cost,
	record_address_regs, reg_scan_mark_refs): Likewise.
	* regmove.c (discover_flags_reg, replacement_quality,
	copy_src_to_dest, reg_is_remote_constant_p, regmove_optimize,
	fixup_match_1): Likewise.
	* regrename.c (note_sets, clear_dead_regs, build_def_use, kill_value,
	kill_set_value, copyprop_hardreg_forward_1): Likewise.
	* reload.c (MATCHES, push_secondary_reload, find_reusable_reload,
	reload_inner_reg_of_subreg, can_reload_into, push_reload,
	combine_reloads, find_dummy_reload, hard_reg_set_here_p,
	operands_match_p, decompose, find_reloads, find_reloads_toplev,
	find_reloads_address, subst_indexed_address, find_reloads_address_1,
	find_reloads_subreg_address, find_replacement,
	refers_to_regno_for_reload_p, reg_overlap_mentioned_for_reload_p,
	refers_to_mem_for_reload_p, find_equiv_reg, regno_clobbered_p): Likewise.
	* reload1.c (replace_pseudos_in, reload, calculate_needs_all_insns,
	find_reg, delete_dead_insn, alter_reg, eliminate_regs,
	elimination_effects, eliminate_regs_in_insn, scan_paradoxical_subregs,
	forget_old_reloads_1, reload_reg_free_for_value_p, choose_reload_regs,
	emit_input_reload_insns, emit_output_reload_insns, do_input_reload,
	do_output_reload, emit_reload_insns, gen_reload,
	delete_address_reloads_1, inc_for_reload): Likewise.
	* reorg.c (update_reg_dead_notes, fix_reg_dead_note,
	update_reg_unused_notes, fill_slots_from_thread): Likewise.
	* resource.c (update_live_status, mark_referenced_resources,
	mark_set_resources, mark_target_live_regs): Likewise.
	* rtlanal.c (nonzero_address_p, get_jump_table_offset,
	global_reg_mentioned_p_1, reg_mentioned_p, reg_referenced_p,
	reg_set_p, set_noop_p, find_last_value, refers_to_regno_p,
	note_stores, dead_or_set_p, dead_or_set_regno_p, find_regno_note,
	find_reg_fusage, find_regno_fusage, replace_regs, regno_use_in,
	parms_set, find_first_parameter_load, keep_with_call_p,
	hoist_test_store, hoist_update_store, address_cost, nonzero_bits1,
	num_sign_bit_copies1): Likewise.
	* rtlhooks.c (gen_lowpart_general): Likewise.
	* sched-deps.c (deps_may_trap_p, sched_analyze_1, sched_analyze_insn,
	sched_analyze): Likewise.
	* sched-rgn.c (check_live_1, update_live_1, sets_likely_spilled_1):
	Likewise.
	* sdbout.c (sdbout_symbol, sdbout_parms, sdbout_reg_parms): Likewise.
	* simplify-rtx.c (simplify_replace_rtx, simplify_unary_operation,
	simplify_binary_operation, simplify_const_relational_operation,
	simplify_subreg): Likewise.
	* stmt.c (decl_conflicts_with_clobbers_p, expand_asm_operands,
	expand_end_stmt_expr, expand_return, expand_decl,
	expand_anon_union_decl): Likewise.
	* unroll.c (precondition_loop_p, calculate_giv_inc, copy_loop_body,
	find_splittable_regs, find_splittable_givs, find_common_reg_term,
	loop_iterations): Likewise.
	* var-tracking.c (variable_union, variable_part_different_p,
	variable_different_p, count_uses, add_uses, add_stores,
	compute_bb_dataflow, set_variable_part, delete_variable_part,
	emit_notes_in_bb, vt_get_decl_and_offset, vt_add_function_parameters):
	Likewise.
	* varasm.c (assemble_variable): Likewise.

From-SVN: r83195
2004-06-15 18:02:40 +00:00
Eric Botcazou
4d7694fc06 function.c (fixup_var_refs): Also adjust the start of sequence after fixing up the insns.
* function.c (fixup_var_refs): Also adjust the start of sequence
	after fixing up the insns.

Co-Authored-By: Olivier Hainque <hainque@act-europe.fr>

From-SVN: r83166
2004-06-15 06:16:48 +00:00
J"orn Rennecke
623a66fa85 basic-block.h (could_fall_through): Declare.
* basic-block.h (could_fall_through): Declare.
	* cfganal.c (can_fallthru): Succeed if the target is EXIT_BLOCK_PTR.
	Fail if the source already has a fallthrough edge to the exit
	block pointer.
	(could_fall_through): New function.
	* cfgbuild.c (make_edges): Check if we already have a fallthrough
	edge to the exit block pointer.
	* cfglayout.c (fixup_fallthru_exit_predecessor): Check that it is
	not called before reload has completed.
	Handle special case of first block having a fall-through exit edge.
	(cfg_layout_finalize): Don't call it before reload or if we have
	rtl epilogues.
	(fixup_reorder_chain): A fall through to the exit block does not
	require the block to come last.  Add sanity checks.
	* cfgrtl.c (rtl_split_edge): Add special handling of fall through
	edges to the exit block.
	* function.c (cfglayout.h): #include.
	(thread_prologue_and_epilogue_insns): If we have neither return nor
	epilogue, but a fall through to the exit block from mid-function,
	force a non-fall-through exit.
	* Makefile.in (function.o): Depend on CFGLAYOUT_H.

From-SVN: r83089
2004-06-14 13:09:08 +01:00
Richard Henderson
e66e7856e8 re PR middle-end/15228 (useless copies of floating point operands)
PR middle-end/15228
        * function.c (assign_parms): Always set_mem_align with the computed
        FUNCTION_ARG_BOUNDARY.  Don't clear stack_parm if !STRICT_ALIGNMENT.

From-SVN: r82867
2004-06-09 16:52:13 -07:00
Steven Bosscher
6ce2bcb71c basic-block.c (tail_recursion_label_list): Don't declare.
* basic-block.c (tail_recursion_label_list): Don't declare.
	(CLEANUP_PRE_SIBCALL): Remove.  Renumber the other CLEANUP_*
	accordingly.
	* cfgbuild.c (find_label_refs): Remove.
	(find_basic_blocks_1): Don't handle CALL_PLACEHOLDER insns.
	* cfgcleanup.c (tail_recursion_label_p): Remove.
	(merge_blocks_move): Do not check for tail recursion.
	(try_optimize_cfg): Likewise.
	(cleanup_cfg): Never handle CLEANUP_PRE_SIBCALL.
	* cfgrtl.c (tail_recursion_label_list): Remove.
	* except.c (remove_unreachable_regions): Don't handle
	CALL_PLACEHOLDER insns.
	(convert_from_eh_region_ranges_1, can_throw_internal,
	can_throw_external): Likewise.
	* function.c (free_after_compilation): Don't clear
	x_tail_recursion_label.
	(fixup_var_refs_insns): Don't handle CALL_PLACEHOLDER insns.
	(identify_blocks_1): Don't recurse for CALL_PLACEHOLDER insns.
	(reorder_blocks_1): Likewise.
	* function.h (struct function): Remove x_tail_recursion_label
	member.  Don't define tail_recursion_label.
	* jump.c (mark_all_labels): Don't handle CALL_PLACEHOLDER insns.
	* print-rtl.c (print_rtx): Likewise.
	* rtl.def (CALL_PLACEHOLDER): Remove.
	* rtl.h (sibcall_use_t): Remove enum.
	(optimize_sibling_and_tail_recursive_calls,
	replace_call_placeholder): Remove function prototypes.
	* stmt.c (tail_recursion_args): Remove.
	(optimize_tail_recursion): Remove.
	(expand_return): Don't check for possible tail recursion.
	* tree.h (optimize_tail_recursion): Remove prototype.

From-SVN: r82597
2004-06-03 12:07:47 +00:00
Eric Botcazou
95c73b23dc function.c (walk_fixup_memory_subreg): New parameter 'var'.
* function.c (walk_fixup_memory_subreg): New parameter 'var'.
	Call fixup_memory_subreg only if the MEM is equal to 'var'.
	Adjust recursive calls to self.
	(fixup_var_refs_insn): Pass 'var' to walk_fixup_memory_subreg.

From-SVN: r82555
2004-06-01 19:08:01 +00:00
Richard Henderson
7e14028056 re PR tree-optimization/15454 (tree-ccp generates wrong code for nested functions)
PR 15454
        * tree-nested.c (get_chain_decl): Create a PARM_DECL by hand.
        * function.c (expand_function_start): Expand static_chain_decl by hand.
        * gimplify.c (create_tmp_var_name): Export.
        * tree-gimple.h (create_tmp_var_name): Declare.
	* gcc.c-torture/execute/20040520-1.c: New.

From-SVN: r82064
2004-05-20 10:37:02 -07:00
Zdenek Dvorak
0aea6467d5 Multiple fixes: PRs 14692, 15274 and 15463
PR c++/15463
	* loop-iv.c (iv_number_of_iterations):  Use trunc_int_for_mode on
	result of inverse.

	PR rtl-optimization/15274
	* loop-iv.c (determine_max_iter, shorten_into_mode,
	iv_number_of_iterations): Handle constants correctly.
	* rtl.h (get_mode_bounds): Declaration changed.
	* stor-layout.c (get_mode_bounds): Return a constant suitable for
	the target mode.

	PR rtl-optimization/14692
	* loop-unswitch.c (may_unswitch_on): Try folding the result.
	(unswitch_single_loop): Work correctly when may_unswitch_on
	returns a folded constant.

	* loop-iv.c (implies_p): Handle A < B ==> A + 1 <= B.
	* simplify-rtx.c (simplify_const_relational_operation): Optimize
	comparisons with mode bounds.

	* function.c (struct temp_slot): Add new field prev.
	(free_after_compilation, init_temp_slots): Free new fields.
	(cut_slot_from_list, insert_slot_to_list,
	temp_slots_at_level, max_slot_level, move_slot_to_level,
	make_slot_available): New functions.
	(assign_stack_temp_for_type, combine_temp_slots,
	find_temp_slot_from_address, preserve_temp_slots,
	preserve_rtl_expr_result, free_temp_slots,
	free_temps_for_rtl_expr, pop_temp_slots): Work with
	the new structure of lists.
	(mark_all_temps_used): Removed.
	* function.h (struct function): Field x_temp_slots
	replaced by x_used_temp_slots and x_avail_temp_slots.
	(temp_slots): Replaced by ...
	(used_temp_slots, avail_temp_slots): New.
	* tree.h (mark_all_temps_used): Declaration removed.

	* loop-iv.c (mark_single_set, get_biv_step_1, iv_analyze,
	simplify_using_assignment): Take the expression out of
	the expr_list wrapper.

	* loop-iv.c (iv_number_of_iterations): Improve clasification of
	infinite loops.

From-SVN: r82028
2004-05-19 17:53:45 +00:00
Diego Novillo
6de9cd9a88 Merge tree-ssa-20020619-branch into mainline.
From-SVN: r81764
2004-05-13 02:41:07 -04:00
Eric Botcazou
cfa29a4cc9 re PR middle-end/14988 (Analysis of ACATS cxg2006 failures at -O1)
PR middle-end/14988
	* function.c (assign_stack_local_1): Use BITS_PER_UNIT alignment
	when passed -2 as 'align'.
	(put_var_into_stack): Use 'bool' as the type for the three local
	predicates.  Adjust calls to put_reg_into_stack.
	When passed a CONCAT, instruct put_reg_into_stack to use
	a consecutive stack slot for the second part.
	(put_reg_into_stack): Remove 'promoted_mode' parameter, add
	'consecutive_p' parameter.  Turn the three predicates into 'bool'
	parameters.  Retrieve the register mode from 'reg'.
	When consecutive_p is true, instruct assign_stack_local_1 to use
	BITS_PER_UNIT alignment.
	(put_addressof_into_stack): Use 'bool' as the type for the two
	local predicates. Adjust call to put_reg_into_stack.

From-SVN: r81411
2004-05-02 13:46:23 +00:00
Ulrich Weigand
e2655d15d9 re PR middle-end/15054 (Bad code due to overlapping stack temporaries)
PR middle-end/15054
	* expr.c (expand_expr_real): Do not call preserve_temp_slots
	on a TARGET_EXPR temp.
	* function.c (assign_stack_temp_for_type): Set 'keep' flag for
	TARGET_EXPR temp slots.

	PR middle-end/15054
	* g++.dg/opt/pr15054.C: New test.

From-SVN: r81384
2004-05-01 11:37:39 +00:00
Jan Hubicka
902edd367b re PR c/15004 ([unit-at-a-time] no warning for unused paramater in static function)
* gcc.dg/unused-6.c: New test.

	PR c/15004
	* function.c (do_warn_unused_parameter): Break out form ...
	(expand_function_end): ... here; warn only when not using cgraphunit.
	* function.h (do_warn_unused_parameter): Declare.
	* cgraphunit.c: Include function.h.
	(cgraph_finalize_function): Do unused parameter warning.
	* Makefile.in (cgraphunit.o): Depend on function.h

From-SVN: r81260
2004-04-28 20:40:55 +00:00
Paul Brook
9e1622ed25 calls.c (precompute_arguments): Remove PROMOTE_FOR_CALL_ONLY.
* calls.c (precompute_arguments): Remove PROMOTE_FOR_CALL_ONLY.
	* function.c (assign_temp): Ditto.
	* system.h (PROMOTE_FOR_CALL_ONLY): Poison.

From-SVN: r81247
2004-04-28 13:25:59 +00:00
Josef Zlomek
c6ca23fb14 function.c (assign_parms): Force MEM_EXPR (DECL_INCOMING_RTL (parm)) == parm.
* function.c (assign_parms): Force
	MEM_EXPR (DECL_INCOMING_RTL (parm)) == parm.

From-SVN: r80882
2004-04-20 06:06:08 +00:00
Roger Sayle
886733617a function.c (gen_mem_addressof): When changing the RTX from a REG to a MEM...
* function.c (gen_mem_addressof): When changing the RTX from a REG
	to a MEM, clear MEM_VOLATILE_P which was formerly REG_USERVAR_P.

From-SVN: r80540
2004-04-09 01:38:12 +00:00
Richard Kenner
8df83eae1e builtins.c, [...]: Change most occurrences of TREE_UNSIGNED to TYPE_UNSIGNED.
* builtins.c, c-aux-info.c, c-common.c, c-cppbuiltin.c, c-decl.c:
	Change most occurrences of TREE_UNSIGNED to TYPE_UNSIGNED.
	* c-format.c, c-opts.c, c-pretty-print.c, c-typeck.c: Likewise.
	* calls.c, convert.c, dbxout.c, dojump.c, dwarf2out.c: Likewise.
	* expmed.c, expr.c, fold-const.c, function.c, integrate.c: Likewise.
	* optabs.c, sdbout.c, stmt.c, stor-layout.c, tree-dump.c: Likewise.
	* tree.c, config/iq2000/iq2000.c, config/m32r/m32r.c: Likewise.
	* config/mips/mips.c, config/rs6000/rs6000.c: Likewise.
	* config/s390/s390.c, config/sparc/sparc.c, objc/objc-act.c: Likewise.
	* stor-layout.c (layout_type, case COMPLEX_TYPE): Test for
	REAL_TYPE, not INTEGER_TYPE.
	(layout_type, case VECTOR_TYPE): Simplify code.
	* tree.c (build_vector_type_for_mode): Remove dup unsigned setting.
	* tree.h: Update comments.
	(STRIP_NOPS): Use TYPE_UNSIGNED.
	(TYPE_UNSIGNED): New macro.
	(TYPE_TRAP_SIGNED): Remove now redundant check.
	(SAVE_EXPR_NOPLACEHOLDER): Don't use TREE_UNSIGNED.

	* cp/call.c (joust): Use TYPE_UNSIGNED, not TREE_UNSIGNED.
	* cp/class.c (check_bitfield_decl): Likewise.
	* cp/cvt.c (type_promotes_to): Likewise.
	* cp/decl.c (finish_enum): Likewise.
	* cp/mangle.c (write_builtin_type): Likewise.
	* cp/semantics.c (finish_switch_cond, finish_unary_op_expr): Likewise.
	* cp/typeck.c (type_after_usual_arithmetic_conversions): Likewise.
	(build_binary_op): Likewise.

	* f/com.c (ffecom_arrayref_): Use TYPE_UNSIGNED, not TREE_UNSIGNED.
	(ffecom_expr_): Likewise.

	* java/jcf-write.c (generate_bytecode_insns): Use TYPE_UNSIGNED.

	* treelang/treetree.c (tree_lang_signed_or_unsigned_type):
	Use TYPE_UNSIGNED, not TREE_UNSIGNED.

	* ada/decl.c (gnat_to_gnu_entity, make_type_from_size):
	Use TYPE_UNSIGNED, not TREE_UNSIGNED.
	* ada/trans.c (tree_transform, convert_with_check): Likewise.
	* ada/utils.c (gnat_signed_or_unsigned_type): Likewise.
	(build_vms_descriptor, unchecked_convert): Likewise.
	* ada/utils2.c (nonbinary_modular_operation): Likewise.

From-SVN: r80287
2004-03-31 22:50:43 -05:00
Richard Kenner
8465edcc9f * function.c (put_var_into_stack): Properly set orig_reg for indirect.
From-SVN: r80254
2004-03-31 13:13:50 -05:00
Richard Kenner
97955d55bb function.c (put_var_into_stack): If old RTL was ADDRESSOF, update the address inside the old RTL.
* function.c (put_var_into_stack): If old RTL was ADDRESSOF, update
	the address inside the old RTL.

From-SVN: r80057
2004-03-29 09:48:45 -05:00
Ulrich Weigand
84c1fa24b1 function.c (thread_prologue_and_epilogue): Move NOTE_INSN_FUNCTION_END and NOTE_INSN_FUNCTION_BEG notes before the epilogue.
* function.c (thread_prologue_and_epilogue): Move
	NOTE_INSN_FUNCTION_END and NOTE_INSN_FUNCTION_BEG notes
	before the epilogue.

From-SVN: r80025
2004-03-27 16:18:56 +00:00
Roger Sayle
ae2bcd98fa alias.c (get_alias_set): Replace calls via (*lang_hooks.foo) () with lang_hooks.foo ().
* alias.c (get_alias_set): Replace calls via (*lang_hooks.foo) ()
	with lang_hooks.foo ().
	* builtins.c (expand_builtin_va_arg): Likewise.
	* c-common.c (fname_as_string, c_common_truthvalue_conversion,
	c_common_type_for_mode, c_common_nodes_and_builtins,
	handle_mode_attribute, handle_vector_size_attribute): Likewise.
	* c-convert.c (convert): Likewise.
	* c-format.c (check_format_types): Likewise.
	* c-objc-common.c (c_tree_printer): Likewise.
	* c-typeck.c (build_unary_op, build_conditional_expr,
	build_binary_op): Likewise.
	* calls.c (try_to_integrate, expand_call,
	emit_library_call_value_1): Likewise.
	* cgraph.c (cgraph_node_name, cgraph_function_possibly_inlined_p):
	Likewise.
	* cgraphunit.c (record_call_1, cgraph_analyze_function,
	cgraph_expand_function): Likewise.
	* convert.c (convert_to_pointer, convert_to_integer): Likewise.
	* coverage.c (build_fn_info_type, build_ctr_info_type,
	build_gcov_info, create_coverage): Likewise.
	* dbxout.c (dbxout_init): Likewise.
	* diagnostic.c (diagnostic_report_current_function): Likewise.
	* dojump.c (do_jump): Likewise.
	* dwarf2out.c (dwarf2_name): Likewise.
	* except.c (init_eh): Likewise.
	* explow.c (expr_size, int_expr_size): Likewise.
	* expmed.c (make_tree, const_mult_add_overflow_p, expand_mult_add):
	Likewise.
	* expr.c (store_expr, store_constructor, safe_from_p,
	expand_expr_real, do_store_flag, try_casesi): Likewise.
	* function.c (push_function_context_to, pop_function_context_from,
	free_after_parsing, assign_stack_local_1, assign_stack_temp_for_type,
	put_var_into_stack, allocate_struct_function, current_function_name):
	Likewise.
	* integrate.c (copy_decl_for_inlining, expand_inline_function):
	Likewise.
	* langhooks.c (lhd_clear_binding_stack, write_global_declarations,
	lhd_print_error_function): Likewise.
	* opts.c (handle_option, decode_options): Likewise.
	* passes.c (open_dump_file): Likewise.
	* print-tree.c (print_node): Likewise.
	* stmt.c (expand_fixup, fixup_gotos, expand_asm_operands,
	expand_decl_cleanup, emit_case_nodes): Likewise.
	* stor-layout.c (variable_size): Likewise.
	* toplev.c (announce_function, wrapup_global_declarations,
	check_global_declarations, compile_file, default_tree_printer,
	process_options, lang_dependent_init, finalize): Likewise.
	* tree-dump.c (dequeue_and_dump): Likewise.
	* tree-inline.c (remap_decl, remap_block, copy_body_r,
	initialize_inlined_parameters, declare_return_variable,
	inlinable_function_p, expand_call_inline, optimize_inline_calls,
	walk_tree, copy_tree_r): Likewise.
	* tree-optimize.c (tree_rest_of_compilation): Likewise.
	* tree.c (decl_assembler_name, tree_size, size_in_bytes, staticp,
	unsafe_for_reeval, get_unwidened, get_narrower, get_callee_fndecl,
	variably_modified_type_p, dump_tree_statistics): Likewise.
	* varasm.c (assemble_variable, compare_constant, copy_constant,
	force_const_mem, compute_reloc_for_constant, output_constant,
	output_addressed_constants, initializer_constant_valid_p): Likewise.

From-SVN: r79481
2004-03-14 22:26:14 +00:00
Richard Henderson
42ba513004 re PR target/14547 (Passing _Complex long double does not follow the ABI)
PR target/14547
        * target.h (struct gcc_target): Move calls substructure before
        booleans.  Add split_complex_arg.
        * function.c (assign_parms, split_complex_args): Use it.
        * calls.c (expand_call): Likewise.
        (split_complex_values): Likewise.  Check for splittable types
        before allocating memory.
        (split_complex_types): Likewise.
        * system.h (SPLIT_COMPLEX_ARGS): Poison.
        * expr.h (SPLIT_COMPLEX_ARGS): Remove.
        * target-def.h (TARGET_SPLIT_COMPLEX_ARG): New.
        * config/alpha/alpha.c (alpha_split_complex_arg): New.
        (TARGET_SPLIT_COMPLEX_ARG): New.
        * config/alpha/alpha.h (SPLIT_COMPLEX_ARGS): Remove.
        * config/rs6000/rs6000.c (TARGET_SPLIT_COMPLEX_ARG): New.
        (rs6000_override_options): Zap it for non-AIX.
        (rs6000_function_value): Use targetm.calls.split_complex_arg.
        * config/rs6000/rs6000.h (SPLIT_COMPLEX_ARGS): Remove.
        * config/xtensa/xtensa.c (TARGET_SPLIT_COMPLEX_ARG): New.
        * config/xtensa/xtensa.h (SPLIT_COMPLEX_ARGS): Remove.
        * doc/tm.texi (TARGET_SPLIT_COMPLEX_ARG): Modify from old
        SPLIT_COMPLEX_ARGS entry.

From-SVN: r79376
2004-03-12 02:03:32 -08:00
Andrew Haley
ffad84cd85 function.c (expand_function_end): Emit a blockage insn before the epilogue when -fnon-call-exceptions is used.
2004-03-10  Andrew Haley  <aph@redhat.com>

	* function.c (expand_function_end): Emit a blockage insn before
	the epilogue when -fnon-call-exceptions is used.

	* except.c (expand_start_all_catch): Make comment more accurate.

From-SVN: r79265
2004-03-10 17:47:45 +00:00
Roger Sayle
e697b20f79 re PR middle-end/14289 (ICE in a register array)
PR middle-end/14289
	* c-typeck.c (c_mark_addressable): A register variable should
	be considered global if its not automatic, i.e. TREE_PUBLIC,
	TREE_STATIC or DECL_EXTERNAL.
	* function.c (put_var_into_stack): Call abort when placing a
	hard register into the stack, if x_parm_reg_stack_loc is NULL.

	* gcc.dg/pr14289-1.c: New test case.
	* gcc.dg/pr14289-2.c: Likewise.
	* gcc.dg/pr14289-3.c: Likewise.

From-SVN: r79127
2004-03-08 21:56:36 +00:00
Paul Brook
ce407aa992 * function.c (assign_parms): Include pretend alignment offset.
From-SVN: r78973
2004-03-05 16:44:33 +00:00
Paolo Bonzini
ec8e098d3d alias.c (rtx_equal_for_memref_p): Use predicates to test rtx classes and new rtx class codes...
2004-02-07  Paolo Bonzini  <bonzini@gnu.org>

	* alias.c (rtx_equal_for_memref_p): Use predicates
	to test rtx classes and new rtx class codes, possibly
	splitting conditionals that tested against '<' and 'o'.
	* caller-save.c (save_call_clobbered_regs): Likewise.
	* combine.c (contains_muldiv, find_split_point, subst,
	combine_simplify_rtx, simplify_if_then_else,
	simplify_set, simplify_logical, expand_compound_operation,
	make_compound_operation, if_then_else_cond, known_cond,
	apply_distributive_law, cached_nonzero_bits,
	cached_num_sign_bit_copies, simplify_shift_const,
	gen_binary, simplify_comparison, update_table_tick,
	record_value_for_reg, get_lsat_value_validate): Likewise.
	* cse.c (mention_regs, find_best_addr, find_comparison_args,
	fold_rtx, cse_insn, invalidate_memory, cse_basic_block):
	Likewise.
	* emit-rtl.c (copy_insn_1): Likewise.
	* expr.c (force_operand): Likewise.
	* final.c (final_scan_insn, get_mem_expr_from_op): Likewise.
	* flow.c (notice_stack_pointer_modification_1,
	invalidate_mems_from_autoinc, ior_reg_cond, not_reg_cond,
	and_reg_cond, elim_reg_cond): Likewise.
	* function.c (update_epilogue_consts): Likewise.
	* genattrtab.c (attr_rtx_1): Likewise.
	* genopinit.c (gen_insn): Likewise.
	* integrate.c (subst_constants): Likewise.
	* jump.c (reversed_comparison_code_parts,
	reversed_comparison_code, delete_related_insns,
	rtx_renumbered_equal_p): Likewise.
	* local-alloc.c (block_alloc): Likewise.
	* loop.c (rtx_equal_for_prefetch_p, maybe_eliminate_biv,
	canonicalize_condition): Likewise.
	* loop-iv.c (simplify_using_conditions, iv_number_of_iterations):
	Likewise.
	* optabs.c (add_equal_node, expand_binop): Likewise.
	* predict.c (estimate_probability): Likewise.
	* ra-debug.c (ra_print_rtx_2op, ra_print_rtx): Likewise.
	* recog.c (validate_replace_rtx_1, comparison_operator,
	offsettable_address_p, constrain_operands): Likewise.
	* reg-stack.c (swap_rtx_condition_1, subst_stack_regs_pat):
	Likewise.
	* regclass.c (scan_one_insn): Likewise.
	* regmove.c (stable_and_no_regs_but_for_p): Likewise.
	* regrename.c (kill_autoinc_value): Likewise.
	* reload.c (find_reusable_reload, find_reloads,
	reg_overlap_mentioned_for_reload_p): Likewise.
	* reload1.c (gen_reload, delete_address_reloads_1): Likewise.
	* rtl.c (copy_rtx): Likewise.
	* rtl.h (CONSTANT_P, INSN_P): Likewise.
	* rtlanal.c (commutative_operand_precedence): Likewise.
	* sched-deps.c (conditions_mutex_p): Likewise.
	* sched-rgn.c (is_cfg_nonregular): Likewise.
	* simplify-rtx.c (simplify_gen_binary,
	simplify_gen_relational, simplify_replace_rtx,
	simplify_unary_operation, simplify_binary_operation,
	simplify_ternary_operation, simplify_rtx): Likewise.
	* unroll.c (reg_dead_after_loop): Likewise.
	* config/alpha/alpha.c (alpha_swapped_comparison_operator,
	print_operand): Likewise.
	* config/arc/arc.c (proper_comparison_operator): Likewise.
	* config/arm/arm.c (arm_arm_address_cost, arm_select_cc_mode):
	Likewise.
	* config/avr/avr.c (_reg_unused_after): Likewise.
	* config/frv/frv.c (frv_ifcvt_modify_tests,
	frv_ifcvt_modify_insn, frv_pack_insn): Likewise.
	* config/i386/i386.c (ix86_comparison_operator,
	ix86_carry_flag_operator, fcmov_comparison_operator,
	arith_or_logical_operator, print_operand,
	ix86_expand_binary_operator, ix86_binary_operator_ok):
	Likewise.
	* config/i386/i386.md: Likewise.
	* config/ia64/ia64.c (not_postinc_memory_operand,
	ia64_print_operand, update_set_flags, errata_emit_nops):
	Likewise.
	* config/ia64/ia64.h (PREFERRED_RELOAD_CLASS,
	CONSTRAINT_OK_FOR_S): Likewise.
	* config/ip2k/ip2k.c (mdr_resequence_xy_yx,
	mdr_try_move_dp_reload, ip2k_check_can_adjust_stack_ref,
	ip2k_xexp_not_uses_reg_for_mem, ip2k_xexp_not_uses_reg_p,
	ip2k_composite_xexp_not_uses_reg_p, ip2k_unary_operator):
	Likewise.
	* config/iq2000/iq2000.c (cmp_op, symbolic_expression_p,
	eqne_comparison_operator, signed_comparison_operator):
	Likewise.
	* config/mips/mips.c (cmp_op, symbolic_expression_p):
	Likewise.
	* config/mmix/mmix (mmix_foldable_comparison_operator,
	mmix_comparison_operator): Likewise.
	* config/pa/pa.c (hppa_legitimize_address): Likewise.
	* config/rs6000/rs6000.c (stmw_operation,
	branch_comparison_operator, trap_comparison_operator,
	ccr_bit): Likewise.
	* config/rs6000/rs6000.h (SELECT_CC_MODE): Likewise.
	* config/s390/s390.c (s390_alc_comparison,
	s390_slb_comparison):L Likewise.
	* config/sh/sh.c (gen_block_redirect, reg_unused_after):
	Likewise.
	* config/sparc/sparc.c (eq_or_neq, normal_comp_operator,
	noov_compare_op, noov_compare64_op, v9_regcmp_op,
	emit_hard_tfmode_operation, reg_unused_after)
	* doc/md.texi, doc/rtl.texi: Likewise.

	* ra-debug.c: Add 2004 to list of copyright years.
	* unroll.c: Likewise.

	* combine.c (simplify_logical): Remove dummy test,
	(apply_distributive_law): Fix typo in comment.
	GET_CODE (x) == AND so x is a commutative binary op.
	* jump.c (delete_related_insns): simplify loop
	condition, move testing of RTX codes inside the loop.
	(rtx_renumbered_equal_p): do not use RTX_CODE.
	* rtl.c (rtx_class): Declare as enum rtx_class.
	* rtl.def (EQ, NE, UNEQ, LTGT, UNORDERED, ORDERED):
	Move to RTX_COMM_COMPARE class.
	(HIGH, SYMBOL_REF, LABEL_REF, CONST, CONST_INT, CONST_DOUBLE):
	Move to RTX_CONST_OBJ class.
	* rtl.h (enum rtx_class): New declaration,
	(RTX_OBJ_MASK, RTX_OBJ_RESULT, RTX_COMPARE_MASK,
	RTX_COMPARE_RESULT, RTX_ARITHMETIC_MASK, RTX_ARITHMETIC_RESULT,
	RTX_BINARY_MASK, RTX_BINARY_RESULT, RTX_COMMUTATIVE_MASK,
	RTX_COMMUTATIVE_RESULT, RTX_NON_COMMUTATIVE_RESULT,
	RTX_EXPR_FIRST, RTX_EXPR_LAST, UNARY_P, BINARY_P,
	ARITHMETIC_P, COMMUTATIVE_ARITHMETIC_P, COMPARISON_P,
	SWAPPABLE_OPERANDS_P, NON_COMMUTATIVE_P, COMMUTATIVE_P,
	OBJECT_P): New macros.
	* config/sparc/sparc.c (noov_compare_op): Remove register
	from parameter.

From-SVN: r78824
2004-03-03 08:35:33 +00:00
Roger Sayle
bc41842bb2 [multiple changes]
2004-02-29  Waldek Hebisch  <hebisch@math.uni.wroc.pl>

	PR middle-end/14203
	* function.c (uninitialized_vars_warning): Use DECL_RTL_SET_P
	instead of testing whether DECL_RTL is not NULL.

2004-02-29  Roger Sayle  <roger@eyesopen.com>

	PR middle-end/14203
	* g++.dg/warn/Wunused-6.C: New test case.

From-SVN: r78648
2004-02-29 14:07:44 +00:00
Paul Brook
53c428d012 * function.c (assign_parms): Don't count pretend args for alignment.
From-SVN: r78563
2004-02-27 12:02:55 +00:00
Kazu Hirata
6c5caf00a8 calls.c: Don't reference FINAL_REG_PARM_STACK_SPACE or MAYBE_REG_PARM_STACK_SPACE.
* calls.c: Don't reference FINAL_REG_PARM_STACK_SPACE or
	MAYBE_REG_PARM_STACK_SPACE.
	* function.c: Likewise.
	* system.h (FINAL_REG_PARM_STACK_SPACE): Poison.
	(MAYBE_REG_PARM_STACK_SPACE): Likewise.
	* doc/tm.texi (FINAL_REG_PARM_STACK_SPACE): Remove.
	(MAYBE_REG_PARM_STACK_SPACE): Likewise.

From-SVN: r78530
2004-02-26 23:32:09 +00:00
Alan Modra
196c42cd7c function.c (assign_parms): When building decl_rtl for SPLIT_COMPLEX_ARGS...
* function.c (assign_parms): When building decl_rtl for
	SPLIT_COMPLEX_ARGS, ensure inner modes of concat match outer.

From-SVN: r78079
2004-02-19 18:30:47 +10:30
Steven Bosscher
1da326c335 (c-decl.c, [...]): Replace DECL_SAVED_INSNS with DECL_STRUCT_FUNCTION.
* (c-decl.c, c-semantics.c, calls.c, cgraph.c, cgraphunit.c,
        function.c, integrate.c, print-tree.c, toplev.c, tree-optimize.c,
        tree.h): Replace DECL_SAVED_INSNS with DECL_STRUCT_FUNCTION.
        * ada/utils.c: Likewise.
        * cp/decl.c: Likewise.
        * f/com.c: Likewise.
        * java/class.c: Likewise.

From-SVN: r77985
2004-02-17 21:33:43 +00:00
Richard Kenner
8fbc67c072 * function.c (update_epilogue_consts): Teach about binary operations.
From-SVN: r77727
2004-02-12 15:48:21 -05:00
Richard Kenner
a5e9c81033 emit-rtl.c (set_mem_attributes_minus_bitpos): Don't kill previous MEM_VOLATILE in REF.
* emit-rtl.c (set_mem_attributes_minus_bitpos): Don't kill
	previous MEM_VOLATILE in REF.
	* function.c (fixup_var_refs): Save volatile_ok and set to 1.
	* expr.c (emit_block_move_via_movstr): Save and restore volatile_ok.

From-SVN: r77718
2004-02-12 13:25:09 -05:00
Josef Zlomek
fbe6ec8150 emit-rtl.c (set_decl_incoming_rtl): New.
PR/14058
	* emit-rtl.c (set_decl_incoming_rtl): New.
	* tree.h (set_decl_incoming_rtl): New.
	* function.c (assign_parms): Use set_decl_incoming_rtl for setting
	DECL_INCOMING_RTL.
	* ada/misc.c (adjust_decl_rtl): Likewise.

From-SVN: r77611
2004-02-10 18:38:19 +00:00
David Edelsohn
f276fb546f * function.c (assign_parms): Fix formatting.
From-SVN: r77478
2004-02-07 21:48:34 -05:00
Alan Modra
0f6937feff tm.texi (INIT_CUMULATIVE_ARGS): Update doco.
* doc/tm.texi (INIT_CUMULATIVE_ARGS): Update doco.
	* calls.c (expand_call): Pass n_named_args to INIT_CUMULATIVE_ARGS.
	(emit_library_call_value_1): Likewise pass nargs.
	* expr.c (block_move_libcall_safe_for_call_parm): Pass 3 here.
	* function.c (assign_parms): Pass -1 to INIT_CUMULATIVE_ARGS.
	* config/rs6000/rs6000.c (init_cumulative_args): Use n_named_args
	parameter instead of scanning TYPE_ARGS_TYPES to count args.
	* config/rs6000/rs6000-protos.h (init_cumulative_args): Update
	prototype.
	* config/rs6000/rs6000.h (INIT_CUMULATIVE_ARGS): Pass extra arg.
	(INIT_CUMULATIVE_INCOMING_ARGS): Set extra arg to 1000.
	(INIT_CUMULATIVE_LIBCALL_ARGS): Set extra arg to 0.
	* config/sh/sh.c (sh_output_mi_thunk): Pass 1 as n_named_args to
	INIT_CUMULATIVE_ARGS.
	* config/alpha/alpha.h (INIT_CUMULATIVE_ARGS): Update.
	* config/alpha/unicosmk.h, config/alpha/vms.h, config/arc/arc.h,
	config/arm/arm.h, config/avr/avr.h, config/c4x/c4x.h,
	config/cris/cris.h, config/fr30/fr30.h, config/frv/frv.h,
	config/h8300/h8300.h, config/i386/i386.h, config/i860/i860.h,
	config/ia64/ia64.h, config/ip2k/ip2k.h, config/iq2000/iq2000.h,
	config/iq2000/iq2000.c, config/m32r/m32r.h, config/m68hc11/m68hc11.h,
	config/m68k/m68k.h, config/mcore/mcore.h, config/mips/mips.h,
	config/mmix/mmix.h, config/mn10300/mn10300.h, config/ns32k/ns32k.h,
	config/pa/pa.h, config/pdp11/pdp11.h config/s390/s390.h,
	config/sh/sh.h, config/sparc/sparc.h, config/stormy16/stormy16.h,
	config/v850/v850.h, config/vax/vax.h, config/xtensa/xtensa.h: Likewise.

From-SVN: r77380
2004-02-06 16:48:36 +10:30
Jan Hubicka
66fd46b6c6 alias.c (record_set): Use hard_regno_nregs.
* alias.c (record_set): Use hard_regno_nregs.
	* bt-load.c (find_btr_reference, note_btr_set): Likewise.
	* builtins.c (apply_args_size): Likewise.
	* caller-save.c (setup_save_areas, save_call_clobbered_regs,
	mark_set_regs, add_stored_regs, mark_referenced_regs,
	insert_restore, insert_save, insert_one_insn): Likewise.
	* cfgcleanup.c: Include regs.h
	(mark_effect, mentions_nonequal_regs): Likewise.
	* cfgrtl.c (mark_killed_regs): Likewise
	* combine.c (update_table_tick, record_value_for_reg,
	record_dead_and_set_regs, get_last_value_validate, use_crosses_set_p,
	reg_dead_at_p_1, reg_dead_at_p, mark_used_regs_combine, move_deaths,
	reg_bitfield_target_p, distribute_notes): Likewise.
	* cse.c (mention_regs, insert, invalidate, invalidate_for_call,
	exp_equiv_p, cse_insn): Likewise.
	* cselib.c (cselib_lookup): Likewise.
	(cselib_invalidate_regno, cselib_record_set): Likewise.
	* df.c (df_ref_record): Likewise.
	* dwarf2out.c (reg_loc_descriptor, multiple_reg_loc_descriptor):
	Likewise.
	* flow.c (mark_reg, insn_dead_p, mark_set_1, mark_used_reg,
	count_or_remove_death_notes_bb): Likewise.
	* function.c (aggregate_value_p, keep_stack_depressed): Likewise.
	* gloval.c (global_alloc, find_reg, mark_reg_store, mark_reg_conflicts,
	mark_reg_death, set_preference, reg_becomes_live, reg_dies): Likewise.
	* integrate.c (mark_stores): Likewise.
	* jump.c (delete_prior_computation): Likewise.
	* lcm.c (reg_dies, reg_becomes_live): Likewise.
	* local-alloc.c (combine_regs, find_free_reg, post_mark_life): Likewise.
	* loop.c (LOOP_REGNO_NREGS): Likewise.
	* postreload.c (reload_combine, reload_combine_note_store,
	reload_combine_note_use, reload_cse_move2add, move2add_note_store): Likewise.
	* ra-colorize.c (combine, color_usable_p, get_free_reg,
	calculate_dont_begin, calculate_dont_begin, colorize_one_web,
	try_recolor_web, insert_coalesced_conflicts, check_colors,
	break_precolored_alias): Likewise.
	* ra-debug.c: Include regs.h
	(ra_print_rtx_object): Likewise.
	* ra-rewrite (choose_spill_colors): Likewise.
	(spill_same_color_p, update_spill_colors, spill_is_free): Likewise.
	* ra.c (init_ra): Likewise.
	* recog.c (reg_fits_class_p, peep2_reg_dead_p,
	peep2_find_free_register): Likewise.
	* reg-stack.c (subst_stack_regs_pat, convert_regs_exit): Likewise.
	* regclass.c (hard_regno_nregs): New array.
	(init_reg_modes_once): Initialize it.
	(choose_hard_reg_mode): Use it.
	(record_reg_classes): Likewise.
	* regmove.c (mark_flags_life_zones): Likewise.
	* regrename.c (note_sets, clear_dead_regs, regrename_optimize,
	scan_rtx_reg, dump_def_use_chain, kill_value, set_value_regno,
	copy_value, maybe_mode_change, find_oldest_value_reg,
	copyprop_hardreg_forward_1):
	* regs.h (hard_regno_nregs): Declare.
	* realod.c (reload_inner_reg_of_subreg): Use it.
	(push_reload, combine_reloads, find_dummy_reload,
	hard_reg_set_here_p, operands_match_p, decompose, find_reloads,
	refers_to_regno_for_reload_p, find_equiv_reg, regno_clobbered_p,
	reload_adjust_reg_for_mode): Likewise.
	* reload1.c (compute_use_by_pseudos, count_pseudo,
	count_spilled_pseudo, find_reg, find_reload_regs, mark_home_live,
	spill_hard_reg, forget_old_reloads_1, mark_reload_reg_in_use,
	clear_reload_reg_in_use, reload_reg_free_for_value_p, free_for_value_p
	allocate_reload_reg, choose_reload_regs, emit_reload_insns,
	delete_output_reload): Likewise.
	* resource.c (update_live_status, mark_referenced_resources,
	mark_set_resources, mark_target_live_regs): Likewise.
	* rtlanal.c:  Include regs.h
	(refers_to_regno_p, reg_overlap_mentioned_p, dead_or_set_p,
	dead_or_set_regno_p, find_regno_note, find_reg_fusage,
	subreg_regno_offset, subreg_offset_representable_p,
	hoist_test_store): Likewise.
	* sched-deps.c (sched_analyze_1, sched_analyze_2): Likewise.
	* sched-rgn.c (check_live_1, update_live_1): Likewise.
	* stmt.c: Include regs.h
	(decl_conflicts_with_clobbers_p): Likewise.
	* varasm.c (make_decl_rtl): Likewise.
	* Makefile.in (cfgcleanup.o, rtlanal.o, ra-debug.o): Add regs.h dependnecy.

From-SVN: r77088
2004-02-02 00:17:18 +00:00
Kazu Hirata
f84d109fc4 bt-load.c: Replace "gen_rtx (FOO, " with "gen_rtx_FOO (".
* bt-load.c: Replace "gen_rtx (FOO, " with "gen_rtx_FOO (".
	* calls.c: Likewise.
	* emit-rtl.c: Likewise.
	* function.c: Likewise.
	* reload1.c: Likewise.
	* config/i386/cygming.h: Likewise.
	* config/i386/i386.c: Likewise.
	* config/i386/winnt.c: Likewise.

From-SVN: r77025
2004-01-31 08:02:55 +00:00
Fariborz Jahanian
6e290f1155 Do not assign long long argument to memory in prologue if loaded in register.
OKed by Richard Henderson.

From-SVN: r76648
2004-01-26 17:43:46 +00:00
Kazu Hirata
1f52178b3a c-common.h: Fix comment typos.
* c-common.h: Fix comment typos.
	* c-decl.c: Likewise.
	* cgraphunit.c: Likewise.
	* combine.c: Likewise.
	* et-forest.c: Likewise.
	* flow.c: Likewise.
	* function.c: Likewise.
	* ifcvt.c: Likewise.
	* integrate.c: Likewise.
	* jump.c: Likewise.
	* postreload.c: Likewise.
	* varray.c: Likewise.

From-SVN: r76539
2004-01-25 03:52:42 +00:00
Jan Hubicka
0de456a50f function.c (allocate_struct_function): Do not initialize expr, emit and varasm.
* function.c (allocate_struct_function): Do not initialize expr, emit
	and varasm.
	(prepare_function_start): Do it here.
	* c-parse.in (maybe_type_qual): Do not produce line number notes.

From-SVN: r76345
2004-01-22 10:52:20 +00:00
Daniel Jacobowitz
589fe865e0 final.c (SEEN_BB, [...]): Define.
* final.c (SEEN_BB, SEEN_NOTE, SEEN_EMITTED): Define.
	(final_scan_insn): Update to take an additional SEEN argument.  Emit
	a line note after the prologue.  Make static.
	(line_note_exists): Remove.
	(final): Don't initialize line_note_exists.  Update call to
	final_scan_insn.
	* output.h (final_scan_insn): Remove prologue.
	* function.c (set_insn_locators): Update comment.
	(thread_prologue_and_epilogue_insns): Add a comment.

From-SVN: r76060
2004-01-17 22:11:58 +00:00
Steven Bosscher
faed5cc356 re PR c++/13376 (Incorrect dumps of RTL for passes that use current_function_name)
PR c++/13376
	* function.h (struct function): Kill `name' field.
	(current_function_name): Make it an extern function.
	* function.c (current_function_name): New function.
	* graph.c: Update all uses of current_function_name.
	* gcse.c: Likewise.
	* config/alpha/alpha.c, config/avr/avr.c, config/c4x/c4x.c,
	config/mips/mips.c, config/pdp11/pdp11.c: Likewise.
	* config/ip2k/ip2k.c (function_prologue): Use MAIN_NAME_P
	instead of a strcmp with "main".

From-SVN: r75784
2004-01-13 01:58:45 +00:00
Steven Bosscher
ca35b54689 Fix messed up accidental commit.
From-SVN: r75368
2004-01-03 19:58:40 +00:00
Steven Bosscher
d47cc544b6 backport: et-forest.h (et_forest_create, [...]): Declarations removed.
Backport from tree-ssa (relevant changes only):
	2003-12-18  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* et-forest.h (et_forest_create, et_forest_delete,
	et_forest_add_node, et_forest_add_edge, et_forest_remove_node,
	et_forest_remove_edge, et_forest_parent,
	et_forest_common_ancestor, et_forest_node_value,
	et_forest_enumerate_sons): Declarations removed.
	(struct et_node): New.
	(et_new_tree, et_free_tree, et_set_father, et_split, et_nca,
	et_below): Declare.
	* et-forest.c (struct et_forest_occurrence, struct et_forest,
	struct et_forest_node): Removed.
	(et_forest_create, et_forest_delete,
	et_forest_add_node, et_forest_add_edge, et_forest_remove_node,
	et_forest_remove_edge, et_forest_parent,
	et_forest_common_ancestor, et_forest_node_value,
	et_forest_enumerate_sons, splay, remove_all_occurrences,
	find_leftmost_node, find_rightmost_node, calculate_value): Removed.
	(struct et_occ): New.
	(et_nodes, et_occurences): New.
	(set_depth, set_depth_add, set_prev, set_next, et_recomp_min,
	et_check_occ_sanity, et_check_sanity, et_check_tree_sanity,
	record_path_before_1, record_path_before, check_path_after_1,
	check_path_after, et_splay, et_new_occ, et_new_tree,
	et_free_tree, et_set_father, et_split, et_nca, et_below): New.
	* basic-block.h (struct basic_block_def): New field dom.
	(struct dominance_info): Type removed.
	(calculate_dominance_info, free_dominance_info,
	nearest_common_dominator, set_immediate_dominator,
	get_immediate_dominator, dominated_by_p, get_dominated_by,
	add_to_dominance_info, delete_from_dominance_info,
	recount_dominator, redirect_immediate_dominators,
	iterate_fix_dominators, verify_dominators): Declarations
	changed.
	(enum dom_state): New.
	(dom_computed): New variable.
	(first_dom_son, next_dom_son): Declare.
	* dominance.c (struct dominance_info): Removed.
	(BB_NODE, SET_BB_NODE): Removed.
	(calculate_dominance_info, free_dominance_info,
	nearest_common_dominator, set_immediate_dominator,
	get_immediate_dominator, dominated_by_p, get_dominated_by,
	add_to_dominance_info, delete_from_dominance_info,
	recount_dominator, redirect_immediate_dominators,
	iterate_fix_dominators, verify_dominators,
	debug_dominance_info): Work over new datastructure.  Access
	dominance datastructures through CFG.
	(assign_dfs_numbers, compute_dom_fast_query, first_dom_son,
	next_dom_son): New.
	* bt-load.c (dom): Variable removed.
	(augment_live_range, combine_btr_defs, migrate_btr_def,
	migrate_btr_defs, branch_target_load_optimize): Updated for the
	new interface for dominance information.
	* cfg.c {exit_entry_blocks): Update initializer.
	* cfglayout.c (copy_bbs): Removed loops argument. Updated for
	the new interface for dominance information.
	* cfglayout.h (copy_bbs): Declaration changed.
	* cfgloop.c (flow_loop_pre_header_find, flow_loops_cfg_dump,
	flow_loop_scan, canonicalize_loop_headers, flow_loops_find): Updated
	for the new interface for dominance information.
	(flow_loop_scan): Loops argument removed.
	(flow_loops_free): Don't release dominators.
	* cfgloop.h (struct cfg): Dom field removed.
	(flow_loop_scan, loop_split_edge_with, simple_loop_p,
	just_once_each_iteration_p, split_loop_bb): Declaration changed.
	* cfgloopanal.c (simple_loop_exit_p, simple_increment,
	just_once_each_iteration_p, simple_loop_p): Remove loops argument.
	Updated for the new interface for dominance information.
	* cfgloopmanip.c (remove_bbs, find_path, create_preheader,
	split_loop_bb, loopify, duplicate_loop_to_header_edge,
	force_single_succ_latches, loop_split_edge_with): Ditto.
	* gcse.c (dominators): Variable removed.
	(free_code_hoist_mem, compute_code_hoist_data, hoist_code):
	Updated for the new interface for dominance information.
	* ifcvt.c (post_dominators): Variable removed.
	(mark_loop_exit_edges, merge_if_block, find_if_header,
	find_cond_trap, find_if_case_1, find_if_case_2, if_convert):
	Updated for the new interface for dominance information.
	* loop-init.c (rtl_loop_optimizer_init,
	rtl_loop_optimizer_finalize): Ditto.
	* loop-unroll.c (decide_peel_simple, decide_peel_once_rolling,
	decide_peel_completely, decide_unroll_stupid,
	decide_unroll_constant_iterations,
	decide_unroll_runtime_iterations): Loops argument removed.
	Updated for the new interface for dominance information.
	(unroll_and_peel_loops, peel_loops_completely,
	unroll_loop_runtime_iterations): Updated for the new interface for
	dominance information.
	* loop-unswitch.c (may_unswitch_on_p, unswitch_loops,
	unswitch_single_loop, unswitch_loop): Updated for the new
	interface for dominance information.
	* predict.c (process_note_predictions, process_note_prediction,
	estimate_probability, note_prediction_to_br_prob): Ditto.
	* sched-rgn.c (find_rgns, init_regions): Ditto.
	* toplev.c (rest_of_handle_branch_prob): Free the dominators.

From-SVN: r75226
2003-12-30 10:40:56 +00:00
David Edelsohn
8deb9aee94 function.c (assign_parms): Update max_parm_reg and parm_reg_stack_loc when adding new parm reg.
* function.c (assign_parms): Update max_parm_reg and
        parm_reg_stack_loc when adding new parm reg.

From-SVN: r75001
2003-12-23 21:22:37 -05:00
Kazu Hirata
6614fd40d2 alias.c: Fix comment formatting.
* alias.c: Fix comment formatting.
	* alloc-pool.c: Likewise.
	* bitmap.c: Likewise.
	* bitmap.h: Likewise.
	* bt-load.c: Likewise.
	* c-common.c: Likewise.
	* c-common.h: Likewise.
	* c-decl.c: Likewise.
	* c-opts.c: Likewise.
	* c-pretty-print.c: Likewise.
	* caller-save.c: Likewise.
	* cfghooks.h: Likewise.
	* cgraph.c: Likewise.
	* collect2.c: Likewise.
	* cppfiles.c: Likewise.
	* cpplib.h: Likewise.
	* dwarf2out.c: Likewise.
	* dwarfout.c: Likewise.
	* emit-rtl.c: Likewise.
	* final.c: Likewise.
	* function.c: Likewise.
	* gcov.c: Likewise.
	* gcse.c: Likewise.
	* genemit.c: Likewise.
	* ggc.h: Likewise.
	* haifa-sched.c: Likewise.
	* ifcvt.c: Likewise.
	* libgcc2.h: Likewise.
	* loop.c: Likewise.
	* predict.h: Likewise.
	* unwind-libunwind.c: Likewise.
	* varasm.c: Likewise.

From-SVN: r74907
2003-12-21 14:08:35 +00:00
Kazu Hirata
9d05bbceb2 flow.c (EXIT_IGNORE_STACK): Move to ...
* flow.c (EXIT_IGNORE_STACK): Move to ...
	* defaults.h (EXIT_IGNORE_STACK): ... here.
	* dojump.c (clear_pending_stack_adjust): Don't use #ifdef
	EXIT_IGNORE_STACK.
	* function.c (expand_function_end): Likewise.
	* global.c (global_alloc): Likewise.
	* ra.c (init_ra): Likewise.
	* reload1.c (init_elim_table): Likewise.
	* reorg.c (fill_simple_delay_slots): Likewise.
	* resource.c (init_resource_info): Likewise.
	* doc/tm.texi (EXIT_IGNORE_STACK): Document that the default
	is 0.

From-SVN: r74654
2003-12-16 00:06:36 +00:00
Kazu Hirata
ba228239d2 c-typeck.c: Fix comment typos.
* c-typeck.c: Fix comment typos.
	* calls.c: Likewise.
	* cfgcleanup.c: Likewise.
	* cgraph.h: Likewise.
	* dwarfout.c: Likewise.
	* emit-rtl.c: Likewise.
	* explow.c: Likewise.
	* expr.c: Likewise.
	* flow.c: Likewise.
	* function.c: Likewise.
	* gcc.c: Likewise.
	* ggc-zone.c: Likewise.
	* ifcvt.c: Likewise.
	* local-alloc.c: Likewise.
	* predict.c: Likewise.
	* pretty-print.c: Likewise.
	* profile.c: Likewise.
	* ra-colorize.c: Likewise.
	* sched-vis.c: Likewise.
	* stor-layout.c: Likewise.

From-SVN: r74594
2003-12-13 04:11:23 +00:00
James E Wilson
1ec7a83137 Fix for problem with unnecessary volatile mems.
PR target/13132
* function.c (gen_mem_addressof): When no decl, explicitly clear flag
bits.

From-SVN: r74543
2003-12-11 11:04:07 -08:00
Steven Bosscher
a813c11120 basic-block.h (BLOCK_HEAD, BLOCK_END): Remove.
2003-12-11  Steven Bosscher  <steven@gcc.gnu.org>

	* basic-block.h (BLOCK_HEAD, BLOCK_END): Remove.
	(BLOCK_HEAD_TREE, BLOCK_END_TREE): Remove.
	(basic_block_def): Rename `head' to `head_' and `end' to `end_'.
	(BB_HEAD, BB_END): New accessor macros for the `head_' and `end_'
	fields of a basic block.
	* bb-reorder.c, bt-load.c, caller-save.c, cfg.c, cfganal.c,
	cfgbuild.c, cfgcleanup.c, cfglayout.c, cfgloop.c, cfgloopanal.c,
	cfgloopmanip.c, cfgrtl.c, combine.c, conflict.c, df.c, emit-rtl.c,
	final.c, flow.c, function.c, gcse.c, global.c, graph.c,
	haifa-sched.c, ifcvt.c, lcm.c, local-alloc.c, loop-unswitch.c,
	loop.c, postreload.c, predict.c, profile.c, ra-build.c, ra-debug.c,
	ra-rewrite.c, ra.c, recog.c, reg-stack.c, regclass.c, regmove.c,
	regrename.c, reload1.c, resource.c, sched-ebb.c, sched-rgn.c,
	sibcall.c, tracer.c, config/frv/frv.c, config/i386/i386.c,
	config/ia64/ia64.c: Use the BB_HEAD and BB_END macros instead of
	accessing the `head' and `end' fields of a basic block directly.

	* gengtype.c: Add missing piece from earlier patch.  Dunno what
	I was thinking...

From-SVN: r74520
2003-12-11 00:20:51 +00:00
Eric Botcazou
5c6ef9bee0 re PR rtl-optimization/13060 ([g77] ICE in fixup_var_refs_1, at function.c:1947 on correct code with "-O2 -fno-force-mem")
PR optimization/13060
	* function.c (fixup_var_refs_1) [SUBREG]: Recognize even if a
	replacement already exists.  Fix again the whole insn if that fails.

From-SVN: r74386
2003-12-07 12:51:58 +00:00
Eric Botcazou
6e3077c608 re PR middle-end/11151 (__builtin_return(__builtin_apply(...)) gives wrong result)
PR middle-end/11151
	* function.h (struct function): New field 'x_naked_return_label'.
	* function.c (free_after_compilation): Set it to NULL.
	(expand_function_end): Emit 'naked_return_label' if it exists.
	* rtl.h (expand_naked_return): Declare.
	* stmt.c (expand_naked_return): New function to generate a
	jump to 'naked_return_label'.
	* builtins.c (expand_builtin_return): Call expand_naked_return
	instead of expand_null_return.
	* config/sparc/sparc.md (untyped_return): Likewise.

From-SVN: r74312
2003-12-05 06:46:35 +00:00
David Edelsohn
a0506b54dd function.c (assign_parms): Make sure parm PARALLEL combined in reg is composed of more than one object and...
* function.c (assign_parms): Make sure parm PARALLEL combined
        in reg is composed of more than one object and the mode really
        produces a reg.

From-SVN: r74214
2003-12-02 23:48:26 -05:00
Steven Bosscher
80fcc7bcae function.c (update_epilogue_consts): Don't use PARAMS.
* function.c (update_epilogue_consts): Don't use PARAMS.
	* rtl.h (web_main): Ditto.
	* target.h (is_costly_dependence): Ditto

From-SVN: r74099
2003-12-01 13:07:14 +00:00
Waldek Hebisch
1be4cd1f28 function.c: Make outer_function-chain external.
2003-11-23  Waldek Hebisch <hebisch@math.uni.wroc.pl>

	* function.c: Make outer_function-chain external.
	* function.h: Likewise.

From-SVN: r73894
2003-11-24 22:19:33 +01:00
Fariborz Jahanian
531547e90e calls.c (expand_call): Allocate new temp in pass1.
2003-11-20  Fariborz Jahanian  <fjahanian@apple.com>
            David Edelsohn  <edelsohn@gnu.org>

        * calls.c (expand_call): Allocate new temp in pass1.
        (store_one_arg): If PARALLEL, calculate excess using mode size of
        rtvec elt.
        * expr.c (emit_push_insn): If PARALLEL, calculate offset using
        mode size of rtvec elt.
        * function.c (assign_parms): Use parm in register, if available.

Co-Authored-By: David Edelsohn <edelsohn@gnu.org>

From-SVN: r73775
2003-11-20 17:42:01 -05:00
Jason Merrill
7f3a6a92f5 function.c (assign_parms): Use TREE_TYPE to determine the real type of the argument object.
* function.c (assign_parms): Use TREE_TYPE to determine the real
        type of the argument object.

From-SVN: r73623
2003-11-14 17:48:18 -05:00
Richard Kenner
f285d67bfe function.c (struct epi_info): New field const_equiv.
PR/6552
	* function.c (struct epi_info): New field const_equiv.
	(update_epilogue_consts): New function.
	(keep_stack_depressed): Clear new field and verify scratch register
	doesn't have it set.
	Call new function via note_stores.
	(handle_epilogue_set): Allow setting SP equiv reg in different mode.
	Allow PLUS where second operand is register known set to constant.
	(emit_equiv_load): Write load using proper mode if source different.
	* config/mips/mips.md (return_internal): Put (return) first.

From-SVN: r73609
2003-11-14 12:28:25 -05:00
Eric Christopher
729bf8ab4a function.c (purge_addressof_1): Add libcall check.
2003-11-11  Eric Christopher  <echristo@redhat.com>

	* function.c (purge_addressof_1): Add libcall check.
	Remove test for cached replacements on fallback case.
	Simplify mode comparisons. Add libcall test for
	paradoxical subregs.

From-SVN: r73479
2003-11-12 02:10:12 +00:00
John David Anglin
2b256a4627 function.c (assign_parms): Add ATTRIBUTE_UNUSED to variable reg_parm_stack_space.
* function.c (assign_parms): Add ATTRIBUTE_UNUSED to variable
	reg_parm_stack_space.
	* toplev.c (default_get_pch_validity): Fix warning.

From-SVN: r73168
2003-11-01 02:23:44 +00:00
Eric Christopher
69e4e6e99c function.c (purge_addressof_1): Add case for REG_RETVAL notes when modes are unequal.
2003-10-25  Eric Christopher  <echristo@redhat.com>

	* function.c (purge_addressof_1): Add case for REG_RETVAL
        notes when modes are unequal.

From-SVN: r73107
2003-10-30 23:50:53 +00:00
Eric Botcazou
69efc31da2 re PR rtl-optimization/12544 (ICE with large parameters used in nested functions)
PR optimization/12544
	* function.c (put_var_into_stack): Don't generate ADDRESSOFs
	for DECL_NONLOCAL decls.

From-SVN: r72374
2003-10-11 20:56:24 +00:00
Geoffrey Keating
a751cd5beb function.c (pad_to_arg_alignment): Move 'boundary_in_bytes' definition to above SPARC_STACK_BOUNDARY_HACK.
* function.c (pad_to_arg_alignment): Move 'boundary_in_bytes'
	definition to above SPARC_STACK_BOUNDARY_HACK.

From-SVN: r72241
2003-10-08 21:09:18 +00:00
Geoffrey Keating
a594a19c2a function.c (pad_to_arg_alignment): Take STACK_POINTER_OFFSET into account when aligning arguments.
2003-10-07  Geoffrey Keating  <geoffk@apple.com>

	* function.c (pad_to_arg_alignment): Take STACK_POINTER_OFFSET into
	account	when aligning arguments.
	* calls.c (STACK_POINTER_OFFSET): Move default from here ...
	* defaults.h (STACK_POINTER_OFFSET): ... to here.
	* config/sparc/sparc.h (STACK_BOUNDARY): Add comment about how
	it's wrong when TARGET_ARCH64 && TARGET_STACK_BIAS.
	(SPARC_STACK_BOUNDARY_HACK): Define.
	* config/rs6000/rs6000.c (function_arg): On non-SVR4 systems,
	arrange for vector parameters to varargs functions to be passed
	in both memory and GPRs when appropriate.
	(rs6000_va_arg): Vector arguments passed in memory are 16-byte
	aligned.

Index: testsuite/ChangeLog
2003-10-07  Geoffrey Keating  <geoffk@apple.com>

	* gcc.dg/darwin-abi-2.c: New file.
	* gcc.c-torture/execute/va-arg-24.c: New file.

From-SVN: r72199
2003-10-07 19:48:23 +00:00
Kazu Hirata
2067c116a4 c-pretty-print.c: Fix comment typos.
* c-pretty-print.c: Fix comment typos.
	* c-pretty-print.h: Likewise.
	* calls.c: Likewise.
	* cfgloopmanip.c: Likewise.
	* cgraphunit.c: Likewise.
	* cppfiles.c: Likewise.
	* final.c: Likewise.
	* function.c: Likewise.
	* gcov-io.h: Likewise.
	* gcse.c: Likewise.
	* genoutput.c: Likewise.
	* loop.c: Likewise.
	* postreload.c: Likewise.
	* reg-stack.c: Likewise.
	* regmove.c: Likewise.
	* sched-int.h: Likewise.
	* sched-rgn.c: Likewise.
	* simplify-rtx.c: Likewise.
	* tree-inline.c: Likewise.
	* config/m68hc11/m68hc11.h: Likewise.
	* config/mmix/mmix.c: Likewise.
	* config/mn10300/mn10300.md: Likewise.
	* config/sh/sh.h: Likewise.

From-SVN: r72118
2003-10-05 19:50:56 +00:00
Kazu Hirata
368ebcd6ff fold-const.c: Follow spelling conventions.
* fold-const.c: Follow spelling conventions.
	* function.c: Likewise.
	* config/c4x/c4x.h: Likewise.
	* config/c4x/c4x.md: Likewise.
	* config/frv/frv.md: Likewise.
	* config/rs6000/aix.h: Likewise.
	* config/rs6000/linux64.h: Likewise.
	* config/xtensa/xtensa.c: Likewise.

From-SVN: r72111
2003-10-05 13:34:45 +00:00
Richard Henderson
f31686a322 Revert DECL_SOURCE_LOCATION -> TREE_LOCUS change.
From-SVN: r71641
2003-09-21 22:09:32 -07:00
Richard Henderson
7e2af53a14 tree.h (TREE_LOCUS): Rename from DECL_SOURCE_LOCATION; make const.
* tree.h (TREE_LOCUS): Rename from DECL_SOURCE_LOCATION; make const.
	(TREE_FILENAME, TREE_LINENO): Likewise.
	(set_tree_locus, copy_tree_locus, set_tree_file_line): New.
	(TREE_LOCUS_SET_P): New.
	* c-aux-info.c, c-decl.c, c-parse.in, coverage.c, dbxout.c,
	diagnostic.c, dwarf2out.c, dwarfout.c, function.c, integrate.c,
	print-tree.c, stmt.c, toplev.c, tree-dump.c, tree-inline.c,
	tree-optimize.c, tree.c, tree.def, xcoffout.c, config/alpha/alpha.c,
	config/mips/mips.c, doc/c-tree.texi, objc/objc-act.c: Update to match.

ada/
	* trans.c, utils.c: Update for DECL_SOURCE_LOCATION rename and
	change to const.

cp/
	* class.c, cp-tree.h, decl.c, decl2.c, error.c, init.c,
	method.c, optimize.c, pt.c, semantics.c, tree.c: Update for
	DECL_SOURCE_LOCATION rename and change to const.

f/
	* com.c, ste.c: Update for DECL_SOURCE_LOCATION rename and
	change to const.

java/
	* class.c, decl.c, jcf-parse.c, jcf-write.c, parse.y,
	resource.c: Update for DECL_SOURCE_LOCATION rename and change to const.

treelang/
	* treetree.c: Update for DECL_SOURCE_LOCATION rename and
	change to const.

From-SVN: r71636
2003-09-21 16:39:40 -07:00
Richard Henderson
ddd2d57e72 c-format.c (gcc_diag_char_table): Add %J.
* c-format.c (gcc_diag_char_table): Add %J.
        (gcc_cdiag_char_table, gcc_cxxdiag_char_table): Likewise.
        (check_format_types): Fix wanted_type name lookup.
        (init_dynamic_diag_info): Setup %J.
        * diagnostic.c (text_specifies_location): Implement %J.
        * c-common.c, c-decl.c, c-objc-common.c, c-pragma.c, calls.c,
        dwarfout.c, expr.c, function.c, stmt.c, stor-layout.c, toplev.c,
        tree-inline.c, tree-optimize.c, varasm.c, config/arm/pe.c,
        config/i386/winnt.c, config/ia64/ia64.c, config/mcore/mcore.c,
        config/v850/v850.c, objc/objc-act.c: Use %J in diagnostics.

        * tree-inline.c: Include intl.h
        (inline_forbidden_p_1): Fix i18n of inline_forbidden_reason.
        * Makefile.in (tree-inline.o): Update.
cp/
        * decl.c, decl2.c, pt.c: Use %J in diagnostics.
java/
        * check-init.c, class.c, decl.c, expr.c: Use %J in diagnostics.
testsuite/
        * gcc.dg/format/gcc_diag-1.c: Add tests for %J.

From-SVN: r71619
2003-09-20 22:07:20 -07:00
Mark Mitchell
5ae6cd0d1b re PR target/11184 ([ia64 hpux] ICE on __builtin_apply building libobjc)
PR target/11184
	* builtins.c (expand_builtin_apply): Use convert_memory_address
	before returning the value.

	* alias.c (find_base_value): Simplify use of
	convert_memory_address.
	(find_base_term): Likewise.
	* builtins.c (expand_builtin_stejmp_setup): Likewise.
	(expand_builtin_longjmp): Likewise.
	(expand_builtin_prefetch): Likewise.
	(get_memory_rtx): Likewise.
	(expand_builtin_return): Likewise.
	(expand_builtin_memcpy): Likewise.
	(expand_builtin_strncpy): Likewise.
	(expand_builtin_memset): Likewise.
	(expand_builtin_va_arg): Likewise.
	(expand_builtin_va_copy): Likewise.
	(expand_builtin_alloca): Likewise.
	* calls.c (expand_call): Likewise.
	* except.c (expand_builtin_extract_return_addr): Likewise.
	(expand_builtin_eh_return): Likewise.
	* explow.c (convert_memory_address): Define even when
	POINTER_EXTEND_UNSIGNED is not defined.  Do nothing if the address
	is already in the right mode.
	* explow.c (memory_address): Simplify use of convert_memory_address.
	(probe_stack_range): Likewise.
	* expmed.c (make_tree): Likewise.
	* expr.c (emit_block_move_in_libcall): Likewise.
	(expand_assignment): Likewise.
	(expand_expr): Likewise.
	* function.c (assign_parms): Likewise.
	(expand_function_end): Likewise.
	* integrate.c (copy_rtx_and_substitute): Likewise.
	* stmt.c (expand_computed_goto): Likewise.

	PR target/11184
	* gcc.dg/builtin-apply1.c: New test.

From-SVN: r71539
2003-09-18 20:43:13 +00:00
Richard Sandiford
975f381876 function.c (STACK_BYTES): Move definition to head of file.
* function.c (STACK_BYTES): Move definition to head of file.
	(assign_parms): Don't pass current_function_pretend_args_size
	directly to SETUP_INCOMING_VARARGS.  For partial register arguments,
	round current_function_pretend_args_size up to STACK_BYTES.  Skip any
	excess before laying out the argument.

From-SVN: r71372
2003-09-14 10:07:51 +00:00
DJ Delorie
61f71b3447 targhooks.c: New file.
* targhooks.c: New file.
	* targhooks.h: New file.
	* Makefile.in: Add targhooks.o support.
	(function.o): Depend on$(TARGET_H).
	(stmt.o): Likewise.
	(combine.o): Depend on $(TREE_H) and $(TARGET_H).
	* builtins.c (apply_args_size, expand_builtin_apply_args_1,
	expand_builtin_apply): Convert to calls.struct_value_rtx hook.
	(expand_builtin_saveregs): Convert to
	calls.expand_builtin_saveregs hook.
	* c-decl.c (start_decl): Handle new calls.promote_prototypes hook
	here, instead of ...
	(get_parm_info) ... here.
	(store_parm_decls_oldstyle): Convert to calls.promote_prototypes
	hook.
	(finish_function): Handle calls.promote_prototypes hook here too.
	* c-typeck.c (convert_arguments): Convert to
	calls.promote_prototypes hook.
	(c_convert_parm_for_inlining): Likewise.
	* calls.c (initialize_argument_information): Convert to
	calls.promote_function_args hook.
	(expand_call): Convert to calls.struct_value_rtx,
	calls.strict_argument_naming,
	calls.pretend_outgoing_varargs_named, and
	calls.promote_function_return hooks.  Pass fndecl to
	aggregate_value_p.  Initialize CUMULATIVE_ARGS before calling
	hooks, so they can use that.
	(emit_library_call_value_1): Likewise.
	* combine.c (setup_incoming_promotions): Convert to
	calls.promote_function_args hook.
	* emit-rtl.c: Convert to calls.struct_value_rtx hook.
	* expr.c (expand_assignment): Pass call to aggregate_value_p.
	(expand_expr): Likewise.
	* expr.h: Remove support for SETUP_INCOMING_VARARGS,
	STRICT_ARGUMENT_NAMING, PRETEND_OUTGOING_VARARGS_NAMED,
	RETURN_IN_MEMORY macro defaults.
	* final.c (profile_function): Convert to calls.struct_value_rtx
	hook.
	* function.c (aggregate_value_p): Accept function type tree as
	second parameter; try to deduce fntype from it.  Convert to
	calls.return_in_memory hook.
	(assign_parms): Convert to calls.setup_incoming_varargs,
	calls.strict_argument_naming, calls.promote_function_args,
	calls.pretend_outgoing_varargs_named hooks.  Pass fndecl to
	aggregate_value_p.
	(expand_function_start): Likewise.  Convert to
	calls.struct_value_rtx hook.
	(expand_function_end): Convert to calls.promote_function_return hook.
	(allocate_struct_function): Pass fndecl to aggregate_value_p.
	* hard-reg-set.h: Update comments to new hook names.
	* integrate.c (expand_inline_function): Pass fndecl to aggregate_value_p.
	* reg-stack.c (stack_result): Likewise.
	* rtl.h (struct_value_rtx, struct_value_incoming_rtx): Delete.
	* stmt.c (expand_value_return): Convert to
	calls.promote_function_return hook.
	* target-def.h: Add TARGET_PROMOTE_FUNCTION_ARGS,
	TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES,
	TARGET_STRUCT_VALUE_RTX, TARGET_RETURN_IN_MEMORY,
	TARGET_EXPAND_BUILTIN_SAVEREGS, TARGET_SETUP_INCOMING_VARARGS,
	TARGET_STRICT_ARGUMENT_NAMING,
	TARGET_PRETEND_OUTGOING_VARARGS_NAMED, and TARGET_CALLS.
	* target.h: Likewise.
	* tree.h (aggregate_value_p): Also takes a tree to deduce function
	attributes from (for target hooks).
	* doc/tm.texi (PROMOTE_FUNCTION_ARGS, PROMOTE_FUNCTION_RETURN,
	PROMOTE_PROTOTYPES, RETURN_IN_MEMORY, STRUCT_VALUE_REGNUM,
	STRUCT_VALUE, STRUCT_VALUE_INCOMING_REGNUM, STRUCT_VALUE_INCOMING,
	EXPAND_BUILTIN_SAVEREGS, SETUP_INCOMING_VARARGS,
	STRICT_ARGUMENT_NAMING, PRETEND_OUTGOING_VARARGS_NAMED): Convert
	to hooks.

	* config/alpha/alpha.c (alpha_output_mi_thunk_osf): Pass function
	to aggregate_value_p.
	* config/arm/arm.c (arm_init_cumulative_args,
	arm_output_mi_thunk): Likewise.
	* config/i386/i386.c (ix86_return_pops_args, x86_this_parameter):
	Likewise.
	* config/mips/mips.c (mips_save_reg_p, mips_expand_prologue,
	mips_can_use_return_insn): Likewise.
	* config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
	* config/s390/s390.c (s390_output_mi_thunk): Likewise.
	* config/sparc/sparc.c (sparc_output_mi_thunk): Pass function to
	aggregate_value_p.
	* config/story16/stormy16.c (xstormy16_asm_output_mi_thunk): Pass
	function to aggregate_value_p.
	* objc/objc-act.c (generate_struct_by_value_array): Pass NULL to
	aggregate_value_p.

	* config/sh/sh-protos.h (sh_builtin_saveregs): Remove.
	(sh_attr_renesas_p, sh_cfun_attr_renesas_p, sh_function_arg,
	sh_function_arg_advance, sh_pass_in_reg_p): New.  * config/sh/sh.c
	(sh_handle_renesas_attribute, sh_promote_prototypes,
	sh_struct_value_rtx, sh_return_in_memory, sh_builtin_saveregs,
	sh_setup_incoming_varargs, sh_strict_argument_naming,
	sh_pretend_outgoing_varargs_named): New decls.
	(targetm): Add new hooks.
	(calc_live_regs): Save MACL and MACH if the function has the
	renesas attribute.
	(sh_expand_prologue): Support renesas attribute.
	(sh_builtin_saveregs): Make static.
	(sh_build_va_list): Support renesas attribute.
	(sh_va_start): Likewise.
	(sh_va_arg): Likewise.
	(sh_promote_prototypes): New.
	(sh_function_arg): New, moved from sh.h.  Support renesas
	attribute.
	(sh_function_arg_advance): Likewise.
	(sh_return_in_memory): Likewise.
	(sh_strict_argument_naming): Likewise.
	(sh_pretend_outgoing_varargs_named): Likewise.
	(sh_struct_value_rtx): New.
	(sh_attribute): Add renesas attribute.
	(sh_handle_renesas_attribute): New.
	(sh_attr_renesas_p, sh_cfun_attr_renesas_p): New.
	(sh_ms_bitfield_layout_p): Support renesas attribute also.
	(sh_output_mi_thunk): Pass function to aggregate_value_p.  *
	config/sh/sh.h (TARGET_SWITCHES): Add -mrenesas as an alias for
	-mhitachi.
	(STRUCT_VALUE_REGNUM, STRUCT_VALUE, RETURN_IN_MEMORY): Moved to
	target hooks.
	(sh_args): Add renesas_abi flag.
	(INIT_CUMULATIVE_ARGS): Set it.  Pass fndecl to aggregate_value_p.
	(FUNCTION_ARG_ADVANCE, FUNCTION_ARG): Move to sh.c.
	(PASS_IN_REG_P): Support renesas attribute.  Pass DF and TF on the
	stack for the renesas abi.
	(STRICT_ARGUMENT_NAMING, PRETEND_OUTGOING_VARARGS_NAMED,
	SETUP_INCOMING_VARARGS, EXPAND_BUILTIN_SAVEREGS,
	PROMOTE_PROTOTYPES): Moved to sh.c.  * config/sh/sh.md (call): Set
	call cookie to indicate renesas calls.

	* decl.c (finish_function): Pass fndecl to aggregate_value_p.

	* misc.c (default_pass_by_ref): Convert to calls.return_in_memory
	hook.

From-SVN: r71048
2003-09-03 23:18:05 -04:00
Richard Henderson
3a70d62185 function.c (allocate_struct_function): New, split out of ...
* function.c (allocate_struct_function): New, split out of ...
        (prepare_function_start, init_function_start): ... here.
        * expr.c (init_expr): Use ggc_alloc_cleared.
        * stmt.c (init_stmt_for_function): Likewise.
        * tree.h (allocate_struct_function): Declare.

From-SVN: r70929
2003-08-29 15:25:19 -07:00
Richard Sandiford
648bb15912 calls.c (initialize_argument_information): If an argument has no stack space associated with it...
* calls.c (initialize_argument_information): If an argument has no
	stack space associated with it, and BLOCK_REG_PADDING is defined,
	use it to decide at which end the argument should be padded.
	* function.c (assign_parms): Allocate BLKmode stack slots.
	* config/mips/mips-protos.h (mips_pad_arg_upward): Declare.
	(mips_pad_reg_upward): Declare.
	* config/mips/mips.h (PAD_VARARGS_DOWN): Use FUNCTION_ARG_PADDING.
	(CUMULATIVE_ARGS): Remove num_adjusts and adjusts.
	(FUNCTION_ARG_PADDING): Use mips_pad_arg_upward.
	(BLOCK_REG_PADDING): Use mips_pad_reg_upward.
	* config/mips/mips.c (struct mips_arg_info): Remove struct_p.
	(mips_expand_call): Remove code for generating structure shifts.
	(mips_arg_info): Don't set struct_p.  Don't set fpr_p for non-float
	types unless using the EABI.
	(function_arg_advance): Don't generate shift instructions.
	(function_arg): Don't return them.  Don't short-circuit the
	check for double structure chunks for DFmode arguments.
	(mips_pad_arg_upward, mips_pad_reg_upward): New functions.
	(mips_expand_prologue): Remove code to emit structure shifts.
	* config/mips/irix6-libc-compat.c: Remove workarounds for buggy
	structure passing (inet_ntoa, inet_lnaof, inet_netof).  Update
	comments to say that only structure returns are a problem.

From-SVN: r70843
2003-08-27 07:05:18 +00:00
Andrew Pinski
3390f9c9be PR c++/10538, PR c/5582
ChangeLog:
        * langhooks-def.h (lhd_decl_uninit): Declare.
        (LANG_HOOKS_DECL_UNINIT): New macro.
        (LANG_HOOKS_INITIALIZER): Adjust.
        * langhooks.h (struct lang_hooks): Add new field
        decl_uninit.
        * langhooks.c (lhd_decl_uninit): Define.
        * c-common.c (c_decl_uninit_1): New function.
        (c_decl_uninit): New function.
        (warn_init_self): Define.
        * c-common.h (c_decl_uninit): Declare.
        (warn_init_self): Declare.
        * c.opt: Introduce -Winit-self.
        * c-opts.c (c_common_handle_options): Set warn_init_self.
        * c-lang.c (LANG_HOOKS_DECL_UNINIT): Define.
        * objc/objc-lang.c  (LANG_HOOKS_DECL_UNINIT): Define.
        * function.c (uninitialized_vars_warning): Call the language hook.
        * doc/invoke.texi: Document -Winit-self.


cp/ChangeLog:
        * cp/cp-lang.c (LANG_HOOKS_DECL_UNINIT): Define.


testsuite:
        * gcc.dg/uninit-D.c: New Test.
        * gcc.dg/uninit-E.c: New Test.
        * gcc.dg/uninit-F.c: New Test.
        * gcc.dg/uninit-G.c: New Test.

From-SVN: r70574
2003-08-19 13:29:01 -07:00
Gabriel Dos Reis
b6fe0bb8c5 Remove pedwarn_with_decl, warning_with_decl and error_with_decl from GCC.
Remove pedwarn_with_decl, warning_with_decl and error_with_decl
        from GCC.
        * calls.c (try_to_integrate): Don't use xxx_with_decl.
        (expand_call): Likewise.
        * dwarfout.c (output_reg_number): Likewise.
        * expr.c (expand_expr): Likewise.
        * function.c (assign_temp): Likewise.
        (uninitialized_vars_warning): Likewise.
        (setjmp_args_warning): Likewise.
        (expand_function_end): Likewise.
        * stmt.c (fixup_gotos): Likewise.
        (warn_about_unused_variables): Likewise.
        (expand_end_bindings): Likewise.
        * stor-layout.c (layout_decl): Likewise.
        (place_field): Likewise.
        * toplev.c (check_global_declarations): Likewise.
        (rest_of_handle_inlining): Likewise.
        (default_tree_printer): New function.
        (general_init): Initialize diagnostic machinery before routing
        signals to the ICE machinery.  Set default tree printer.
        * toplev.h (pedwarn_with_decl): Remove declaration.
        (warning_with_decl): Likewise.
        (error_with_decl): Likewise.
        (pedwarn): Remove attribute for the time being.
        * tree-inline.c (expand_call_inline): Don't use xxx_with_decl.
        * varasm.c (named_section): Likewise.
        (make_decl_rtl): Likewise.
        (assemble_variable): Likewise.
        (merge_weak): Likewise.
        (declare_weak): Likewise.

        * diagnostic.h: Move non-diagnostic stuff into pretty-print.h.
        * diagnostic.c: Move non-diagnostic stuff into pretty-print.c.
        (format_with_decl): Remove.
        (diagnostic_for_decl): Likewise.
        (pedwarn_with_decl): Likewise.
        (warning_with_decl): Likewise.
        (error_with_decl): Likewise.
        (diagnostic_initialize): Adjust.
        (diagnostic_count_diagnostic): Likewise.
        (announce_function): Likewise.
        (lhd_print_error_function): Likewise.
        (diagnostic_report_current_module): Likewise.
        (default_diagnostic_starter): Likewise.
        (diagnostic_report_diagnostic): Likewise.
        (default_diagnostic_finalizer): Likewise.
        (verbatim): Likewise.
        (error): Likewise.
        (warning): Likewise.
        * opts.c (common_handle_option): Likewise.
        * pretty-print.c: New file.
        * c-pretty-print.h (pp_base): Override.
        * c-pretty-print.c: Adjust use of macros throughout.
        (pp_buffer): New macro.
        (pp_newline): Likewise.
        * c-objc-common.c (c_tree_printer): Adjust prototype. Tidy.
        * Makefile.in (DIAGNOSTIC_H): New variable.
        (c-errors.o): Use it.
        (c-objc-common.o): Likewise.
        (c-common.o): Likewise.
        (c-opts.o): Likewise.
        (c-format.o): Likewise.
        (diagnostic.o): Likewise.
        (opts.o): Likewise.
        (toplev.o): Likewise.
        (rtl-error.o): Likewise.
        (dwarf2out.o): Likewise.
        (jump.o): Likewise.
        (pretty-print.o): New rule.

cp/
        * Make-lang.in (cp/error.o): Depend on DIAGNOSTIC_H.
        * error.c: Use the new pretty-printer fraamework.

From-SVN: r69773
2003-07-25 09:52:32 +00:00
Kaveh R. Ghazi
703ad42b4b alias.c [...]: Remove unnecessary casts.
* alias.c alloc-pool.c bitmap.c bitmap.h bt-load.c builtins.c
	c-common.c c-decl.c c-incpath.c c-lex.c c-opts.c c-parse.in
	c-pragma.c c-typeck.c calls.c cfg.c cfganal.c cfgloop.c cfgrtl.c
	collect2.c combine.c conflict.c coverage.c cppexp.c cppfiles.c
	cpphash.c cppinit.c cpplex.c cpplib.c cppmacro.c cppspec.c
	cpptrad.c cse.c cselib.c dbxout.c defaults.h df.c dominance.c
	dwarf2out.c dwarfout.c emit-rtl.c except.c expmed.c expr.c final.c
	fix-header.c flow.c fold-const.c function.c gcc.c gccspec.c gcov.c
	gcse.c genattr.c genattrtab.c genautomata.c genconditions.c
	genemit.c genextract.c genoutput.c genrecog.c gensupport.c
	ggc-page.c ggc-simple.c global.c graph.c haifa-sched.c hashtable.c
	integrate.c jump.c langhooks.c lcm.c line-map.c local-alloc.c
	loop.c mips-tdump.c mips-tfile.c mkdeps.c optabs.c params.c
	postreload.c prefix.c print-tree.c protoize.c ra-build.c
	ra-colorize.c ra-rewrite.c ra.c recog.c reg-stack.c regclass.c
	regmove.c regrename.c reload.c reload1.c reorg.c resource.c
	sbitmap.c sched-deps.c sched-rgn.c sched-vis.c sdbout.c
	simplify-rtx.c ssa-ccp.c ssa.c stmt.c stor-layout.c timevar.c
	tlink.c toplev.c tree-dump.c tree.c unroll.c unwind-dw2-fde.c
	varasm.c varray.c vmsdbgout.c xcoffout.c: Remove unnecessary
	casts.

From-SVN: r69587
2003-07-19 14:47:15 +00:00
Kazu Hirata
b90f141a9d expr.c (expand_assignment): Remove an unused argument SUGGEST_REG.
* expr.c (expand_assignment): Remove an unused argument
	SUGGEST_REG.
	* expr.h: Update the prototype.
	* function.c: Update the callers.
	* stmt.c: Likewise.

From-SVN: r69379
2003-07-15 05:31:44 +00:00
Alan Modra
6e98504002 tm.texi (BLOCK_REG_PADDING): Describe.
* doc/tm.texi (BLOCK_REG_PADDING): Describe.
	* expr.h (struct locate_and_pad_arg_data): Add where_pad.
	(emit_group_load, emit_group_store): Adjust declarations.
	Remove most occurrences of #ifdef TREE_CODE.
	* expr.c (emit_group_load): Add "type" param, and use
	BLOCK_REG_PADDING to determine need for a shift.  Optimize non-
	aligned accesses if !SLOW_UNALIGNED_ACCESS.
	(emit_group_store): Likewise.
	(emit_push_insn, expand_assignment, store_expr, expand_expr): Adjust
	emit_group_load and emit_group_store calls.
	* calls.c (store_unaligned_arguments_into_pseudos): Tidy.  Use
	BLOCK_REG_PADDING to determine whether we need endian_correction.
	(load_register_parameters): Localize vars.  Handle shifting of
	small values to the correct end of regs.  Adjust emit_group_load
	call.
	(expand_call, emit_library_call_value_1): Adjust emit_group_load
	and emit_group_store calls.
	* function.c (assign_parms): Set mem alignment for stack slots.
	Adjust emit_group_store call.  Store values at the "wrong" end
	of regs to the stack.  Use BLOCK_REG_PADDING.
	(locate_and_pad_parm): Save where_pad.
	(expand_function_end): Adjust emit_group_load call.
	* stmt.c (expand_value_return): Adjust emit_group_load call.
	* Makefile.in (calls.o): Depend on $(OPTABS_H).
	* config/rs6000/linux64.h (TARGET_LITTLE_ENDIAN): Redefine as 0.
	(AGGREGATE_PADDING_FIXED, AGGREGATES_PAD_UPWARD_ALWAYS): Define.
	(MUST_PASS_IN_STACK): Define.
	(BLOCK_REG_PADDING): Define.
	* config/rs6000/rs6000.h (struct rs6000_args): Remove orig_nargs.
	(PAD_VARARGS_DOWN): Define in terms of FUNCTION_ARG_PADDING.
	* config/rs6000/rs6000.c (init_cumulative_args): Don't set orig_nargs.
	(function_arg_padding): !AGGREGATE_PADDING_FIXED compatibility code.
	Act on AGGREGATES_PAD_UPWARD_ALWAYS.

From-SVN: r69318
2003-07-14 14:47:18 +09:30
Richard Henderson
48144cd490 function.c (assign_parms): Don't recombine complex args if fnargs is unchanged from orig_fnargs.
* function.c (assign_parms): Don't recombine complex args if
        fnargs is unchanged from orig_fnargs.
        (split_complex_args): Return args without complex before copying.
        Re-layout the modified parameters.

From-SVN: r69236
2003-07-11 09:28:22 -07:00
Nathan Sidwell
0cea056ba1 rtl.h (emit_line_note): Take a location_t.
* rtl.h (emit_line_note): Take a location_t.
	(emit_line_note_force): Remove.
	(set_file_and_line_for_statement): Take a location_t.
	* tree.g (emit_line_note): Take a location_t.
	* emit-rtl.c (emit_line_note): Take a location_t.
	(emit_line_note_force): Remove.
	* function.c (init_function_start): Adjust emit_line_note call.
	(expand_function_end): Use force_next_line_note, not
	emit_line_note_force.
	* c-parse.in (maybe_type_qual): Adjust emit_line_note calls.
	* c-semantics.c (genrtl_do_pushlevel, genrtl_goto_stmt,
	genrtl_expr_stmt_value, genrtl_decl_stmt, genrtl_if_stmt,
	genrtl_while_stmt, genrtl_do_stmt_1, genrtl_return_stmt,
	genrtl_for_stmt, genrtl_break_stmt, genrtl_continue_stmt,
	genrtl_continue_stmt, genrtl_switch_stmt,
	genrtl_asm_stmt): Likewise.
	* expr.c (expand_expr): Likewise.
	* integrate.c (expand_inline_function): Likewise.
	* stmt.c (set_file_and_line_for_stmt): Take a location_t.
	(expand_decl_init): Adjust emit_line_note call.

	* ada/trans.c (build_unit_elab, set_lineno): Adjust emit_line_note
	calls.

	* cp/semantics.c: (genrtl_try_block) Adjust emit_line_note
	calls.

	* f/com.c (bison_rule_pushlevel_, bison_rule_compstmt_): Adjust
	emit_line_note calls.
	* f/ste.c (ffeste_emit_line_note_): Likewise.

	* java/expr.c (expand_byte_code):

	* treelang/treetree.c (tree_code_if_start, tree_code_if_else,
	tree_code_if_end, tree_code_create_function_initial,
	tree_code_create_function_wrapup, tree_code_generate_return,
	tree_code_output_expression_statement): Adjust emit_line_note
	calls.

From-SVN: r69047
2003-07-07 17:57:30 +00:00
Andreas Jaeger
fa8db1f7c4 fold-const.c: Convert prototypes to ISO C90.
* fold-const.c: Convert prototypes to ISO C90.
	* function.c: Likewise.
	* function.h: Likewise.

From-SVN: r68778
2003-07-01 18:20:39 +02:00
Nathan Sidwell
5f2fc772a6 rtl.h (emit_line_note_after): Remove.
* rtl.h (emit_line_note_after): Remove.
	(emit_note_copy_after, emit_note_copy): New.
	* emit-rtl.c (reorder_insns_with_line_notes): Replace
	emit_line_note_after with emit_note_copy_after.
	(emit_insn_after_with_line_notes): Likewise.
	(emit_line_note_after): Kill.
	(emit_note_copy_after): New.
	(emit_note_copy): New.
	* function.c (emit_return_into_block): Use emit_note_copy_after.
	(thread_prologue_and_epilogue_insns): Likewise.
	* integrate.c (expand_inline_function): Use emit_note_copy.
	(copy_insn_list): Likewise.
	* unroll.c (copy_loop_body): Likewise.
	* cfglayout.c (duplicate_insn_chain): Likewise.

From-SVN: r68767
2003-07-01 09:17:52 +00:00
Nathan Sidwell
2e04021970 rtl.h (emit_note): Remove FILE parameter.
* rtl.h (emit_note): Remove FILE parameter.
	* emit-rtl.c (emit_line_note): Adjust emit_note call.
	(emit_note): Remove FILE parameter. Adjust.
	* builtins.c (expand_builtin_expect): Adjust emit_note call.
	* c-semantics.c (genrtl_scope_stmt): Likewise.
	(expand_stmt): Likewise.
	* cfglayout.c (reemit_insn_block_notes): Likewise.
	(duplicate_insn_chain): Likewise.
	* except.c (expand_eh_region_start, expand_eh_region_end,
	sjlj_emit_function_enter): Likewise.
	* explow.c (probe_stack_range): Likewise.
	* expr.c (emit_block_move_via_loop): Likewise.
	* function.c (init_function_start, expand_function_start,
	expand_function_end, thread_prologue_and_epilogue_insns): Likewise.
	* integrate.c (expand_inline_function, copy_insn_list): Likewise.
	* reg-stack.c (compensate_edge): Likewise.
	* reload1.c (reload): Likewise.
	* rtlanal.c (hoist_insn_to_edge): Likewise.
	* stmt.c (expand_fixup, expand_start_loop, expand_start_null_loop,
	expand_loop_continue_here, expand_end_loop, expand_continue_loop,
	expand_exit_loop_top_cond, expand_value_return,
	expand_start_bindings_and_block, expand_end_bindings,
	expand_decl_cleanup, expand_start_case): Likewise.
	* unroll.c (copy_loop_body
	* config/alpha/alpha.c (alpha_output_mi_thunk_osf): Likewise.
	* config/ia64/ia64.c (ia64_output_mi_thunk): Likewise.
	* config/rs6000/rs6000.c (rs6000_emit_eh_toc_restore,
	rs6000_emit_allocate_stack, rs6000_output_function_prologue,
	rs6000_output_function_epilogue, rs6000_output_mi_thunk): Likewise.
	* config/sh/sh.c (sh_output_mi_thunk): Likewise.
	* config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.

	* ada/misc.c (record_code_position): Likewise.

From-SVN: r68561
2003-06-27 09:49:44 +00:00
Kazu Hirata
71c0e7fc96 basic-block.h: Fix comment formatting.
* basic-block.h: Fix comment formatting.
	* bt-load.c: Likewise.
	* builtins.c: Likewise.
	* c-common.c: Likewise.
	* c-common.h: Likewise.
	* c-format.c: Likewise.
	* coverage.c: Likewise.
	* cpplib.h: Likewise.
	* cpppch.c: Likewise.
	* dbxout.c: Likewise.
	* diagnostic.c: Likewise.
	* dwarf2out.c: Likewise.
	* expr.c: Likewise.
	* fold-const.c: Likewise.
	* function.c: Likewise.
	* gcc.c: Likewise.
	* gcov-io.c: Likewise.
	* gcov-io.h: Likewise.
	* gcov.c: Likewise.
	* profile.c: Likewise.
	* real.h: Likewise.
	* sched-deps.c: Likewise.

From-SVN: r68369
2003-06-23 15:27:37 +00:00
Andreas Schwab
4c4d143ab2 * function.c (set_insn_locators): Mark as unused.
From-SVN: r68350
2003-06-22 21:57:19 +00:00
Nathan Sidwell
1f9cc6db1b tree.h (expand_function_end): Remove all parameters.
* tree.h (expand_function_end): Remove all parameters.
	* function.c (expand_function_end): Remove all parameters.
	Use input_location. Never expand_end_bindings.
	* c-decl.c (c_expand_body_1): Adjust expand_function_end call.
	* coverage.c (create_coverage): Likewise.

	* ada/utils.c (end_subprog_body): Adjust expand_function_end
	call.

	* cp/semantics.c (genrtl_finish_function): Adjust
	expand_function_end call.

	* f/com.c (finish_function): Adjust expand_function_end call.

	* java/class.c (push_class): Use a location_t to save place.
	(emit_register_classes): Set input_location. Adjust
	expand_function_end call.
	* java/resource.c (write_resource_constructor): Likewise.
	* java/decl.c (end_java_method): Adjust expand_function_end call.
	* java/parse.y (source_end_java_method): Likewise.

	* treelang/treetree.c (tree_code_create_function_wrapup): Adjust
	expand_function_end call.

From-SVN: r68255
2003-06-20 09:08:23 +00:00
Kaveh R. Ghazi
fad205ffba decl.c, [...]: Don't use the PTR macro.
cp:
	* cp/decl.c, cp/pt.c, cp/search.c, cp/tree.c: Don't use the PTR
	macro.

gcc:
	* bitmap.c, builtins.c, c-incpath.c, cgraph.c, config/frv/frv.c,
	config/mips/mips.c, cppfiles.c, cpphash.c, cppinit.c, cpplib.c,
	dwarf2out.c, dwarfout.c, except.c, expr.c, expr.h, fold-const.c,
	function.c, gcc.c, genoutput.c, gensupport.c, global.c,
	haifa-sched.c, hashtable.c, ifcvt.c, integrate.c, local-alloc.c,
	loop.c, mips-tdump.c, mips-tfile.c, mkdeps.c, protoize.c,
	read-rtl.c, recog.h, reload1.c, sbitmap.c, ssa-dce.c,
	stringpool.c, tlink.c, tree.c, varasm.c, varray.c: Don't use
	the PTR macro.

From-SVN: r68043
2003-06-16 21:41:10 +00:00
Nathanael Nerode
5e6908ea23 convert.c, [...]: Replace overly specific references to "GNU C" and "GNU C Compiler" with...
* convert.c, dwarf2out.c, dwarfout.c, emit-rtl.c, function.c,
	lists.c, print-rtl.c, print-tree.c, read-rtl.c, rtl-error.c,
	stmt.c, toplev.c, integrate.h, loop.h, machmode.h, rtl.h,
	ssa.h, tree.def: Replace overly specific references to "GNU C"
	and "GNU C Compiler" with references to "GCC".

From-SVN: r68004
2003-06-16 11:30:25 +00:00
Nathan Sidwell
ee6b0296b8 tree.h (init_function_start): Remove filename and line paramters.
* tree.h (init_function_start): Remove filename and line paramters.
	* function.c (init_function_start): Remove filename and line
	parameters. Use DECL_SOURCE_LOCATION.
	* c-decl.c (store_parm_decls): Adjust init_function_start call.
	(c_expand_body_1): Likewise.
	* coverage.c (create_coverage): Likewise.

	* ada/utils.c (begin_subprog_body): Adjust init_function_start
	call.

	* cp/decl.c (start_function): Adjust init_function_start call.
	* cp/method.c (use_thunk): Likewise.
	* cp/semantics.c (genrtl_start_function): Likewise.

	* f/com.c (stor_parm_decls): Adjust init_function_start call.

	* java/class.c (emit_register_classes): Adjust init_function_start
	call.
	* java/decl.c (complete_start_java_method): Likewise.
	* java/resource.c (write_resource_constructor): Likewise.

	* objc/objc-act.c (build_tmp_function_decl): Set line number to
	zero.
	(hack_method_prototype): Adjust init_function_start call.

	* treelang/treetree.c (tree_code_create_function_initial): Adjust
	init_function_start call.

From-SVN: r67953
2003-06-14 17:33:32 +00:00
Jan Hubicka
0435312e38 cfglayout.c (insn_scope): New static function
* cfglayout.c (insn_scope): New static function
	(block_locators_*, line_locators*, file_locators*): New static varrays.
	(scope_to_insns_initialize): Use them.
	(insn_line, insn_file): New functions.
	(scope_to_insns_finalize): Use insn_scope.
	(prologue_locator, epilogue_locator): New global variables.
	* emit-rt.c (try_split, make_insn_raw, make_jump_insn_raw,
	make_call_insn_raw, emit_copy_of_insn_after): Use locators.
	(emit_insn_after_scope, emit_insn_before_scope
	emit_jump_insn_after_scope, emit_jump_insn_before_scope
	emit_call_insn_after_scope, emit_call_insn_before_scope): Rename to...
	(emit_insn_after_setloc, emit_insn_before_setloc
	emit_jump_insn_after_setloc, emit_jump_insn_before_setloc
	emit_call_insn_after_setloc, emit_call_insn_before_setloc): ... these;
	use locators.
	* final.c (notice_source_line): Use locators.
	(final_start_function): Set initial source file and line.
	(final_scan_insn): Use locators.
	* ifcvt.c (noce_try_store_flag, noce_try_store_flag_constants,
	noce_try_addcc, noce_try_store_flag_mask, noce_try_cmove,
	noce_try_cmove_arith, noce_try_minmax, noce_try_abs,
	noce_process_if_block, find_cond_trap): Likewise.
	* integrate.c (copy_insn_list): Likewise.
	* jump.c (duplicate_loop_exit_test): LIkewise.
	* print-rtl.c (print_rtx): Print locators.
	* recog.c (peephole2_optimize): Likewise.
	* rtl.h (INSN_SCOPE): Remove.
	(emit_insn_after_scope, emit_insn_before_scope
	emit_jump_insn_after_scope, emit_jump_insn_before_scope
	emit_call_insn_after_scope, emit_call_insn_before_scope): Rename to...
	(emit_insn_after_setloc, emit_insn_before_setloc
	emit_jump_insn_after_setloc, emit_jump_insn_before_setloc
	emit_call_insn_after_setloc, emit_call_insn_before_setloc): ... these;
	(insn_file, insn_line, prologue_locator, epilogue_locator): Declare.
	* unroll.c (copy_loop_body): Use locators.
	* function.c (set_insn_locators): New function.
	(thread_prologue_and_epilogue_insns): Set the locators accordingly.

From-SVN: r67637
2003-06-08 19:35:54 +00:00
Jakub Jelinek
3edc56a9e5 function.c (trampolines_created): New variable.
* function.c (trampolines_created): New variable.
	(expand_function_end): Set it when doing INITIALIZE_TRAMPOLINE.
	* function.h (trampolines_created): Add.
	* config/s390/linux.h (ASM_FILE_END): Define.
	* config/alpha/linux-elf.h (ASM_FILE_END): Define.
	* config/m68k/linux.h (ASM_FILE_END): Define.
	* config/rs6000/linux.h (ASM_FILE_END): Define.
	* config/rs6000/linux64.h (ASM_FILE_END): Define.
	* config/rs6000/ppc-asm.h: Add .note.GNU-stack on powerpc-linux.
	* config/sparc/linux.h (ASM_FILE_END): Define.
	* config/sparc/linux64.h (ASM_FILE_END): Define.
	* config/i386/i386.c (ix86_asm_file_end): Use SUBTARGET_FILE_END.
	* config/i386/linux.h (SUBTARGET_FILE_END): Define.
	* config/i386/linux64.h (SUBTARGET_FILE_END): Define.

From-SVN: r67447
2003-06-04 18:44:51 +02:00
Aldy Hernandez
ded9bf77e3 function.c (assign_parms): Split complex arguments.
2003-06-03  Aldy Hernandez  <aldyh@redhat.com>

        * function.c (assign_parms): Split complex arguments.

        * doc/tm.texi (SPLIT_COMPLEX_ARGS): Document.

        * expr.h (SPLIT_COMPLEX_ARGS): Define.
        (split_complex_types): Protoize.
        (split_complex_values): Protoize.

        * calls.c (expand_call): Split complex arguments on architectures
        that require it.
        (split_complex_values): New.
        (split_complex_types): New.

        * config/rs6000/rs6000.c (rs6000_libcall_value): New.
        (rs6000_function_value): Handle complex values on AIX.
        (rs6000_complex_function_value): New.

        * config/rs6000/rs6000-protos.h (rs6000_libcall_value): Protoize.

        * config/rs6000/rs6000.h (LIBCALL_VALUE): Call function.
        (SPLIT_COMPLEX_ARGS): New.

From-SVN: r67367
2003-06-03 11:14:07 +00:00
Andreas Jaeger
14fb18b06f Add missed chunk in last commit.
From-SVN: r67275
2003-05-31 20:59:10 +02:00
Andreas Jaeger
0d569849e6 function.c (trampoline_address): Remove ALLOCATE_TRAMPOLINE usage.
* function.c (trampoline_address): Remove ALLOCATE_TRAMPOLINE
        usage.

        * doc/tm.texi (Trampolines): Remove ALLOCATE_TRAMPOLINE.

        * config/d30v/d30v.h: Remove traces of ALLOCATE_TRAMPOLINE.

        * system.h: Poison ALLOCATE_TRAMPOLINE.

        * doc/tm.texi (Misc): Remove HANDLE_PRAGMA.
        * system.h: Poison HANDLE_PRAGMA.

	In f/
        * lex.c (ffelex_hash_): Remove HANDLE_PRAGMA and
        HANDLE_GENERIC_PRAGMA dependend code, remove #if 0 code.
        (pragma_getc): Removed.
        (pragma_ungetc): Removed.

From-SVN: r67274
2003-05-31 20:45:31 +02:00
Richard Kenner
7a6cdb44fd tree.h (contains_placeholder_p): Now returns bool.
* tree.h (contains_placeholder_p): Now returns bool.
	(CONTAINS_PLACEHOLDER_P): New macro.
	(type_contains_placeholder_p): New function.
	* tree.c (save_expr): Remove code avoiding folding COMPONENT_REF.
	(contains_placeholder_p): Now returns bool.
	Rework to use CONTAINS_PLACEHOLDER_P macro.
	(type_contains_placeholder_p): New function.
	* fold-const.c (fold, case COMPONENT_REF): Don't fold if
	type_contains_placeholder_p.
	(fold_range_test, fold_mathfn_compare, fold_inf_compare, fold):
	Use CONTAINS_PLACEHOLDER_P macro.
	* builtins.c (fold_builtin): Likewise.
	* calls.c (initialize_argument_information): Likewise.
	* emit-rtl.c (set_mem_attributes_minus_bitpos): Likewise.
	* explow.c (expr_size): Likewise.
	* expr.c (store_constructor, get_inner_reference): Likewise.
	* function.c (assign_parms): Likewise.
	* stor-layout.c (variable_size): Likewise.

From-SVN: r67189
2003-05-27 14:44:57 -04:00
Alan Modra
5c07bd7a3c * function.c (assign_parms): Check for zero size args.
From-SVN: r66901
2003-05-17 16:22:35 +09:30
Nathan Sidwell
6d70e6bee0 coverage.h (coverage_counter_alloc): New function.
* coverage.h (coverage_counter_alloc): New function.
	* function.h (struct function): Remove arc_profile flag.
	* coverage.c (fn_ident): Remove.
	(fn_b_ctrs, no_coverage): New.
	(get_coverage_counts): Use current_function_funcdef_no.
	(coverage_counter_alloc): New.
	(coverage_counter_ref): Adjust.
	(coverage_begin_output): Check no_coverage. Use
	current_function_funcdef_no.
	(coverage_end_function): Likewise.
	(create_coverage): Set no_coverage. Set DECL_UNINLINEABLE rather
	than clearing flag_inline_functions. Do not clear arc_profile
	flag.
	* function.c (prepare_function_start): Do not set arc_profile
	flag.
	* profile.c (instrument_edges): Return number of instrumented
	edges. Use a for loop.
	(branch_prob): Call coverage_counter_alloc. Make BB_TO_GCOV_INDEX
	local to here and simplify. Use profile_arc_flag not arc_profile
	flag.
	(find_spanning_tree): Reformat.
	* toplev.c (rest_of_compilation): Use profile_arc_flags and
	flag_test_coverage rather than arc_profile flag.

From-SVN: r66695
2003-05-11 19:21:32 +00:00
Alan Modra
c6b97fac18 expr.c (move_block_from_reg): Remove "size" parm.
* expr.c (move_block_from_reg): Remove "size" parm.  Localize vars.
	Move code handling pieces not larger than a word to..
	* function.c (assign_parms): ..here, but use change_address instead
	of adjust_address and operand_subword, and expand_binop instead of
	expand_shift.  Adjust calls to move_block_from_reg.
	* expr.h (move_block_from_reg): Update declaration.
	(copy_blkmode_from_reg): Formatting.
	* Makefile.in (function.o): Add $(OPTABS_H) to deps.
	* config/alpha/alpha.c (alpha_setup_incoming_varargs): Adjust
	move_block_from_reg calls.
	* config/arc/arc.c (arc_setup_incoming_varargs): Likewise.
	* config/i960/i960.c (i960_setup_incoming_varargs): Likewise.
	* config/m32r/m32r.c (m32r_setup_incoming_varargs): Likewise.
	* config/m88k/m88k.c (m88k_builtin_saveregsk): Likewise.
	* config/mips/mips.c (mips_setup_incoming_varargs): Likewise.
	* config/pa/pa.c (hppa_builtin_saveregs): Likewise.
	* config/romp/romp.h (SETUP_INCOMING_VARARGS): Likewise.
	* config/rs6000/rs6000.c (setup_incoming_varargs): Likewise.
	* config/sh/sh.c (sh_builtin_saveregs): Likewise.

From-SVN: r66623
2003-05-09 16:07:25 +09:30
Alan Modra
ffea5d1e43 function.c (assign_parms): Correct reversed reg_parm_stack_space test.
* function.c (assign_parms): Correct reversed reg_parm_stack_space
	test.  Add partial in-regs size to stack_args_size.

From-SVN: r66560
2003-05-07 23:07:57 +09:30
Zack Weinberg
87f85ea066 re PR c/10604 (-Wall includes sign conversion warning [3.3 regression])
PR c/10604

	* c-common.c (warn_sign_compare): Initialize to -1.
	* c-opts.c (c_common_init_options): Don't set warn_sign_compare here.
	(c_common_decode_option <OPT_Wall>): Set warn_sign_compare
	for C++ only.
	(c_common_post_options): Set warn_sign_compare from extra_warnings
	if it's still -1 at this point.

	* toplev.c (maybe_warn_unused_parameter): New static variable.
	(set_Wextra): New static function.
	(W_options): Remove "extra".
	(decode_W_option): Call set_Wextra.
	(independent_decode_option): Likewise.
	(set_Wunused): Cooperate with set_Wextra in setting
	warn_unused_parameter.
	(rest_of_compilation): No need to check extra_warnings as
	well as warn_uninitialized.

	* c-typeck.c (build_binary_op, build_conditional_expr):
	No need to check extra_warnings as well as warn_sign_compare.
	(internal_build_compound_expr): No need to check extra_warnings
	as well as warn_unused_value.
	* function.c (expand_function_end): No need to check extra_warnings
	as well as warn_unused_parameter.
	* stmt.c (expand_expr_stmt_value): No need to check extra_warnings
	as well as warn_unused_value.
	* cp/typeck.c (build_x_compound_expr): No need to check
	extra_warnings as well as warn_unused_value.

	* doc/invoke.texi: Clarify documentation of -Wsign-compare.
	* gcc.dg/compare7.c, g++.dg/warn/compare1.C: New testcases.

	* Makefile.in: Disable -Werror for gengtype-lex.o.

From-SVN: r66436
2003-05-03 21:44:31 +00:00
Alan Modra
e79498768f calls.c (struct arg_data): Move offset, slot_offset, size and alignment_pad to struct locate_and_pad_arg_data.
* calls.c (struct arg_data): Move offset, slot_offset, size and
	alignment_pad to struct locate_and_pad_arg_data.  Update all refs.
	(initialize_argument_information): Adjust call to locate_and_pad_parm.
	Delete alignment_pad var.  Don't calculate slot_offset here.
	(emit_library_call_value_1): Delete alignment_pad, offset and size
	vars.  Use struct locate_and_pad_arg_data instead.  Adjust refs.
	Adjust call to locate_and_pad_parm.  Don't tweak arg size for
	partial in-regs here.  Formatting fixes.
	* expr.h (struct locate_and_pad_arg_data): New struct.
	(locate_and_pad_parm): Adjust declaration.
	* function.c (assign_parms): Localize vars.  Use "locate" instead of
	other arg location vars.  Don't invoke FUNCTION_ARG or
	FUNCTION_INCOMING_ARG unless pretend_named is different from
	named_arg.  Heed MUST_PASS_IN_STACK and set up "partial" before
	calling locate_and_pad_parm.  Adjust locate_and_pad_parm call.
	Use slot_offset for stack home of reg parms.  Correct test for
	parm passed in memory.  Formatting fixes.
	(locate_and_pad_parm): Add "partial" to params.  Replace offset_ptr
	arg_size_ptr and alignment pad with "locate".  Set slot_offset here.
	Correct initial_offset_ptr handling.  Localize vars.  Always pad
	locate->offset even when in_regs.

From-SVN: r66383
2003-05-02 23:52:09 +09:30
Zdenek Dvorak
b2a7fa89ee * function.c (purge_addressof_1): Postpone insn in fewer cases.
From-SVN: r66286
2003-04-30 10:03:35 +00:00
Richard Kenner
834277a89a Fix typo in comment.
From-SVN: r65935
2003-04-22 08:09:09 -04:00
J"orn Rennecke
277b3b18b3 function.c (purge_addressof_1): In (mem (addressof (reg))) case for reg notes...
* function.c (purge_addressof_1): In (mem (addressof (reg))) case
	for reg notes, if there are no substitutions, just use a SUBREG.

From-SVN: r65934
2003-04-22 12:41:58 +01:00
Richard Kenner
34d21fe305 function.c (purge_addressof_1): For ADDRESSOF...
* function.c (purge_addressof_1): For ADDRESSOF, see if SUB is a
	hard or virtual register and copy into pseudo if replacement fails.

From-SVN: r65798
2003-04-18 18:39:23 -04:00
Richard Henderson
68d28100a0 libfuncs.h (LTI_setbits, [...]): New.
* libfuncs.h (LTI_setbits, LTI_gcov_flush, LTI_gcov_init): New.
        (setbits_libfunc, gcov_flush_libfunc, gcov_init_libfunc): New.
        * optabs.c (init_optabs): Initialize them.
        (init_libfuncs): Use init_one_libfunc.
        * calls.c (expand_call): Use gcov_flush_libfunc.
        * expr.c (store_constructor): Use setbits_libfunc.
        * function.c (expand_main_function): Use init_one_libfunc.
        * profile.c (create_profiler): Use gcov_init_libfunc and DECL_RTL.

From-SVN: r65478
2003-04-11 12:45:32 -07:00
Zack Weinberg
339a28b96a c-decl.c (struct binding_level): Add shadowed_tags and function_body...
2003-04-10  Zack Weinberg  <zack@codesourcery.com>

	* c-decl.c (struct binding_level): Add shadowed_tags and
	function_body; remove this_block, tag_transparent, and
	subblocks_tag_transparent; update comments.
	(clear_binding_level, lookup_tag_reverse): Kill.
	(make_binding_level): Use ggc_alloc_cleared or memset.
	(lookup_tag): Remove struct binding_level* parameter.  All
	callers changed. Just look at IDENTIFIER_TAG_VALUE, and
	current_binding_level->tags if asked for thislevel_only or if
	we might have to diagnose "struct foo; union foo;"
	(pushlevel): Ignore argument.  Do not push another binding
	level on the transition from the parameters to the top level
	of the function body; just tweak the flags and proceed.
	(poplevel): Overhaul.  Clear IDENTIFIER_TAG_VALUEs; on exiting
	a function body, separate the parameter list from the
	top-level local variables.
	(set_block): Do nothing.
	(pushtag): Set IDENTIFIER_TAG_VALUE and add an entry to
	shadowed_tags if necessary.
	(warn_if_shadowing): Nuke the special case for local shadowing
	parameter.
	(pushdecl): Do not create a shadow entry if we are replacing
	an older decl in the same binding level.
	(pushdecl_function_level): Tweak for new way of indicating
	function scope.
	(shadow_tag_warned): Use TYPE_NAME, not	lookup_tag_reverse.
	(start_function): Don't set subblocks_tag_transparent.
	(finish_function): Fix up the binding_level stack for totally
	empty functions.  Otherwise, don't call poplevel.

	* c-common.c (shadow_warning): MANDATORY argument is no longer
	necessary.  Always use plain warning.
	* c-common.h: Update to match.

	* cfglayout.c (scope_to_insns_initialize): Clear block when we
	hit the FUNCTION_DECL.
	* function.c: Do not create cyclic tree structure.

2003-04-10  Zack Weinberg  <zack@codesourcery.com>

	* c-tree.h (struct lang_identifier): Replace global_value,
	local_value members with symbol_value, tag_value.  Kill
	implicit_decl and limbo_value.
	(IDENTIFIER_GLOBAL_VALUE, IDENTIFIER_LOCAL_VALUE,
	IDENTIFIER_LIMBO_VALUE, IDENTIFIER_IMPLICIT_DECL,
	C_MISSING_PROTOTYPE_WARNED): Kill.
	(IDENTIFIER_SYMBOL_VALUE, IDENTIFIER_TAG_VALUE,
	C_DECL_IMPLICIT, C_DECL_ISNT_PROTOTYPE): New.
	(C_DECL_ANTICIPATED): Rename to C_DECL_INVISIBLE.
	(implicit_decl_warning, lookup_name_current_level,
	record_function_scope_shadow): Don't prototype.
	(pushdecl_function_level): Prototype.

	* c-decl.c (truly_local_externals): New variable.
	(struct binding_level): Adjust commentary.
	(get_function_binding_level, clear_limbo_values,
	record_function_scope_shadow): Kill.
	(lookup_name_current_level, implicit_decl_warning): Are	now static.
	(any_external_decl, record_external_decl): New static functions.
	(clone_underlying type): Split out of pushdecl.
	(c_print_identifier): Update to match changes to struct
	lang_identifier.
	(poplevel): Delete #if 0 block.  Make externals invisible
	instead of clearing their IDENTIFIER_SYMBOL_VALUEs.  Don't
	call clear_limbo_values.  Refer to IDENTIFIER_SYMBOL_VALUE not
	IDENTIFIER_GLOBAL_VALUE or IDENTIFIER_LOCAL_VALUE.
	(duplicate-decls): For real parm decl after a forward decl,
	set TREE_ASM_WRITTEN here.  Allow void foo(...) followed by
	foo(...) { } with only a warning.  Say whether a previous
	declaration was implicit.
	(warn_if_shadowing): Now handles all shadowing, not just
	local-over-local.  Clarify comments.
	(pushdecl): Rewritten.  There is no longer a distinction
	between global and local symbol values; they're all
	IDENTIFIER_SYMBOL_VALUE.  Call record_external_decl on all
	DECL_EXTERNAL decls, and use any_external_decl to check
	against previous externals.  Kill #if 0 blocks.  Don't
	tolerate error_mark_node being NULL.
	(pushdecl_top_level): Handle only those cases which
	Objective C (the only user) needs.
	(pushdecl_function_level): New function.
	(implicitly_declare): Create ordinary decls with
	C_DECL_IMPLICIT set.  Recycle old decls, however they got
	created.
	(lookup_name): It's always IDENTIFIER_SYMBOL_VALUE. Return 0
	for C_DECL_INVISIBLE symbols.
	(lookup_name_current_level): Likewise.  Use chain_member.
	(c_make_fname_decl): Don't muck with DECL_CONTEXT.
	Use pushdecl_function_level.
	(builtin_function): Use C_DECL_INVISIBLE.
	(start_function): Don't muck with IDENTIFIER_IMPLICIT_DECL.
	Use C_DECL_ISNT_PROTOTYPE and C_DECL_IMPLICIT.
	(store_parm_decls): It's IDENTIFIER_SYMBOL_VALUE now.
	(identifier_global_value): Same.  Must scan
	global_binding_level in extremis.

	* c-typeck.c (undeclared_variable): New static function, split
	from build_external_ref.
	(build_external_ref): Use DECL_CONTEXT, not
	IDENTIFIER_LOCAL_VALUE, to decide whether a local hides
	an instance variable.  Restructure for clarity.
	* objc/objc-act.c: Use identifier_global_value, not
	IDENTIFIER_GLOBAL_VALUE.

cp:
	* decl.c: Update all calls to shadow_warning.

testsuite:
	* gcc.c-torture/execute/builtin-noret-2.c: New.
	* gcc.c-torture/execute/builtin-noret-2.x: New.
	XFAIL builtin-noret-2.c at -O1 and above.
	* gcc.dg/redecl.c: New.
	* gcc.dg/Wshadow-1.c: Update error regexps.

From-SVN: r65460
2003-04-11 04:26:55 +00:00
Jan Hubicka
f90e4deafa re PR inline-asm/8803 (Internal compiler error in instantiate_virtual_regs_1, at function.c:3974)
PR inline-asm/8803
	* function.c (instantate_virtual_regs):  Verify that all ASM statements
	match after the virutal regs instantiation.

From-SVN: r65438
2003-04-10 21:54:33 +00:00
Zdenek Dvorak
22659ac994 function.c (purge_addressof): Use free_INSN_LIST_node instead of free_EXPR_LIST_node.
* function.c (purge_addressof): Use free_INSN_LIST_node instead of
	free_EXPR_LIST_node.

From-SVN: r65396
2003-04-09 06:32:21 +00:00
Zdenek Dvorak
8a5275eb09 function.c (postponed_insns): New.
* function.c (postponed_insns): New.
	(purge_addressof_1): Postpone processing of insns if addressofs
	are not put into stack.
	(purge_addressof): Process postponed insns.

From-SVN: r65380
2003-04-08 19:53:34 +00:00
Richard Henderson
c5a1e3d69a re PR rtl-optimization/8634 (incorrect code for inlining of memcpy under -O2)
PR opt/8634
        * function.c (purge_addressof_1): Don't try arithmetics for
        unchanging memories.

From-SVN: r65351
2003-04-07 15:05:49 -07:00
Mark Mitchell
f89283915d function.c (put_var_into_stack): Change bool parameter to int.
* function.c (put_var_into_stack): Change bool parameter to int.
	(gen_mem_addressof): Likewise.
	* rtl.h (gen_mem_addressof): Likewise.
	* tree.h (put_var_into_stack): Likewise.
	* config/alpha/alpha.c (alpha_gp_save_rtx): Adjust call to
	gen_mem_addressof or put_var_into_stack.
	* config/c4x/c4x.c (c4x_expand_builtin): Likewise.
	* config/ia64/ia64.c (spill_tfmode_operand): Likewise.

From-SVN: r64807
2003-03-24 17:53:31 +00:00
Mark Mitchell
f29a2bd17d re PR c++/7086 (compile time regression)
PR c++/7086
	* c-typeck.c (c_mark_addressable): Adjust calls to
	put_var_into_stack.
	* expr.c (expand_expr): Likewise.
	* function.c (put_var_into_stack): Add rescan parameter.  Do not
	call fixup_var_refs when rescan is false.
	(gen_mem_addressof): Likewise.
	(assign_parms): Adjust calls to put_var_into_stack.
	(setjmp_protect): Likewise.
	(setjmp_protect_args): Likewise.
	* rtl.h (gen_mem_addressof): Change prototype.
	* stmt.c (expand_decl): Adjust calls to put_var_into_stack.
	* tree.h (put_var_into_stack): Change prototype.

	PR c++/7086
	* utils2.c: Adjust calls to put_var_into_stack.

	PR c++/7086
	* semantics.c (genrtl_named_return_value): Adjust calls to
	put_var_into_stack.
	* typeck.c (cxx_mark_addressable): Likewise.

	PR c++/7086
	* com.c (ffecom_sym_transform_): Adjust calls to
	put_var_into_stack.
	(ffe_mark_addressable): Likewise.

From-SVN: r64781
2003-03-24 08:31:36 +00:00
Jan Hubicka
5dc96d60e1 re PR inline-asm/7916 (ICE in instantiate_virtual_register_1)
PR inline-asm/7916
	* function.c (instantiate_virtual_regs_lossage): New function.
	(instantiate_virtual_regs_1): Use it.
	(instantiate_virtual_regs): Do not continue in substition when insn has
	been deleted.

From-SVN: r64681
2003-03-21 21:47:04 +00:00
Geoffrey Keating
f83b236e2a * function.c (next_block_index): Mark with GTY.
From-SVN: r64551
2003-03-18 19:49:41 +00:00
Olivier Hainque
b36a8cc273 function.c (assign_parms): For a struct value address passed as first argument...
* function.c (assign_parms): For a struct value address passed as
	first argument, delay the function's result RTL setup code until
	after the emission of parameter conversions.

From-SVN: r64493
2003-03-17 16:23:50 +00:00
Michael Hayes
47009d11db function.c (thread_prologue_and_epilogue_insns): Set delete_unused argument to 0 for redirect_jump.
* function.c (thread_prologue_and_epilogue_insns): Set delete_unused
	argument to 0 for redirect_jump.

From-SVN: r64468
2003-03-17 06:16:56 +00:00
Michael Hayes
d8eed979a3 re PR rtl-optimization/9387 (jump threading bug)
PR optimization/9387
	* function.c (thread_prologue_and_epilogue_insns): Use redirect_jump
	for conditional returns.

From-SVN: r64390
2003-03-15 02:44:29 +00:00
John David Anglin
95f3f59efd function.c (STACK_ALIGNMENT_NEEDED): New macro.
* function.c (STACK_ALIGNMENT_NEEDED): New macro.  Default to 1.
	(assign_stack_local_1): Perform overall stack alignment only when
	STACK_ALIGNMENT_NEEDED is non-zero.
	* doc/tm.texi (STACK_ALIGNMENT_NEEDED): Document.

	* pa.c (compute_frame_size): Rename fsize to size.  Account for
	alignment to a word boundary before general register save block.  Only
	account for double-word alignment before floating point register save
	block if one or more are saved.  Don't allocate space for %r3 when
	frame pointer is needed.
	(hppa_expand_prologue): Include alignment to word boundary in local
	frame size.
	* pa.h (STARTING_FRAME_OFFSET): Define to 8 on both 32 and 64-bit ports.
	(STACK_ALIGNMENT_NEEDED): Define.

From-SVN: r63771
2003-03-04 06:20:17 +00:00
Josef Zlomek
9d18e06bd5 emit-rtl.c (set_reg_attrs_for_parm): New function.
* emit-rtl.c (set_reg_attrs_for_parm): New function.
	* rtl.h (set_reg_attrs_for_parm): New exported function.
	* function.c (assign_parms): Use set_reg_attrs_for_parm instead of
	set_reg_attrs_from_mem.

From-SVN: r63548
2003-02-28 07:06:34 +00:00
Alexandre Oliva
c41536f56a function.c (assign_stack_local_1): Truncate constant added to frame_pointer_rtx or virtual_stack_vars_rtx for Pmode.
* function.c (assign_stack_local_1): Truncate constant added to
frame_pointer_rtx or virtual_stack_vars_rtx for Pmode.

From-SVN: r63488
2003-02-26 23:06:34 +00:00
Josef Zlomek
1d14f99280 function.c (assign_parms): Set reg_attrs for parameters passed in registers.
* function.c (assign_parms): Set reg_attrs for parameters passed in
	registers.

From-SVN: r63458
2003-02-26 06:45:21 +00:00
Jan Hubicka
563a317a85 calls.c (expand_call): Update call of INIT_CUMULATIVE_ARGS
* calls.c (expand_call): Update call of INIT_CUMULATIVE_ARGS
	* function.c (assign_params): Likewise.
	* arm-protos.h (arm_init_cumulative_args): Update prototype.
	* arm.c (arm_init_cumulative_args): Update function.
	* arm.h (INIT_CUMULATIVE_ARGS): Update.
	* avr-protos.h (init_cumulative_args): Update prototype.
	* avr.c (init_cumulative_args): Update function.
	* avr.h (INIT_CUMULATIVE_ARGS): Update.
	* d30v-protos.h (d30v_init_cumulative_args): Update prototype.
	* d30v.c (d30v_init_cumulative_args): Update function.
	* d30v.h (INIT_CUMULATIVE_ARGS): Update.
	* frv-protos.h (frv_init_cumulative_args): Update prototype.
	* frv.c (frv_init_cumulative_args): Update function.
	* frv.h (INIT_CUMULATIVE_ARGS): Update.
	* mips.c (mips_expand_prolgue): Update call of INIT_CUMULATIVE_ARGS.
	* pa.h (INIT_CUMULATIVE_ARGS): Update.
	* sparc-protos.h (init_cumulative_args): Update prototype.
	* sparc.c (init_cumulative_args): Update function.
	* sparc.h (INIT_CUMULATIVE_ARGS): Update.
	* tm.texi (INIT_CUMULATIVE_ARGS): Update documentation.

From-SVN: r63126
2003-02-19 18:03:11 +00:00
Richard Henderson
99dc72775f bb-reorder.c (find_traces_1_round): Don't connect easy to copy successors with multiple predecessors.
* bb-reorder.c (find_traces_1_round): Don't connect easy to copy
        successors with multiple predecessors.
        (connect_traces): Try harder to copy traces of length 1.

        * function.h (struct function): Add computed_goto_common_label,
        computed_goto_common_reg.
        * function.c (free_after_compilation): Zap them.
        * stmt.c (expand_computed_goto): Use them to produce one
        indirect branch per function.

From-SVN: r62944
2003-02-15 13:22:56 -08:00
Richard Henderson
2928cd7aac [multiple changes]
2003-02-01  Richard Henderson  <rth@redhat.com>

	* optabs.c (expand_unop): Use word_mode for outmode of bit scaners.
	* libgcc2.c (__ffsdi2, __clzsi2, __clzdi2, __ctzsi2, __ctzdi2,
	__popcountsi2, __popcountdi2, __paritysi2 __paritydi2): Change
	return type to Wtype.

	* libgcc-std.ver (GCC_3.4): Fix inheritance.

	* config/i386/i386.md (ffssi2): Use nonimmediate_operand for
	expander input constraint.

2003-02-01  Falk Hueffner  <falk.hueffner@student.uni-tuebingen.de>

        * optabs.h (optab_index): Add OTI_clz, OTI_ctz, OTI_popcount and
        OTI_parity.
        (clz_optab, ctz_optab, popcount_optab, parity_optab): New.
        * optabs.c (widen_clz, expand_parity): New.
        (expand_unop): Handle clz and parity.  Hardcode SImode as outmode
        for libcalls to clz, ctz, popcount, and parity.
        (init_optabs): Init clz_optab, ctz_optab, popcount_optab and
        parity_optab, and set up libfunc handlers.
        * libgcc2.c (__clzsi2, __clzdi2, __ctzsi2, __ctzdi2,
        __popcountsi2, __popcountdi2, __paritysi2 __paritydi2,
        __popcount_tab): New.
        * libgcc2.h: Declare them.
        * libgcc-std.ver (GCC_3.4): Add new functions from libgcc2.c.
        * genopinit.c (optabs): Add clz_optab, ctz_optab, popcount_optab
        and parity_optab.
        * builtin-types.def (BT_FN_INT_LONG, BT_FN_INT_LONGLONG): New.
        * builtins.def (BUILT_IN_CLZ, BUILT_IN_CTZ, BUILT_IN_POPCOUNT,
        BUILT_IN_PARITY, BUILT_IN_FFSL, BUILT_IN_CLZL, BUILT_IN_CTZL,
        BUILT_IN_POPCOUNTL, BUILT_IN_PARITYL, BUILT_IN_FFSLL,
        BUILT_IN_CLZLL, BUILT_IN_CTZLL, BUILT_IN_POPCOUNTLL,
        BUILT_IN_PARITYLL): New.
        * builtins.c (expand_builtin_unop): Rename from expand_builtin_ffs
        and add optab argument.
        (expand_builtin): Expand BUILT_IN_{FFS,CLZ,POPCOUNT,PARITY}*.
        * tree.def (CLZ_EXPR, CTZ_EXPR, POPCOUNT_EXPR, PARITY_EXPR): New.
        * expr.c (expand_expr): Handle them.
        * fold-const.c (tree_expr_nonnegative_p): Likewise.
        * rtl.def (CLZ, CTZ, POPCOUNT, PARITY): New.
        * reload1.c (eliminate_regs): Handle them.
        (elimination_effects): Likewise.
        * function.c (instantiate_virtual_regs_1): Likewise
        * genattrtab.c (check_attr_value): Likewise.
        * simplify-rtx.c (simplify_unary_operation): Likewise.
        * c-common.c (c_common_truthvalue_conversion): Handle POPCOUNT_EXPR.
        * combine.c (combine_simplify_rtx): Handle POPCOUNT and PARITY.
        (nonzero_bits): Handle CLZ, CTZ, POPCOUNT and PARITY.
        * config/alpha/alpha.md (clzdi2, ctzdi2, popcountdi2): New.
        * config/arm/arm.c (arm_init_builtins): Rename __builtin_clz to
        __builtin_arm_clz.
        * Makefile.in (LIB2FUNCS_1, LIB2FUNCS_2): Move...
        * mklibgcc.in (lib2funcs): ...here and merge.  Add new members.
        * doc/extend.texi (Other Builtins): Add new builtins.
        * doc/md.texi (Standard Names): Add new patterns.

From-SVN: r62252
2003-02-01 11:00:02 -08:00
Richard Earnshaw
c552c1468c re PR rtl-optimization/9090 ([3.2/3.3/3.4 regression?] arm ICE with >= -O2; regression from 2.95)
PR optimization/9090
* function.c (purge_addressof_1): After pushing an addressed register
onto the stack, simplify the result.

From-SVN: r61881
2003-01-27 10:46:47 +00:00
Roger Sayle
2adc9b0fc5 builtins.c (purge_builtin_constant_p): Scan insn stream sequentially rather than by basic block.
* builtins.c (purge_builtin_constant_p): Scan insn stream
	sequentially rather than by basic block.
	* function.c (purge_addressof): Simplify test with INSN_P.

From-SVN: r61789
2003-01-25 17:47:26 +00:00
Roger Sayle
07d9b20d81 function.h (struct function): New field calls_constant_p.
* function.h (struct function): New field calls_constant_p.
	(current_function_calls_constant_p): New macro for above.
	* function.c (prepare_function_start): Initialize calls_eh_return
	and calls_constant_p.
	* builtins.c (expand_builtin_constant_p): Set calls_constant_p.
	* toplev.c (rest_of_compilation): Only call purge_builtin_constant_p
	when the current_function_calls_constant_p.
	* integrate.c (expand_inline_function): Set calls_constant_p if
	the function being inlined has calls_constant_p set.

From-SVN: r61786
2003-01-25 17:42:39 +00:00
Jan Hubicka
a560d4d4d9 emit-rtl.c (reg_attrs_htab): New static variable.
* emit-rtl.c (reg_attrs_htab): New static variable.
	(reg_attrs_htab_hash, reg_attrs_htab_eq, get_reg_attrs): New static
	functions.
	(reg_rtx): Do not maintain regno_decl.
	(gen_rtx_REG_offset, set_reg_attrs_from_mem, set_delc_rtx,
	set_mem_attrs_from_reg): New global function.
	(init_emit): Do not initialize regno_decl.
	(init_emit_once): initialize reg_attrs_htab.
	* final.c (alter_subreg): Do not replace REG by SUBREG.
	(gen_mem_expr_from_op): Improve output.
	(output_asm_operands): Likewise.
	* function.c (assign_params): Do not set REGNO_DECL.
	* function.h (struct function): Kill regno_decl.
	(REGNO_DECL): Kill.
	* gengtype.c (adjust_field_rtx_def): Handle new field of reg.
	* print_rtl.c (print_rtx): Output REG information.
	* regclass.c (reg_scan_mark_refs): Update attrs.
	* reload1.c (alter_reg): Likewise.
	* simplify_rtx.c (simplify_subreg): Likewise.
	* stmt.c (expand_decl): Likewise.
	* rtl.def (REG): Add new field.
	* rtl.h (struct reg_attrs): New.
	(rtunion_def): At rtreg.
	(X0MEMATTR): Add checking.
	(X0REGATTR, REG_ATTRS, REG_EXPR, REG_OFFSET): New macro.
	(set_reg_attrs_from_mem, set_mem_attrs_from_reg, gen_rtx_REG_offset):
	Declare.
	* tree.h (SET_DECL_RTL): Call set_decl_rtl.

From-SVN: r61741
2003-01-24 22:45:58 +00:00
Phil Edwards
65ca2d606c Rename -W to -Wextra.
2003-01-24  Phil Edwards  <pme@gcc.gnu.org>

	Rename -W to -Wextra.
	* c-decl.c:  Update comments.
	* c-typeck.c:  Likewise.
	* flags.h:  Likewise.
	* function.c:  Likewise.
	* stmt.c:  Likewise.
	* toplev.c:  Update comments.
	(W_options):  Add 'extra'.
	(display_help):  Remove '-W'.
	(decode_W_option):  Special warn_uninitialized treatment in the case
	of -Wextra.
	* doc/invoke.texi:  Update with new entries.

From-SVN: r61696
2003-01-24 15:17:26 +00:00
Kaveh R. Ghazi
fc55537052 arm.h (CONDITIONAL_REGISTER_USAGE): Avoid signed/unsigned warning.
* arm.h (CONDITIONAL_REGISTER_USAGE): Avoid signed/unsigned
	warning.
	* emit-rtl.c (gen_rtx_REG, set_mem_attributes_minus_bitpos,
	init_emit_once): Likewise.
	* flow.c (mark_regs_live_at_end, calculate_global_regs_live):
	Likewise.
	* function.c (assign_stack_temp_for_type): Likewise.
	* loop.c (loop_invariant_p): Likewise.
	* recog.c (push_operand): Likewise.
	* regclass.c (init_reg_sets_1): Likewise.
	* reload.c (update_auto_inc_notes): Likewise.
	* reload1.c (reload_as_needed, emit_input_reload_insns): Likewise.
	* stmt.c (expand_asm_operands): Likewise.
	* stor-layout.c (start_record_layout): Likewise.

cp:
	* class.c (layout_virtual_bases): Avoid signed/unsigned warning.

java:
	* jcf-write.c (generate_bytecode_insns): Avoid signed/unsigned
	warning.

From-SVN: r61389
2003-01-16 15:13:33 +00:00
Geoffrey Keating
17211ab553 Merge from pch-branch.
From-SVN: r61136
2003-01-10 02:22:34 +00:00
Dale Johannesen
de62b72ce7 function.c (assign_parms): Don't set pretend_args_size if REG_PARM_STACK_SPACE.
2003-01-08  Dale Johannesen  <dalej@apple.com>

        * function.c (assign_parms):  Don't set pretend_args_size if
          REG_PARM_STACK_SPACE.
          config/rs6000/rs6000.c (setup_incoming_varargs):  Don't set
          pretend_args_size.

From-SVN: r61063
2003-01-09 00:53:29 +00:00
Zack Weinberg
4977bab6ed Merge basic-improvements-branch to trunk
From-SVN: r60174
2002-12-16 18:23:00 +00:00
Kazu Hirata
09da15320b c-decl.c: Fix a comment typo.
* c-decl.c: Fix a comment typo.
	* cfg.c: Likewise.
	* cfgcleanup.c: Likewise.
	* cfglayout.c: Likewise.
	* cfgrtl.c: Likewise.
	* c-typeck.c: Likewise.
	* dominance.c: Likewise.
	* dwarf2asm.c: Likewise.
	* dwarfout.c: Likewise.
	* expmed.c: Likewise.
	* expr.c: Likewise.
	* final.c: Likewise.
	* flow.c: Likewise.
	* function.c: Likewise.
	* gcc.c: Likewise.
	* genautomata.c: Likewise.
	* integrate.c: Likewise.
	* loop.c: Likewise.
	* loop.h: Likewise.
	* output.h: Likewise.
	* profile.c: Likewise.
	* ra.h: Likewise.
	* reload1.c: Likewise.
	* reload.c: Likewise.
	* sched-rgn.c: Likewise.
	* stmt.c: Likewise.
	* tree.h: Likewise.
	* vmsdbgout.c: Likewise.

From-SVN: r60085
2002-12-13 00:17:22 +00:00
John David Anglin
084a11066f expr.c (gen_group_rtx, [...]): New functions.
* expr.c (gen_group_rtx, emit_group_move): New functions.
	* expr.h (gen_group_rtx, emit_group_move): Prototype.
	* function.c (expand_function_start): Use gen_group_rtx to create a
	PARALLEL rtx to hold the return value when the real return rtx is a
	PARALLEL.
	(expand_function_end): Use emit_group_move to move the return value
	from a PARALLEL to the real return registers.
	* rtl.h (REG_FUNCTION_VALUE_P): Allow function values to be returned
	in PARALLELs.

From-SVN: r59554
2002-11-27 02:29:12 +00:00
Mark Mitchell
a3b885703b re PR rtl-optimization/6631 (Miscompiled structure access)
PR optimization/6631
	* Makefile.in (function.o): Depend on langhooks.h.
	* alias.c (objects_must_conflict_p): Check honor_readonly when
	examining TYPE_READONLY.
	* function.c (assign_stack_temp_for_type): Likewise.

	PR optimization/6631
	* g++.dg/opt/const2.C: New test.

From-SVN: r58136
2002-10-14 21:19:05 +00:00
Jan Hubicka
db6556348d re PR c/7344 (performance regression on huge case statements)
* calls.c (expand_call): Simplify noreturn call.

	PR c/7344
	* cfgbuild.c (make_edges): Create edge cache when we do have
	large jumptable.
	(do_tablejump): Note size of maximal jumptable.
	* function.c (prepare_function_start): Zero out size.
	* function.h (function): Add max_jumptable_ents.

	* cfgcleanup.c (insn_match_p): Verify sibcall flag for calls to.

From-SVN: r58063
2002-10-11 20:26:50 +00:00
Kaveh R. Ghazi
7bdfd72e8d decl.c (typename_hash): Use htab_hash_pointer.
cp:
	* decl.c (typename_hash): Use htab_hash_pointer.

gcc:
	* fold-const.c (size_htab_hash): Use htab_hash_pointer.
	* function.c (insns_for_mem_hash): Likewise.
	* varasm.c (STRHASH): Likewise.

java:
	* class.c (JAVA_TREEHASHHASH_H): Use htab_hash_pointer.

From-SVN: r58036
2002-10-11 01:28:28 +00:00
Kazu Hirata
cc2902df52 dbxout.c: Follow spelling conventions.
* dbxout.c: Follow spelling conventions.
	* defaults.h: Likewise.
	* df.c: Likewise.
	* diagnostic.h: Likewise.
	* doloop.c: Likewise.
	* dwarf2out.c: Likewise.
	* dwarfout.c: Likewise.
	* emit-rtl.c: Likewise.
	* except.c: Likewise.
	* explow.c: Likewise.
	* expmed.c: Likewise.
	* expr.c: Likewise.
	* expr.h: Likewise.
	* flags.h: Likewise.
	* flow.c: Likewise.
	* fold-const.c: Likewise.
	* function.c: Likewise.
	* function.h: Likewise.
	* gcc.c: Likewise.
	* gcov-io.h: Likewise.
	* gcov.c: Likewise.
	* gcse.c: Likewise.
	* genattrtab.c: Likewise.
	* genconfig.c: Likewise.
	* genrecog.c: Likewise.
	* ggc-page.c: Likewise.
	* ggc.h: Likewise.
	* global.c: Likewise.
	* gthr-win32.h: Likewise.
	* integrate.c: Likewise.
	* jump.c: Likewise.
	* langhooks.c: Likewise.
	* langhooks.h: Likewise.
	* line-map.h: Likewise.
	* local-alloc.c: Likewise.
	* longlong.h: Likewise.
	* loop.c: Likewise.
	* loop.h: Likewise.

From-SVN: r57406
2002-09-22 14:09:34 +00:00
John David Anglin
9dff28ab53 calls.c (store_one_arg): Set default alignment for BLKmode arguments to BITS_PER_UNIT when...
* calls.c (store_one_arg): Set default alignment for BLKmode arguments
	to BITS_PER_UNIT when ARGS_GROW_DOWNWARD and the padding direction is
	downward.
	* function.c (pad_below):  Always compile.
	(locate_and_pad_parm): If defined ARGS_GROW_DOWNWARD, pad argument to
	alignment when it is not in a register or REG_PARM_STACK_SPACE is true.
	Pad below when the argument is not in a register and the padding
	direction is downward.
	* pa-64.h (MUST_PASS_IN_STACK): Move define to pa.h.
	(PAD_VARARGS_DOWN): Define.
	* pa.c (function_arg_padding): Revise padding directions to make them
	compatible with the 32 and 64-bit runtime architecture documentation.
	(hppa_va_arg):  Add code to handle variable and size zero arguments
	passed by reference on TARGET_64BIT.  Reformat.
	(function_arg): Use a PARALLEL for BLKmode and aggregates args on
	TARGET_64BIT.  Use a DImode PARALLEL for BLKmode args 5 to 8 bytes
	wide when !TARGET_64BIT.  Move forward check for mode==VOIDmode.
	Add comments.
	* pa.h (MAX_PARM_BOUNDARY): Correct define for TARGET_64BIT.
	(RETURN_IN_MEMORY): Return size zero types in memory.
	(FUNCTION_VALUE): Return TFmode in general registers.
	(MUST_PASS_IN_STACK): Define.
	(FUNCTION_ARG_BOUNDARY): Simplify.
	(FUNCTION_ARG_PASS_BY_REFERENCE): Pass variable and zero sized types
	by reference.
	(FUNCTION_ARG_CALLEE_COPIES): Define to FUNCTION_ARG_PASS_BY_REFERENCE.

From-SVN: r57226
2002-09-17 03:30:37 +00:00
Kazu Hirata
8d9afc4e2b ABOUT-NLS: Follow spelling conventions.
* ABOUT-NLS: Follow spelling conventions.
	* ChangeLog: Likewise.
	* ChangeLog.1: Likewise.
	* ChangeLog.2: Likewise.
	* ChangeLog.3: Likewise.
	* ChangeLog.4: Likewise.
	* ChangeLog.5: Likewise.
	* ChangeLog.6: Likewise.
	* FSFChangeLog.10: Likewise.
	* FSFChangeLog.11: Likewise.
	* c-common.c: Likewise.
	* c-lex.c: Likewise.
	* c-objc-common.c: Likewise.
	* cppexp.c: Likewise.
	* cppinit.c: Likewise.
	* cpplex.c: Likewise.
	* doloop.c: Likewise.
	* flow.c: Likewise.
	* function.c: Likewise.
	* integrate.c: Likewise.
	* loop.c: Likewise.
	* reg-stack.c: Likewise.
	* reload.h: Likewise.
	* ssa.c: Likewise.

From-SVN: r57188
2002-09-16 11:42:00 +00:00
Richard Henderson
44bb111a78 expr.h (enum block_op_methods): New.
* expr.h (enum block_op_methods): New.
        (emit_block_move): Update prototype.
        * expr.c (block_move_libcall_safe_for_call_parm): New.
        (emit_block_move_via_loop): New.
        (emit_block_move): Use them.  New argument METHOD.
        (emit_push_insn): Always respect the given alignment.
        (expand_assignment): Update call to emit_block_move.
        (store_expr, store_field, expand_expr): Likewise.
        * builtins.c (expand_builtin_apply): Likewise.
        (expand_builtin_memcpy, expand_builtin_va_copy): Likewise.
        * function.c (expand_function_end): Likewise.
        * config/sh/sh.c (sh_initialize_trampoline): Likewise.
        * config/sparc/sparc.c (sparc_va_arg): Likewise.
        * calls.c (expand_call, emit_library_call_value_1): Likewise.
        (save_fixed_argument_area): Use emit_block_move with
        BLOCK_OP_CALL_PARM instead of move_by_pieces.
        (restore_fixed_argument_area): Likewise.
        (store_one_arg): Fix alignment parameter to emit_push_insn.

From-SVN: r56661
2002-08-29 12:20:01 -07:00
Neil Booth
81d41e749d * function.c (TRAMPOLINE_ALIGNMENT): Always defined.
From-SVN: r56078
2002-08-06 20:39:41 +00:00
Geoffrey Keating
6d9f628e05 Index: ChangeLog
2002-08-04  Geoffrey Keating  <geoffk@redhat.com>

	* Makefile.in (sdbout.o): Doesn't need $(OBSTACK_H).
	* collect2.h (permanent_obstack): Delete declaration.
	* collect2.c (permanent_obstack): Delete definition.
	(main): Don't initialise permanent_obstack.  Use xstrdup instead.
	* expr.c: Don't include obstack.h.
	(permanent_obstack): Delete declaration.
	* function.c: Don't include obstack.h.
	(permanent_obstack): Delete declaration.
	* integrate.c: Don't include obstack.h.
	(function_maybepermanent_obstack): Delete declaration.
	* print-tree.c (debug_tree): Use x*alloc not permalloc.
	* sdbout.c (gen_fake_label): Use x*alloc not permalloc.
	* tlink.c (pfgets): Use xstrdup not permanent_obstack.
	* toplev.c (lang_independent_init): Rename init_obstacks to init_ttree.
	* tree.h: Rename init_obstacks to init_ttree.  Remove declarations
	of permalloc, expralloc, perm_calloc.
	* tree.c (permanent_obstack): Delete definition.
	(init_ttree): Rename from init_obstacks.
	(permalloc): Delete.
	(perm_calloc): Delete.
	(dump_tree_statistics): Don't print information about
	permanent_obstack.
	* varasm.c (assemble_start_function): Use xstrdup instead of
	permalloc/strcpy.
	(assemble_variable): Likewise.
	* config/alpha/alpha.c (unicosmk_need_dex): Use xmalloc instead of
	permalloc.
	(unicosmk_add_extern): Likewise.
	* config/c4x/c4x.c (c4x_external_ref): Likewise.
	(c4x_global_label): Likewise.
	* config/frv/frv.c (frv_encode_section_info): Likewise.
	* config/i386/winnt.c (i386_pe_record_external_function): Likewise.
	(i386_pe_record_exported_symbol): Likewise.
	* config/mips/mips.c (mips_output_external): Likewise.
	(mips_output_external_libcall): Likewise.
	* config/pa/pa.c: (permanent_obstack): Delete declaration.
	(output_call): Use ggc_strdup instead of allocating on
	permanent_obstack.
	* config/romp/romp.c: Include ggc.h.
	(get_symref): Don't declare permanent_obstack, use ggc_strdup
	intead of permanent_obstack.
	* config/rs6000/aix31.h (ASM_OUTPUT_EXTERNAL): Use concat
	instead of permalloc.
	* config/rs6000/rs6000.c (rs6000_gen_section_name): Use xmalloc
	instead of permalloc
	* config/rs6000/xcoff.h (ASM_OUTPUT_EXTERNAL): Use concat
	instead of permalloc.
	* config/vax/vax.c (vms_check_external): Use xmalloc instead of
	permalloc.

Index: cp/ChangeLog
2002-08-04  Geoffrey Keating  <geoffk@redhat.com>

	* cvt.c (ocp_convert): Delete obsolete code.
	* parse.y (permanent_obstack): Delete declaration.
	* pt.c (permanent_obstack): Delete declaration.
	* repo.c (permanent_obstack): Delete declaration.
	(open_repo_file): Use xmalloc instead of permanent_obstack.
	(init_repo): Use xstrdup instead of permanent_obstack.

Index: java/ChangeLog
2002-08-04  Geoffrey Keating  <geoffk@redhat.com>

	* class.c: (permanent_obstack): Delete declaration.
	* constants.c: (permanent_obstack): Delete declaration.
	* except.c: (permanent_obstack): Delete declaration.
	* expr.c: (permanent_obstack): Delete declaration.
	* jcf-parse.c: (permanent_obstack): Delete declaration.
	(saveable_obstack): Delete declaration.
	* parse.h: (permanent_obstack): Delete declaration.
	* typeck.c: (permanent_obstack): Delete declaration.

From-SVN: r56035
2002-08-04 22:45:31 +00:00
Jason Merrill
8e51619a4c function.c (assign_parms): Handle frontend-directed pass by invisible reference.
* function.c (assign_parms): Handle frontend-directed pass by
        invisible reference.
cp/
        * call.c (build_over_call): Likewise.
        (cp_convert_parm_for_inlining): New fn.
        (convert_for_arg_passing): New fn.
        (convert_default_arg, build_over_call): Use it.
        (type_passed_as): New fn.
        * pt.c (tsubst_decl): Use it.
        * decl2.c (cp_build_parm_decl): New fn.
        (build_artificial_parm): Use it.
        (start_static_storage_duration_function): Likewise.
        * decl.c (start_cleanup_fn, grokdeclarater): Likewise.
        (grokparms): Don't mess with DECL_ARG_TYPE.
        * typeck.c (convert_arguments): Use convert_for_arg_passing.
        * cp-lang.c (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING):
        Define.
        * cp-tree.h: Declare new fns.

From-SVN: r55781
2002-07-26 16:10:43 -04:00
Neil Booth
060a58c593 gengenrtl.c (gencode): Don't define obstack_alloc_rtx.
* gengenrtl.c (gencode): Don't define obstack_alloc_rtx.
	* function.c (SYMBOL__MAIN): Remove definition.
	* global.c (SET_CONFLICT, REGBITP, ALLOCNO_LIVE_P): Remove.
	* predict.c (PROB_NEVER, PROB_LIKELY, PROB_UNLIKELY): Remove.
	* profile.c (GCOV_INDEX_TO_BB): Remove.
	* sched-rgn.c (ABS_VALUE, MIN_DIFF_PRIORITY, MIN_PROB_DIFF): Remove.
	* simplify-rtx.c (FIXED_BASE_PLUS_P): Remove.

From-SVN: r55631
2002-07-21 22:01:58 +00:00
Zack Weinberg
6c535c69ee varargs.h: Replace with stub which issues #error.
* ginclude/varargs.h: Replace with stub which issues #error.
	* ginclude/stdarg.h: __builtin_stdarg_start is renamed
	__builtin_va_start.

	* builtins.def (BUILT_IN_VARARGS_START): Delete.
	(BUILT_IN_VA_START): New.
	* builtins.c (expand_builtin_va_start): Eliminate first
	argument and code to implement pre-ISO varargs.
	(std_expand_builtin_va_start): Ignore first argument; it is
	always 1.
	(expand_builtin): Handle BUILT_IN_VA_START and
	BUILT_IN_STDARG_START identically.  Delete
	BUILT_IN_VARARGS_START case.

	* function.c (assign_parms): Delete hide_last_arg and all
	its uses.
	(mark_varargs): Delete function.
	* function.h (struct function): Delete 'varargs' bit.
	(current_function_varargs): Delete macro.
	* tree.h: Don't declare mark_varargs.

	* c-decl.c (c_function_varargs, c_mark_varargs): Delete.
	(c_expand_body): Don't call mark_varargs.
	* c-objc-common.c: Handle BUILT_IN_VA_START and
	BUILT_IN_STDARG_START identically.  Delete
	BUILT_IN_VARARGS_START case.
	* c-tree.h: Don't declare c_mark_varargs.
	* c-parse.in: Remove grammar rules for '&...' (which has been
	commented out since before 2.7.2) and for '...' in K+R
	argument declarations.

	* builtins.c, function.c, integrate.c, sibcall.c,
	config/alpha/unicosmk.h, config/arc/arc.c, config/arc/arc.h,
	config/avr/avr.c, config/cris/cris.c, config/fr30/fr30.c,
	config/i960/i960.c, config/i960/i960.md, config/m32r/m32r.c,
	config/m32r/m32r.h, config/m88k/m88k.c, config/m88k/m88k.h,
	config/mips/mips.c, config/mmix/mmix.c, config/mmix/mmix.h,
	config/mn10300/mn10300.c, config/pa/som.h, config/s390/s390.c,
	config/sh/sh.c, config/sh/sh.h, config/sparc/sparc.h,
	config/stormy16/stormy16.c: Delete all references to
	current_function_varargs, and code predicated on that flag.

	* config/alpha/alpha.c (alpha_va_start),
	config/arc/arc.c (arc_va_start),
	config/i386/i386.c (ix86_va_start),
	config/mips/mips.c (mips_va_start),
	config/mn10300/mn10300.c (mn10300_va_start),
	config/rs6000/rs6000.c (rs6000_va_start),
	config/s390/s390.c (s390_va_start),
	config/sh/sh.c (sh_va_start),
	Ignore first argument; it is always 1.

	* config/c4x/c4x-protos.h, config/c4x/c4x.c: Delete c4x_va_start.
	* config/ia64/ia64-protos.h, config/ia64/ia64.c: Delete ia64_va_start.
	* config/m68hc11/m68hc11-protos.h, config/m68hc11/m68hc11.c:
	Delete m68hc11_va_start.
	* config/c4x/c4x.h, config/ia64/ia64.h, config/m68hc11/m68hc11.h:
	No need to define EXPAND_BUILTIN_VA_START.

	* doc/invoke.texi, doc/sourcebuild.texi, doc/tm.texi,
	doc/trouble.texi: Remove references to GCC-provided <varargs.h>.

testsuite:
	* c-torture/execute/991216-3.c, c-torture/execute/strct-varg-1.c,
	c-torture/execute/va-arg-7.c, c-torture/execute/va-arg-8.c,
	c-torture/execute/va-arg-15.c, c-torture/execute/va-arg-16.c,
	c-torture/execute/va-arg-17.c, c-torture/execute/va-arg-19.c:
	Convert to use <stdarg.h>.
	* c-torture/execute/va-arg-3.c, c-torture/execute/va-arg-3.x:
	Delete.
	* gcc.dg/va-arg-2.c: New.
	* lib/gcc.exp, lib/objc.exp: Remove code to set -DNO_VARARGS.

From-SVN: r55472
2002-07-16 02:16:47 +00:00
Ulrich Weigand
faa964e5dd re PR middle-end/6963 (Linux kernel miscompile due to clobbered MEM_SIZE)
PR middle-end/6963
	* function.c (assign_stack_temp_for_type): Do not return
	the same MEM rtx for multiple uses of a stack slot.

From-SVN: r54912
2002-06-22 14:26:53 +00:00
Richard Henderson
df696a7573 function.h (struct function): Rename profile_label_no.
* function.h (struct function) [funcdef_no]: Rename profile_label_no.
        (current_function_funcdef_no): Similarly.
        * function.c (funcdef_no): Similarly.
        (prepare_function_start): Set current_function_funcdef_no.
        (expand_function_start): Don't set current_function_profile_label_no.
        * dwarf2out.h (current_funcdef_number): Remove.
        * dwarf2out.c (current_funcdef_number): Remove.  Replace with
        current_function_funcdef_no throughout.
        * dwarfout.c, vmsdbgout.c: Similarly.
        * except.c (sjlj_funcdef_number): Remove.
        (sjlj_emit_function_enter): Use current_function_funcdef_no instead.
        (output_function_exception_table): Likewise.
        * final.c (profile_function): Use current_function_funcdef_no
        instead of current_function_profile_label_no.

From-SVN: r54709
2002-06-17 10:47:22 -07:00
Richard Earnshaw
0af5c89673 function.c (epilogue_done): Correctly build a sequence of insns for a sibcall epilogue.
* function.c (epilogue_done): Correctly build a sequence of insns for
a sibcall epilogue.

From-SVN: r54702
2002-06-17 08:42:00 +00:00
Jeff Law
7f24367410 alias.c (argument_registers): Remove.
* alias.c (argument_registers): Remove.
	(init_alias_once): Initialize static_reg_base_value here.  Remove
	initialization of argument_registers.
	(init_alias_once_per_function): Remove.
	(init_alias_analysis): Copy all the entries from static_reg_base_value
	into new_reg_base_value all at once.
	* rtl.h (init_alias_once_per_function): Remove declaration.
	* function.c (prepare_function_start): Do not call
	init_alias_once_per_function.

	* caller-save.c (init_caller_save): Use gen_rtx_INSN instead of
	starting a sequence and emitting an INSN.

From-SVN: r54582
2002-06-13 06:24:00 -06:00
David S. Miller
2f937369fa Delete SEQUENCE rtl usage outside of reorg and ssa passes.
2002-06-05  David S. Miller  <davem@redhat.com>

	Delete SEQUENCE rtl usage outside of reorg and ssa passes.
	* rtl.h (gen_sequence, emit_insns, emit_insns_before,
	emit_insns_before_scope, emit_insns_after,
	emit_insns_after_scope): Delete declaration.
	* ada/misc.c (insert_code_for): Use emit_insn* instead of
	emit_insns_foo.
	* config/alpha/alpha.c (alpha_set_memflags_1): Abort on SEQUENCE.
	(alpha_set_memflags): Fix comment.
	(set_frame_related_p): Use get_insns instead of gen_sequence.
	* config/alpha/alpha.md (setjmp receiver splitter): Avoid
	emitting no insns.
	* config/arm/arm.c (arm_finalize_pic): Use get_insns instead of
	gen_sequence.
	(arm_gen_load_multiple, arm_gen_store_multiple): Likewise.
	* config/fr30/fr30.c (fr30_move_double): Likewise.
	* config/i386/i386.c (ix86_expand_int_movcc, ix86_expand_movstr):
	Likewise.
	* config/ia64/ia64.c (spill_restore_mem): Likewise.
	* config/ia64/ia64.md (conditional move spliiter): Avoid emitting
	no insns.
	* config/m32r/m32r.c (gen_split_move_double): Use get_insns
	instead of gen_sequence.
	* config/mips/mips.c (embedded_pic_fnaddr_reg): Likewise.
	(mips_expand_prologue, mips16_gp_pseudo_reg): Likewise.
	* config/sh/sh.c (sh_need_epilogue): Likewise.
	* config/sparc/sparc.md (current_function_calls_alloca, flat): New
	attributes.
	(setjmp pattern and split): Use them to avoid splitter which emits
	no RTL.
	* genattrtab.c (main): Emit include of function.h
	* config/stormy16/stormy16.c (xstormy16_split_cbranch): Use
	get_insns instead of gen_sequence.
	* config/cris/cris.c (cris_split_movdx): Likewise.
	* emit-rtl.c (emit_insns*): Kill.
	(try_split): Expect insn list instead of SEQUENCE.
	(make_jump_insn_raw, make_call_insn_raw): Fix comments.
	(emit_*insn*): Reimplement to work with INSN lists and PATTERNs.
	Make them abort if a SEQUENCE is given and RTL checking is
	enabled.
	(emit_*_scope): Don't forget to set scope on final insn.
	(gen_sequence): Move from here...
	* ssa.c (gen_sequence): To here as private function.
	* builtins.c (expand_builtin_apply_args): Use emit_insn_foo, fix
	comments.
	(expand_builtin_return, expand_builtin_mathfn): Likewise.
	(expand_builtin_strlen): Use get_insns instead of gen_sequence.
	(expand_builtin_saveregs): Use emit_insn_foo, fix comments.
	(expand_builtin_expect_jump): Use get_insns and fix comments.
	* calls.c (try_to_integrate): Use emit_insn_foo.
	(expand_call, emit_library_call_value_1): Likewise.
	* expr.c (emit_queue): Handle insn lists instead of SEQUENCE.
	(emit_move_insn_1): Use get_insns instead of gen_sequence.
	(expand_expr): Use emit_insn_foo.
	* cfgrtl.c (commit_one_edge_insertion): Use emit_insn_foo.
	* except.c (build_post_landing_pads): Likewise.
	* flow.c (attempt_auto_inc): Likewise.
	* stmt.c (expand_fixup, fixup_gotos, expand_nl_handler_label,
	expand_nl_goto_receivers, expand_decl_cleanup): Likewise.
	* function.c (fixup_var_refs_insn): Use get_insns instead of
	gen_sequence.
	(fixup_var_refs_1): Likewise and expect insn list from gen_foo.
	(fixup_memory_subreg): Use get_insns instead of gen_sequence.
	(fixup_stack_1, purge_addressof_1, expand_main_function,
	get_arg_pointer_save_area): Likewise.
	(optimize_bit_field, instantiate_virtual_regs_1, assign_parms,
	expand_function_end): Use emit_insn_foo.
	(record_insns, keep_stack_depressed): Work with insn list instead
	of SEQUENCE, fix comments.
	* ifcvt.c (noce_emit_store_flag, noce_try_store_flag,
	noce_try_store_flag_constants, noce_try_store_flag_inc,
	noce_try_store_flag_mask, noce_emit_cmove, noce_try_cmove_arith,
	noce_try_minmax, noce_try_abs): Use emit_insn_foo.
	(noce_process_if_block): Use get_insns instead of gen_sequence.
	* optabs.c (add_equal_note): Work with insn list, fix comments.
	(expand_binop): Expect insn list from GEN_FCN(), use emit_insn_foo.
	(expand_unop, expand_complex_abs, expand_unop_insn,
	expand_no_conflict_block): Likewise.
	(gen_move_insn): Use get_insns instead of gen_sequence.
	(gen_cond_trap): Likewise.
	* integrate.c (copy_rtx_and_substitute): Likewise.
	(emit_initial_value_sets): Use emit_insn_foo.
	* reload1.c (emit_output_reload_insns, emit_reload_insns): Likewise.
	(fixup_abnormal_edges): Avoid losing REG_NOTES more intelligently
	now that RTL generators give insn lists.
	* sibcall.c (replace_call_placeholder): Use emit_insn_foo.
	* doloop.c (doloop_modify, doloop_modify_runtime): Use get_insns
	instead of gen_sequence.
	(doloop_optimize): Work with insn lists instead of SEQUENCE rtl.
	* explow.c (emit_stack_save, emit_stack_restore): Use get_insns
	instead of gen_sequence.
	* loop.c (move_movables, emit_prefetch_instructions,
	gen_add_mult, check_dbra_loop, gen_load_of_final_value):
	Likewise.
	(loop_regs_update): Work with insn list instead of SEQUENCE rtl.
	(product_cheap_p): Likewise, and add commentary about RTL wastage
	here.
	* lcm.c (optimize_mode_switching): Use get_insns instead of
	gen_sequence.
	* profile.c (gen_edge_profiler): Likewise.
	* regmove.c (copy_src_to_dest): Likewise.
	* reg-stack.c (compensate_edge): Likewise and fix comment.
	* gcse.c (process_insert_insn): Likewise.
	(insert_insn_end_bb): Work with insn list instead of SEQUENCE rtl.
	* jump.c (delete_prior_computation): Update comment.
	* genemit.c (gen_expand, gen_split, main): Use get_insns instead
	of gen_sequence, update comments to match.
	* recog.c (peephole2_optimize): Work with insn lists instead of
	SEQUENCE rtl.
	* sched-vis.c (print_pattern): Abort on SEQUENCE.
	* unroll.c (unroll_loop, find_splittable_givs, final_giv_value):
	Use get_insns instead of gen_sequence.
	(copy_loop_body): Likewise and don't emit dummy NOTE.
	* genrecog.c: Don't mention SEQUENCE rtl in comments.
	* combine.c (try_combine): Expect insn lists from split generator.
	* reorg.c (relax_delay_slots): Emit SEQUENCE into insn list by
	hand.

From-SVN: r54497
2002-06-11 05:22:48 -07:00
Jeff Law
bf1660a670 alias.c (static_reg_base_value): New to hold RTL for items allocated once per function for the aliasing code.
* alias.c (static_reg_base_value): New to hold RTL for
	items allocated once per function for the aliasing code.
	(init_alias_once_per_function): Initialize static_reg_base_value.
	(init_alias_analysis): Avoid throw-away allocations of RTL by
	using pre-computed values in static_reg_base_value.
	* function.c (prepare_function_start): Call
	init_alias_once_per_function appropriately.
	* rtl.h (init_alias_once_per_function): Declare.
	* caller-save (init_caller_save): Restructure slightly to
	avoid lots of silly RTL generation.
	* expr.c (init_expr_once): Likewise.
	* reload1.c (reload_cse_regs_1): Allocate throw-away register
	RTL object here.  Pass it into children.
	(reload_cse_simplify_operands): Use passed-in register RTL
	object.
	(reload_cse_simplify): Pass through throw-away register
	RTL object.

From-SVN: r54442
2002-06-10 10:32:45 -06:00
Geoffrey Keating
e2500fedef Merge from pch-branch up to tag pch-commit-20020603.
From-SVN: r54232
2002-06-04 07:11:05 +00:00
Zdenek Dvorak
f6366fc7ad bb-reorder.c (make_reorder_chain_1): Modified.
* bb-reorder.c (make_reorder_chain_1): Modified.
	* cfganal.c (can_fallthru, flow_call_edges_add,
	flow_preorder_transversal_compute): Modified.
	* cfgbuild.c (make_edges, find_basic_blocks, find_many_sub_basic_blocks,
	find_sub_basic_blocks): Modified.
	* cfgcleanup.c (try_simplify_condjump, try_optimize_cfg): Modified.
	* cfglayout.c (skip_insns_after_block, fixup_reorder_chain,
	fixup_fallthru_exit_predecessor, cfg_layout_redirect_edge): Modified.
	* cfgrtl.c (tidy_fallthru_edges, verify_flow_info): Modified.
	* combine.c (this_basic_block): Type changed to basic_block.
	(combine_instructions, set_nonzero_bits_and_sign_copies, try_combine,
	nonzero_bits, num_sign_bit_copies, get_last_value_validate,
	get_last_value, distribute_notes, distribute_links): Modified.
	* final.c (compute_alignments): Modified.
	* flow.c (regno_uninitialized, regno_clobbered_at_setjmp): Modified.
	* function.c (thread_prologue_and_epilogue_insns): Modified.
	* gcse.c (compute_code_hoist_vbeinout): Modified.
	* global.c (build_insn_chain): Modified.
	* ifcvt.c (find_if_block, find_cond_trap): Modified.
	* predict.c (last_basic_block_p, note_prediction_to_br_prob): Modified.
	* regmove.c (regmove_optimize): Modified.
	* resource.c (find_basic_block): Modified.
	* sched-ebb.c (schedule_ebbs): Modified.
	* ssa-dce.c (find_control_dependence, find_pdom): Modified.

From-SVN: r53695
2002-05-21 20:37:43 +00:00
Kazu Hirata
dd3f010165 final.c: Fix formatting.
* final.c: Fix formatting.
	* fix-header.c: Likewise.
	* flow.c: Likewise.
	* fold-const.c: Likewise.
	* function.c: Likewise.

From-SVN: r53563
2002-05-17 18:07:01 +00:00
Richard Henderson
0b17ab2f5b Revert "Basic block renumbering removal", and two followup patches.
From-SVN: r53537
2002-05-16 19:31:56 -07:00
Zdenek Dvorak
355e4ec445 Basic block renumbering removal.
From-SVN: r53522
2002-05-16 10:34:53 -07:00
Jan Hubicka
194734e9e5 invoke.texi (-malign-double): Re-add lost warning.
* invoke.texi (-malign-double): Re-add lost warning.

	* i386-protos.h (x86_output_mi_thunk): Declare.
	* unix.h (ASM_OUTPUT_MI_THUNK): Move offline to ...
	* i386.c (x86_output_mi_thunk): ... here; handle 64bits.

	* dwarf2out.c (output_call_frame_info): Do not skip unwind info
	when flag_asynchronous_unwind_tables is set.

	* flags.h (flag_reorder_functions): Declare.
	* function.c (prepare_function_start): Initialize frequnecy.
	* params.def (HOT_BB_COUNT_FRACTION, HOT_BB_FREQUENCY_FRACTION): New paramters.
	* Makefile.in (predict.o): Add dependency on target.h and params.h
	* defaults.h (HOT_TEXT_SECTION_NAME,
	UNLIKELY_EXECUTED_TEXT_SECTION_NAME): New macros.
	* predict.c (choose_function_section): New function.
	(estimate_bb_frequencies): Use it.
	* toplev.c (flag_reorder_functions): New global variable.
	(lang_independent_options): New.
	(parse_options_and_default_flags): Set.
	* varasm.c (assemble_start_function): Bypass functdion alignment
	for never executed functions.
	* invoke.texi (-freorder-blocks, -freorder-functions): Document.
	(param hot-bb-count-fraction, hot-bb-frequency-fraction): New.
	* tm.texi (HOT_TEXT_SECTION_NAME, UNLIKELY_EXECUTED_TEXT_SECTION_NAME):
	Document.

	Thu Jan  3 21:52:09 CET 2002  Jan Hubicka  <jh@suse.cz>

	* predict.c: Inlude profile.h
	(MIN_COUNT): Rename to MIN_COUNT_FRACTION
	(maybe_hot_bb_p, probably_cold_bb_p, probably_never_executed_bb_p):
	Use the information about maximal counter in the program.

	Thu Dec 20 22:14:00 CET 2001  Jan Hubicka  <jh@suse.cz>

	* basic-block.h (maybe_hot_bb_p, probably_cold_bb_p,
	probably_never_executed_bb_p): New functions.
	* cfgcleanup.c (outgoing_edges_match): Use them.
	* predict.c (MIN_COUNT, MIN_FREQUENCY): New macros.
	(maybe_hot_bb_p, probably_cold_bb_p,
	probably_never_executed_bb_p): New functions.

	* function.h (function): Add new field function_frequency.
	* predict.c (compute_function_frequency): New function.
	(estimate_probability): Call it.

From-SVN: r53478
2002-05-15 09:00:30 +00:00
Jan Hubicka
b7c9bf289f final.c (end_final): Use C trees to output data structures for profiling.
* final.c (end_final): Use C trees to output data structures for profiling.

	* Makefile.in (LIBGCC_DEPS): Added missing dependency on gcov-io.h
        (profile.o): New dependency profile.h
        (final.o): New dependency profile.h
        * profile.h: New file. New global structure profile_info.
        * final.h (count_edges_instrumented_now): Declare.
        (current_function_cfg_checksum): Declare.
        (function_list): New structure.
        (functions_head, functions_tail): New static variables.
        (end_final): Emits more data, removed some -ax stuff.
        (final): Stores function names and chcksums.
        * gcov-io.h (__write_gcov_string): New function.
        (__read_gcov_string): New function.
        * gcov.c (read_profile): New function.
        (create_program_flow_graph): Uses read_profile instead of reading
	da_file.
        (read_files): Removed da_file checking, it's done by read_profile now.
        * libgcc2.c (bb_function_info): New structure.
        (bb): New field in structure, removed some -ax stuff.
        (__bb_exit_func): Changed structure of da_file.
        * profile.c (count_edges_instrumented_now): New global variable.
        (current_function_cfg_checksum): New global variable.
        (max_counter_in_program): New global variable.
        (get_exec_counts): New function.
        (compute_checksum): New function.
        (instrument_edges): Sets count_edges_instrumented_now.
        (compute_branch_probabilities): Uses get_exec_counts instead of
	reading da_file.
        (branch_prob): Calls compute_checksum and writes extra data to bbg_file.
        (init_branch_prob): Removed da_file checking, done in get_exec_counts
	now.
        (end_branch_prob): Removed da_file checking, done in get_exec_counts
	now.
        * gcov.texi: Updated information about gcov file format.

Co-Authored-By: Pavel Nejedly <bim@atrey.karlin.mff.cuni.cz>

From-SVN: r53326
2002-05-09 12:54:19 +00:00
Kazu Hirata
797a6ac12c * function.c: Fix formatting.
From-SVN: r53075
2002-05-03 00:23:55 +00:00
Kazu Hirata
1eeeb6a437 cpplex.c: Fix comment formatting.
* cpplex.c: Fix comment formatting.
	* function.c: Likewise.
	* integrate.c: Likewise.
	* regrename.c: Likewise.
	* sibcall.c: Likewise.
	* simplify-rtx.c: Likewise.
	* tree-inline.c: Likewise.

From-SVN: r52972
2002-04-30 20:48:55 +00:00
Alan Modra
f6f315fe11 re PR target/6413 (PROFILE_HOOK label_no)
PR target/6413
	* function.h: (struct function): Add profile_label_no field.
	(current_function_profile_label_no): Define.
	* function.c: (profile_label_no): New static var.
	(expand_function_start): Increment it, and copy to
	current_function_profile_label_no.
	* output.h (profile_label_no): Delete.
	* final.c (profile_label_no): Delete.
	(profile_function): Use current_function_profile_label_no.
	(final_end_function): Don't increment profile_label_no here.
	* config/i386/i386.c (ix86_osf_output_function_prologue): Replace
	profile_label_no with current_function_profile_label_no.
	* config/pa/pa.c (current_function_number): Delete.
	(pa_output_function_prologue): Don't output profile label here.
	(hppa_profile_hook): Use label_no param rather than
	current_function_number.
	(FUNC_BEGIN_PROLOG_LABEL): Move to ..
	* config/pa/pa.h: .. here.
	(FUNCTION_PROFILER): Output profile label here.

From-SVN: r52656
2002-04-23 16:50:55 +09:30
Mark Mitchell
8ed8f73189 re PR fortran/6138 (Incorrect access of integer*1 variables on PA)
PR f/6138.
	* function.c (fixup_memory_subreg): Add promoted_mode parameter.
	(walk_fixup_memory_subreg): Likewise.
	(fixup_var_refs_insn): Adjust accordingly.
	(fixup_var_refs_1): Likewise.

From-SVN: r52631
2002-04-22 19:26:19 +00:00
Neil Booth
b03e38e17e Makefile.in: Update.
* Makefile.in: Update.
	* decl.c (push_c_function_context, pop_c_function_context,
	mark_c_function_context): Rename for consistency.
	* c-objc-common.c (c_objc_common_init): Langhooks set elsewhere.
	* c-tree.h (push_c_function_context, pop_c_function_context,
	mark_c_function_context): Rename for consistency.
	* c-lang.c (LANG_HOOKS_FUNCTION_ENTER_NESTED,
	LANG_HOOKS_FUNCTION_LEAVE_NESTED, LANG_HOOKS_FUNCTION_MARK): Redefine.
	* function.c (init_lang_status, save_lang_status,
	restore_lang_status, mark_lang_status, free_lang_status):
	Move to langhooks.h.
	(push_function_context_to, pop_function_context_from,
	free_after_parsing, prepare_function_start, ggc_mark_struct_function):
	Update.
	* function.h (init_lang_status, save_lang_status,
	restore_lang_status, mark_lang_status, free_lang_status):
	Move to langhooks.h.
	* langhooks-def.h (LANG_HOOKS_FUNCTION_INIT,
	LANG_HOOKS_FUNCTION_FREE, LANG_HOOKS_FUNCTION_ENTER_NESTED,
	LANG_HOOKS_FUNCTION_LEAVE_NESTED, LANG_HOOKS_FUNCTION_MARK,
	LANG_HOOKS_FUNCTION_INITIALIZER): New.
	(LANG_HOOKS_INITIALIZER): Update.
	(lhd_do_nothing_f): New.
	* langhooks.h (struct lang_hooks_for_functions): New.
	(struct lang_hooks): New hooks.
	* langhooks.c (lhd_do_nothing_f): New.
cp:
	* cp-lang.c (LANG_HOOKS_FUNCTION_INIT,
	LANG_HOOKS_FUNCTION_FREE, LANG_HOOKS_FUNCTION_MARK): Redefine.
	* cp-tree.h (cxx_push_function_context, cxx_pop_function_context,
	cxx_mark_function_context): New.
	* decl.c (push_cp_function_context, pop_cp_function_context,
	mark_cp_function_context): Rename for consistency.
	(cxx_init_decl_processing): Don't set old hooks.
objc:
	* objc-lang.c (LANG_HOOKS_FUNCTION_ENTER_NESTED,
	LANG_HOOKS_FUNCTION_LEAVE_NESTED, LANG_HOOKS_FUNCTION_MARK): Redefine.

From-SVN: r52551
2002-04-20 09:14:37 +00:00
Jakub Jelinek
ce5e43d03e re PR c/6358 (GCC 3.1 ICE on statement expressions)
PR c/6358
	* function.c: Reapply patch for c/6358.
	(expand_function_end): Copy decl_rtl's mode, not
	current_function_return_rtx mode.

From-SVN: r52538
2002-04-19 23:02:52 +02:00
Richard Henderson
58533fa280 * function.c: Revert patch for c/6358.
From-SVN: r52511
2002-04-18 21:41:34 -07:00
Jakub Jelinek
a3acf46d44 re PR c/6358 (GCC 3.1 ICE on statement expressions)
PR c/6358
	* function.c (assign_parms): Assign hard current_function_return_rtx
	register here...
	(expand_function_end): ...not here.

	* gcc.c-torture/compile/20020418-1.c: New test.

From-SVN: r52485
2002-04-18 21:10:11 +02:00
Hans-Peter Nilsson
1ab3e58a2f function.c (fixup_var_refs_1): For paradoxical (subreg VAR), replace VAR, don't try the subreg.
* function.c (fixup_var_refs_1) <SET, handling VAR in SET_SRC>:
	For paradoxical (subreg VAR), replace VAR, don't try the subreg.

From-SVN: r52217
2002-04-12 11:31:25 +00:00
Eric Botcazou
9432c136e5 function.c (assign_temp): Accept either type or decl argument.
* function.c (assign_temp): Accept either type or decl argument.
        Detect variables whose size is too large to fit into an integer.
        * stmt.c (expand_decl): Pass the decl, not the type.

Co-Authored-By: Richard Henderson <rth@redhat.com>

From-SVN: r51788
2002-04-02 19:41:40 -08:00
Neil Booth
b0c4822985 Makefile.in (convert.o, [...]): Update.
* Makefile.in (convert.o, calls.o, expmed.o): Update.
	* attribs.c (handle_mode_attribute, handle_vector_size_attribute):
	Use new hooks.
	* builtin-types.def (BT_PTRMODE): Update.
	* c-common.c (type_for_size): Rename c_common_type_for_size.
	(type_for_mode): Similarly.
	(shorten_compare, pointer_int_sum, c_common_nodes_and_builtins):
	Use new hook.
	* c-bommon.h (c_common_type_for_size, c_common_type_for_mode): New.
	* c-decl.c (finish_enum, build_enumerator): Use new hooks.
	* c-lang.c (LANG_HOOKS_TYPE_FOR_MODE, LANG_HOOKS_TYPE_FOR_SIZE):
	Redefine.
	* c-typeck.c (common_type, comptypes, default_conversion):
	Use new hooks.
	* calls.c: Include langhooks.h.
	(emit_library_call_value_1): Use new hooks.  Avoid redundant
	calls.
	* convert.c: Include langhooks.h
	(convert_to_pointer, convert_to_integer): Use new hooks.
	* except.c (init_eh): Similarly.
	* expmed.c: Include langhooks.h.
	(expand_mult_add): Use new hooks.
	* expr.c (store_expr, store_constructor, expand_expr, do_jump,
	try_casesi): Similarly.
	* fold-const.c (optimize_bit_field_compare, make_range,
	decode_field_reference, fold_truthop, fold): Similarly.
	* function.c (assign_stack_local_1, assign_stack_temp_for_type,
	put_var_into_stack): Similarly.
	* langhooks-def.h (LANG_HOOKS_TYPE_FOR_MODE,
	LANG_HOOKS_TYPE_FOR_SIZE): New.
	(LANG_HOOKS_TYPES_INITIALIZER): Update.
	* langhooks.h (lang_hooks_for_types): New hooks.
	* stmt.c (expand_decl_cleanup, emit_case_nodes): Use new hooks.
	* tree.c (get_unwidened, get_narrower): Similarly.
	* tree.h (type_for_mode, type_for_size): Remove.
	* varasm.c (force_const_mem): Use new hooks.
ada:
	* gigi.h (type_for_size, type_for_mode): Rename.
	* misc.c (LANG_HOOKS_TYPE_FOR_MODE, LANG_HOOKS_TYPE_FOR_SIZE):
	Redefine.
	* trans.c (tree_transform): Update.
	* utils.c (gnat_init_decl_processing, init_gigi_decls,
	builtin_function, float_type_for_size, signed_or_unsigned_type,
	build_vms_descriptor, unchecked_convert): Update.
	(type_for_mode, type_for_size): Rename.
	* utils2.c (nonbinary_modular_operation): Update.
cp:
	* cp-lang.c (LANG_HOOKS_TYPE_FOR_MODE, LANG_HOOKS_TYPE_FOR_SIZE):
	Redefine.
	* cvt.c (cp_convert_to_pointer, type_promotes_to): Use new hooks.
	* decl.c (finish_enum): Similarly.
	* error.c (dump_type): Similarly.
	* lex.c (cxx_init): Similarly.
	* mangle.c (write_builtin_type): Similarly.
	* typeck.c (comptypes): Similarly.
f:
	* com.c (LANG_HOOKS_TYPE_FOR_MODE, LANG_HOOKS_TYPE_FOR_SIZE):
	Redefine.
	(type_for_mode, type_for_size): Rename.
	(signed_or_unsigned_type, signed_type, truthvalue_conversion,
	unsigned_type):	Use new hooks.
java:
	* Make-lang.in (builtins.o): Update.
	* boehm.c (get_boehm_type_descriptor): Update.
	* builtins.c: Include langhooks.h.
	* decl.c (java_init_decl_processing): Update.
	* java-tree.h (java_type_for_mode, java_type_for_size): New.
	* lang.c (LANG_HOOKS_TYPE_FOR_MODE, LANG_HOOKS_TYPE_FOR_SIaZE):
	Redefine.
	* typeck.c (type_for_mode, type_for_size): Update.
objc:
	* objc-act.c (handle_impent): Update.
	* objc-lang.c (LANG_HOOKS_TYPE_FOR_MODE, LANG_HOOKS_TYPE_FOR_SIaZE):
	Redefine.

From-SVN: r51571
2002-03-29 21:46:27 +00:00
Neil Booth
7afff7cfb0 Makefile.in: Update.
* Makefile.in: Update.
	* c-common.c: Include langhooks.h.
	(inline_forbidden_p): Use new hook.
	* diagnostic.c: Include langhooks.h.
	(format_with_decl, announce_function,
	default_print_error_function): Use new hook.
	* dwarf2out.c (dwarf2_name): Use new hook.
	* function.c: Include langhooks.h.
	(init_function_start): Use new hook.
	* langhooks-def.h (lhd_decl_printable_name): New.
	(LANGHOOKS_DECL_PRINTABLE_NAME): New.
	(LANGHOOKS_INITIALIZER): Update.
	* langhooks.c (lhd_decl_printable_name): New.
	* langhooks.h (struct lang_hooks): New hook.
	* toplev.c (decl_name, decl_printable_name): Remove.
	(open_dump_file): Use new hook.
	(process_options): Remove old hook.
	* tree.h (decl_printable_name): Remove.
ada:
	* misc.c (LANG_HOOKS_DECL_PRINTABLE_NAME): Redefine.
	(gnat_init): Remove old hook.
cp:
	* cp-lang.c (LANG_HOOKS_DECL_PRINTABLE_NAME): Redefine.
	* cp-tree.h (lang_printable_name): Rename.
	* error.c (lang_decl_name): Use new hook.
	* lex.c (cxx_init): Remove old hook.
	* pt.c (tsubst_expr): Use new hook.
	* tree.c (lang_printable_name): Rename.
f:
	* com.c (lang_printable_name): Rename.
	(LANG_HOOKS_DECL_PRINTABLE_NAME): Redefine.
	(ffe_init): Don't use old hook.
java:
	* decl.c (start_java_method): Use new hook.
	* lang.c (LANG_HOOKS_DECL_PRINTABLE_NAME): Redefine.
	(java_init): Remove old hook.
objc:
	* objc-act.c (objc_init): Remove old hook.
	(objc_printable_name): Export.
	* objc-act.h (objc_printable_name): New.
	* objc-lang.c (LANG_HOOKS_DECL_PRINTABLE_NAME): Redefine.

From-SVN: r51066
2002-03-20 07:58:41 +00:00
Richard Henderson
9f53e9654b re PR target/5901 ([IA64] misplaced .body)
PR optimization/5901
        * function.c (reposition_prologue_and_epilogue_notes): Position
        the markers after/before the last/first insn not deleted.

From-SVN: r50715
2002-03-12 22:10:23 -08:00
Richard Kenner
93fe8e9229 emit-rtl.c (copy_most_rtx): Accept EXPR_LIST for may_share.
* emit-rtl.c (copy_most_rtx): Accept EXPR_LIST for may_share.
	* function.c (fixup_var_refs): Add MAY_SHARE parameter.
	(fixup_var_refs_insns, fixup_var_refs_insns_with_has): Likewise.
	(fixup_var_refs_insn, fixup_var_refs_1): Likewise.
	(pop_function_context): Compute MAY_SHARE parameter for
	fixup_var_refs.
	(fixup_var_refs_1, case MEM): Pass MAY_SHARE to copy_most_rtx, not VAR.
	(gen_mem_addressof): Call fixup_var_refs with new parm.

From-SVN: r50493
2002-03-09 07:53:21 -05:00
Steve Ellcey
7879b81e6c rtl.texi (SUBREG_PROMOTED_UNSIGNED_P): Change definition to take ptr_extend into account as third type of extension.
* doc/rtl.texi (SUBREG_PROMOTED_UNSIGNED_P): Change definition
        to take ptr_extend into account as third type of extension.
        (SUBREG_PROMOTED_UNSIGNED_SET): Definition of new macro to set bit
        fields used by SUBREG_PROMOTED_UNSIGNED_P.
        * rtl.h (SUBREG_PROMOTED_UNSIGNED_SET): New macro.
        (SUBREG_PROMOTED_UNSIGNED_P): Change to return -1 as well as 0 or 1.
        * calls.c (precompute_arguments): Use new macro.
        (expand_call): Ditto.
        * combine.c (nonzero_bits): Ditto.
        (record_promoted_value): Ditto.
        * expr.c (store_expr): Ditto.
        (expand_expr): Ditto.
        * function.c (assign_parms): Ditto.

From-SVN: r50174
2002-02-28 17:19:52 -08:00
Aldy Hernandez
69ef87e2bc i386.md ("mmx_uavgv8qi3"): Use const_vector.
2002-02-19  Aldy Hernandez  <aldyh@redhat.com>

	* config/i386/i386.md ("mmx_uavgv8qi3"): Use const_vector.
	("mmx_uavgv4hi3"): Same.
	("pmulhrwv4hi3"): Same.

	* tree-inline.c (walk_tree): Handle vectors.

	* c-common.c (constant_expression_warning): Handle vectors.
	(overflow_warning): Same.

	* sched-deps.c (sched_analyze_2): Handle vectors.

	* rtlanal.c (rtx_unstable_p): Handle vectors.
	(rtx_varies_p): Same.
	(count_occurrences): Same.
	(regs_set_between_p): Same.
	(modified_between_p): Same.
	(modified_in_p): Same.
	(volatile_insn_p): Same.
	(volatile_refs_p): Same.
	(side_effects_p): Same.
	(may_trap_p): Same.
	(inequality_comparisons_p): Same.
	(replace_regs): Same.
	(computed_jump_p_1): Same.

	* rtl.c (DEF_MACHMODE): Change all definitions to accept 8th
	argument.
	(inner_mode_array): New.
	(copy_rtx): Handle vectors.
	(copy_most_rtx): Same.
	(rtx_equal_p): Same.
	(get_mode_alignment): Adjust for vectors.

	* resource.c (mark_referenced_resources): Handle vectors.
	(mark_set_resources): Same.

	* reload1.c (eliminate_regs): Handle vectors.
	(elimination_effects): Same.
	(scan_paradoxical_subregs): Same.

	* reload.c (subst_reg_equivs): Handle vectors.

	* regrename.c (scan_rtx): Handle vectors.

	* regclass.c (reg_scan_mark_refs): Handle vectors.

	* recog.c (find_single_use_1): Handle vectors.

	* local-alloc.c (equiv_init_varies_p): Handle vectors.
	(contains_replace_regs): Same.
	(memref_referenced_p): Same.

	* integrate.c (copy_rtx_and_substitute): Handle vectors.
	(subst_constants): Same.

	* genattrtab.c (attr_copy_rtx): Handle vectors.
	(encode_units_mask): Same.
	(clear_struct_flag): Same.
	(count_sub_rtxs): Same.

	* gcse.c (want_to_gcse_p): Handle vectors.
	(oprs_unchanged_p): Same.
	(hash_expr_1): Same.
	(oprs_not_set_p): Same.
	(expr_killed_p): Same.
	(compute_transp): Same.
	(store_ops_ok): Same.

	* function.c (purge_addressof_1): Do not allow paradoxical subregs
	of vectors.
	(fixup_var_refs_1): Same.
	(instantiate_virtual_regs_1): Same.

	* fold-const.c (operand_equal_p): Handle vectors.
	(fold): Same.
	(rtl_expr_nonnegative_p): Same.

	* flow.c (mark_used_regs): Handle vectors.

	* df.c (df_uses_record): Handle vectors.

	* cselib.c (cselib_subst_to_values): Handle vectors.
	(cselib_mem_conflict_p): Same.
	(hash_rtx): Same.

	* cse.c (canon_reg): Handle vectors.
	(fold_rt): Same.
	(cse_process_notes): Same.
	(count_reg_usage): Same.
	(canon_hash): Same.

	* alias.c (nonlocal_mentioned_p): Add case for CONST_VECTOR.

	* combine.c (mark_used_regs_combine): Add case for CONST_VECTOR.

	* emit-rtl.c (init_emit_once): Generate const0_rtx for vectors.
	(gen_rtx): Handle CONST_VECTOR.
	(gen_const_vector_0): New.
	(copy_rtx_if_shared): CONST_VECTORs can be shared.
	(reset_used_flags): Same.
	(copy_insn_1): Same.
	(initializer_constant_valid_p): Handle VECTOR_CST.

	* doc/c-tree.texi (Expression trees): Document VECTOR_CST.

	* doc/rtl.texi (Constants): Document const_vector.
	(CONST0_RTX): Update for vectors.
	(RTL sharing): Same.

	* print-tree.c (print_node): Add case for VECTOR_CST.

	* tree.h (TREE_VECTOR_CST_ELTS): New.
	(struct tree_vector): New.
	(union tree_node): Add vector node.
	(build_vector): Add prototype.

	* tree.def (VECTOR_CST): New.

	* tree.c (build_vector): New.

	* expmed.c (make_tree): Handle CONST_VECTOR.

	* rtl.h (CONSTANT_P): CONST_VECTORs are constants too.
	(CONST_VECTOR_ELT): New.
	(CONST_VECTOR_NUNITS): New.

	* machmode.h (GET_MODE_INNER): New.
	(DEF_MACHMODE): Accept 8th arg.

	* machmode.def: Add 8th argument for vector inner mode.
	Add inner vector modes for vectors.

	* rtl.def (VEC_CONST): Remove.
	(CONST_VECTOR): New.

	* expr.c (clear_storage): Allow vectors.
	(is_zeros_p): Handle VECTOR_CST.

	* varasm.c (output_constant_pool): Handle vectors.
	(rtx_const): Add veclo and vechi fields.
	(kind): Add RTX_VECTOR.
	(decode_rtx_const): Add case for vector.

	* config/rs6000/rs6000-protos.h: Add zero_constant.

	* config/rs6000/rs6000.c (rs6000_emit_move): Handle vector
	constants.  Force easy vector constants into memory.
	(easy_vector_constant): New.
	(emit_easy_vector_constant): New.
	(rs6000_legitimize_reload_address): Do not generate bad reloads on
	darwin.

	* config/rs6000/rs6000.md ("altivec_lvx"): Reflect what
	instruction does.
	("altivec_lvxl"): Same.
	(altivec_lvebx): Same.
	(altivec_lvehx): Same.
	(altivec_lvewx): Same.
	("*movv4si_const0"): New.
	("*movv4sf_const0"): New.
	("*movv8hi_const0"): New.
	("*movv16qi_const0"): New.

From-SVN: r49853
2002-02-19 02:53:41 +00:00
Alexandre Oliva
4606272bc4 function.c (assign_parms): Demote promoted argument passed by transparent reference.
* function.c (assign_parms): Demote promoted argument passed by
transparent reference.

From-SVN: r49774
2002-02-14 19:27:21 +00:00
Jason Merrill
b21155754f function.c (assign_parms): Don't put args of inline functions into registers when not optimizing.
* function.c (assign_parms): Don't put args of inline functions
        into registers when not optimizing.
        * cp/decl2.c (grokclassfn): Don't set DECL_REGISTER on 'this'.

From-SVN: r49131
2002-01-23 07:39:30 -05:00
Aldy Hernandez
58dbcf0581 tm.texi: Remove STARTING_FRAME_PHASE.
* doc/tm.texi: Remove STARTING_FRAME_PHASE.

        * config/rs6000/rs6000.h: Same.

        * function.c (instantiate_virtual_regs): Remove
        STARTING_FRAME_PHASE.
        (assign_stack_local_1): Same.
        Calculate frame phase.

From-SVN: r49063
2002-01-22 02:36:54 +00:00
Aldy Hernandez
1d690052f8 20020118-1.c: New.
2002-01-18  Aldy Hernandez  <aldyh@redhat.com>

        * gcc.dg/20020118-1.c: New.

        * tm.texi (STARTING_FRAME_PHASE): Document.

        * function.c (assign_stack_local_1): Adjust x_frame_offset with
        STARTING_FRAME_PHASE.
        (STARTING_FRAME_PHASE): New.
        (instantiate_virtual_regs): Check saneness of
        STARTING_FRAME_PHASE.

        * rs6000.h (STARTING_FRAME_PHASE): New.

From-SVN: r49006
2002-01-19 03:06:55 +00:00
Kazu Hirata
3ef42a0c4f bitmap.h: Fix comment formatting.
* bitmap.h: Fix comment formatting.
	* combine.c: Likewise.
	* cppfiles.c: Likewise.
	* c-pragma.h: Likewise.
	* c-typeck.c: Likewise.
	* df.c: Likewise.
	* dwarf2out.c: Likewise.
	* function.c: Likewise.
	* gcc.c: Likewise.
	* genattrtab.c: Likewise.
	* gthr-win32.h: Likewise.
	* haifa-sched.c: Likewise.
	* predict.c: Likewise.
	* rtlanal.c: Likewise.
	* rtl.h: Likewise.
	* unwind-dw2-fde.h: Likewise.
	* unwind-pe.h: Likewise.
	* vmsdbgout.c: Likewise.

From-SVN: r48987
2002-01-18 13:40:36 +00:00
Kazu Hirata
c4f2c49991 cse.c: Fix formatting.
* cse.c: Fix formatting.
	* dwarf2asm.c: Likewise.
	* dwarf2out.c: Likewise.
	* explow.c: Likewise.
	* expmed.c: Likewise.
	* function.c: Likewise.
	* gcov.c: Likewise.
	* gencheck.c: Likewise.
	* genrecog.c: Likewise.
	* ggc-common.c: Likewise.
	* ggc-page.c: Likewise.
	* global.c: Likewise.

From-SVN: r48570
2002-01-05 22:11:21 +00:00
William Cohen
70f4f91ca9 function.h (struct function): Add profile.
* function.h (struct function): Add profile.
	(current_function_profile): New.
	doc/extend.texi: Update documentation.
	* final.c (final_start_function): Use current_function_profile
	instead of profile_flag.
	(profile_after_prologue): Likewise.
	* function.c (expand_function_start): Likewise.
	(expand_function_start): Likewise.
	* config/alpha/alpha.c (direct_call_operand):
	(alpha_does_function_need_gp): Likewise.
	(alpha_expand_prologue): Likewise.
	* config/arm/arm.c (arm_expand_prologue): Likewise.
	thumb_expand_prologue: Likewise.
	* config/d30v/d30v.c (d30v_stack_info): Likewise.
	* config/fr30/fr30.c (MUST_SAVE_RETURN_POINTER): Likewise.
	(fr30_expand_prologue): Likewise.
	* config/i386/cygwin.h (SUBTARGET_PROLOGUE): Likewise.
	* config/i386/i386.c (ix86_osf_output_function_prologue): Likewise.
	* config/i386/i386.h (FINALIZE_PIC): Likewise.
	* config/i386/win32.h (SUBTARGET_PROLOGUE): Likewise.
	* config/i960/i960.c (i960_output_function_prologue): Likewise.
	* config/ia64/ia64.c (ia64_compute_frame_size): Likewise.
	* config/m32r/m32r.c (MUST_SAVE_RETURN_ADDR): Likewise.
	(m32r_expand_prologue): Likewise.
	* config/m88k/m88k.c (m88k_layout_frame): Likewise.
	(m88k_expand_prologue): Likewise.
	* config/m88k/m88k.h (ADJUST_INSN_LENGTH): Likewise.
	* config/mips/mips.c (compute_frame_size): Likewise.
	(mips_expand_prologue): Likewise.
	(mips_can_use_return_insn): Likewise.
	* config/pa/elf.h (ASM_FILE_START): Likewise.
	* config/pa/pa-linux.h (ASM_FILE_START): Likewise.
	* config/pa/pa64-hpux.h (ASM_FILE_START): Likewise.
	* config/pa/som.h (ASM_FILE_START): Likewise.
	* config/romp/romp.c (romp_using_r14): Likewise.
	* config/rs6000/rs6000.c (first_reg_to_save): Likewise.
	(rs6000_stack_info): Likewise.
	* config/rs6000/sysv4.h (ASM_DECLARE_FUNCTION_NAME): Likewise.
	* config/rs6000/xcoff.h (toc_section): Likewise.
	* config/v850/v850.c (compute_register_save_size): Likewise.

From-SVN: r48515
2002-01-03 17:40:07 +00:00
Richard Henderson
df8992f8f3 haifa-sched.c (reemit_other_notes): New.
* haifa-sched.c (reemit_other_notes): New.
        (schedule_block): Use it.
        * sched-ebb.c (schedule_ebbs): Call remove_unnecessary_notes.
        * sched-rgn.c (schedule_insns): Likewise.
        * cfglayout.c (remove_scope_notes): Handle removing note at
        the end of the insn chain.
        * function.c (debug_find_var_in_block_tree): New.

        * gcc.dg/debug-1.c, gcc.dg/debug-2.c: New.

From-SVN: r48333
2001-12-27 14:19:59 -08:00
DJ Delorie
8a723db2df function.c (expand_main_function): Make sure stack adjustments happen before sjlj exception setup.
* function.c (expand_main_function): Make sure stack adjustments
happen before sjlj exception setup.

From-SVN: r48316
2001-12-26 14:54:44 -05:00
Richard Kenner
6c7d86ec5e expr.c (expand_expr, [...]): Handling taking address of SAVE_EXPR.
* expr.c (expand_expr, case ADDR_EXPR): Handling taking address of
	SAVE_EXPR.
	* function.c (gen_mem_addressof): Add missing tests for SAVE_EXPR.
	(put_addressof_into_stack): Clarify code in setting of used_p.

From-SVN: r48268
2001-12-22 10:06:55 -05:00
Joseph Myers
d6a7951f20 ChangeLog.2, [...]: Fix spelling errors.
* ChangeLog.2, ChangeLog.3, ChangeLog.5, ChangeLog, alias.c,
	cfgbuild.c, expmed.c, expr.c, final.c, flow.c, fold-const.c,
	function.c, config/alpha/alpha.md, config/alpha/vms-ld.c,
	config/arm/arm.c, config/arm/arm.h, config/c4x/libgcc.S,
	config/i370/i370.c, config/i386/i386.c,
	config/i386/i386-interix.h, config/i386/i386.md,
	config/i386/i386.h, config/i386/netbsd-elf.h, config/ia64/ia64.c,
	config/m32r/m32r-protos.h, config/mcore/mcore.h,
	config/rs6000/rs6000.h, config/sparc/linux64.h,
	config/sparc/sparc.c, config/v850/v850-protos.h,
	config/cris/cris.h, config/s390/s390.md, config/elfos.h: Fix
	spelling errors.

From-SVN: r47815
2001-12-09 20:13:19 +00:00
Richard Kenner
f189c7caea function.c (handle_epilogue_set): Check for FP setting case when SP is set from FP in same insn.
* function.c (handle_epilogue_set): Check for FP setting case when
	SP is set from FP in same insn.

From-SVN: r47719
2001-12-06 09:30:57 -05:00
Richard Kenner
a57263bc3c function.c (assing_parms): Fix typo in last change.
* function.c (assing_parms): Fix typo in last change.
	* config/clipper.c (clipper_builtin_saveregs): Remove Checker code.
	* config/m88k/m88k.c (m88k_builtin_saveregs): Likewise.
	* config/pa/pa.c (hppa_builtin_saveregs): Likewise.
	* config/sparc/sparc.c (sparc_builtin_saveregs): Likewise.

From-SVN: r47715
2001-12-06 07:05:44 -05:00
Richard Kenner
b5ed05aac9 function.c (keep_stack_depressed): Check global_live_at_start of EXIT_BLOCK for temp register and verify it isn't...
* function.c (keep_stack_depressed): Check global_live_at_start
	of EXIT_BLOCK for temp register and verify it isn't in equiv_reg_src.

From-SVN: r47706
2001-12-05 21:44:57 -05:00
Richard Kenner
37a08a298f attribs.c (handle_no_check_memory_usage_atribute): Deleted.
* attribs.c (handle_no_check_memory_usage_atribute): Deleted.
	(c_com): Delete its reference.
	* builtins.c: Delete memory checking code.
	* calls.c, expr.c, function.c, stmt.c: Likewise.
	* builtins.c (expand_builtin_arg_info): Remove reference to
	EXPAND_MEMORY_USE_* modifiers.
	* explow.c (expr_size): Likewise.
	* expr.c (expand_expr, expand_increment): Likewise.
	* expr.h (ARGS_SIZE_RTX): Likewise.
	* function.c (assign_parms, expand_pending_sizeso): Likewise.
	* c-decl.c (duplicate_decls): Don't handle DECL_NO_CHECK_MEMORY_USAGE.
	* expr.c (in_check_memory_usage): Delete.
	(get_push_address, get_memory_usage_from_modifier): Delete.
	(expand_assigment): Use EXPAND_WRITE on destination.
	(expand_expr): Delete ro_modifier.
	* expr.h (expand_modifier): Delete EXPAND_MEMORY_* entries and
	add EXPAND_WRITE.
	(memory_use_mode): Delete.
	* flags.h (flag_check_memory_usage): Deleted.
	(flag_prefix_function_name): Likewise.
	* function.c (expand_function_start): Don't set
	current_function_check_memory_usage.
	* function.h (check_memory_usage): Delete.
	* libfuncs.h, optabs.c: Delete chkr_* stuff.
	* stmt.c (expand_asm_opernd): Change EXPAND_MEMORY_USE_WO to
	EXPAND_WRITE.
	* toplev.c (flag_check_memory_usage): Deleted.
	(flag_prefix_function_name): Likewise.
	(f_options, process_options): Delete references to above.
	* tree.h (DECL_NO_CHECK_MEMORY_USAGE): Deleted.
	* varasm.c (CHKR_PREFIX): Deleted.
	(make_decl_rtl): Remove flag_prefix_function_name handling.
	(assemble_name): Likewise.
	* doc/extend.texi: Remove no_check_memory_usage attribute.
	* doc/invoke.texi: Remove -fcheck-memory-usage
	and -fprefix-function-name.
	* cp/decl.c (duplicate_decls): Don't copy DECL_NO_CHECK_MEMORY_USAGE.

From-SVN: r47697
2001-12-05 17:37:41 -05:00
Richard Kenner
53b6fb26fc function.c (keep_stack_depressed): Refine check for register clobbered over call.
* function.c (keep_stack_depressed): Refine check for register
	clobbered over call.

From-SVN: r47664
2001-12-05 06:49:24 -05:00
Jakub Jelinek
108b7d3d31 function.c (assign_parms): Set last_named only for last named argument.
* function.c (assign_parms): Set last_named only for last named
	argument.

	* g++.dg/other/stdarg1.C: New test.

From-SVN: r47601
2001-12-04 10:29:54 +01:00
Janis Johnson
21b8482ae8 rtl.def (PREFETCH): New rtx code.
* rtl.def (PREFETCH): New rtx code.
	* doc/rtl.texi (PREFETCH): Add documentation.
	* function.c (instantiate_virtual_regs_1): Handle PREFETCH rtx.
	* rtlanal.c (reg_referenced_p): Ditto.
	* sched-vis.c (print_exp):  Ditto.
	* ssa-dce.c (find_inherently_necessary):  Ditto.

From-SVN: r47580
2001-12-04 00:47:14 +00:00
Richard Kenner
08e42d8b55 function.c (assign_stack_temp_for_type): Clear alias set before setting new one.
* function.c (assign_stack_temp_for_type): Clear alias set before
	setting new one.

From-SVN: r47303
2001-11-24 16:18:15 -05:00
Joseph Myers
a1f300c0f1 ChangeLog.0, [...]: Fix spelling errors.
* ChangeLog.0, ChangeLog.2, ChangeLog.3, ChangeLog.4, ChangeLog,
	FSFChangeLog.10, c-decl.c, cppfiles.c, cppinit.c, cpplex.c,
	cpplib.c, cppmain.c, cse.c, df.c, diagnostic.c, dominance.c,
	dwarf2out.c, dwarfout.c, emit-rtl.c, errors.c, except.c, except.h,
	explow.c, function.c, gcse.c, genrecog.c, predict.c, regmove.c,
	sched-rgn.c, ssa-ccp.c, stmt.c, toplev.c: Fix spelling errors.

From-SVN: r47279
2001-11-23 02:05:19 +00:00
Richard Kenner
3258e9961c function.c (keep_stack_depressed): Major rework.
* function.c (keep_stack_depressed): Major rework.
	(handle_epilogue_set, emit_equiv_load): New functions.
	(thread_prologue_and_epilogue_insns): keep_stack_depressed now
	has return value.
	* jump.c (returnjump_p_1): Also return 1 if SET with SET_IS_RETURN_P.
	* rtl.h (SET_IS_RETURN_P): New macro.

From-SVN: r47250
2001-11-21 18:41:40 -05:00
Jakub Jelinek
1258ee8070 explow.c (probe_stack_range): Use LCT_NORMAL as second argument to emit_library_call.
* explow.c (probe_stack_range): Use LCT_NORMAL as second argument
	to emit_library_call.
	* function.c (expand_main_function, expand_function_start,
	expand_function_end): Likewise.
	* profile.c (output_func_start_profiler): Likewise.
	* stmt.c (expand_nl_goto_receivers): Use LCT_NORETURN as
	second argument to emit_library_call.
	* optabs.c (prepare_cmp_insn): Use LCT_CONST_MAKE_BLOCK
	as second argument to emit_library_call.
	* calls.c (emit_library_call): Update fn_type description.

From-SVN: r47241
2001-11-21 12:13:14 +01:00
Richard Kenner
a06ef755a3 alias.c (nonoverlapping_memrefs): Use REGNO_PTR_FRAME_P.
* alias.c (nonoverlapping_memrefs): Use REGNO_PTR_FRAME_P.
	* emit-rtl.c (change_address): Fix typo in default alignment.
	(adjust_address_1): Use mode of NEW, not MODE, when setting size.
	* expr.c (highest_pow2_factor, case WITH_RECORD_EXPR): New case.
	* rtl.h (REGNO_PTR_FRAME_P): New macro.

	* expr.c (store_field): Pass tree instead of max size; callers changed.
	Change handling of alignment.
	Only copy to_rtx if is TARGET.
	(expand_expr_unaligned): Delete; callers now use expand_expr.
	(emit_cmp_insn): No longer take ALIGN parm; all callers changed.
	(expand_assignment): Change handling of alignment.
	Only copy to_rtx if was original.
	(get_inner_reference): No longer return alginment; callers changed.
	(expand_expr, case COMPONENT_REF): Change handling of alignment.
	(expand_expr, case ADDR_EXPR): Make copy if not sufficiently aligned.
	(compare_from_rtx): Delete ALIGN parm; all callers changed.
	(do_compare_rtx_and_jump): Likewise.
	* expr.h: Reflect above changes.
	* tree.h: Likewise.
	* dwarf2out.c (loc_descriptor_from_tree): Remove ALIGN parameter
	to get_inner_reference.
	* except.c: Remove ALIGN parameter in call to emit_cmp_and_jump_insns.
	* explow.c: Likewise.
	* loop.c: Likewise.
	* optabs.c: Likewise.
	(prepare_cmp_insn): Now static; remove ALIGN parm.  Callers changed.
	(emit_cmp_and_jump_insns): Remove ALIGN parm; all callers changed.
	* fold-const.c: Remove PALIGN in calls to get_inner_reference.
	* function.c (assign_stack_temp_for_type): No longer static.
	* optabs.h (emit_cmp_insn): Remove ALIGN parm.
	(prepare_cmp_insn): Delete declaration.
	* rtl.h (assign_stack_temp_for_type): Add declaration.
	* config/d30v/d30v.c: Reflect above changes.
	* config/i860/i860.c, config/ia64/ia64.c: Likewise.
	* config/rs6000/rs6000.c, config/sh/sh.c: Likewise.
	* ada/trans.c, ada/utils2.c: Remove PALIGN parameter to
	get_inner_reference.

From-SVN: r47075
2001-11-15 18:44:58 -05:00
Richard Kenner
b5c02bff5c * function.c (struct temp_slot): ALIGN now unsigned.
From-SVN: r47016
2001-11-14 12:30:04 -05:00
Richard Kenner
04050c690d expmed.c (extract_bit_field): No longer pass in alignment.
* expmed.c (extract_bit_field): No longer pass in alignment.
	(extract_fixed_bit_field, extract_split_bit_field): Likewise.
	(store_bit_field, store_fixed_bit_field, store_split_bit_field):
	Likewise.
	* expr.c (store_constructor, store_constructor_field): Likewise.
	(store_field, emit_group_load, emit_group_store): Likewise.
	* expr.h (emit_group_load, emit_group_store): Delete ALIGN parm.
	(store_bit_field, extract_bit_field): Likewise.
	* calls.c, expr.c, function.c: Change calls to above functions.
	* ifcvt.c, stmt.c: Likewise.

From-SVN: r46926
2001-11-11 06:02:26 -05:00
Richard Kenner
a79e3a4591 cselib.c (cselib_subst_to_values, [...]): Remove reference to CONST_DOUBLE_MEM in comment.
* cselib.c (cselib_subst_to_values, case CONST_DOUBLE): Remove
 	reference to CONST_DOUBLE_MEM in comment.
	* emit-rtl.c (gen_rtx_CONST_DOUBLE): Remove one operand.
	(gen_rtx, case CONST_DOUBLE): Call it with one less operand.
	(init_emit_once): Don't clear CONST_DOUBLE_MEM.
	* function.c (pop_function_context_from): Don't call
	restore_varasm_status.
	* function.h (restore_varasm_status): Delete declaration.
	* gengenrtl.c (CONST_DOUBLE_FORMAT): Delete CONST_DOUBLE_MEM slot.
	* rtl.c: Likewise.
	* rtl.def (CONST_DOUBLE): Update comment.
	* rtl.h (CONST_DOUBLE_HIGH, CONST_DOUBLE_LOW): Update operand number.
	(CONST_DOUBLE_CHAIN): Likewise.
	(CONST_DOUBLE_MEM): Delete.
	(gen_rtx_CONST_DOUBLE): Update parameters.
	* varasm.c (struct varasm_status): x_pool_offset now HOST_WIDE_INT.
	Remove reference to CONST_DOUBLE_MEM.
	(const_alias_set): New variable.
	(immed_double_const): Change call to gen_rtx_CONST_DOUBLE.
	(immed_real_const_1): Adjust tests for 0, 1, and 2.
	Don't set CONST_DOUBLE_MEM.
	(clear_const_double_mem): Don't do anything with const_tiny_rtx.
	(output_constant_def): Don't look at TREE_CST_RTL if INTEGER_CST.
	Put constant in const_alias_set.
	(struct pool_constant): ALIGN now unsigned.
	OFFSET now HOST_WIDE_INT.
	Delete LABEL.
	(restore_varasm_status): Deleted.
	(mark_pool_constant): Mark desc->rtl.
	(force_const_mem): Rework to store rtl in hash table,
	not CONST_DOUBLE_MEM.
	Put constant in const_alias_set.
	(find_pool_constant): Check desc->rtl.
	(mark_constants, mark_constant): Don't special-case CONST_DOUBLE.
	(init_varasm_once): Initialize const_alias_set.

From-SVN: r46736
2001-11-03 11:28:33 -05:00
Joseph Myers
ff7cc30768 ChangeLog.0, [...]: Fix spelling errors.
* ChangeLog.0, ChangeLog.1, ChangeLog.2, ChangeLog.3, ChangeLog.4,
	ChangeLog.5, ChangeLog, FSFChangeLog.10, FSFChangeLog.11,
	c-common.c, c-common.h, c-parse.in, c-typeck.c, cfg.c, config.gcc,
	configure, configure.in, except.c, except.h, flow.c, function.c,
	gcc.c, gcse.c, genrecog.c, libgcc2.c, loop.c, loop.h, params.def,
	predict.def, predict.h, reg-stack.c, regmove.c, sched-deps.c,
	sched-int.h, sibcall.c, ssa.c, stringpool.c, toplev.c, tree.c,
	unroll.c: Fix spelling errors.

From-SVN: r46595
2001-10-28 20:09:17 +00:00
Richard Kenner
4b6c167260 builtins.c (expand_builtin_setjmp): Only call convert_memory_address if needed.
* builtins.c (expand_builtin_setjmp): Only call convert_memory_address
	if needed.
	(expand_builtin_longjmp, expand_builtin_alloca): Likewise.
	* except.c (expand_builtin_frob_return_addr): Likewise.
	(expand_builtin_eh_return): Likewise.
	* stmt.c (expand_computed_goto): Likewise.
	* explow.c (memory_address): Likewise.
	(allocate_dynamic_stack_space): Clean up predicate testing.
	(probe_stack_range): Convert SIZE to Pmode.
	* calls.c (rtx_for_function_call): Only call convert_memory_address
	if needed.
	Pass function call operand as ptr_mode, not Pmode.
	* expr.c (expand_assignment): Clean up calls to convert_memory
	address by only doing so when needed and making offsets Pmode.
	(store_constructor, expand_expr, expand_expr_unaligned): Likewise.
	* function.c (assign_parms): Ensure address in MEM for RESULT_DECL
	is in Pmode, not ptr_mode.

From-SVN: r46448
2001-10-23 18:59:15 -04:00
Richard Kenner
e686d142b3 alias.c (can_address_p): Compnonents are not addressable if the containing type has alias set 0.
* alias.c (can_address_p): Compnonents are not addressable if
	the containing type has alias set 0.
	(get_alias_set): Rework to use STRIP_NOPS.
	Only call front-end routine on object, type, or object with
	NOPs stripped, not inner values.
	Use language hook to call front-end routine.
	* builtins.c (get_memory_rtx): Always call set_mem_attributes.
	(expand_builtin_apply): Call set_mem_align on MEMs we make.
	Don't pass alignment to emit_block_move.
	(expand_builtin_memcpy, expand_builtin_va_copy): Likewise.
	(expand_builtin_memset): Likewise, but for clear_storage.
	* c-common.c (lang_get_alias_set): Renamed to c_common_alias_set
	and remove C++ specific parts.
	* c-common.h (c_common_get_alias_set): Add declaration.
	* c-lang.c (LANG_HOOKS_GET_ALIAS_SET): New macro.
	* calls.c (emit_call_1): Fix typo in sibcall_pop case.
	(save_fixed_argument_area): Call set_mem_align.
	Remove alignment in call to emit_block_move.
	(emit_library_call_value_1, store_one_arg): Likewise.
	(target_for_arg): Remove; disabled long ago.
	* emit-rtl.c (set_mem_attributes): Rework to only call get_mem_attrs
	once and similar cleanups.
	(offset_address): Use proper introductory comment.
	* expr.c (emit_block_move): Use alignment from that of MEM args, not
	from explicit operand; all callers changed.
	(clear_storage): Likewise.
	(expand_assignment): Don't call set_mem_alias_set on to_rtx.
	(store_field): Remove kludge on alias set used for to_rtx.
	(highest_pow2_factor, case *_DIV_EXPR): Never return 0.
	(expand_expr_unaligned): Call set_mem_attributes instead of
	set_mem_alias_set.
	* expr.h (emit_block_move, clear_storage): Remove ALIGN argument.
	* function.c (assign_stack_temp_for_type): Set MEM alignment.
	(expand_function_end): Track MEM attributes of trampolines.
	* ifcvt.c (noce_try_cmove_arith): Set alignment of new MEM.
	* integrate.c (copy_rtx_and_substitute, case CALL): Copy memory
	attributes from original.
	* langhooks.c (lang_hook_default_get_alias_set): New function.
	(hook_get_alias_set_0): New function.
	* langhooks.h (hook_get_alias_set_0): New declaration.
	(lang_hook_default_get_alias_set): Likewise.
	(LANG_HOOKS_GET_ALIAS_SET): New macro; add to initializer.
	* reload1.c (alter_reg): Use adjust_address_nv.
	* rtl.c (get_mode_alignment): Moved to here.
	* rtl.h (MEM_ALIGN): Take default from mode, if not BLKmode, and
	change default if unknown from 1 to BITS_PER_UNIT.
	* stor-layout.c (get_mode_alignment): Remove from here.
	* toplev.h (struct lang_hoks): Add get_alias_set field.
	* tree.h (lang_get_alias_set): Delete declaration.
	* config/arc/arc.c (arc_setup_incoming_varags): Set MEM alignment.
	* config/i386/i386.c (ix86_setup_incoming_varargs): Likewise.
	(ix86_va_arg): Likewise.
	* config/i960/i960.c (i960_setup_incoming_varargs): Likewise.
	* config/pa/pa.c (hppa_builtin_saveregs): Likewise.
	* config/sparc/sparc.c (sparc_va_arg): Likewise.
	* config/rs6000/rs6000.c (setup_incoming_varargs): Likewise.
	(expand_block_move_mem): Remove dead code.
	* cp/cp-lang.c (cxx_get_alias_set): New function.
	Point LANG_HOOKS_GET_ALIAS_SET to it.
	* f/com.c (LANG_HOOKS_GET_ALIAS_SET): New macro.
	(lang_get_alias_set): Delete.
	* java/lang.c (lang_get_alias_set): Deleted.

From-SVN: r46443
2001-10-23 16:46:41 -04:00
Richard Kenner
74e2819c70 alias.c (can_address_p): Compnonents are not addressable if the containing type has alias set 0.
* alias.c (can_address_p): Compnonents are not addressable if
	the containing type has alias set 0.
	(get_alias_set): Rework to use STRIP_NOPS.
	Only call front-end routine on object, type, or object with
	NOPs stripped, not inner values.
	Use language hook to call front-end routine.
	* builtins.c (get_memory_rtx): Always call set_mem_attributes.
	(expand_builtin_apply): Call set_mem_align on MEMs we make.
	Don't pass alignment to emit_block_move.
	(expand_builtin_memcpy, expand_builtin_va_copy): Likewise.
	(expand_builtin_memset): Likewise, but for clear_storage.
	* c-common.c (lang_get_alias_set): Renamed to c_common_alias_set
	and remove C++ specific parts.
	* c-common.h (c_common_get_alias_set): Add declaration.
	* c-lang.c (LANG_HOOKS_GET_ALIAS_SET): New macro.
	* calls.c (emit_call_1): Fix typo in sibcall_pop case.
	(save_fixed_argument_area): Call set_mem_align.
	Remove alignment in call to emit_block_move.
	(emit_library_call_value_1, store_one_arg): Likewise.
	(target_for_arg): Remove; disabled long ago.
	* emit-rtl.c (set_mem_attributes): Rework to only call get_mem_attrs
	once and similar cleanups.
	(offset_address): Use proper introductory comment.
	* expr.c (emit_block_move): Use alignment from that of MEM args, not
	from explicit operand; all callers changed.
	(clear_storage): Likewise.
	(expand_assignment): Don't call set_mem_alias_set on to_rtx.
	(store_field): Remove kludge on alias set used for to_rtx.
	(highest_pow2_factor, case *_DIV_EXPR): Never return 0.
	(expand_expr_unaligned): Call set_mem_attributes instead of
	set_mem_alias_set.
	* expr.h (emit_block_move, clear_storage): Remove ALIGN argument.
	* function.c (assign_stack_temp_for_type): Set MEM alignment.
	(expand_function_end): Track MEM attributes of trampolines.
	* ifcvt.c (noce_try_cmove_arith): Set alignment of new MEM.
	* integrate.c (copy_rtx_and_substitute, case CALL): Copy memory
	attributes from original.
	* langhooks.c (lang_hook_default_get_alias_set): New function.
	(hook_get_alias_set_0): New function.
	* langhooks.h (hook_get_alias_set_0): New declaration.
	(lang_hook_default_get_alias_set): Likewise.
	(LANG_HOOKS_GET_ALIAS_SET): New macro; add to initializer.
	* reload1.c (alter_reg): Use adjust_address_nv.
	* rtl.c (get_mode_alignment): Moved to here.
	* rtl.h (MEM_ALIGN): Take default from mode, if not BLKmode, and
	change default if unknown from 1 to BITS_PER_UNIT.
	* stor-layout.c (get_mode_alignment): Remove from here.
	* toplev.h (struct lang_hoks): Add get_alias_set field.
	* tree.h (lang_get_alias_set): Delete declaration.
	* config/arc/arc.c (arc_setup_incoming_varags): Set MEM alignment.
	* config/i386/i386.c (ix86_setup_incoming_varargs): Likewise.
	(ix86_va_arg): Likewise.
	* config/i960/i960.c (i960_setup_incoming_varargs): Likewise.
	* config/pa/pa.c (hppa_builtin_saveregs): Likewise.
	* config/sparc/sparc.c (sparc_va_arg): Likewise.
	* config/rs6000/rs6000.c (setup_incoming_varargs): Likewise.
	(expand_block_move_mem): Remove dead code.
	* cp/cp-lang.c (cxx_get_alias_set): New function.
	Point LANG_HOOKS_GET_ALIAS_SET to it.
	* f/com.c (LANG_HOOKS_GET_ALIAS_SET): New macro.
	(lang_get_alias_set): Delete.
	* java/lang.c (lang_get_alias_set): Deleted.

From-SVN: r46442
2001-10-23 16:41:59 -04:00
Kaveh R. Ghazi
91ea4f8ddf Makefile.in (rtlanal.o): Depend on $(TM_P_H).
* Makefile.in (rtlanal.o): Depend on $(TM_P_H).
	* arm-protos.h (rdata_section, zero_init_section, common_section):
	Prototype.
	* arm.h (ASM_OUTPUT_DEF_FROM_DECLS): Const-ify.
	* avr.h (ASM_OUTPUT_SKIP): Rename macro parameter to avoid
	traditional mode stringification.
	* function.c (thread_prologue_and_epilogue_insns): Wrap variable
	in macros controling its use.
	* rtlanal.c: Include tm_p.h.
	* varasm.c (asm_output_aligned_bss): Mark parameter with
	ATTRIBUTE_UNUSED.
	(assemble_constant_align, assemble_start_function, assemble_align,
	assemble_variable, assemble_trampoline_template,
	output_constant_def_contents): Wrap potentially empty if-stmt body
	in brackets.

From-SVN: r46360
2001-10-19 19:42:46 +00:00
Richard Kenner
0d4903b81e emit-rtl.c (gen_reg_rtx): Also reallocate reg_decl array.
* emit-rtl.c (gen_reg_rtx): Also reallocate reg_decl array.
	(offset_address): New function.
	(free_emit_status): Free regno_decl.
	(init_emit): Pass proper number of elements to xcalloc.
	Allocate regno_decl.
	(mark_emit_status): Mark regno_decl values.
	* expr.c (highest_pow2_factor): New function.
	(expand_assigment): Use it and offset_address.
	Properly handle ptr_mode vs. Pmode in offset calculation.
	(store_constructor, expand_expr_unaligned): Likewise.
	(expand_expr, case COMPONENT_EXPR): Likewise.
	* expr.h (offset_address): New decl.
	* function.h (struct emit_status): Add regno_decl.
	(REGNO_DECL): New macro.
	* final.c (output_asm_name): Move in file and don't conditionalize
	on flag_print_asm_name.
	(output_asm_insn): Only call output_asm_name if flag_print_asm_name.
	Output names of operands, if known.
	* function.c (assign_parms): Set REGNO_DECL.
	* integrate.c (integrate_decl_tree): Likewise.
	* stmt.c (expand_decl): Likewise.
	* regclass.c (reg_scan_mark_refs): Propagate REGNO_DECL for copies.

From-SVN: r46337
2001-10-18 17:34:14 -04:00
Stan Shebs
b36948478c alias.c: Remove uses of "register" specifier in declarations of arguments and local...
2001-10-10  Stan Shebs  <shebs@apple.com>

        * alias.c: Remove uses of "register" specifier in declarations
        of arguments and local variables.
        * c-common.c: Ditto.
        * c-convert.c: Ditto.
        * c-decl.c: Ditto.
        * c-format.c: Ditto.
        * c-semantics.c: Ditto.
        * c-typeck.c: Ditto.
        * caller-save.c: Ditto.
        * calls.c: Ditto.
        * cfg.c: Ditto.
        * cfgbuild.c: Ditto.
        * cfgrtl.c: Ditto.
        * collect2.c: Ditto.
        * combine.c: Ditto.
        * convert.c: Ditto.
        * cppexp.c: Ditto.
        * cppfiles.c: Ditto.
        * cse.c: Ditto.
        * dbxout.c: Ditto.
        * defaults.h: Ditto.
        * df.c: Ditto.
        * dwarf2out.c: Ditto.
        * dwarfout.c: Ditto.
        * emit-rtl.c: Ditto.
        * explow.c: Ditto.
        * expmed.c: Ditto.
        * expr.c: Ditto.
        * final.c: Ditto.
        * fix-header.c: Ditto.
        * floatlib.c: Ditto.
        * flow.c: Ditto.
        * fold-const.c: Ditto.
        * function.c: Ditto.
        * gcc.c: Ditto.
        * gcse.c: Ditto.
        * gen-protos.c: Ditto.
        * genattrtab.c: Ditto.
        * gencheck.c: Ditto.
        * genconfig.c: Ditto.
        * genemit.c: Ditto.
        * genextract.c: Ditto.
        * genflags.c: Ditto.
        * gengenrtl.c: Ditto.
        * genoutput.c: Ditto.
        * genpeep.c: Ditto.
        * genrecog.c: Ditto.
        * gensupport.c: Ditto.
        * global.c: Ditto.
        * gmon.c: Ditto.
        * graph.c: Ditto.
        * haifa-sched.c: Ditto.
        * hard-reg-set.h: Ditto.
        * hash.c: Ditto.
        * integrate.c: Ditto.
        * jump.c: Ditto.
        * lists.c: Ditto.
        * local-alloc.c: Ditto.
        * loop.c: Ditto.
        * mips-tdump.c: Ditto.
        * mips-tfile.c: Ditto.
        * optabs.c: Ditto.
        * prefix.c: Ditto.
        * print-rtl.c: Ditto.
        * read-rtl.c: Ditto.
        * real.c: Ditto.
        * recog.c: Ditto.
        * reg-stack.c: Ditto.
        * regclass.c: Ditto.
        * regmove.c: Ditto.
        * reload.c: Ditto.
        * reload1.c: Ditto.
        * reorg.c: Ditto.
        * resource.c: Ditto.
        * rtl.c: Ditto.
        * rtlanal.c: Ditto.
        * scan.c: Ditto.
        * sched-deps.c: Ditto.
        * sched-rgn.c: Ditto.
        * sdbout.c: Ditto.
        * simplify-rtx.c: Ditto.
        * stmt.c: Ditto.
        * stor-layout.c: Ditto.
        * toplev.c: Ditto.
        * tradcif.y: Ditto.
        * tradcpp.c: Ditto.
        * tree.c: Ditto.
        * unroll.c: Ditto.
        * varasm.c: Ditto.
        * xcoffout.c: Ditto.

From-SVN: r46173
2001-10-11 03:16:15 +00:00
Kazu Hirata
6d2f888735 calls.c: Fix formatting.
* calls.c: Fix formatting.
	* c-decl.c: Likewise.
	* cfgcleanup.c: Likewise.
	* combine.c: Likewise.
	* cppfiles.c: Likewise.
	* cpplib.c: Likewise.
	* cppmacro.c: Likewise.
	* crtstuff.c: Likewise.
	* cse.c: Likewise.
	* dwarf2out.c: Likewise.
	* expmed.c: Likewise.
	* expr.c: Likewise.
	* fold-const.c: Likewise.
	* function.c: Likewise.
	* gcse.c: Likewise.
	* genattrtab.c: Likewise.
	* ggc-page.c: Likewise.
	* integrate.c: Likewise.
	* libgcc2.c: Likewise.
	* loop.c: Likewise.
	* optabs.c: Likewise.
	* profile.c: Likewise.
	* protoize.c: Likewise.
	* real.c: Likewise.
	* recog.c: Likewise.
	* reload1.c: Likewise.
	* reload.c: Likewise.
	* reorg.c: Likewise.
	* resource.c: Likewise.
	* sched-rgn.c: Likewise.
	* sdbout.c: Likewise.
	* stmt.c: Likewise.
	* toplev.c: Likewise.
	* varasm.c: Likewise.

From-SVN: r46145
2001-10-10 11:33:39 +00:00
Richard Henderson
6ba3b2142a varasm.c (restore_varasm_status): New.
* varasm.c (restore_varasm_status): New.
        * function.h: Declare it.
        * function.c (pop_function_context_from): Call it.

From-SVN: r46080
2001-10-08 09:46:24 -07:00
Richard Kenner
173b24b982 function.c (keep_stack_depressed): Don't use delete_insn.
* function.c (keep_stack_depressed): Don't use delete_insn.

	* expr.h (set_mem_alias_set): Move decl to here.
	* rtl.h (mem_attrs): New typedef and struct.
	(union rtunion_def): Add field for mem_attrs.
	(X0MEMATTR, MEM_ATTRS): New macros.
	(MEM_ALIAS_SET): Use MEM_ATTRS.
	(MEM_DECL, MEM_OFFSET, MEM_SIZE, MEM_ALIGN): New macros.
	(MEM_COPY_ATTRIBUTES): Copy MEM_ATTRS.
	(set_mem_alias_set): Delete decl from here.

	* alias.c (set_mem_alias_set): Delete from here.
	* emit-rtl.c (mem_attrs_htab): New variable.
	(rtx_htab_mark, rtx_htab_mark_1): Deleted.
	(mem_attrs_htab_hash, mem_attrs_htab_eq): New functions.
	(mem_attrs_mark, get_mem_attrs): Likewise.
	(gen_rtx_MEM): Clear MEM_ATTRS.
	(set_mem_attributes): Move to here.
	(set_mem_alias_set): Likewise, and call get_mem_attrs.
	(init_emit_once): const_int_htab now deletable htab.
	Initialize mem_attrs_htab.
	* explow.c (set_mem_attributes): Delete from here.
	* function.c (put_var_into_stack): Clear MEM_ATTRS.
	(gen_mem_addressof): Likewise; rework to use set_mem_attributes.
	* ggc-common.c (ggc_mark_rtx_children, case MEM): New case.
	* reload1.c (reload): Rework changing REG to MEM.

From-SVN: r45922
2001-10-01 07:00:47 -04:00
Jan Hubicka
ca6c03cabd Makefile.in (cfgrtl.o): Add.
* Makefile.in (cfgrtl.o): Add.
	* basic-block.h (alloc_block, alloc_aux_for_block, alloc_aux_for_blocks,
	free_aux_for_block, alloc_aux_for_edge, alloc_aux_for_edges,
	free_aux_for_edge): Declare.
	* cfg.c
	(HAVE_return): Undefine.
	* basic-block.h (alloc_block, alloc_aux_for_block, alloc_aux_for_blocks,
	free_aux_for_block, alloc_aux_for_edge, alloc_aux_for_edges,
	free_aux_for_edge): New global functions.
	(first_delete_block): New static variable.
	(init_flow): Clear first_delete_block.
	(basic_block_for_insn, label_value_list, tail_recursion_label_list,
	 can_delete_note_p, can_delete_label_p, commit_one_edge_insertion,
	 try_redirect_by_replacing_jump, last_loop_beg_note,
	 back_edge_of_syntactic_loop_p, force_nonfallthru_and_redirect,
	 delete_insn, delete_insn_chain, create_basic_block_structure,
	 create_basic_block, flow_delete_block, compute_bb_for_insn,
	 free_bb_for_insn, update_bb_for_insn, set_block_for_insn,
	 set_block_for_new_insns, split_block, merge_blocks_nomove,
	 block_label, try_redirect_by_replacing_jump, last_loop_beg_note,
	 redirect_edge_and_branch, force_nonfallthru_and_redirect,
	 force_nonfallthru, redirect_edge_and_branch_force, tidy_fallthru_edge,
	 tidy_fallthru_edges, split_edge, insert_insn_on_edge,
	 commit_one_edge_insertion, commit_edge_insertions, dump_bb, debug_bb,
	 debug_bb_n, print_rtl_with_bb, verify_flow_info, purge_dead_edges,
	 purge_all_dead_edges): Move to ....
	* cfgrtl.c: New file; .... Here.

	* bb-reorder.c (fixup_reorder_chain): Use alloc_aux_for_block.
	(reroder_basic_block): Use alloc_aux_for_blocks.
	* predict.c (estimate_bb_frequencies): Likewise; use
	alloc_aux_for_edges.
	* profile.c (compute_branch_probabilities): Likewise.
	(branch_prob): Likewise.
	* reg-stack.c (reg_to_stack): Likewise.

	* emit-rtl.c (emit_insns_after): Never return NULL.

	* basic-block.h (set_block_for_new_insns): Delete.
	* cfgrtl.c (set_block_for_new_insns): Delete.

	* cfgcleanup.c (try_optimize_cfg): Add fake exit edges for noreturn
	calls when crossjumping.

	* cfgcleanup.c (try_simplify_condjump): Cleanup invert_jump call.
	* unroll.c (copy_loop_body): Use delete_insn.

	* final.c (final, final_scan_insn): Use delete_insn/delete_note.
	* function.c (fixup_var_refs_insn, fixup_var_refs_1,
	keep_stack_depressed): Likewise.
	* gcse.c (cprop_cc0_jump): Likewise.
	* local-alloc.c (update_equiv_regs): Likewise.
	* loop.c (scan_loop, loop_delete_insns): Likewise.
	* regmove.c (try_auto_increment, fixup_match_1): Likewise.
	* reload1.c (reload, calculate_needs_all_insns, reload_as_needed,
	delete_output_reload, delete_address_reloads_1,
	reload_cse_delete_noop_set, reload_combine, reload_cse_move2add):
	Likewise.
	* sibcall.c (replace_call_placeholder): Likewise.
	* cse.c (cse_insn): Likewise.

From-SVN: r45807
2001-09-25 15:26:55 +00:00
Richard Kenner
7a80cf9a2f function.c (pop_function_context_from): var_refs_queue and temp slots now in GC memory.
* function.c (pop_function_context_from): var_refs_queue
	and temp slots now in GC memory.
	(mark_function_status, free_after_compilation): Likewise;
	also struct function now in GC memory.
	(assign_stack_temp_for_type): struct temp_slot now in GC memory.
	(combine_temp_slots): Likewise.
	(schedule_fixup_var_refs): var_refs_queue now in GC memory.
	(prepare_function_start): Use GC memory for struct function.
	(mark_temp_slot): Deleted.
	(gcc_mark_struct_function): struct function now in GC memory.

From-SVN: r45764
2001-09-23 19:35:38 -04:00
Richard Kenner
6a1d250ead function.c (fix_lexical_address): Use set_mem_alias_set.
* function.c (fix_lexical_address): Use set_mem_alias_set.
	(expand_function_start): Likewise.
	* config/alpha/alpha.h (SETUP_INCOMING_VARARGS): Likewise.

From-SVN: r45751
2001-09-22 09:27:33 -04:00
Jan Hubicka
53c170316f basic-block.h (flow_delete_insn, [...]): Kill.
* basic-block.h (flow_delete_insn, flow_delete_insn_chain): Kill.
	* cfg.c (delete_insn): Rename from ....; use remove_insn; do not
	remove some labels.
	(flow_delete_insn): This one.
	(delete_insn_chain): Rename from ...; do not care labels.
	(flow_delete_insn_chain): ... this one.
	(flow_delete_block): Remove the insns one BB has been expunged.
	(merge_blocks_nomove): Likewise.
	(try_redirect_by_replacing_jump): Use delete_insn[_chain]; do not care
	updating BB boundaries.
	(tidy_fallthru_edge): Likewise.
	(commit_one_edge_insertion): Likewise.
	* cfgbuild.c (find_basic_block): Likewise.
	(find_basic_blocks_1): Likewise.
	* cfgcleanup.c (merge_blocks_move_predecessor_nojumps): Likewise.
	(try_crossjump_to_edge): Likewise.
	(try_optimize_cfg): Likewise.
	* cse.c (delete_trivially_dead_insns): Likewise.
	* df.c (df_insn_delete): Likewise.
	* doloop.c (doloop_modify): Use delete_related_insns.
	* emit-rtl.c (try_split): Likewise.
	(remove_insn): Update BB boundaries.
	* expect.c (connect_post_landing_pads): Use delete_related_insns.
	* flow.c (delete_dead_jumptables): Use delete_insn[_chain]; do not care
	updating BB boundaries.
	(propagate_block_delete_insn): Likewise.
	(propagate_block_delete_libcall): Likewise.
	* function.c (delete_handlers): Use delete_related_insns.
	(thread_prologue_and_epilogue_insns): Likewise.
	* gcse.c (delete_null_pointer_checks): Use delete_related_insns.
	* genpeep.c (gen_peephole): Use delete_related_insns.
	* ifcvt.c (noce_process_if_block): Use delete_insn; do not care updating
	BB boundaries.
	(find_cond_trap): Likewise.
	* integrate.c (save_for_inline): Use delete_related_insns.
	(copy_insn_list): Likewise.
	* jump.c (pruge_linie_number_notes): Likewise.
	(duplicate_loop_exit_test): Likewise.
	(delete_computation): Likewise.
	(delete_related_insn): Rename from ...; use delete_insn
	(delete_insn): ... this one.
	(redirect_jump): Use delete_related_insns.
	* loop.c (scan_loop): Likewise.
	(move_movables): Likewise.
	(find_and_verify_loops): Likewise.
	(check_dbra_loop): Likewise.
	* recog.c (peephole2_optimize): Likewise.
	* reg-stack.c (delete_insn_for_stacker): Remove.
	(move_for_stack_reg): Use delete_insn.
	* regmove.c (combine_stack_adjustments_for_block): Likewise.
	* reload1.c (delete_address_reloads): Use delete_related_insns.
	(fixup_abnormal_edges): Use delete_insn.
	* recog.c (emit_delay_sequence): Use delete_related_insns.
	(delete_from-delay_slot): Likewise.
	(delete_scheduled_jump): likewise.
	(optimize_skip): Likewise.
	(try_merge_delay_insns): Likewise.
	(full_simple_delay_slots): Likewise.
	(fill_slots_from_thread): Likewise.
	(relax_delay_slots): Likewise.
	(make_return_insns): Likewise.
	(dbr_schedule): Likewise.
	* rtl.h (delete_insn): Rename to delete_related_insns.
	(delete_insn, delete_insn_chain): New prototypes.
	* ssa-ccp (sse_fast_dce):  Remove deleting of DEF, as it is done
	by df_insn_delete already.
	* ssa-dce.c (delete_insn_bb): Use delete_insn.
	* ssa.c (convert_from_ssa): Use delete_related_insns.
	* unroll.c (unroll_loop): Likewise.
	(calculate_giv_inc): Likewise.
	(copy_loop_body): Likewise.

	* i386-protos.h (ix86_libcall_value, ix86_function_value,
	ix86_function_arg_regno_p, ix86_function_arg_boundary,
	ix86_return_in_memory, ix86_function_value): Declare.
	* i386.c (x86_64_int_parameter_registers, x86_64_int_return_registers):
	new static valurables.
	(x86_64_reg_class): New enum
	(x86_64_reg_class_name): New array.
	(classify_argument, examine_argument, construct_container,
	 merge_classes): New static functions.
	(optimization_options): Enable flag_omit_frame_pointer and disable
	flag_pcc_struct_return on 64bit.
	(ix86_libcall_value, ix86_function_value,
	ix86_function_arg_regno_p, ix86_function_arg_boundary,
	ix86_return_in_memory, ix86_function_value): New global functions.
	(init_cumulative_args): Refuse regparm on x86_64, set maybe_vaarg.
	(function_arg_advance): Handle x86_64 passing conventions.
	(function_arg): Likewise.
	* i386.h (FUNCTION_ARG_BOUNDARY): New macro.
	(RETURN_IN_MEMORY): Move offline.
	(FUNCTION_VALUE, LIBCALL_VALUE): Likewise.
	(FUNCTION_VALUE_REGNO_P): New macro.
	(FUNCTION_ARG_REGNO_P): Move offline.
	(struct ix86_args): Add maybe_vaarg.
	* next.h (FUNCTION_VALUE_REGNO_P): Delete.
	* unix.h (FUNCTION_VALUE_REGNO_P): Delete.

From-SVN: r45726
2001-09-21 12:55:18 +00:00
Jan Hubicka
3c030e88e7 basic-block.h (free_bb_for_insn): Declare.
* basic-block.h (free_bb_for_insn): Declare.
	* bb-reorder.c (label_for_bb): Use block_label.
	(emit_jump_to_block_after): Remove.
	(insert_intra_1): Do not update block_for_insn.
	(insert_inter_bb_scope_notes): Likewise; update bb->end
	* cfg.c (free_bb_for_insn): New.
	(try_rediret_by_replacing_jump): Avoid set_block_for_new_insns call.
	(force_nonfallthru_and_redirect): Likewise; do not update BB boundaries.
	(commit_one_edge_insertion): Likewise.
	(commit_one_edge_insertion): Do not update BB boundary.
	(commit_edge_insertions): Do not call compute_bb_for_insn.
	* cfgbuild.c (find_basic_blocks): Do not free basic_block_for_insn.
	* cfgcleanup.c (merge_blocks_move_predecessor): Use reorder_insns_nobb.
	(merge_blocks_move_successor_nojumps): Likewise.
	(try_crossjump_to_edge): Do not update block_for_insn.
	* combine.c (combine_instructions): Remove compute_bb_for_insn call.
	* df.c (df_pattern_emit_later): Do not update BB boundary.
	(df_jump_pattern_emit_after): Likewise.
	(df_insn_move_before): Use emit_insn_before.
	* emit-rtl.c (try_split): Emit after trial to get bb boundary updated
	 properly.
	(add_insn_after, add_insn_before, emit_insns_after): Update BB
	boundaries and basic_block_for_insn.
	(reorder_insns_nobb): Rename from reorder_insns.
	(reorder_insns): New.
	(emit_block_insn_before, emit_block_insn_after): Kill.
	* flow.c (check_function_return_warnings): Do not call
	compute_bb_for_insn; Do not free basic_block_for_insn.
	(attempt_auto_inc): Do not update basic_block_for_insn.
	* function.c (emit_return_into_block): Likewise;
	do not update BB boundaries.
	* gcse.c (handle_avail_expr): Do not update basic_block_for_insn.
	(insert_insn_end_bb): Use emit_insn_before; Likewise.
	(pre_insert_copy_insn): Likewise.
	(update_ld_motion_notes): Likewise.
	(insert_insn_start_bb): Likewise.
	(replace_store_insn): Likewise.
	* ifcvt.c (noce_process_if_block): Likewise.
	(if_convert): Do not call compute_bb_for_insn.
	* lcm.c (optimize_mode_switching): Do not update BB boundaries.
	Use emit_insn_before and emit_insn_after.
	* recog.c (split_all_insns): Do not update BB boundaries;
	Do not call compute_bb_for_insn.
	(peephole2_optimize): Do not update BB boundaries.
	* reg-stack.c (emit_pop_insn): Use emit_insn_after and
	emit_insn_before.
	(emit_swap_insn): Likewise.
	(convert_regs_1): Likewise.
	* reload1.c (reload): Call compute_bb_for_insn.
	* rtl.h (reorder_insns_nobb): Declare.
	* ssa.c (rename_equivalent_regs): Use emit_insn_before.
	* toplev.c (rest_of_compilation): Call free_bb_for_insn
	at places CFG is invalidated; do not call compute_bb_for_insn.

	* cfg.c (expunge_block): Invalidate BB structure.

	* (merge_blocks_nomove): Update properly BLOCK_FOR_INSN
	array.

	* cfg.c (verify_flow_info): Verify the basic_block_for_insn array.

From-SVN: r45647
2001-09-16 20:21:30 +00:00
Zack Weinberg
ae6f2a1c8f function.c (ggc_mark_struct_function): Mark f->outer.
* function.c (ggc_mark_struct_function): Mark f->outer.
	* toplev.c (rest_of_compilation): Clear DECL_SAVED_INSNS here...
	* integrate.c (output_inline_function): ... not here.

From-SVN: r45419
2001-09-05 17:48:26 +00:00