Commit Graph

443 Commits

Author SHA1 Message Date
Paolo Bonzini
ad76cef84c expr.c (enqueue_insn, [...]): Remove.
2004-07-14  Paolo Bonzini  <bonzini@gnu.org>

	* expr.c (enqueue_insn, finish_expr_for_function,
	protect_from_queue, queued_subexp_p, mark_queue,
	emit_insns_enqueued_after_mark, emit_queue,
	expand_increment): Remove.
	(store_constructor): Expand increment as an assignment.
	(expand_expr_real_1 <case PREINCREMENT_EXPR,
	case PREDECREMENT_EXPR, case POSTINCREMENT_EXPR,
	case POSTDECREMENT_EXPR>): Abort.
	* expr.h (QUEUED_VAR, QUEUED_INSN, QUEUED_COPY,
	QUEUED_BODY, QUEUED_NEXT, finish_expr_for_function,
	protect_from_queue, emit_queue, queued_subexp_p): Remove.
	* function.h (pending_chain, x_pending_chain): Remove.
	* rtl.def (QUEUED): Remove.

	* emit-rtl.c (copy_insn_1, copy_most_rtx,
	set_used_flags, verify_rtx_sharing): Remove references to QUEUED.
	* genattrtab.c (attr_copy_rtx, clear_struct_flag,
	encode_units_mask): Likewise.
	* local-alloc.c (equiv_init_varies_p): Likewise.
	* rtl.c (copy_rtx): Likewise.
	* rtlanal.c (rtx_unstable_p, rtx_varies_p): Likewise.
	* simplify-rtx.c (simplify_gen_subreg): Likewise.
	* config/mn10300/mn10300.c (legitimate_pic_operand_p): Likewise.

	* builtins.c (expand_builtin, expand_builtin_apply,
	expand_builtin_mathfn, expand_builtin_mathfn_2,
	expand_builtin_mathfn_3, expand_builtin_setjmp_setup):
	Remove calls to emit_queue and protect_from_queue.
	* calls.c (expand_call, precompute_arguments,
	precompute_register_parameters, rtx_for_function_call,
	store_one_arg): Likewise.
	* dojump.c (do_compare_and_jump, do_jump): Likewise.
	* explow.c (memory_address): Likewise.
	* expmed.c (clear_by_pieces_1, clear_storage,
	clear_storage_via_libcall, emit_group_load,
	emit_group_store, emit_store_flag,
	expand_expr_real_1, store_by_pieces,
	store_constructor, store_expr, try_casesi,
	try_tablejump): Likewise.
	* function.c (expand_pending_sizes): Likewise.
	* optabs.c (emit_cmp_and_jump_insns,
	emit_conditional_add, emit_conditional_move,
	expand_fix, expand_float, prepare_cmp_insn): Likewise.
	* stmt.c (emit_case_bit_tests,
	expand_asm_expr, expand_computed_goto,
	expand_decl_init, expand_end_case_type,
	expand_end_stmt_expr, expand_expr_stmt_value,
	expand_return, expand_start_case,
	optimize_tail_recursion): Likewise.
	* config/c4x/c4x.c (c4x_expand_builtin): Likewise.
	* config/s390/s390.c (s390_expand_cmpmem): Likewise.

From-SVN: r84675
2004-07-14 07:30:23 +00:00
Jakub Jelinek
b352098021 expr.h (store_bit_field, [...]): Remove last argument.
* expr.h (store_bit_field, extract_bit_field): Remove last argument.
	* expmed.c (store_bit_field, extract_bit_field): Remove last
	argument.
	* builtins.c (expand_builtin_signbit): Adjust callers.
	* optabs.c (expand_vector_binop, expand_vector_unop): Likewise.
	* calls.c (store_unaligned_arguments_into_pseudos): Likewise.
	* ifcvt.c (noce_emit_move_insn): Likewise.
	* stmt.c (expand_return): Likewise.
	* expr.c (emit_group_load, emit_group_store, copy_blkmode_from_reg,
	store_field, expand_expr_real_1): Likewise.

From-SVN: r84447
2004-07-10 10:04:58 +02: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
70128ad9f6 builtins.c: Rename movstr*, except for movstrict*, to movmem* and clrstr* to clrmem*.
gcc/ChangeLog:
* builtins.c: Rename movstr*, except for movstrict*, to
movmem* and clrstr* to clrmem*.
* expr.c: Likewise.
* expr.h: Likewise.
* genopinit.c: Likewise.
* integrate.c: Likewise.
* local-alloc.c: Likewise.
* optabs.c: Likewise.
* optabs.h: Likewise.
* config/alpha/alpha.h: Likewise.
* config/alpha/alpha.md: Likewise.
* config/arm/arm-protos.h: Likewise.
* config/arm/arm.c: Likewise.
* config/arm/arm.md: Likewise.
* config/avr/avr.md: Likewise.
* config/c4x/c4x.c: Likewise.
* config/c4x/c4x.md: Likewise.
* config/frv/frv.md: Likewise.
* config/i386/i386-protos.h: Likewise.
* config/i386/i386.c: Likewise.
* config/i386/i386.h: Likewise.
* config/i386/i386.md: Likewise.
* config/i860/i860.c: Likewise.
* config/i860/i860.md: Likewise.
* config/ip2k/ip2k.md: Likewise.
* config/ip2k/libgcc.S: Likewise.
* config/ip2k/t-ip2k: Likewise.
* config/m32r/m32r.c: Likewise.
* config/m32r/m32r.md: Likewise.
* config/mcore/mcore.md: Likewise.
* config/mips/mips.c: Likewise.
* config/mips/mips.md: Likewise.
* config/ns32k/ns32k.c: Likewise.
* config/ns32k/ns32k.h: Likewise.
* config/ns32k/ns32k.md: Likewise.
* config/pa/pa.c: Likewise.
* config/pa/pa.md: Likewise.
* config/pdp11/pdp11.h: Likewise.
* config/pdp11/pdp11.md: Likewise.
* config/rs6000/rs6000.c: Likewise.
* config/rs6000/rs6000.md: Likewise.
* config/s390/s390-protos.h: Likewise.
* config/s390/s390.c: Likewise.
* config/s390/s390.md: Likewise.
* config/sh/lib1funcs.asm: Likewise.
* config/sh/sh.c: Likewise.
* config/sh/sh.md: Likewise.
* config/sh/t-sh: Likewise.
* config/sparc/sparc.h: Likewise.
* config/vax/vax.md: Likewise.
* config/xtensa/xtensa.c: Likewise.
* config/xtensa/xtensa.md: Likewise.
* doc/invoke.texi: Likewise.
* doc/md.texi: Likewise.
* doc/rtl.texi: Likewise.
gcc/testsuite/ChangeLog:
* gcc.c-torture/execute/builtins/mempcpy-2.c: Rename movstr*,
except for movstrict*, to movmem* and clrstr* to clrmem*.

From-SVN: r84222
2004-07-07 19:25:01 +00:00
Joseph Myers
8f99553ff6 c-decl.c, [...]: Don't check TARGET_MEM_FUNCTIONS.
* c-decl.c, config/m32r/m32r.c, expr.c, optabs.c: Don't check
	TARGET_MEM_FUNCTIONS.
	* system.h: Poison TARGET_MEM_FUNCTIONS.
	* libfuncs.h (LTI_bcopy, LTI_bcmp, LTI_bzero, bcopy_libfunc,
	bcmp_libfunc, bzero_libfunc): Remove.
	* optabs.c (init_obtabs): Don't set bcopy_libfunc, bcmp_libfunc or
	bzero_libfunc.
	* doc/tm.texi (TARGET_MEM_FUNCTIONS): Remove.
	* doc/standards.texi: Don't mention calling BSD string functions.
	* doc/invoke.texi: Likewise.  Mention that memmove may be called.
	* config/vax/t-memfuncs: New.
	* config/memcmp.c, config/memcpy.c, config/memmove.c,
	config/memset.c: New.
	* config/pdp11/t-pdp11 (LIB2FUNCS_EXTRA): Use these files.
	* config.gcc (vax-*-bsd*, vax-*-sysv*, vax-*-ultrix*): Use
	vax/t-memfuncs.
	* config/alpha/alpha.h, config/arc/arc.h, config/arm/arm.h,
	config/avr/avr.h, config/c4x/c4x.h, config/cris/aout.h,
	config/elfos.h, config/gnu.h, config/h8300/h8300.h,
	config/i386/gas.h, config/ia64/ia64.h, config/interix.h,
	config/ip2k/ip2k.h, config/lynx-ng.h, config/m32r/m32r.h,
	config/mcore/mcore.h, config/mips/mips.h, config/mmix/mmix.h,
	config/netbsd.h, config/openbsd.h, config/pa/pa.h,
	config/rs6000/rs6000.h, config/rtems.h, config/s390/s390.h,
	config/sh/sh.h, config/sparc/sparc.h, config/stormy16/stormy16.h,
	config/svr3.h: Don't define TARGET_MEM_FUNCTIONS.

From-SVN: r84130
2004-07-05 20:49:20 +01: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
c9b9aa64e9 cgraph.h (cgraph_build_static_cdtor): Declare.
* cgraph.h (cgraph_build_static_cdtor): Declare.
        * cgraphunit.c (cgraph_build_static_cdtor): New.
        * c-objc-common.c (build_cdtor): Use it.
        * coverage.c (create_coverage): Likewise.
        * libfuncs.h (LTI_gcov_init, gcov_init_libfunc): Remove.
        * optabs.c (init_optabs): Don't set gcov_init_libfunc.
java/
        * class.c (registerClass_libfunc): Remove.
        (init_class_processing): Don't set it.
        (emit_register_classes): Take list_p parameter.  Fill it in
        with _Jv_RegisterClass calls.
        * decl.c (java_init_decl_processing): Don't call
        init_resource_processing.
        * jcf-parse.c (java_emit_static_constructor): New.
        (java_parse_file): Call it.
        * resource.c (registerResource_libfunc): Remove.
        (init_resource_processing): Remove.
        (write_resource_constructor): Take list_p parameter.  Fill it in
        with _Jv_RegisterResource calls.
        * java-tree.h: Update prototypes.

From-SVN: r83958
2004-07-01 00:51:12 -07: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
Richard Sandiford
d83aba0f8b optabs.c (expand_unop): Try implementing negation using subtraction from zero.
* optabs.c (expand_unop): Try implementing negation using subtraction
	from zero.

From-SVN: r81933
2004-05-17 06:50:51 +00:00
Uros Bizjak
c2fcfa4ff8 optabs.h (enum optab_index): Add new OTI_log1p.
* optabs.h (enum optab_index): Add new OTI_log1p.
	(log1p_optab): Define corresponding macro.
	* optabs.c (init_optabs): Initialize log1p_optab.
	* genopinit.c (optabs): Implement log1p_optab using log1p?f2
	patterns.
	* builtins.c (expand_builtin_mathfn): Handle BUILT_IN_LOG1P{,F,L}
	using log1p_optab.
	(expand_builtin): Expand BUILT_IN_LOG1P{,F,L} using
	expand_builtin_mathfn if flag_unsafe_math_optimizations is set.

	* reg-stack.c (subst_stack_regs_pat): Handle UNSPEC_FYL2XP1.

	* config/i386/i386.c (ix86_emit_i387_log1p): New function.
	* config/i386/i386-protos.h (ix86_emit_i387_log1p):
	Prototype here.
	* config/i386/i386.md (UNSPEC_FYL2XP1): New unspec to represent
	x87's fyl2xp1 instruction.
	(*fyl2x_xf3): Rename insn definition to fyl2x_xf3.
	(fyl2xp1_xf3): New pattern to implement fyl2xp1 x87 instruction.
	(log1psf2, log1pdf2, log1pxf2): New expanders to implement log1pf,
	log1p  and log1pl built-ins as inline x87 intrinsics.

	* testsuite/gcc.dg/builtins-33.c:  Also check log1p*.

From-SVN: r81606
2004-05-07 07:38:21 +02:00
Uros Bizjak
5ae27cfaed optabs.h (enum optab_index): Add new OTI_fmod and OTI_drem.
* optabs.h (enum optab_index): Add new OTI_fmod and OTI_drem.
        (fmod_optab): Define corresponding macros.
        * optabs.c (init_optabs): Initialize fmod_optab and drem_optab.
        * genopinit.c (optabs): Implement fmod_optab and drem_optab
        using fmod?f3 and drem?f3 patterns.
        * builtins.c (expand_builtin_mathfn_2): Handle BUILT_IN_FMOD{,F,L}
        using fmod_optab and BUILT_IN_DREM{,F,L} using drem_optab.
        (expand_builtin): Expand BUILT_IN_FMOD{,F,L} and
        BUILT_IN_DREM{,F,L} using expand_builtin_mathfn_2 if
        flag_unsafe_math_optimizations is set.

        * reg-stack.c (subst_stack_regs_pat): Handle UNSPEC_FPREM_F,
        UNSPEC_FPREM_U, UNSPEC_FPREM1_F and UNSPEC_FPREM1_U.

        * config/i386/i386.c (ix86_emit_fp_unordered_jump): New function.
        * config/i386/i386-protos.h (ix86_emit_fp_unordered_jump):
        Prototype here.
        * config/i386/i386.md (UNSPEC_FPREM_F, UNSPEC_FPREM_U,
        UNSPEC_FPREM1_F, UNSPEC_FPREM1_U): New unspecs to represent x87's
        fprem and fprem1 instructions.
        (*x86_fnstsw_1): Change input parameter to (reg:CCFP 18).
        Rename insn definition to x86_fnstsw_1.
        (fpremxf4, fprem1xf4): New patterns to implement fprem and fprem1
        x87 instructions.
        (fmodsf3, fmoddf3, fmodxf3): New expanders to implement fmodf, fmod
        and fmodl built-ins as inline x87 intrinsics.
        (dremsf3, dremdf3, dremxf3): New expanders to implement dremf, drem
        and dreml built-ins as inline x87 intrinsics.

        * testsuite/gcc.dg/builtins-40.c: New test.

From-SVN: r81555
2004-05-06 07:19:24 +02:00
Uros Bizjak
7a8e07c7d1 optabs.h (enum optab_index): Add new OTI_expm1.
2004-05-03  Uros Bizjak  <uros@kss-loka.si>

	* optabs.h (enum optab_index): Add new OTI_expm1.
	(expm1_optab): Define corresponding macro.
	* optabs.c (init_optabs): Initialize expm1_optab.
	* genopinit.c (optabs): Implement expm1_optab using expm1?f2
	patterns.
	* builtins.c (expand_builtin_mathfn): Handle BUILT_IN_EXPM1{,F,L}
	using expm1_optab.
	(expand_builtin): Expand BUILT_IN_EXPM1{,F,L} using
	expand_builtin_mathfn if flag_unsafe_math_optimizations is set.

	* config/i386/i386.md (expm1df2, expm1sf2, expm1xf2): New expanders
	to implement expm1, expm1f and expm1l built-ins as inline x87
	intrinsics.

testsuite:

        * gcc.dg/builtins-34.c: Also check expm1*.

From-SVN: r81425
2004-05-03 07:31:45 +02:00
Kazu Hirata
1ae58c30e2 bb-reorder.c, [...]: Fix comment typos.
* bb-reorder.c, c-opts.c, cfglayout.c, cgraph.c, cgraphunit.c,
	cppfiles.c, fold-const.c, ggc-zone.c, loop-doloop.c, optabs.c,
	reg-stack.c, varasm.c, config/alpha/ev4.md,
	config/alpha/ev5.md, config/alpha/ev6.md, config/arm/arm.c,
	config/c4x/c4x.c, config/c4x/c4x.md, config/cris/cris.c,
	config/cris/cris.h, config/fr30/fr30.h, config/frv/frv.c,
	config/frv/frv.h, config/frv/frv.md, config/h8300/h8300.c,
	config/i386/i386.c, config/i386/i386.md, config/i386/winnt.c,
	config/ia64/itanium2.md, config/ip2k/ip2k.c,
	config/mips/mips.c, config/mips/mips.h, config/mips/sr71k.md,
	config/pa/pa.c, config/s390/s390.c, config/sh/sh.c: Fix
	comment typos.

From-SVN: r81345
2004-04-30 16:27:30 +00:00
Uros Bizjak
c56122d841 optabs.h (enum optab_index): Add new OTI_asin and OTI_acos.
2004-04-20  Uros Bizjak  <uros@kss-loka.si>

	* optabs.h (enum optab_index): Add new OTI_asin and OTI_acos.
	(asin_optab, acos_optab): Define corresponding macros.
	* optabs.c (init_optabs): Initialize asin_optab and acos_optab.
	* genopinit.c (optabs): Implement asin_optab and acos_optab
	using asin?f2 and acos?f2 patterns.
	* builtins.c (expand_builtin_mathfn): Handle BUILT_IN_ASIN{,F,L}
	using asin_optab, and BUILT_IN_ACOS{,F,L} using acos_optab.
	(expand_builtin): Expand BUILT_IN_ASIN{,F,L} and BUILT_IN_ACOS{,F,L}
	using expand_builtin_mathfn if flag_unsafe_math_optimizations is set.

	* config/i386/i386.md (asindf2, asinsf2, asinxf2, acosdf2,
	acossf2, acosxf2): New expanders to implement asin, asinf, asinl,
	acos, acosf and acosl built-ins as inline x87 intrinsics.

	* gcc.dg/builtins-39.c: New test.

From-SVN: r80921
2004-04-20 19:40:31 +00:00
Uros Bizjak
88b28a31c0 optabs.h (enum optab_index): Add new OTI_logb and OTI_ilogb.
2004-04-14  Uros Bizjak  <uros@kss-loka.si>

	* optabs.h (enum optab_index): Add new OTI_logb and OTI_ilogb.
	(logb_optab, ilogb_optab): Define corresponding macros.
	* optabs.c (init_optabs): Initialize logb_optab and ilogb_optab.
	* genopinit.c (optabs): Implement logb_optab and ilogb_optab
	using logb?f2 and ilogb?i2 patterns.
	* builtins.c (expand_builtin_mathfn): Handle BUILT_IN_LOGB{,F,L}
	using logb_optab, and BUILT_IN_ILOGB{,F,L} using ilogb_optab.
	(expand_builtin): Expand BUILT_IN_LOGB{,F,L} and BUILT_IN_ILOGB{,F,L}
	using expand_builtin_mathfn if flag_unsafe_math_optimizations is set.

	* reg-stack.c (subst_stack_regs_pat): Handle UNSPEC_XTRACT_FRACT
	and UNSPEC_XTRACT_EXP.

	* config/i386/i386.md (*fxtractdf3, *fxtractsf3, *fxtractxf3): New
	patterns to implement fxtract x87 instruction.
	(logbdf2, logbsf2, logbxf2, ilogbsi2): New expanders to implement
	logb, logbf, logbl, ilogb, ilogbf and ilogbl built-ins as inline x87
	intrinsics.
	(UNSPEC_XTRACT_FRACT, UNSPEC_XTRACT_EXP): New unspecs to represent
	x87's fxtract insn.

	* gcc.dg/builtins-38.c: New test.

From-SVN: r80709
2004-04-15 02:43:46 +00:00
Uros Bizjak
a072d43b46 optabs.c (expand_twoval_unop): Reorder function arguments.
2004-04-13  Uros Bizjak  <uros@kss-loka.si>:

	* optabs.c (expand_twoval_unop): Reorder function arguments.
	* builtins.c (expand_builtin_mathfn_3): Update calls to
	expand_twoval_unop.

	* reg-stack.c (subst_stack_regs_pat): Handle UNSPEC_TAN_ONE
	and UNSPEC_TAN_TAN. Add missing comment.

	* config/i386/i386.md (*tandf3_1, *tansf3_1, *tanxf3_1): New
	patterns to implement fptan x87 instruction.
	(tandf2, tansf2, tanxf2): New expanders to implement tan, tanf
	and tanl built-ins as inline x87 intrinsics. Define corresponding
	peephole2 optimizers for 'fptan; fstp %st(0); fld1' sequence.
	(UNSPEC_TAN_ONE, UNSPEC_TAN_TAN): New unspecs to represent
	x87's fptan insn.


	* gcc.dg/i386-387-1.c: Add new test for __builtin_tan.
	* gcc.dg/i386-387-2.c: Likewise.

	* gcc.dg/i386-387-7.c: New test.
	* gcc.dg/i386-387-8.c: New test.

	* gcc.dg/builtins-37.c: New test.

From-SVN: r80677
2004-04-14 02:37:29 +00:00
Uros Bizjak
6c7cf1f021 builtins.c: Implement support for sincos function.
2004-04-06  Uros Bizjak  <uros@kss-loka.si>

	* builtins.c: Implement support for sincos function.
	(expand_builtin_mathfn): Remove BUILT_IN_SIN{,F,L} and
	BUILT_IN_COS{,F,L}.
	(expand_builtin_mathfn_3): New function.
	(expand_builtin): Expand BUILT_IN_SIN{,F,L} and
	BUILT_IN_COS{,F,L} using expand_builtin_mathfn_3 if
	flag_unsafe_math_optimization is set.

	* optabs.h (enum optab_index): Add new OTI_sincos.
	(sincos_optab): Define corresponding macro.

	* optabs.c (init_optabs): Initialize sincos_optab.
	(expand_twoval_unop): New function.

	* genopinit.c (optabs): Implement sincos_optab using sincos?f3
	patterns.

	* reg-stack.c (subst_stack_regs_pat): Handle UNSPEC_SINCOS_COS
	and UNSPEC_SINCOS_SIN.

	* config/i386/i386.md (sincosdf3, sincossf3, *sincosextendsfdf3,
	sincosxf3): New patterns to implement sincos, sincosf and sincosl
	built-ins as inline x87 intrinsics. Define splits for
	sindf2, sinsf2, *sinextendsfdf2, sinxf2, cosdf2,
	cossf2, *cosextendsfdf2 and cosxf2 patterns from corresponding
	sincos patterns.
	(sindf2, sinsf2, sinxf2): Rename to *sindf2, *sinsf2, *sinxf2.
	(cosdf2, cossf2, cosxf2): Rename to *cosdf2, *cossf2, *cosxf2.

	(UNSPEC_SINCOS_SIN, UNPEC_SINCOS_COS): New unspecs to represent
	x87's unspec insn.

	* gcc.dg/builtins-36.c: New test.

From-SVN: r80463
2004-04-06 19:34:33 +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
Olivier Hainque
0c0ab0f1e8 optabs.c (expand_binop): When synthesizing double word rotates from single word shifts...
* optabs.c (expand_binop): When synthesizing double word rotates
        from single word shifts, use a new register target if the provided
        target is not a REG already.

From-SVN: r79875
2004-03-23 21:54:36 +00:00
Uros Bizjak
a251102ea1 optabs.h (enum optab_index): Add new OTI_exp10 and OTI_exp2.
2004-03-10  Uros Bizjak  <uros@kss-loka.si>

	* optabs.h (enum optab_index): Add new OTI_exp10 and OTI_exp2.
	(exp10_optab, exp2_optab): Define corresponding macros.
	* optabs.c (init_optabs): Initialize exp10_optab and exp2_optab.
	* genopinit.c (optabs): Implement exp10_optab and exp2_optab
	using exp10?f2 and exp2?f2 patterns.
	* builtins.c (expand_builtin_mathfn): Handle BUILT_IN_EXP10{,F,L}
	using exp10_optab, and BUILT_IN_EXP2{,F,L} using exp2_optab.
	(expand_builtin): Expand BUILT_IN_EXP10{,F,L} and BUILT_IN_EXP2{,F,L}
	using expand_builtin_mathfn if flag_unsafe_math_optimizations is set.

	* config/i386/i386.md (exp10sf2, exp10df2, exp10xf2, exp2sf2,
	exp2df2, exp2xf2): New patterns to implement exp10, exp10f, exp10l,
	exp2, exp2f and exp2l built-ins as inline x87 intrinsics.

	* gcc.dg/builtins-34.c: New test.

From-SVN: r79279
2004-03-10 22:36:22 +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
Richard Henderson
27ab3e9128 re PR middle-end/11767 (different code behaviour with -fnon-call-exceptions -fprofile-arcs)
PR middle-end/11767
        * coverage.c (coverage_counter_ref): Set MEM_NOTRAP_P.
        * optabs.c (prepare_cmp_insn): Force trapping memories to registers
        before the compare, if flag_non_call_exceptions.
        * g++.dg/other/profile1.C: New.

From-SVN: r78805
2004-03-02 16:46:06 -08:00
Aldy Hernandez
0e1d7f3250 md.texi (Standard Names): Document additional dependency on fix pattern.
2004-02-19  Aldy Hernandez  <aldyh@redhat.com>

        * doc/md.texi (Standard Names): Document additional dependency on
        fix pattern.

        * optabs.c (ftruncify): Remove.
        (expand_fix): Manually inline ftruncify above.
        (can_fix_p): Add FIXME note.

From-SVN: r78116
2004-02-19 18:50:57 +00:00
Uros Bizjak
3b8e0c9129 optabs.h (enum optab_index): Add new OTI_log10 and OTI_log2.
2004-02-11  Uros Bizjak  <uros@kss-loka.si>

	* optabs.h (enum optab_index): Add new OTI_log10 and OTI_log2.
	(log10_optab, log2_optab): Define corresponding macros.
	* optabs.c (init_optabs): Initialize log10_optab and log2_optab.
	* genopinit.c (optabs): Implement log10_optab and log2_optab
	using log10?f2 and log2?f2 patterns.
	* builtins.c (expand_builtin_mathfn): Handle BUILT_IN_LOG10{,F,L}
	using log10_optab, and BUILT_IN_LOG2{,F,L} using log2_optab.
	(expand_builtin): Expand BUILT_IN_LOG10{,F,L} and BUILT_IN_LOG2{,F,L}
	using expand_builtin_mathfn if flag_unsafe_math_optimizations is set.

	* config/i386/i386.md (log10sf2, log10df2, log10xf2, log2sf2,
	log2df2, log2xf2): New patterns to implement log10, log10f, log10l,
	log2, log2f and log2l built-ins as inline x87 intrinsics.

	* gcc.dg/builtins-33.c: New test.

From-SVN: r77675
2004-02-11 23:39:41 +00:00
Kazu Hirata
60c81c8995 doloop.c, [...]: Use const0_rtx instead of GEN_INT (0).
* doloop.c, optabs.c, regmove.c, sched-deps.c,
	config/i386/i386.c, config/i386/i386.md: Use const0_rtx
	instead of GEN_INT (0).  Do the same for other constants that
	are readily available.

From-SVN: r77160
2004-02-03 05:39:57 +00:00
Kazu Hirata
d9221e016b alias.c, [...]: Update copyright.
* alias.c, basic-block.h, c-common.c, c-common.h,
	c-cppbuiltin.c, c-opts.c, c-pragma.c, c-pretty-print.c,
	calls.c, cfg.c, cfgcleanup.c, cfgrtl.c, cgraph.h, collect2.c,
	combine.c, cppcharset.c, cpphash.h, cppinit.c, cpplib.c,
	cpplib.h, cppmacro.c, crtstuff.c, cselib.c, cselib.h,
	defaults.h, df.c, dominance.c, et-forest.c, expmed.c, expr.c,
	expr.h, fix-header.c, function.h, gcc.c, gcse.c, genattrtab.c,
	genautomata.c, genconditions.c, genemit.c, genflags.c,
	gengtype.c, gengtype.h, genopinit.c, genrecog.c, gensupport.c,
	ggc-zone.c, graph.c, haifa-sched.c, input.h, integrate.c,
	langhooks-def.h, langhooks.c, langhooks.h, line-map.c,
	line-map.h, local-alloc.c, optabs.c, optabs.h, postreload.c,
	ra.h, recog.c, reg-stack.c, regmove.c, reload.c, reorg.c,
	rtl.c, sched-deps.c, sched-ebb.c, sdbout.c, system.h,
	target.h, targhooks.c, toplev.h, tree-inline.c, unwind-pe.h,
	unwind.h, varray.c, varray.h: Update copyright.

From-SVN: r76302
2004-01-21 20:40:04 +00:00
Jan Hubicka
997404de62 expmed.c (store_bit_field, [...]): Use new named patterns
* expmed.c (store_bit_field, extract_bit_field): Use new named patterns
	* expr.c (store_constructor): Use vec_init pattern.
	* genopinit.c (optabs): Initailize vec_set/vec_extract/vec_init.
	* optabs.h (optab_index): ADD OTI_vec_set/OTI_vec_extract/OTI_vec_init
	(vec_set_optab, vec_extract_optab, vec_init_optab): New.
	* i386.md (vec_setv2df, vec_extractv2df, vec_setv4sf, vec_extractv4sf):
	New patterns.
	(sse2_unpc?pd): Fix pattern.
	(sse2_movlpd): Kill.
	(sse2_movsd): Deal with movlpd too.
	* i386.c (ix86_expand_builtin): Use sse2_movsd instead of sse2_movlpd.
	(ix86_expand_vector_init): New.
	* emmintrin.h (__mm_set_pd, __mm_set_ps): Use vector extensions.
	* md.texi (vec_set, vec_extract): Document

From-SVN: r75304
2004-01-01 14:13:44 +00:00
Kazu Hirata
d91edf86b0 ChangeLog.7: Fix comment typos.
* ChangeLog.7: Fix comment typos.
	* c-common.c: Likewise.
	* c-pretty-print.c: Likewise.
	* cgraphunit.c: Likewise.
	* et-forest.h: Likewise.
	* expr.c: Likewise.
	* gcse.c: Likewise.
	* genautomata.c: Likewise.
	* genrecog.c: Likewise.
	* gensupport.c: Likewise.
	* ggc-zone.c: Likewise.
	* haifa-sched.c: Likewise.
	* ifcvt.c: Likewise.
	* loop.c: Likewise.
	* optabs.c: Likewise.
	* pretty-print.h: Likewise.
	* regrename.c: Likewise.
	* rtl.h: Likewise.
	* sched-rgn.c: Likewise.
	* target.h: Likewise.
	* value-prof.c: Likewise.
	* web.c: Likewise.

From-SVN: r73795
2003-11-21 06:52:23 +00:00
Roger Sayle
c7d91a943b re PR middle-end/12705 (: complex powers)
PR middle-end/12705
	* optabs.c (expand_binop): When expanding complex operations
	inline, always calculate result into a new temporary register.
	Minor code clean-ups.

From-SVN: r72871
2003-10-23 21:37:52 +00:00
Zack Weinberg
d1d3865f99 c-common.c (registered_builtin_types): New static.
* c-common.c (registered_builtin_types): New static.
	(c_common_type_for_mode): Consult registered_builtin_types.
	(c_register_builtin_type): Add type to registered_builtin_types.
	* optabs.c (init_floating_libfuncs): Initialize libfuncs for
	all MODE_FLOAT modes, not just the ones corresponding to
	float_type_node, double_type_node, and long_double_type_node.

From-SVN: r72711
2003-10-20 18:28:27 +00:00
Kazu Hirata
7ef0daad61 expr.c: Follow spelling conventions.
* expr.c: Follow spelling conventions.
	* final.c: Likewise.
	* optabs.c: Likewise.
	* sched-deps.c: Likewise.
	* sdbout.c: Likewise.

From-SVN: r72361
2003-10-11 19:00:49 +00:00
Roger Sayle
dd0ba2813d cse.c (constant_pool_entries_regcost): New global variable to hold the register cost component of...
* cse.c (constant_pool_entries_regcost): New global variable to
	hold the register cost component of constant_pool_entries_cost.
	(fold_rtx): Calculate constant_pool_entries_regcost at the same
	time as constant_pool_entries_cost.
	(cse_insn): Set both src_folded_cost and src_folded_regcost from
	constant_pool_entries_cost and constant_pool_entries_regcost.
	(cse_main): Initialize constant_pool_entries_regcost to zero.

	* optabs.c (expand_unop): Attach a REG_EQUAL note describing
	the semantics of the sequence of bit operations used to negate
	a floating-point value.
	(expand_abs_nojump): Likewise attach a REG_EQUAL note describing
	the semantics of the bit operations used to abs a floating point
	value.

From-SVN: r72326
2003-10-11 03:49:54 +00:00
Roger Sayle
17796a89ab optabs.c (prepare_float_lib_cmp): Always attach a REG_EQUAL note to the comparison...
* optabs.c (prepare_float_lib_cmp): Always attach a REG_EQUAL note
	to the comparison, as emit_libcall_block calls copy_rtx on equiv.

From-SVN: r72262
2003-10-09 12:57:30 +00:00
Richard Earnshaw
456bc4bb58 optabs.c (init_intraclass_conv_libfuncs): Fix order of array indicees for floating-point conversersion libcalls.
* optabs.c (init_intraclass_conv_libfuncs): Fix order of array
indicees for floating-point conversersion libcalls.

From-SVN: r72193
2003-10-07 16:07:28 +00:00
Zack Weinberg
118355a03a expr.c (cmpstr_optab, [...]): New.
* expr.c (cmpstr_optab, cmpmem_optab): New.
	* genopinit.c: Initialize them.
	* optabs.h: Declare them.
	* optabs.c (init_optabs): Clear them.
	(prepare_cmp_insn):  Use cmpstr_optab and cmpmem_optab to find
	block memory compare insns, not conditional chains.  Restructure
	the fallback generation of a call to memcmp/bcmp for better
	readability.

From-SVN: r72185
2003-10-07 07:25:32 +00:00
Zack Weinberg
85363ca094 * libfuncs.h (LTI_extendsfdf2, LTI_extendsfxf2, LTI_extendsftf2)
(LTI_extenddfxf2, LTI_extenddftf2, LTI_truncdfsf2, LTI_truncxfsf2)
	(LTI_trunctfsf2, LTI_truncxfdf2, LTI_trunctfdf2, LTI_floatsisf)
	(LTI_floatdisf, LTI_floattisf, LTI_floatsidf, LTI_floatdidf)
	(LTI_floattidf, LTI_floatsixf, LTI_floatdixf, LTI_floattixf)
	(LTI_floatsitf, LTI_floatditf, LTI_floattitf, LTI_fixsfsi, LTI_fixsfdi)
	(LTI_fixsfti, LTI_fixdfsi, LTI_fixdfdi, LTI_fixdfti, LTI_fixxfsi)
	(LTI_fixxfdi, LTI_fixxfti, LTI_fixtfsi, LTI_fixtfdi, LTI_fixtfti)
	(LTI_fixunssfsi, LTI_fixunssfdi, LTI_fixunssfti, LTI_fixunsdfsi)
	(LTI_fixunsdfdi, LTI_fixunsdfti, LTI_fixunsxfsi, LTI_fixunsxfdi)
	(LTI_fixunsxfti, LTI_fixunstfsi, LTI_fixunstfdi, LTI_fixunstfti)
	(extendsfdf2_libfunc, extendsfxf2_libfunc, extendsftf2_libfunc)
	(extenddfxf2_libfunc, extenddftf2_libfunc, truncdfsf2_libfunc)
	(truncxfsf2_libfunc, trunctfsf2_libfunc, truncxfdf2_libfunc)
	(trunctfdf2_libfunc, floatsisf_libfunc, floatdisf_libfunc)
	(floattisf_libfunc, floatsidf_libfunc, floatdidf_libfunc)
	(floattidf_libfunc, floatsixf_libfunc, floatdixf_libfunc)
	(floattixf_libfunc, floatsitf_libfunc, floatditf_libfunc)
	(floattitf_libfunc, fixsfsi_libfunc, fixsfdi_libfunc, fixsfti_libfunc)
	(fixdfsi_libfunc, fixdfdi_libfunc, fixdfti_libfunc, fixxfsi_libfunc)
	(fixxfdi_libfunc, fixxfti_libfunc, fixtfsi_libfunc, fixtfdi_libfunc)
	(fixtfti_libfunc, fixunssfsi_libfunc, fixunssfdi_libfunc)
	(fixunssfti_libfunc, fixunsdfsi_libfunc, fixunsdfdi_libfunc)
	(fixunsdfti_libfunc, fixunsxfsi_libfunc, fixunsxfdi_libfunc)
	(fixunsxfti_libfunc, fixunstfsi_libfunc, fixunstfdi_libfunc)
	(fixunstfti_libfunc): Delete.
	* optabs.h (struct optab_handlers): Break out of struct optab.
	(struct convert_optab, convert_optab, enum convert_optab_index,
	convert_optab_table, sext_optab, zext_optab, trunc_optab,
	sfix_optab, ufix_optab, sfixtrunc_optab, ufixtrunc_optab,
	sfloat_optab, ufloat_optab): New.
	(set_conv_libfunc): Prototype.
	(GEN_FCN): Use C90 indirect call syntax, remove unnecessary cast.
	(trunc_optab): Renamed btrunc_optab.
	* builtins.c (expand_builtin_mathfn): Update to match.
	* optabs.c (extendtab, fixtab, fixtrunctab, floattab): Delete.
	(convert_optab_table, new_convert_optab, init_convert_optab)
	(init_interclass_conv_libfuncs, init_intraclass_conv_libfuncs)
	(set_conv_libfunc): New.
	(can_extend_p, gen_extend_insn, can_fix_p, can_float_p)
	(expand_float, expand_fix): Use new conversion optabs,
	not old insn code tables or long chains of ifs.
	(init_optabs): No need to clear old insn code tables.
	Initialize the new optabs, not the old libfunc array entries.
	Don't handle FIXUNS_TRUNC_LIKE_FIX_TRUNC here.
	* genopinit.c: Initialize conversion optabs, not the
	former insn code tables.  Remove unnecessary casts.
	Handle FIXUNS_TRUNC_LIKE_FIX_TRUNC here.
	* expr.c (convert_move): Remove redundant check that
	to_real==from_real.  Use the conversion optabs instead
	of long chains of tests of modes.  Move partial-integer-mode
	interconversion above all integer conversion.  Do not recurse
	on a value forced into a register in the original mode.

	* config/gofast.h, config/frv/frv.c, config/ia64/ia64.c
	* config/mips/mips.c, config/pa/pa.c, config/rs6000/rs6000.c
	* config/sparc/sparc.c: Use set_conv_libfunc to adjust entries
	in new conversion optabs; do not reference the old libfunc
	array entries.  No need to include libfuncs.h.

From-SVN: r72178
2003-10-07 02:23:42 +00:00
Roger Sayle
37bf20eeb0 optabs.c (prepare_float_lib_cmp): Avoid searching for REG_RETVAL instruction by using LCT_CONST and then calling...
* optabs.c (prepare_float_lib_cmp): Avoid searching for REG_RETVAL
	instruction by using LCT_CONST and then calling emit_libcall_block
	ourselves.

Co-Authored-By: Zack Weinberg <zack@codesourcery.com>

From-SVN: r72171
2003-10-06 23:09:28 +00:00
Falk Hueffner
cd2ac05b77 re PR rtl-optimization/11974 (ICE building alpha glibc: in emit_move_insn, at expr.c:3206)
PR optimization/11974
* optabs.c (expand_unop): Promote libcall outmode according to
hard_libcall_value.

From-SVN: r72170
2003-10-06 23:06:09 +00:00
Zack Weinberg
70a01792d8 real.h (REAL_MODE_FORMAT): New macro.
* real.h (REAL_MODE_FORMAT): New macro.
	* c-cppbuiltin.c, optabs.c, real.c, config/alpha/alpha.c
	* config/c4x/c4x.c, config/i370/i370.c, config/i386/freebsd.h
	* config/i386/i386.c, config/i960/i960.c, config/ia64/ia64.c
	* config/m68k/m68k.c, config/mips/mips.c, config/rs6000/rs6000.c
	* config/vax/vax.c: Use REAL_MODE_FORMAT instead of referring
	directly to real_format_for_mode array, wherever possible.

From-SVN: r72168
2003-10-06 22:47:32 +00:00
Roger Sayle
bd831d5cee optabs.c (prepare_float_lib_cmp): Attach a REG_EQUAL note describing the return value of the comparison libcall...
* optabs.c (prepare_float_lib_cmp):  Attach a REG_EQUAL note
	describing the return value of the comparison libcall to the
	REG_RETVAL instruction of the emitted sequence.

From-SVN: r72148
2003-10-06 12:48:49 +00:00
Zack Weinberg
c903456103 * libfuncs.h
(LTI_eqhf2, LTI_nehf2, LTI_gthf2, LTI_gehf2, LTI_lthf2)
	(LTI_lehf2, LTI_unordhf2, LTI_eqsf2, LTI_nesf2, LTI_gtsf2)
	(LTI_gesf2, LTI_ltsf2, LTI_lesf2, LTI_unordsf2, LTI_eqdf2)
	(LTI_nedf2, LTI_gtdf2, LTI_gedf2, LTI_ltdf2, LTI_ledf2)
	(LTI_unorddf2, LTI_eqxf2, LTI_nexf2, LTI_gtxf2, LTI_gexf2)
	(LTI_ltxf2, LTI_lexf2, LTI_unordxf2, LTI_eqtf2, LTI_netf2)
	(LTI_gttf2, LTI_getf2, LTI_lttf2, LTI_letf2, LTI_unordtf2)
	(eqhf2_libfunc, nehf2_libfunc, gthf2_libfunc, gehf2_libfunc)
	(lthf2_libfunc, lehf2_libfunc, unordhf2_libfunc, eqsf2_libfunc)
	(nesf2_libfunc, gtsf2_libfunc, gesf2_libfunc, ltsf2_libfunc)
	(lesf2_libfunc, unordsf2_libfunc eqdf2_libfunc, nedf2_libfunc)
	(gtdf2_libfunc, gedf2_libfunc, ltdf2_libfunc, ledf2_libfunc)
	(unorddf2_libfunc eqxf2_libfunc, nexf2_libfunc, gtxf2_libfunc)
	(gexf2_libfunc, ltxf2_libfunc, lexf2_libfunc, unordxf2_libfunc
	(eqtf2_libfunc, netf2_libfunc, gttf2_libfunc, getf2_libfunc)
	(lttf2_libfunc, letf2_libfunc, unordtf2_libfunc):
	Delete.
	* optabs.h (OTI_eq, OTI_ne, OTI_gt, OTI_ge, OTI_lt, OTI_le)
	(OTI_unord, eq_optab, ne_optab, gt_optab, ge_optab, lt_optab)
	(le_optab, unord_optab): New.

	* optabs.c (prepare_float_lib_cmp): Rewrite.  Get the libfuncs
	from the code_to_optab table, not a giant switch; use
	swap_condition; do widening only if a comparison function that
	we can call exists in a wider mode, not if a cmp_optab insn or
	libfunc exists in a wider mode; call protect_from_queue
	exactly once on each operand.
	(init_optabs): Initialize the new optabs, not the deleted libfuncs.

	* config/gofast.h, config/ia64/ia64.c, config/mips/mips.c
	* config/pa/pa.c, config/rs6000/rs6000.c, config/sparc/sparc.c:
	Set floating point comparison libfuncs using set_optab_libfunc
	on the appropriate optab.

	* config/ia64/ia64.c (ia64_hpux_init_libfuncs): Fix typo.
	* config/rs6000/rs6000.c (rs6000_init_libfuncs): Correct ABI
	selector conditionals.

From-SVN: r72101
2003-10-04 21:36:08 +00:00
Zack Weinberg
c15c90bbfe target.h (init_libfuncs): New hook.
* target.h (init_libfuncs): New hook.
	* target-def.h: Default TARGET_INIT_BUILTINS and
	TARGET_INIT_LIBFUNCS to hook_void_void.  Add
	TARGET_INIT_LIBFUNCS to TARGET_INITIALIZER.
	* builtins.c (default_init_builtins): Delete.
	* expr.h (default_init_builtins): Delete prototype.
	* doc/tm.texi: Document TARGET_INIT_LIBFUNCS and US_SOFTWARE_GOFAST.
	Tweak documentation of TARGET_FLOAT_LIB_COMPARE_RETURNS_BOOL.
	Remove documentation of INIT_TARGET_OPTABS, MULSI3_LIBCALL,
	DIVSI3_LIBCALL, UDIVSI3_LIBCALL, MODSI3_LIBCALL, UMODSI3_LIBCALL,
	MULDI3_LIBCALL, DIVDI3_LIBCALL, UDIVDI3_LIBCALL, MODDI3_LIBCALL,
	and UMODDI3_LIBCALL,

	* Makefile.in (optabs.o): Depends on target.h.
	* defaults.h: Provide default for FLOAT_LIB_COMPARE_RETURNS_BOOL.
	* optabs.c: Include target.h.
	(prepare_float_lib_cmp): No need for #ifdef around use of
	FLOAT_LIB_COMPARE_RETURNS_BOOL.
	(set_optab_libfunc): New function.
	(init_optabs): Delete use of all *_LIBCALL defines.
	Call targetm.init_libfuncs not INIT_TARGET_OPTABS.
	* optabs.h: Prototype set_optab_libfunc.

	* config.gcc: Remove all references to pa/long_double.h,
	ia64/hpux_longdouble.h, and gofast.h.
	(mips-*-*): When --enable-gofast, just add US_SOFTWARE_GOFAST
	to tm_defines; don't set INIT_SUBTARGET_OPTABS or change tm_file.

	* config/alpha/alpha.c, config/c4x/c4x.c, config/cris/cris.c
	* config/frv/frv.c, config/h8300/h8300.c, config/i860/i860.c
	* config/ia64/ia64.c, config/ip2k/ip2k.c, config/m68hc11/m68hc11.c
	* config/mips/mips.c, config/pa/pa.c, config/rs6000/rs6000.c
	* config/sparc/sparc.c, config/vax/vax.c:
	Provide a definition for TARGET_INIT_LIBFUNCS.  Where
	necessary, include optabs.h, libfuncs.h, and/or config/gofast.h.

	* config/alpha/unicosmk.h, config/alpha/vms.h, config/c4x/c4x.h
	* config/avr/avr.h, config/cris/cris.h, config/frv/frv.h
	* config/h8300/h8300.h, config/i860/i860.h, config/ip2k/ip2k.h
	* config/iq2000/iq2000.h, config/m68hc11/m68hc11.h, config/mips/mips.h
	* config/rs6000/aix.h, config/rs6000/sysv4.h, config/sparc/elf.h
	* config/sparc/lite.h, config/sparc/netbsd-elf.h, config/sparc/sol2.h
	* config/sparc/sparc.h, config/v850/v850.h, config/vax/vax.h
	* config/vax/elf.h: Don't define or use INIT_TARGET_OPTABS,
	INIT_SUBTARGET_OPTABS, or any *_LIBCALL macros.

	* config/ia64/hpux.h: Redefine INTEL_EXTENDED_IEEE_FORMAT to 0.
	Set TARGET_INIT_LIBFUNCS and FLOAT_LIB_COMPARE_RETURNS_BOOL here.
	* config/pa/pa-hpux.h: Define LONG_DOUBLE_TYPE_SIZE,
	HPUX_LONG_DOUBLE_LIBRARY, and FLOAT_LIB_COMPARE_RETURNS_BOOL here.
	* config/ia64/hpux_longdouble.h, config/pa/long_double.h: Delete.

	* config/rs6000/xcoff.h: Don't define RS6000_ITRUNC nor RS6000_UITRUNC.
	* config/sparc/sparc.h: Default SUN_CONVERSION_LIBFUNCS and
	SUN_INTEGER_MULTIPLY_64 to 0.
	* config/sparc/sol2.h: Redefine SUN_CONVERSION_LIBFUNCS and
	SUN_INTEGER_MULTIPLY_64 to 1.
	* config/sparc/elf.h: Redefine SUN_CONVERSION_LIBFUNCS and
	SUN_INTEGER_MULTIPLY_64 to 0.
	* config/sparc/lite.h, config/sparc/liteelf.h, config/sparc/sp86x-elf.h:
	Define US_SOFTWARE_GOFAST.
	* config/vax/vax.h: Default TARGET_ELF to 0.
	* config/vax/elf.h: Redefine TARGET_ELF to 1.

	* config/gofast.h: Don't define any macros here.  Provide one
	static function, gofast_maybe_init_libfuncs, which does what
	INIT_GOFAST_LIBFUNCS used to do but only if US_SOFTWARE_GOFAST
	is already defined.  Do not clear negation libfuncs.  Do
	not mess with HFmode, XFmode, or TFmode libfuncs.

	* config/avr/avr.c (avr_init_once): #if 0 out; mark FIXME.

From-SVN: r72009
2003-10-02 00:44:29 +00:00
Kazu Hirata
dcc2467855 cfgcleanup.c: Fix comment typos.
* cfgcleanup.c: Fix comment typos.
	* emit-rtl.c: Likewise.
	* optabs.c: Likewise.
	* ra-build.c: Likewise.
	* rtlanal.c: Likewise.
	* tree.h: Likewise.

From-SVN: r70678
2003-08-22 07:03:15 +00:00
Kazu Hirata
87d9741e4e combine.c (if_then_else_cond): Simplify the comparison of rtx against -1, 0, and 1.
* combine.c (if_then_else_cond): Simplify the comparison of
	rtx against -1, 0, and 1.
	* loop.c (check_dbra_loop): Likewise.
	* optabs.c (emit_conditional_move): Likewise.
	(emit_conditional_add): Likewise.
	* config/i386/i386.md (*movsi_or): Likewise.
	(*movdi_or_rex6): Likewise.

From-SVN: r69658
2003-07-22 00:36:52 +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
Richard Henderson
d893ccde91 optabs.c (prepare_operand): Fail gracefully instead of abort if the predicate doesn't satisfy.
2003-07-18  Richard Henderson  <rth@redhat.com>

	* optabs.c (prepare_operand): Fail gracefully instead of abort
	if the predicate doesn't satisfy.
	(gen_cond_trap): Allow prepare_operand to fail.

From-SVN: r69578
2003-07-18 17:28:05 -07:00
Jakub Jelinek
358b8f0114 optabs.c (prepare_cmp_insn): Try cmpmemM first if it exists, then fall back to cmpstrM.
* optabs.c (prepare_cmp_insn): Try cmpmemM first if it exists,
	then fall back to cmpstrM.
	* builtins.c (expand_builtin_memcmp): Likewise.
	* config/s390/s390-protos.h (s390_expand_cmpstr): Rename to...
	(s390_expand_cmpmem): ... this.
	* config/s390/s390.md (cmpmemdi, cmpmemsi, cmpmem_short_64,
	cmpmem_short_31, cmpmem_long_64, cmpmem_long_31): Renamed
	from cmpstr* patterns.  Rename call to s390_expand_cmpstr
	to s390_expand_cmpmem.
	* config/s390/s390.c (s390_expand_cmpstr): Rename to...
	(s390_expand_cmpstr): ... this.  Rename cmpstr* instructions
	to cmpmem*.
	* config/i370/i370.md (cmpmemsi, cmpmemsi_1): Renamed from
	cmpstr* patterns.
	* doc/md.texi (cmpstrM): Describe as String compare insn, not
	Block compare insn.
	(cmpmemM): Add.

	* gcc.dg/20030711-1.c: New test.

From-SVN: r69243
2003-07-11 23:04:56 +02:00
Andreas Jaeger
0c20a65f04 jump.c: Convert prototypes to ISO C90.
* jump.c: Convert prototypes to ISO C90.
	* langhooks-def.h: Likewise.  Add extern to prototypes.
	* langhooks.c: Likewise.
	* langhooks.h: Likewise.
	* lcm.c: Likewise.
	* local-alloc.c: Likewise.
	* loop-init.c: Likewise.
	* loop-unroll.c: Likewise.
	* loop-unswitch.c: Likewise.
	* loop.c: Likewise.
	* loop.h: Likewise. Add extern to prototypes.
	* machmode.h: Likewise.
	* main.c: Likewise.
	* mbchar.c: Likewise.
	* mbchar.h: Likewise.
	* mkdeps.c: Likewise.
	* mkdeps.h: Likewise.
	* optabs.c: Likewise.
	* optabs.h: Likewise.
	* output.h: Likewise.
	* gccspec.c: Likwise.
	* postreload.c: Likewise.
	* prefix.c: Likewise.
	* prefix.h: Likewise.
	* print-rtl.c: Likewise.
	* print-tree.c: Likewise.
	* profile.c: Likewise.
	* read-rtl.c: Likewise.
	* real.c: Likewise.
	* real.h: Likewise.
	* recog.c: Likewise.
	* recog.h: Likewise.
	* reg-stack.c: Likewise.
	* regclass.c: Likewise.
	* regmove.c: Likewise.
	* regrename.c: Likewise.
	* regs.h: Likewise.
	* reload.c: Likewise.
	* reload.h: Likewise.
	* reload1.c: Likewise.
	* reorg.c: Likewise.
	* resource.c: Likewise.
	* resource.h: Likewise.
	* rtl-error.c: Likewise.
	* rtl.c: Likewise.
	* rtl.h: Likewise.
	* rtlanal.c: Likewise.

From-SVN: r68998
2003-07-06 11:56:09 +02:00
Kazu Hirata
e0bb17a83f basic-block.h: Fix comment typos.
* basic-block.h: Fix comment typos.
	* bb-reorder.c: Likewise.
	* c-format.c: Likewise.
	* cfgcleanup.c: Likewise.
	* cfghooks.h: Likewise.
	* cfgloop.c: Likewise.
	* cfgloopmanip.c: Likewise.
	* cfgrtl.c: Likewise.
	* cgraph.h: Likewise.
	* cgraphunit.c: Likewise.
	* combine.c: Likewise.
	* convert.c: Likewise.
	* dbxout.c: Likewise.
	* df.c: Likewise.
	* df.h: Likewise.
	* diagnostic.c: Likewise.
	* dwarf2out.c: Likewise.
	* et-forest.h: Likewise.
	* flow.c: Likewise.
	* fold-const.c: Likewise.
	* function.h: Likewise.
	* gcov-io.h: Likewise.
	* gcov.c: Likewise.
	* gcse.c: Likewise.
	* genautomata.c: Likewise.
	* ggc-common.c: Likewise.
	* ggc-page.c: Likewise.
	* loop-unroll.c: Likewise.
	* loop-unswitch.c: Likewise.
	* loop.c: Likewise.
	* mips-tfile.c: Likewise.
	* optabs.c: Likewise.
	* ra-build.c: Likewise.
	* ra-colorize.c: Likewise.
	* ra-rewrite.c: Likewise.
	* ra.h: Likewise.
	* regmove.c: Likewise.
	* reload.c: Likewise.
	* rtlanal.c: Likewise.
	* sched-ebb.c: Likewise.
	* sched-int.h: Likewise.
	* sched-vis.c: Likewise.
	* sreal.c: Likewise.
	* ssa-ccp.c: Likewise.
	* ssa.c: Likewise.
	* toplev.c: Likewise.
	* tree-inline.c: Likewise.
	* value-prof.c: Likewise.
	* value-prof.h: Likewise.

From-SVN: r68770
2003-07-01 12:18:01 +00:00
Kazu Hirata
f9da506452 alloc-pool.c: Fix comment formatting.
* alloc-pool.c: Fix comment formatting.
	* bitmap.c: Likewise.
	* bitmap.h: Likewise.
	* bt-load.c: Likewise.
	* builtins.c: Likewise.
	* caller-save.c: Likewise.
	* cfganal.c: Likewise.
	* cfgrtl.c: Likewise.
	* collect2.c: Likewise.
	* cse.c: Likewise.
	* df.c: Likewise.
	* diagnostic.c: Likewise.
	* dwarf2out.c: Likewise.
	* dwarfout.c: Likewise.
	* expmed.c: Likewise.
	* final.c: Likewise.
	* flags.h: Likewise.
	* fold-const.c: Likewise.
	* gcc.c: Likewise.
	* gcov-io.h: Likewise.
	* gcov.c: Likewise.
	* genattrtab.c: Likewise.
	* genautomata.c: Likewise.
	* libgcov.c: Likewise.
	* mips-tfile.c: Likewise.
	* optabs.c: Likewise.
	* prefix.c: Likewise.
	* rtlanal.c: Likewise.
	* stmt.c: Likewise.
	* stor-layout.c: Likewise.
	* toplev.c: Likewise.
	* varasm.c: Likewise.
	* vmsdbgout.c: Likewise.

From-SVN: r68672
2003-06-29 13:53:12 +00:00
Roger Sayle
82d397c794 optabs.h (enum optab_index): Add new OTI_tan and OTI_atan.
* optabs.h (enum optab_index): Add new OTI_tan and OTI_atan.
	(tan_optab, atan_optab): Define corresponding macros.
	* optabs.c (init_optabs): Initialize tan_optab and atan_optab.
	* genopinit.c (optabs): Implement tan_optab and atan_optab
	using tan?f2 and atan?f2 patterns.
	* builtins.c (expand_builtin_mathfn): Handle BUILT_IN_TAN{,F,L}
	using tan_optab, and BUILT_IN_ATAN{,F,L} using atan_optab.
	Change the default value of errno_set to false.
	(expand_builtin): Expand BUILT_IN_TAN{,F,L} and BUILT_IN_ATAN{,F,L}
	using expand_builtin_mathfn.

	* config/i386/i386.md (atansf2, atandf2, atanxf2, atantf2): New
	expander patterns implemented using existing atan2?f3 patterns.

	* gcc.dg/i386-387-5.c: New test case.
	* gcc.dg/i386-387-6.c: New test case.
	* gcc.dg/builtins-23.c: New test case.

From-SVN: r68013
2003-06-16 12:53:16 +00:00
Richard Sandiford
695a94b30a * optabs.c (emit_libcall_block): Don't hoist insns past a label.
From-SVN: r68001
2003-06-16 06:26:03 +00:00
Richard Henderson
0310c41406 * optabs.c (gen_cond_trap): Fix prepare_operand typo.
From-SVN: r67753
2003-06-10 23:43:43 -07:00
Kazu Hirata
77173bbe9b optabs.c (expand_abs): Set result_unsignedp to 1 if flag_trav is zero.
* optabs.c (expand_abs): Set result_unsignedp to 1 if
	flag_trav is zero.

From-SVN: r67611
2003-06-08 04:27:11 +00:00
David Miller
842a431a9a optabs.c (HAVE_conditional_trap): Provide default.
* optabs.c (HAVE_conditional_trap): Provide default.
        (gen_conditional_trap): Likewise.
        (init_optabs): Merge init_traps.
        (gen_cond_trap): Use prepare_operand.  Restructure and avoid ifdef.
	* gcc.c-torture/compile/20030605-1.c: New.

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

From-SVN: r67497
2003-06-05 09:31:49 -07:00
Roger Sayle
df8ca70ebb optabs.c (expand_binop): Optimize complex multiplication for the case of squaring a complex argument.
* optabs.c (expand_binop): Optimize complex multiplication for
	the case of squaring a complex argument.

From-SVN: r67418
2003-06-04 04:42:14 +00:00
Roger Sayle
894207cf0a optabs.c (expand_binop): Attempt to reuse pseudos for duplicate non-volatile operands of binary operations.
* optabs.c (expand_binop): Attempt to reuse pseudos for duplicate
	non-volatile operands of binary operations.
	(prepare_cmp_insn): Likewise.

From-SVN: r67417
2003-06-04 04:40:26 +00:00
Richard Henderson
2ef0a55511 optabs.c (expand_abs_nojump): Split out from ...
* optabs.c (expand_abs_nojump): Split out from ...
        (expand_abs): ... here.
        * optabs.h (expand_abs_nojump): Declare.
        * ifcvt.c: (noce_try_abs): Use expand_abs_nojump.
        * Makefile.in (ifcvt.o): Depend on optabs.h.

From-SVN: r67404
2003-06-03 14:29:48 -07:00
Richard Kenner
d0ccc658cb optabs.c (expand_binop): In multi-word add cases, ensure XTARGET is copied to TARGET if they are different.
* optabs.c (expand_binop): In multi-word add cases, ensure
	XTARGET is copied to TARGET if they are different.

From-SVN: r65632
2003-04-15 09:06:58 -04:00
Richard Henderson
52859c77e9 rtl.def (SYMBOL_REF): Add two 0 fields.
* rtl.def (SYMBOL_REF): Add two 0 fields.
        * gengtype.c (adjust_field_rtx_def): Handle them.
        * print-rtl.c (print_rtx): Print them.
        * rtl.h (SYMBOL_REF_DECL, SYMBOL_REF_FLAGS): New.
        (SYMBOL_FLAG_FUNCTION, SYMBOL_REF_FUNCTION_P): New.
        (SYMBOL_FLAG_LOCAL, SYMBOL_REF_LOCAL_P): New.
        (SYMBOL_FLAG_SMALL, SYMBOL_REF_SMALL_P): New.
        (SYMBOL_FLAG_TLS_SHIFT, SYMBOL_REF_TLS_MODEL): New.
        (SYMBOL_FLAG_EXTERNAL, SYMBOL_REF_EXTERNAL_P): New.
        (SYMBOL_FLAG_MACH_DEP): New.
        * optabs.c (init_one_libfunc): Zap fake SYMBOL_REF_DECL.
        * varasm.c (make_decl_rtl): Set SYMBOL_REF_DECL.
        (assemble_static_space): Set SYMBOL_REF_FLAGS.
        (assemble_trampoline_template): Likewise.
        (output_constant_def, force_const_mem): Likewise.
        (default_encode_section_info): New.
        * output.h: Declare it.
        * target-def.h (TARGET_ENCODE_SECTION_INFO): Use it.

From-SVN: r65479
2003-04-11 14:15:36 -07: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
Alexandre Oliva
0913e4b49e optabs.c: Comment that gen_add2_insn and others may actually return emitted insns...
* optabs.c: Comment that gen_add2_insn and others may actually
return emitted insns, if the gen functions turn out to return
emitted insns.
* reload1.c (reload_cse_move2add): Cope with emitted insns from
gen_add2_insn.

From-SVN: r65400
2003-04-09 17:50:08 +00:00
DJ Delorie
c0510d84b7 optabs.c (init_integral_libfuncs): Make sure we init at least up to "long long" size words.
* optabs.c (init_integral_libfuncs): Make sure we init at least up
to "long long" size words.

From-SVN: r64670
2003-03-21 11:58:35 -05:00
Hans-Peter Nilsson
a3600c718e optabs.c (gen_move_insn): Move logic for synthesizing MODE_CC moves from here ...
* optabs.c (gen_move_insn): Move logic for synthesizing MODE_CC
	moves from here ...
	* expr.c (emit_move_insn_1): ... to here.

From-SVN: r64015
2003-03-09 01:32:42 +00:00
James E Wilson
f9d36a92e4 re PR c/7872 ([m68k]ICE on legal code, regression from 3.0 and 2.9*)
* optabs.c (add_equal_note): Delete SUBREG_REG use.
	Fixes PR c/7872.

From-SVN: r63762
2003-03-03 20:25:51 -08:00
Jan Hubicka
0d446150c2 objc-act.c: Include cgraph.h
* objc-act.c: Include cgraph.h
	(mark_referenced_methods): New function.
	(objc_init): Call it.
	* objc-lang.c (LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION): Set.

	* c-decl.c (finish_function): Honor can_defer_p even in unit-at-a-time
	mode.

	* optabs.c (expand_fix): Do not widen the input operand.

	* expr.c (emit_group_store):  Fix crash when converting single
	register into complex register.

	* Makefile.in (jump.o, regclass.o, alias.o): Add dependency on timevar.h
	* alias.c: Include timevar.h
	(init_alias_analysis):  Set timevar
	* jump.c: Include timevar.h
	(rebuild_jump_labels):  Set timevar
	* regcalss.c: Include timevar.h
	(reg_scan):  Set timevar
	* timevar.def (TV_ALIAS_ANALYSIS, TV_REG_SCAN, TV_REBUILD_JUMP): New

From-SVN: r63464
2003-02-26 11:09:33 +00:00
Roger Sayle
b5e01d4bec optabs.h (enum optab_index): Add new OTI_pow and OTI_atan2.
* optabs.h (enum optab_index): Add new OTI_pow and OTI_atan2.
	(pow_optab, atan2_optab): Define corresponding macros.
	* optabs.c (init_optabs): Initialize pow_optab and atan2_optab.
	* genopinit.c (optabs): Implement pow_optab and atan2_optab
	using pow?f3 and atan2?f3 patterns.
	* builtins.c (expand_errno_check): New function to update errno
	if necessary, split out from expand_builtin_mathfn.
	(expand_builtin_mathfn): Use expand_errno_check.
	(expand_builtin_mathfn_2): New function to handle expanding binary
	math functions, reusing the code in expand_errno_check.
	(expand_builtin): Handle the pow and atan2 math built-ins,
	BUILT_IN_{POW,POWF,POWL,ATAN2,ATAN2F,ATAN2L} via the new function
	expand_builtin_mathfn_2.

	* doc/md.texi: Document new pow?f3 and atan2?f3 patterns.

From-SVN: r62708
2003-02-11 19:34:11 +00:00
Richard Henderson
8275b011ca libgcc-std.ver (__clztf2): New.
* libgcc-std.ver (__clztf2): New.
        (__ctztf2, __popcounttf2, __paritytf2): New.
        * libgcc2.c (__clzSI2, __clzDI2, __ctzSI2, __ctzDI2, __popcountSI2,
        __popcountDI2, __paritySI2, __parityDI2): Use UWmode and UDWmode;
        adjust code to match the different type sizes.
        * libgcc2.h (__clzSI2, __ctzSI2, __popcountSI2, __paritySI2,
        __clzDI2, __ctzDI2, __popcountDI2, __parityDI2): New macros.

        * optabs.c (init_integral_libfuncs): Don't hard-code SImode and
        TImode; select word_mode and twice that.
        (init_floating_libfuncs): Don't hard-code SFmode and TFmode;
        select the modes from float, double, and long double.
        (init_optabs): Remove duplicate initializations.

From-SVN: r62606
2003-02-09 10:35:22 -08:00
Kazu Hirata
c117dddced optabs.c (expand_unop): Widen clz properly when clz is done via libcall.
* optabs.c (expand_unop): Widen clz properly when clz is done
	via libcall.

From-SVN: r62595
2003-02-09 04:25:16 +00:00
Andrey Petrov
7bf0a59353 * optabs.c (expand_float): Search wider integer modes first.
From-SVN: r62535
2003-02-07 11:38:04 -08:00
Richard Henderson
dabb3f04da libgcc2.c (__ffsdi2, [...]): Change return type to "int".
* libgcc2.c (__ffsdi2, __clzsi2, __clzdi2, __ctzsi2, __ctzdi2,
        __popcountsi2, __popcountdi2, __paritysi2, __paritydi2): Change
        return type to "int".  Shuffle declarations and undef int trap.
        * libgcc2.h: Remove their declarations.
        * optabs.c (expand_unop): Force outmode to int for bitops.

From-SVN: r62353
2003-02-03 14:42:20 -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
Alexandre Oliva
2cd622c310 optabs.c (expand_binop): Return xtarget if we haven't been able to move the result to target.
* optabs.c (expand_binop) <add, sub>: Return xtarget if we haven't
been able to move the result to target.

From-SVN: r61829
2003-01-26 09:11:31 +00:00
Roger Sayle
9ee0a4426d re PR middle-end/9009 (floating-point negate and abs optimizations incorrect for ARM)
PR middle-end/9009
	* optabs.c (expand_unop):  When manipulating the FP sign bit
	using integer operations, account for targets with different
	integer and FP word orders.
	(expand_abs): Likewise.

From-SVN: r61335
2003-01-15 17:32:38 +00:00
Josef Zlomek
4a69cf7914 Makefile.in (optabs.o): Add dependency on basic-block.h.
* Makefile.in (optabs.o): Add dependency on basic-block.h.
	* basic-block.h (control_flow_insn_p): Fuction was exported.
	* cfgbuild.c (control_flow_insn_p): Fuction was made non-static.
	* optabs.c (emit_libcall_block): Emit REG_LIBCALL and REG_RETVAL
	notes only when the region is contained in a single basic block.

From-SVN: r61101
2003-01-09 11:47:35 +00:00
Jan Hubicka
068f5deabf re PR target/8322 (SSE2 intrinsics broken?)
* genopinit.c (optabs): Add addc_optab.
	* ifcvt.c (noce_try_store_flag): Rename to ...
	(noce_try_addcc): ... this one; handle generic conditional increment.
	(noce_process_if_block): Update noce_try_addcc call.
	* optabs.c (emit_conditional_add): New.
	(init_obtabs): Initialize addc_optab.
	* optabs.h (optab_index): Add OTI_addcc.
	(addcc_optab): New macro.
	* md.texi: Document addMcc

	PR target/8322
	* i386.c (ix86_init_mmx_sse_builtins): Constify arguments of loads.
	* xmmintrin.h (_mm_load*_si128. _mm_store*_si128): Add casts.
	* xmmintrin.h (_mm_load*_si128. _mm_store*_si128): Add casts.

	* reload1.c (delete_output_reload): Avoid repeated attempts
	to delete insn.

From-SVN: r61019
2003-01-07 21:09:21 +00:00
Zack Weinberg
4977bab6ed Merge basic-improvements-branch to trunk
From-SVN: r60174
2002-12-16 18:23:00 +00:00
Steve Ellcey
27e58a706f emit-rtl.c (gen_reg_rtx): Simplify mapping of Complex type to component type using GET_MODE_INNER.
* emit-rtl.c (gen_reg_rtx): Simplify mapping of Complex type
	to component type using GET_MODE_INNER.
	* expr.c (emit_move_insn_1): Ditto.
	* optabs.c (expand_binop): Ditto.
	(expand_unop): Ditto.
	(expand_complex_abs): Ditto.

From-SVN: r59317
2002-11-20 21:52:59 +00:00
Eric Botcazou
35f1c975a3 re PR c/8588 (ICE in extract_insn, at recog.c:2148)
2002-11-19 �Eric Botcazou �<ebotcazou@libertysurf.fr>

	PR c/8588
	* optabs.c (expand_binop): Convert CONST_INTs in shift
	operations too.

From-SVN: r59274
2002-11-19 20:13:20 +00:00
Kazu Hirata
7e1a450d21 * optabs.c: Fix formatting.
From-SVN: r59151
2002-11-16 06:08:16 +00:00
Richard Sandiford
5be5c8d463 optabs.c (expand_binop): Don't reuse the shift target in the middle of shift sequences.
* optabs.c (expand_binop): Don't reuse the shift target in the
	middle of shift sequences.

From-SVN: r58487
2002-10-24 08:48:27 +00:00
Kazu Hirata
40f0365880 c-common.h: Follow spelling conventions.
* c-common.h: Follow spelling conventions.
	* cpplex.c: Likewise.
	* cpplib.h: Likewise.
	* gthr-dce.h: Likewise.
	* gthr-posix.h: Likewise.
	* optabs.c: Likewise.
	* output.h: Likewise.
	* profile.c: Likewise.
	* protoize.c: Likewise.
	* ra-rewrite.c: Likewise.
	* real.c: Likewise.
	* recog.c: Likewise.
	* reg-stack.c: Likewise.
	* regclass.c: Likewise.
	* regmove.c: Likewise.
	* reload.c: Likewise.
	* reload.h: Likewise.
	* reload1.c: Likewise.
	* reorg.c: Likewise.
	* resource.c: Likewise.
	* rtl.h: Likewise.
	* rtlanal.c: Likewise.

From-SVN: r57555
2002-09-26 22:25:14 +00:00
Kazu Hirata
24491a0950 optabs.c (prepare_cmp_insn): Let emit_library_call_value generate a pseudo reg that receives the result of a...
* optabs.c (prepare_cmp_insn): Let emit_library_call_value
	generate a pseudo reg that receives the result of a libcall.
	(prepare_float_lib_cmp): Likewise.

From-SVN: r57255
2002-09-17 19:02:58 +00:00
Kazu Hirata
d57551c71b calls.c (emit_library_call_value_1): Don't refer to hard_libcall_value.
* calls.c (emit_library_call_value_1): Don't refer to
	hard_libcall_value.
	* optabs.c (prepare_float_lib_cmp): Likewise.

From-SVN: r57207
2002-09-16 18:47:59 +00:00
Richard Henderson
efdc7e19ca real.c, real.h: Rewrite from scratch.
gcc/
	* real.c, real.h: Rewrite from scratch.

	* Makefile.in (simplify-rtx.o): Depend on TREE_H.
	(paranoia): New target.
	* builtins.c (fold_builtin_inf): Use new real.h interface.
	* c-common.c (builtin_define_with_hex_fp_value): Likewise.
	* c-lex.c (interpret_float): Likewise.
	* emit-rtl.c (gen_lowpart_common): Likewise.
	* optabs.c (expand_float): Use real_2expN.
	* config/ia64/ia64.md (divsi3, udivsi3): Likewise.
	* defaults.h (INTEL_EXTENDED_IEEE_FORMAT): New.
	(FLOAT_WORDS_BIG_ENDIAN): New.
	* cse.c (find_comparison_args): Don't pass FLOAT_STORE_FLAG_VALUE
	directly to REAL_VALUE_NEGATIVE.
	* loop.c (canonicalize_condition): Likewise.
	* simplify-rtx.c: Include tree.h.
	(simplify_unary_operation): Don't handle FIX and UNSIGNED_FIX
	with floating-point result modes.
	* toplev.c (backend_init): Call init_real_once.

	* fold-const.c (force_fit_type): Don't call CHECK_FLOAT_VALUE.
	* tree.c (build_real): Likewise.
	* config/alpha/alpha.c, config/vax/vax.c (float_strings,
	float_values, inited_float_values, check_float_value): Remove.
	* config/alpha/alpha.h, config/m68hc11/m68hc11.h,
	config/m88k/m88k.h, config/vax/vax.h (CHECK_FLOAT_VALUE): Remove.
	* doc/tm.texi (CHECK_FLOAT_VALUE): Remove.

gcc/f/
	* target.c (ffetarget_real1): Don't pass FFETARGET_ATOF_
	directly to ffetarget_make_real1.
	(ffetarget_real2): Similarly.
	* target.h (ffetarget_cvt_r1_to_rv_, ffetarget_cvt_rv_to_r2_,
	ffetarget_cvt_r2_to_rv_): Use new real.h interface and simplify.

gcc/java/
	* jcf-parse.c (get_constant): Runtime check for IEEE format;
	use new real.h interface.
	* jcf-write.c (find_constant_index): Use new real.h interface.
	* lex.c (IS_ZERO): Use REAL_VALUES_EQUAL.

contrib/
	* paranoia.cc: New file.

From-SVN: r57198
2002-09-16 09:36:39 -07:00
Eric Botcazou
874f6a6d1f optabs.c (expand_binop): Minor cleanup.
* optabs.c (expand_binop): Minor cleanup.
        (expand_twoval_binop): Convert CONST_INTs like in expand_binop.

From-SVN: r57046
2002-09-11 18:29:21 -07:00
Eric Botcazou
29984e05ae re PR c/7102 (unsigned char divisision results in floating exception)
PR c/7102
        * optabs.c (expand_binop): Convert CONST_INTs in all cases.

From-SVN: r56815
2002-09-04 15:24:12 -07:00
Roger Sayle
e7b489c8c0 builtins.def: Define new builtin functions exp...
* builtins.def: Define new builtin functions exp, expf, expl,
	log, logf and logl (and their __builtin_* variants).
	* optabs.h (enum optab_index): Add new OTI_exp and OTI_log.
	Define exp_optab and log_optab.
	* optabs.c (init_optans): Initialize exp_optab and log_optab.
	* genopinit.c (optabs): Implement exp_optab and log_optab
	using exp?f2 and log?f2 patterns.
	* builtins.c (expand_builtin_mathfn): Handle BUILT_IN_EXP*
	and BUILT_IN_LOG* using exp_optab and log_optab respectively.
	(expand_builtin): Ignore the new builtins (and all cos and
	sin variants) when not optimizing.  Expand new builtins via
	expand_builtin_mathfn when flag_unsafe_math_optimizations.

	* doc/extend.texi: Document new exp and log builtins.
	* doc/md.texi: Document new exp?f2 and log?f2 patterns
	(and previously undocumented cos?f2 and sin?f2 patterns).

From-SVN: r56010
2002-08-03 23:21:31 +00:00
Kaveh R. Ghazi
a4b5414c88 df.c (df_insn_table_realloc): Change parameter to unsigned.
* df.c (df_insn_table_realloc): Change parameter to unsigned.
	* optabs.c (expand_binop): Make variable unsigned.
	* simplify-rtx.c (simplify_subreg): Likewise.
	* unroll.c (unroll_loop): Cast to avoid signed/unsigned warnings.

From-SVN: r55960
2002-08-02 00:50:01 +00:00
J"orn Rennecke
0d541696aa optabs.c (expand_vector_unop): Don't expand using sub_optab if we got the wrong mode.
* optabs.c (expand_vector_unop): Don't expand using sub_optab
	if we got the wrong mode.

From-SVN: r55648
2002-07-22 15:22:58 +01:00
Toon Moene
086bbd21cd Revert all patches for optimization of Complex .op.
2002-07-10  Toon Moene  <toon@moene.indiv.nluug.nl>

	Revert all patches for optimization of Complex .op. Real.
	* complex_part_zero_p: Remove
	* expand_cmplxdiv_straight: Replace complex_part_zero_p(x)
	with x.
	* expand_cmplxdiv_wide: Ditto.
	* expand_binop: Ditto.

From-SVN: r55379
2002-07-10 21:13:26 +00:00
J"orn Rennecke
34a80643d8 optabs.c (expand_vector_binop): Don't store using a SUBREG smaller than UNITS_PER_WORD...
gcc:
	* optabs.c (expand_vector_binop): Don't store using a SUBREG smaller
	than UNITS_PER_WORD, unless this is little endian and the first unit
	in this word.  Let extract_bit_field decide how to load an element.
	Force arguments to matching mode.
	(expand_vector_unop): Likewise.

	* simplify-rtx.c (simplify_subreg): Don't assume that all vectors
	consist of word_mode elements.
	* c-typeck.c (build_binary_op): Allow vector types for BIT_AND_EXPR,
	BIT_ANDTC_EXPR, BIT_IOR_EXPR and BIT_XOR_EXPR.
	(build_unary_op): Allow vector types for BIT_NOT_EPR.
	* emit-rtl.c (gen_lowpart_common): Use simplify_gen_subreg for
	CONST_VECTOR.
	* optabs.c (expand_vector_binop): Try to perform operation in
	smaller vector modes with same inner size.  Add handling of AND, IOR
	and XOR.  Reject expansion to inner-mode sized scalars when using
	OPTAB_DIRECT.  Use simplify_gen_subreg on constants.
	(expand_vector_unop): Try to perform operation in smaller vector
	modes with same inner size.  Add handling of one's complement.
	When there is no vector negate operation, try a vector subtract
	operation.  Use simplify_gen_subreg on constants.
	* simplify-rtx.c (simplify_subreg): Add capability to convert vector
	constants into smaller vectors with same inner mode, and to
	integer CONST_DOUBLEs.

gcc/testsuite:
	* gcc.c-torture/execute/simd-1.c (main): Also test &, |, ^, ~.
	* gcc.c-torture/execute/simd-2.c (main): Likewise.

From-SVN: r55209
2002-07-03 10:49:46 +01:00
J"orn Rennecke
9881adffaa optabs.c (expand_vector_binop, [...]): Don't assume GET_MODE_UNIT_SIZE (mode) == UNITS_PER_WORD.
gcc:
	* optabs.c (expand_vector_binop, expand_vector_unop): Don't assume
	GET_MODE_UNIT_SIZE (mode) == UNITS_PER_WORD.
gcc/testsuite:
	* gcc.c-torture/execute/simd-2.c: New test.

From-SVN: r54994
2002-06-25 21:53:12 +01:00
Aldy Hernandez
cb2a532e9f simd-1.c: New.
2002-06-16  Aldy Hernandez  <aldyh@redhat.com>

	* gcc.c-torture/execute/simd-1.c: New.

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

	* doc/extend.texi (Vector Extensions): Document that we can
	specify simd types not specifically supported by the hardware.
	Document that simd types can be used as function arguments.
	Document that signness does make a difference in SIMD types.
	Misc cleanups and revisions to the "vector extensions" section.

	* simplify-rtx.c (simplify_subreg): Simplify subregs of vector
	constants.

	* expr.c (vector_mode_valid_p): New.

	* expr.h: Add vector_mode_valid_p.

	* defaults.h (VECTOR_MODE_SUPPORTED_P): Set default.

	* emit-rtl.c (immed_double_const): Do not abort on vectors.

	* c-common.c (type_for_mode): Always build vector nodes regardless
	of VECTOR_MODE_SUPPORTED_P.
	(handle_mode_attribute): Error if we can't emulate a nonexisting
	vector mode.
	(handle_vector_size_attribute): Same.

	* optabs.c (expand_binop): Open-code vector operations.
	(expand_unop): Open-code vector unops.
	(expand_vector_binop): New.
	(expand_vector_unop): New.

	* c-typeck.c (build_binary_op): Allow vectors in binops.
	Allow vectors in conditional operatiors.
	(build_unary_op): Allow vectors in unary minus.

	* config/rs6000/rs6000.h (ALTIVEC_VECTOR_MODE): Conditionalize on
	TARGET_ALTIVEC.

From-SVN: r54727
2002-06-18 01:35:47 +00: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
Geoffrey Keating
e2500fedef Merge from pch-branch up to tag pch-commit-20020603.
From-SVN: r54232
2002-06-04 07:11:05 +00:00
David Edelsohn
64de6c0a5f optabs.c (expand_binop): Fix nwords sign warnings.
* optabs.c (expand_binop): Fix nwords sign warnings.
        generate pseudo for add_optab.

Co-Authored-By: Jeff Law <law@redhat.com>

From-SVN: r53976
2002-05-28 17:03:21 -06:00
Jeff Law
c7539aa0a6 optabs.c (expand_binop): For double-word integer multiplies...
* optabs.c (expand_binop): For double-word integer multiplies,
        do not compute intermediate results into something that is
        not a register (such as a SUBREG or MEM).

From-SVN: r53718
2002-05-21 19:54:40 -06:00
Toon Moene
c0fe508e8b optabs.c (expand_cmplxdiv_wide): Use complex_part_zero_p.
2002-05-19  Toon Moene  <toon@moene.indiv.nluug.nl>

	* optabs.c (expand_cmplxdiv_wide): Use complex_part_zero_p.
	(expand_binop): Ditto (3 times).

From-SVN: r53655
2002-05-20 08:30:03 +00:00
Richard Henderson
fb49053ffd system.h (ENCODE_SECTION_INFO): Poison it.
* system.h (ENCODE_SECTION_INFO): Poison it.
	* target-def.h (TARGET_ENCODE_SECTION_INFO): New.
	* target.h (encode_section_info): New.
	* varasm.c (make_decl_rtl, output_constant_def): Use it.
	* hooks.c (hook_tree_int_void): New.
	* hooks.h: Declare it.

	* config/darwin.h, config/alpha/alpha-protos.h, config/alpha/alpha.c,
	config/alpha/alpha.h, config/arm/pe.h, config/avr/avr-protos.h,
	config/avr/avr.c, config/avr/avr.h, config/c4x/c4x-protos.h,
	config/c4x/c4x.c, config/c4x/c4x.h, config/cris/cris-protos.h,
	config/cris/cris.c, config/cris/cris.h, config/i386/cygwin.h,
	config/i386/win32.h, config/ia64/ia64-protos.h, config/ia64/ia64.c,
	config/ia64/ia64.h, config/m32r/m32r-protos.h, config/m32r/m32r.c,
	config/m32r/m32r.h, config/m68hc11/m68hc11-protos.h,
	config/m68hc11/m68hc11.c, config/m68hc11/m68hc11.h,
	config/mcore/mcore-protos.h, config/mcore/mcore.c,
	config/mcore/mcore.h, config/mmix/mmix-protos.h, config/mmix/mmix.c,
	config/mmix/mmix.h, config/rs6000/rs6000-protos.h,
	config/rs6000/sysv4.h, config/stormy16/stormy16-protos.h,
	config/stormy16/stormy16.c, config/stormy16/stormy16.h:
	Replace ENCODE_SECTION_INFO with TARGET_ENCODE_SECTION_INFO
	referencing existing function.  Make function static.

	* config/a29k/a29k.c, config/a29k/a29k.h, config/arc/arc.c,
	config/arc/arc.h, config/arm/arm.c, config/arm/arm.h,
	config/h8300/h8300.c, config/h8300/h8300.h, config/i370/i370.c,
	config/i370/i370.h, config/i386/i386-interix.h, config/i386/i386.c,
	config/i386/i386.h, config/i386/interix.c, config/m88k/m88k.c,
	config/m88k/m88k.h, config/mips/mips.c, config/mips/mips.h,
	config/ns32k/ns32k.c, config/ns32k/ns32k.h, config/pa/pa.c,
	config/pa/pa.h, config/romp/romp.c, config/romp/romp.h,
	config/rs6000/linux64.h, config/rs6000/xcoff.h, config/s390/s390.c,
	config/s390/s390.h, config/sh/sh.c, config/sh/sh.h,
	config/sparc/sparc.c, config/sparc/sparc.h, config/v850/v850.c,
	config/v850/v850.h, config/vax/vax.c, config/vax/vms.h,
	config/xtensa/xtensa.c, config/xtensa/xtensa.h:
	Move ENCODE_SECTION_INFO to out-of-line function and add
	TARGET_ENCODE_SECTION_INFO.

	* config/darwin.h (ASM_DECLARE_FUNCTION_NAME): Use hook, not macro.
	(ASM_DECLARE_OBJECT_NAME, ASM_OUTPUT_ALIGNED_DECL_LOCAL): Likewise.

	* config/arm/pe.h (EXTRA_SECTIONS, EXTRA_SECTION_FUNCTIONS): Rename
	from SUBTARGET_*
	(switch_to_section): Replace in_rdata case with in_readonly_data.

	* config/h8300/h8300.c (h8300_encode_label): Make static.
	* config/h8300/h8300-protos.h: Update.

	* config/rs6000/rs6000.c (rs6000_elf_encode_section_info): Rename
	from rs6000_encode_section_info; make static.
	(rs6000_xcoff_encode_section_info): New.

	* config/v850/v850.c (v850_encode_data_area): Make static.
	* config/v850/v850-protos.h: Update.

	* config/vax/vax.c: Include flags.h.
	(vms_select_section): Fix typo.

	* doc/tm.texi (TARGET_ENCODE_SECTION_INFO): Update from previous
	ENCODE_SECTION_INFO docs.

From-SVN: r53606
2002-05-18 22:23:27 -07:00
Toon Moene
6835a09cfc optabs.c (complex_part_zero_p): New.
2002-05-18  Toon Moene  <toon@moene.indiv.nluug.nl>

	* optabs.c (complex_part_zero_p): New.
	* (expand_cmplxdiv_straight): Use it.
	* (expand_cmplxdiv_wide): Ditto.
	* (expand_binop): Ditto.

From-SVN: r53594
2002-05-18 19:45:18 +00:00
Richard Henderson
9602f5a04b builtins.c (expand_builtin_va_arg): Give warnings not errors for promoted argument types; build trap.
* builtins.c (expand_builtin_va_arg): Give warnings not errors for
        promoted argument types; build trap.
        (expand_builtin_trap): New.
        (expand_builtin): Use it.
        * stmt.c (expand_nl_goto_receivers): Likewise.
        * expr.h (expand_builtin_trap): Declare.
        * libfuncs.h (LTI_abort, abort_libfunc): New.
        * optabs.c (init_optabs): Init abort_libfunc.

        * gcc.dg/va-arg-1.c: Expect warnings, not errors.

From-SVN: r51643
2002-03-31 01:52:42 -08:00
Jan Hubicka
218aa620c4 optabs.c (emit_no_conflict_block, [...]): Avoid nesting of libcall regions.
* optabs.c (emit_no_conflict_block, emit_libcall_block): Avoid nesting
	of libcall regions.

From-SVN: r51477
2002-03-27 22:16:20 +00:00
Lars Brinkhoff
2496c7bd5f emit-rtl.c (gen_int_mode): New function.
* emit-rtl.c (gen_int_mode): New function.
        * rtl.h: Prototype for it.
        * combine.c (make_extraction, simplify_comparison), expmed.c
        (store_bit_field, expand_mult_highpart, expand_divmod), expr.c
        (convert_modes, store_field), optabs.c (expand_fix),
        simplify-rtx.c (neg_const_int, simplify_unary_real),

        * config/rs6000/rs6000.c, config/rs6000/rs6000.md:
        Use it instead of GEN_INT (trunc_int_for_mode (...)).

From-SVN: r51030
2002-03-19 10:00:43 -08:00
Alexandre Oliva
12f61e776a gofast.h (GOFAST_RENAME_LIBCALLS): Set gt and ge as NULL_RTX.
* config/gofast.h (GOFAST_RENAME_LIBCALLS): Set gt and ge as
NULL_RTX.  Set all HFmode operations as NULL_RTX.
* optabs.c (prepare_float_lib_cmp) <GT, GE, LT, LE>: If libfunc is
NULL_RTX, try reversing the comparison and the operands.

From-SVN: r50422
2002-03-08 02:57:13 +00:00
Zack Weinberg
ba31d94ee6 emit-rtl.c, [...]: Remove all #ifndef REAL_ARITHMETIC blocks...
* emit-rtl.c, final.c, fold-const.c, gengenrtl.c, optabs.c,
	print-tree.c, real.c, real.h, recog.c, rtl.c, simplify-rtx.c,
	tree.c, config/m68k/m68k.c, f/com.c, f/target.h, java/expr.c,
	java/jcf-parse.c, java/lex.c:
	Remove all #ifndef REAL_ARITHMETIC blocks, make all #ifdef
	REAL_ARITHMETIC blocks unconditional.  Delete some further
	#ifdef blocks predicated on REAL_ARITHMETIC.
	* flags.h, toplev.c: Delete remaining references to
	flag_pretend_float.

	* doc/invoke.texi: Remove documentation of -fpretend-float.
	* doc/tm.texi: Describe the various REAL_* macros as provided by
	real.h, not by the target configuration files.

	* config/alpha/alpha.h, config/alpha/unicosmk.h, config/arm/arm.h,
	config/avr/avr.h, config/c4x/c4x.h, config/convex/convex.h,
	config/cris/cris.h, config/d30v/d30v.h, config/dsp16xx/dsp16xx.h,
	config/h8300/h8300.h, config/i370/i370.h, config/i386/i386.h,
	config/i386/osf1elf.h, config/i960/i960.h, config/ia64/ia64.h,
	config/m32r/m32r.h, config/m68hc11/m68hc11.h, config/m68k/dpx2.h,
	config/m68k/linux-aout.h, config/m68k/linux.h, config/m68k/m68k.h,
	config/m68k/sun3.h, config/m68k/vxm68k.h, config/mcore/mcore.h,
	config/mips/mips.h, config/mmix/mmix.h, config/mn10200/mn10200.h,
	config/mn10300/mn10300.h, config/pa/pa.h, config/pj/pj.h,
	config/rs6000/rs6000.h, config/s390/s390.h, config/sh/sh.h,
	config/sparc/freebsd.h, config/sparc/linux.h, config/sparc/linux64.h,
	config/sparc/sol2.h, config/sparc/sparc.h, config/sparc/vxsim.h,
	config/stormy16/stormy16.h, config/v850/v850.h, config/vax/vax.h,
	config/xtensa/xtensa.h:
	Do not define, undefine, or mention in comments any of
	REAL_ARITHMETIC, REAL_VALUE_ATOF, REAL_VALUE_HTOF,
	REAL_VALUE_ISNAN, REAL_VALUE_ISINF,
	REAL_VALUE_TO_TARGET_SINGLE, REAL_VALUE_TO_TARGET_DOUBLE,
	REAL_VALUE_TO_TARGET_LONG_DOUBLE, REAL_VALUE_TO_DECIMAL,
	REAL_VALUE_TYPE, REAL_VALUES_EQUAL, REAL_VALUES_LESS,
	REAL_VALUE_LDEXP, REAL_VALUE_FIX, REAL_VALUE_UNSIGNED_FIX,
	REAL_VALUE_RNDZINT, REAL_VALUE_UNSIGNED_RNDZINT,
	REAL_INFINITY, REAL_VALUE_NEGATE, REAL_VALUE_TRUNCATE,
	REAL_VALUE_TO_INT, or REAL_VALUE_FROM_INT.

From-SVN: r50263
2002-03-03 21:10:09 +00:00
Richard Kenner
8041889f44 * optabs.c (widen_operand): Properly handle CONST_INT for NO_EXTEND.
From-SVN: r50011
2002-02-24 16:43:52 -05:00
Richard Kenner
cb8f73be28 optabs.c (widen_operand): Only call convert_modes for promoted SUBREG if signedness matches.
* optabs.c (widen_operand): Only call convert_modes for
	promoted SUBREG if signedness matches.
	* config/alpha/alpha.md (*addsi_se2, *subsi_se2): New patterns.

From-SVN: r50004
2002-02-24 07:46:52 -05:00
Richard Kenner
bb93b973c9 diagnostic.c (warn_deprecated_use): Rework to lower indentation.
* diagnostic.c (warn_deprecated_use): Rework to lower indentation.
	* expr.c (emit_move_insn_1): Remove warning, use HOST_WIDE_INT for
	offsets, and change line folding.
	* optabs.c (expand_binop): Remove warnings.
	* sdbout.c (sdbout_record_type_name): Constify NAME to avoid warning.

From-SVN: r48801
2002-01-12 09:05:32 -05:00
Jan Hubicka
3987b9db30 optabs.c (expand_fix): Look for wider integer modes first.
* optabs.c (expand_fix): Look for wider integer modes first.

	* i386.md (mov?f): Avoid the fake const double trick for medium
	memory model.
	(min?f*/max?f*): Prohibit memory operands for i387 variant.
	(fop_df_4): Disable for SSE compilation.

From-SVN: r48721
2002-01-10 10:21:30 +00:00
Richard Kenner
e4aae2617a 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: r47702
2001-12-05 18:33:53 -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
Graham Stott
f4dc10d1cb optabs.c (prepare_cmp_insn): Correct lossage in last change fix OPALIGN type.
* optabs.c (prepare_cmp_insn): Correct lossage in last change fix
	OPALIGN type.

From-SVN: r47088
2001-11-16 13:22:59 +00: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
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
Kazu Hirata
4fe9b91c45 c-common.c: Fix comment typos.
* c-common.c: Fix comment typos.
	* cfgrtl.c: Likewise.
	* collect2.c: Likewise.
	* cpplex.c: Likewise.
	* doloop.c: Likewise.
	* dwarf2out.c: Likewise.
	* dwarfout.c: Likewise.
	* expr.c: Likewise.
	* fold-const.c: Likewise.
	* gcc.c: Likewise.
	* gcov.c: Likewise.
	* gcse.c: Likewise.
	* global.c: Likewise.
	* ifcvt.c: Likewise.
	* loop.c: Likewise.
	* optabs.c: Likewise.
	* protoize.c: Likewise.
	* regclass.c: Likewise.
	* reorg.c: Likewise.
	* rtl.h: Likewise.
	* stmt.c: Likewise.
	* tree.h: Likewise.
	* doc/cpp.texi: Likewise.
	* doc/c-tree.texi: Likewise.
	* doc/extend.texi: Likewise.
	* doc/invoke.texi: Likewise.
	* doc/objc.texi: Likewise.
	* doc/tm.texi: Likewise.

From-SVN: r46114
2001-10-09 06:03:16 +00:00
Hans Boehm
11e9ecc58c Fix for ia64-java bug reported by Hans Boehm.
* optabs.c (emit_libcall_block): When using non-call exceptions,
	don't add REG_LIBCALL reg notes to trapping calls.

From-SVN: r45934
2001-10-01 19:01:55 -07:00
Richard Henderson
9c2f7166cb optabs.c (init_one_libfunc): Create a dummy function type instead of using error_mark_node.
* optabs.c (init_one_libfunc): Create a dummy function type
        instead of using error_mark_node.

From-SVN: r45830
2001-09-26 13:02:51 -07:00
Richard Henderson
ee1315aa92 optabs.c (init_one_libfunc): Gen a FUNCTION_DECL for use by ENCODE_SECTION_INFO...
* optabs.c (init_one_libfunc): Gen a FUNCTION_DECL for use by
        ENCODE_SECTION_INFO; get SYMBOL_REF from make_decl_rtl.

From-SVN: r45737
2001-09-21 13:42:14 -07:00
Geoffrey Keating
859cb4d84e optabs.c (expand_binop): Correctly handle the carry in multiword add/subtract operations.
* optabs.c (expand_binop): Correctly handle the carry in multiword
	add/subtract operations.

From-SVN: r45210
2001-08-27 20:35:37 +00:00
Lars Brinkhoff
1322177dbd Makefile.in, [...]: replace "GNU CC" with "GCC".
* Makefile.in, alias.c, basic-block.h, bb-reorder.c, bitmap.c,
	bitmap.h, builtin-types.def, builtins.c, builtins.def,
	c-aux-info.c, c-common.c, c-common.def, c-common.h,
	c-convert.c, c-decl.c, c-dump.c, c-dump.h, c-errors.c,
	c-format.c, c-lang.c, c-lex.c, c-lex.h, c-parse.in,
	c-pragma.c, c-pragma.h, c-semantics.c, c-tree.h, c-typeck.c,
	caller-save.c, calls.c, collect2.c, collect2.h, combine.c,
	conditions.h, config.gcc, configure.frag, configure.in,
	conflict.c, convert.c, convert.h, cppspec.c, crtstuff.c,
	cse.c, cselib.c, cselib.h, dbxout.c, dbxout.h, defaults.h,
	dependence.c, df.c, df.h, diagnostic.c, diagnostic.h,
	doloop.c, dominance.c, dwarf.h, dwarf2.h, dwarf2asm.c,
	dwarf2asm.h, dwarf2out.c, dwarf2out.h, dwarfout.c,
	emit-rtl.c, errors.c, errors.h, except.c, except.h,
	exgettext, explow.c, expmed.c, expr.c, expr.h, final.c,
	fixproto, flags.h, flow.c, fold-const.c, fp-test.c,
	function.c, function.h, gbl-ctors.h, gcc.c, gcc.h, gcc.hlp,
	gccspec.c, gcov-io.h, gcse.c, genattr.c, genattrtab.c,
	gencheck.c, gencodes.c, genconfig.c, genemit.c,
	genextract.c, genflags.c, gengenrtl.c, genmultilib,
	genopinit.c, genoutput.c, genpeep.c, genrecog.c,
	gensupport.c, gensupport.h, ggc-callbacks.c, ggc-common.c,
	ggc-none.c, ggc-page.c, ggc-simple.c, ggc.h, global.c,
	graph.c, graph.h, gthr-aix.h, gthr-dce.h, gthr-posix.h,
	gthr-rtems.h, gthr-single.h, gthr-solaris.h, gthr-vxworks.h,
	gthr-win32.h, gthr.h, haifa-sched.c, halfpic.c, halfpic.h,
	hard-reg-set.h, hwint.h, ifcvt.c, input.h, insn-addr.h,
	integrate.c, integrate.h, jump.c, lcm.c, libgcc2.c,
	libgcc2.h, lists.c, local-alloc.c, loop.c, loop.h,
	machmode.def, machmode.h, main.c, mbchar.c, mbchar.h,
	mips-tdump.c, mips-tfile.c, mklibgcc.in, mkmap-flat.awk,
	mkmap-symver.awk, optabs.c, output.h, params.c, params.def,
	params.h, predict.c, predict.def, predict.h, prefix.c,
	prefix.h, print-rtl.c, print-tree.c, profile.c, protoize.c,
	read-rtl.c, real.c, real.h, recog.c, recog.h, reg-stack.c,
	regclass.c, regmove.c, regrename.c, regs.h, reload.c,
	reload.h, reload1.c, reorg.c, resource.c, resource.h, rtl.c,
	rtl.def, rtl.h, rtlanal.c, sbitmap.c, sbitmap.h,
	sched-deps.c, sched-ebb.c, sched-int.h, sched-rgn.c,
	sched-vis.c, sdbout.c, sdbout.h, sibcall.c, simplify-rtx.c,
	ssa-ccp.c, ssa-dce.c, ssa.c, ssa.h, stmt.c, stor-layout.c,
	stringpool.c, system.h, timevar.c, timevar.def, timevar.h,
	tlink.c, toplev.c, toplev.h, tree.c, tree.def, tree.h,
	tsystem.h, unroll.c, unwind-dw2-fde.c, unwind-dw2-fde.h,
	unwind-dw2.c, unwind-pe.h, unwind-sjlj.c, unwind.h,
	unwind.inc, varasm.c, varray.c, varray.h, xcoffout.c,
	xcoffout.h: replace "GNU CC" with "GCC".

From-SVN: r45105
2001-08-22 14:35:51 +00:00
Zack Weinberg
ef89d648b8 optabs.h (OTI_flodiv, [...]): Kill.
* optabs.h (OTI_flodiv, flodiv_optab): Kill.
	* genopinit.c: Put floating point divide insns in sdiv_optab.
	* expr.c (expand_expr): Use sdiv_optab, not flodiv_optab.
	* config/gofast.h, config/c4x/c4x.h,
	config/ia64/hpux_longdouble.h, config/mips/mips.h,
	config/pa/long_double.h, config/rs6000/sysv4.h,
	config/sparc/sparc.h: Put floating point divide libcalls in sdiv_optab.
	* optabs.c (init_optab): Break into new_optab, init_optab, init_optabv.
	(init_optabs): Use init_optabv for overflow-trapping optabs.
	Don't init flodiv_optab.  Give mov_optab, movstrict_optab, and
	cmp_optab RTX codes so have_insn_for can find them.

	* optabs.c (expand_simple_binop, expand_simple_unop,
	have_insn_for, gen_sub3_insn): New interfaces.
	* expr.h: Prototype new functions.
	(enum optab_methods): Move here from optabs.h.

	* builtins.c, combine.c, doloop.c, function.c, ifcvt.c,
	loop.c, profile.c, simplify-rtx.c, stmt.c, unroll.c:
	Use new	functions instead of working directly with optabs.
	* doloop.c, ifcvt.c, loop.c, profile.c, simplify-rtx.c,
	unroll.c: Don't include optabs.h.
	* caller-save.c, combine.c, function.c, stmt.c: Just include
	insn-codes.h, not optabs.h.
	* Makefile.in: Update dependencies.

	* combine.c (make_compound_operation, simplify_comparison):
	Fix typos testing for this or that instruction.

From-SVN: r45008
2001-08-18 19:59:46 +00:00
Zack Weinberg
e78d8e5137 expr.h: Split out optab- and libfunc-related code to...
* expr.h: Split out optab- and libfunc-related code to...
	* optabs.h, libfuncs.h: ... these new headers.

	* Makefile.in (CONFIG_H, EXPR_H): Take out insn-codes.h.
	(OPTABS_H): New.
	(various .o rules): Add $(OPTABS_H) and/or libfuncs.h to
	dependencies.
	* mkconfig.sh: Don't include insn-codes.h from config.h.

	* reload.h: Use #ifdef GCC_INSN_CODES_H to decide whether
	enum insn_code is available.  Move reload_in_optab and
	reload_out_optab array declarations to optabs.h.
	* regmove.c (gen_add3_insn): Move to optabs.c, export from
	there, prototype in expr.h.
	* gencodes.c: Cleanup: zap global variables, don't use
	printf where puts will do, don't bother defining MAX_INSN_CODE
	which nothing uses, let CODE_FOR_nothing get its value implicitly.

	* genemit.c, genopinit.c: Include optabs.h in generated file.
	* genoutput.c: Include insn-codes.h in generated file.
	* builtins.c, caller-save.c, combine.c, doloop.c, explow.c,
	expmed.c, expr.c, function.c, ifcvt.c, loop.c, optabs.c, profile.c,
	reload1.c, simplify-rtx.c, stmt.c, unroll.c, config/alpha/alpha.c,
	config/arm/arm.c, config/c4x/c4x.c, config/clipper/clipper.c,
	config/i386/i386.c, config/ia64/ia64.c, config/mn10300/mn10300.c,
	config/pj/pj.c, config/sh/sh.c, config/sparc/sparc.c:
	Include optabs.h.
	* builtins.c, calls.c, dwarf2out.c, except.c, expr.c, function.c,
	optabs.c, stmt.c, config/c4x/c4x.c, config/clipper/clipper.c,
	config/m88k/m88k.c, config/sparc/sparc.c:
	Include libfuncs.h.
	* reload.c: Include expr.h and optabs.h before reload.h.
	* config/alpha/alpha.c: Include tree.h before reload.h.
	* config/pa/pa.c: Include expr.h, optabs.h, libfuncs.h,
	and reload.h in that order.
	* config/sparc/sparc.c: Include debug.h.
	* recog.c: Include insn-codes.h.

cp:
	* Make-lang.in (cp/except.o): Add libfuncs.h to dependencies.
	* except.c: Include libfuncs.h.
java:
	* Make-lang.in (java/decl.o): Update dependencies.
	* decl.c: Include libfuncs.h, don't include toplev.h.

From-SVN: r44858
2001-08-13 15:56:51 +00:00
Kazu Hirata
dc297297ea gcc.c: Fix comment formatting.
* gcc.c: Fix comment formatting.
	* gccspec.c: Likewise.
	* gcov.c: Likewise.
	* gcse.c: Likewise.
	* genemit.c: Likewise.
	* gengenrtl.c: Likewise.
	* genrecog.c: Likewise.
	* gensupport.c: Likewise.
	* ggc-page.c: Likewise.
	* global.c: Likewise.
	* graph.c: Likewise.
	* ifcvt.c: Likewise.
	* integrate.c: Likewise.
	* lcm.c: Likewise.
	* libgcc2.c: Likewise.
	* loop.c: Likewise.
	* mbchar.c: Likewise.
	* optabs.c: Likewise.
	* predict.c: Likewise.
	* prefix.c: Likewise.
	* profile.c: Likewise.
	* protoize.c: Likewise.
	* real.c: Likewise.
	* recog.c: Likewise.
	* regclass.c: Likewise.
	* regmove.c: Likewise.
	* reg-stack.c: Likewise.
	* reload1.c: Likewise.
	* resource.c: Likewise.
	* rtlanal.c: Likewise.
	* rtl.c: Likewise.

From-SVN: r44837
2001-08-12 23:40:53 +00:00
Jan Hubicka
371b8fc0bc rtlanal.c (set_noop_p): Return true for noop jumps.
* rtlanal.c (set_noop_p): Return true for noop jumps.

	* expr.c (emit_single_push_insn): Add call to push expander.
	* expr.h (optab_index): Add OTI_push
	(push_optab): New constant.
	* genopinit.c (optabs): Add push_optab.
	* optabs.c (init_optab): Init push optab.
	* md.texi (push??1): Document

From-SVN: r44210
2001-07-20 20:07:58 +00:00
Steve Ellcey
6dd12198d0 * tm.texi (POINTERS_EXTEND_UNSIGNED) Modify definition.
* optabs.c (can_extend_p) Check HAVE_ptr_extend for a specialized
	pointer extension instruction.
	* combine.c (nonzero_bits,num_sign_bit_copies) Likewise.
	* simplify-rtx.c (simplify_unary_operation) Likewise.
	* explow.c (convert_memory_address) Check value of
	POINTERS_EXTEND_UNSIGNED to avoid some conversions when
	less than zero.
	* config/ia64/t-hpux (LIBGCC, INSTALL_LIBGCC, MULTILIB_OPTIONS,
	MULTILIB_DIRNAMES, MULTILIB_MATCHES) Add multilib support.
	* config/ia64/hpux.h (CPP_SPEC, ASM_SPEC, SUBTARGET_SWITCHES)
	Add Multilib Support.
	(POINTERS_EXTEND_UNSIGNED)  Define for ILP32 support.
	* config/ia64/ia64.h (MASK_ILP32, TARGET_ILP32, SUBTARGET_SWITCHES)
	Add Multilib Support.
	(POINTER_SIZE, LONG_TYPE_SIZE, MAX_LONG_TYPE_SIZE) Modify for ILP32
	support.
	* config/ia64/ia64.c (rtx_needs_barrier) Add support for addp4.
	* config/ia64/ia64.md (ptr_extend) New instruction to "swizzle"
	a 32 bit HP-UX pointer into a 64 bit HP-UX pointer.

From-SVN: r44166
2001-07-19 16:26:51 -07:00
Toon Moene
fb7e77d7dc expr.h: Adjust prototypes for have_add2_insn, have_sub2_insn.
2001-07-09  Toon Moene  <toon@moene.indiv.nluug.nl>

	* expr.h: Adjust prototypes for have_add2_insn, have_sub2_insn.
	* optabs.c (have_add2_insn): Check whether the add insn chosen
	really accepts the operands.  (have_sub2_insn): Ditto for sub insn.
	* reload1.c (reload_cse_move2add): Adjust calls of have_add2_insn.

From-SVN: r43874
2001-07-09 20:21:48 +00:00
Richard Kenner
f1ec5147f5 [multiple changes]
Mon Jul  9 06:41:07 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* emit-rtl.c (adjust_address_nv, replace_equiv_address_nv): New fcns.
	(operand_subword): Use them.
	(change_address_1): Renamed from change_address; new arg VALIDATE.
	* expr.h: Reflect above changes; change_address now macro.
	* alias.c (canon_rtx): Use replace_equiv_address_nv instead of
	making MEM.
	* cselib.c (add_mem_for_addr): Likewise.
	* expr.c (protect_from_queue, emit_move_insn_1): Likewise.
	* regmove.c (try_apply_stack_adjustment): Likewise.
	* reload.c (push_reload, make_memloc): Likewise.
	* reload1.c (eliminate_regs): Likewise.
	* simplify-rtx.c (simplify_replace_rtx): Likewise.
	* caller-save.c (setup_save_areas): Use adjust_address_nv instead of
	adjust_addess.
	* combine.c (make_extraction, simplify_shift_const): Likewise.
	(gen_lowpart_for_combine): Likewise.
	* cse.c (gen_lowpart_if_possible): Likewise.
	* function.c (fixup_var_refs_1, purge_addressof_1): Likewise.
	* expr.c (expand_expr, case COMPONENT_REF): Likewise.
	* optabs.c (gen_move_insn): Likewise.
	* reload1.c (alter_reg): Likewise.
	* simplify-rtx.c (simplify_subreg): Likewise.
	* stmt.c (expand_anon_union_decl): Likewise.
	* recog.c (validate_replace_rtx_1): Likewise.
	(expr.h): Include.
	* Makefile.in (recog.o): Add $(EXPR_H).
	* explow.c (stabilize): Call replace_equiv_address.
	* expr.c (move_by_pieces_1, store_by_pieces_2): Likewise.
	* final.c (alter_subreg): OFFSET is HOST_WIDE_INT.

2001-07-09  Bo Thorsen  <bo@suse.co.uk>

	* config/i386/unix.h (ASM_OUTPUT_MI_THUNK): Fix x86-64 vtable support.

2001-07-09  Neil Booth  <neil@daikokuya.demon.co.uk>

	* final.c (output_addr_const): Use target opening and
	closing parentheses.
	* target-def.h: Define TARGET_ASM_OPEN_PAREN, TARGET_ASM_CLOSE_PAREN
	defaults, add to TARGET_ASM_OUT.
	* target.h (struct gcc_target): Add open_paren and close_paren.
	* doc/md.texi: Update.
	* doc/tm.texi: Document TARGET_ASM_FUNCTION_END_PROLOGUE,
	TARGET_ASM_FUNCTION_BEGIN_EPILOGUE, TARGET_ASM_OPEN_PAREN and
	TARGET_ASM_CLOSE_PAREN.
	* config/i386/i386.c (TARGET_ASM_OPEN_PAREN, TARGET_ASM_CLOSE_PAREN):
	Override.
	* config/pdp11/pdp11.c (TARGET_ASM_OPEN_PAREN, TARGET_ASM_CLOSE_PAREN):
	Override.
	* config/1750a/1750a.h (ASM_OPEN_PAREN, ASM_CLOSE_PAREN): Remove.
	* config/a29k/a29k.h: Similarly.
	* config/alpha/alpha.h: Similarly.
	* config/arc/arc.h: Similarly.
	* config/arm/aof.h: Similarly.
	* config/arm/aout.h: Similarly.
	* config/avr/avr.h: Similarly.
	* config/c4x/c4x.h: Similarly.
	* config/clipper/clipper.h: Similarly.
	* config/convex/convex.h: Similarly.
	* config/d30v/d30v.h: Similarly.
	* config/dsp16xx/dsp16xx.h: Similarly.
	* config/elxsi/elxsi.h: Similarly.
	* config/fr30/fr30.h: Similarly.
	* config/h8300/h8300.h: Similarly.
	* config/i370/i370.h: Similarly.
	* config/i386/i386.h: Similarly.
	* config/i860/i860.h: Similarly.
	* config/i960/i960.h: Similarly.
	* config/ia64/ia64.h: Similarly.
	* config/m32r/m32r.h: Similarly.
	* config/m68hc11/m68hc11.h: Similarly.
	* config/m68k/m68k.h: Similarly.
	* config/m88k/m88k.h: Similarly.
	* config/mcore/mcore.h: Similarly.
	* config/mips/mips.h: Similarly.
	* config/mn10200/mn10200.h: Similarly.
	* config/mn10300/mn10300.h: Similarly.
	* config/ns32k/ns32k.h: Similarly.
	* config/pa/pa.h: Similarly.
	* config/pdp11/pdp11.h: Similarly.
	* config/pj/pj.h: Similarly.
	* config/romp/romp.h: Similarly.
	* config/rs6000/rs6000.h: Similarly.
	* config/sh/sh.h: Similarly.
	* config/sparc/sparc.h: Similarly.
	* config/v850/v850.h: Similarly.
	* config/vax/vax.h: Similarly.
	* config/we32k/we32k.h: Similarly.

2001-07-09  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/c-tree.texi: Document representation of attributes.

2001-07-08  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/tm.texi: Update some places for the rename of target to
	targetm.  Fix typo.

2001-07-08  Joseph S. Myers  <jsm28@cam.ac.uk>

	* target.h (struct gcc_target): Add insert_attributes.
	* target-def.h (TARGET_INSERT_ATTRIBUTES): Define.
	(TARGET_INITIALIZER): Update.
	* tree.c, tree.h (default_insert_attributes): New function.
	Update comments on other default functions to refer to targetm,
	not target.
	* doc/tm.texi (INSERT_ATTRIBUTES): Update to document
	TARGET_INSERT_ATTRIBUTES.
	(SET_DEFAULT_DECL_ATTRIBUTES): Remove.
	* c-common.c (decl_attributes): Use targetm.insert_attributes.
	Don't use PRAGMA_INSERT_ATTRIBUTES.
	* Makefile.in (c-common.o): Depend on $(TARGET_H).
	* c-decl.c (start_decl, start_function): Don't call
	SET_DEFAULT_DECL_ATTRIBUTES.
	* config/c4x/c4x.h (SET_DEFAULT_DECL_ATTRIBUTES): Don't define.
	* config/c4x/c4x-protos.h (c4x_set_default_attributes): Don't
	declare.
	* config/c4x/c4x.c (TARGET_INSERT_ATTRIBUTES): Define.
	(c4x_check_attribute): Avoid modifying attribute list itself.
	(c4x_set_default_attributes): Rename to c4x_insert_attributes.
	Make static.
	* config/sh/sh.h (PRAGMA_INSERT_ATTRIBUTES): Don't define.
	* config/sh/sh-protos.h (sh_pragma_insert_attributes): Don't
	declare.
	* config/sh/sh.c (TARGET_INSERT_ATTRIBUTES): Define.
	(sh_pragma_insert_attributes): Rename to sh_insert_attributes.
	Make static.
	* config/v850/v850.h (SET_DEFAULT_DECL_ATTRIBUTES): Don't define.
	* config/v850/v850-protos.h (v850_set_default_decl_attr): Don't
	declare.
	* config/v850/v850.c (TARGET_INSERT_ATTRIBUTES): Define.
	(v850_set_default_decl_attr): Rename to v850_insert_attributes.
	Adjust parameters.  Make static.

2001-07-08  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-common.c (decl_attributes): Only take a single attributes
	parameter.
	* c-common.h (decl_attributes): Update prototype.
	* c-decl.c (start_decl, start_function): Only take a single
	attributes parameter.  Update calls to decl_attributes.
	(finish_struct, finish_enum): Update calls to decl_attributes.
	(push_parm_decl): Expect unified list of attributes.  Update call
	to decl_attributes.
	* c-parse.in (fndef, initdcl, notype_initdcl, nested_function,
	notype_nested_function, component_declarator,
	component_notype_declarator, label): Update calls to
	decl_attributes.
	(absdcl_maybe_attribute, parm, firstparm, myparm): Unify attribute
	lists that are passed to push_parm_decl.
	* c-tree.h (start_function, start_decl): Update prototypes.
	* config/sh/sh-protos.h, config/sh/sh.c
	(sh_pragma_insert_attributes): Only take a single attributes
	parameter.
	* config/sh/sh.h (PRAGMA_INSERT_ATTRIBUTES): Likewise.
	* doc/tm.texi (INSERT_ATTRIBUTES): Update.
	* objc/objc-act.c (define_decl, generate_objc_symtab_decl,
	build_module_descriptor, generate_static_references,
	generate_strings, build_selector_translation_table,
	generate_descriptor_table, generate_protocols,
	generate_ivars_list, generate_dispatch_table,
	generate_protocol_list, generate_category,
	generate_shared_structures, really_start_method, add_objc_decls,
	generate_classref_translation_entry): Update calls to start_decl
	and start_function.
	(build_tmp_function_decl, start_method_def): Unify attribute lists
	that are passed to push_parm_decl.

2001-07-08  Neil Booth  <neil@daikokuya.demon.co.uk>

	* final.c (no_asm_to_stream): New.
	(final_scan_insn): Use target structures for prologue ends
	and epilogue starts.
	* output.h (no_asm_to_stream): New.
	* target-def.h (TARGET_ASM_FUNCTION_END_PROLOGUE,
	TARGET_ASM_FUNCTION_BEGIN_EPILOGUE): New.
	(TARGET_ASM_OUT): Update.
	* target.h (struct gcc_target): New members function_end_prologue
	and function_begin_epilogue.
	* config/1750/1750.h (ASM_OUTPUT_FUNNAM): Delete as unused.
	* config/alpha/alpha-protos.h (output_end_prologue): Delete.
	* config/alpha/alpha.c (output_end_prologue): Rename to
	alpha_output_function_end_prologue.  Use in target struct
	and make static.
	* config/alpha/alpha.h (FUNCTION_END_PROLOGUE): Delete.
	* config/ia64/ia64-protos.h (ia64_output_end_prologue): Delete.
	* config/ia64/ia64.c (ia64_output_end_prologue): Rename to
	ia64_output_function_end_prologue.  Use in target struct
	and make static.
	(ia64_function_prologue, ia64_funciton_epilogue): Rename
	mistyped prototypes.
	* config/ia64/ia64.h (FUNCTION_END_PROLOGUE): Delete.
	* config/m88k/m88k-protos.h (m88k_end_prologue, m88k_begin_epilogue):
	Delete.
	* config/m88k/m88k.c (m88k_end_prologue, m88k_begin_epilogue): Rename
	an use in target struct, make static.
	* config/ia64/ia64.h (FUNCTION_END_PROLOGUE, FUNCTION_BEGIN_EPILOGUE):
	Delete.

2001-07-08  Richard Henderson  <rth@redhat.com>

	* stmt.c (emit_case_nodes): Convert modes properly in low+high test.

2001-07-08  Richard Henderson  <rth@redhat.com>

	* config/i386/i386.md: Remove constraints strings from define_split
	and define_peephole2 patterns.
	(eh_return_si, eh_return_di): Split eh_return_1 for modes.
	(eh_return): Use them.

2001-07-08  Richard Henderson  <rth@redhat.com>

	* doc/tm.texi (Exception Handling): New subnode of Stack and Calling.
	Document MD_FALLBACK_FRAME_STATE_FOR.

2001-07-07  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/m68hc11.c (m68hc11_initial_elimination_offset):
	Take into account m68hc11_sp_correction for FRAME_POINTER_REGNUM
	elimination.
	* config/m68hc11/m68hc11.h (STARTING_FRAME_OFFSET): Use 0.

2001-07-07  Nick Clifton  <nickc@cambridge.redhat.com>

	* config/ia64/sysv4.h (ASM_OUTPUT_LABELREF): Append # to end
	of the label inside NAME as opposed to just the end of NAME.

2001-07-07  Neil Booth  <neil@daikokuya.demon.co.uk>

	* config/alpha/alpha-protos.h (vms_valid_decl_attribute_p): Delete.
	* config/alpha/alpha.c (alpha_init_machine_status,
	alpha_mark_machine_status, alpha_free_machine_status): Delete.
	(TARGET_VALID_DECL_ATTRIBUTE): Define for VMS.
	(vms_valid_decl_attribute_p): Make static, conditionally compile.
	* config/alpha/alpha.h (VALID_MACHINE_DECL_ATTRIBUTE): Delete.

2001-07-06  Stan Shebs  <shebs@apple.com>

	* target.h (targetm): Rename global from "target", so as not to
	conflict with local variables.
	* c-decl.c: Ditto.
	* c-typeck.c: Ditto.
	* final.c: Ditto.
	* tree.c: Ditto.
	* cp/decl.c: Ditto.
	* cp/decl2.c: Ditto.
	* cp/typeck.c: Ditto.
	* 1750a/1750a.c: Ditto.
	* a29k/a29k.c: Ditto.
	* arc/arc.c: Ditto.
	* arm/arm.c: Ditto.
	* avr/avr.c: Ditto.
	* clipper/clipper.c: Ditto.
	* convex/convex.c: Ditto.
	* d30v/d30v.c: Ditto.
	* dsp16xx/dsp16xx.c: Ditto.
	* elxsi/elxsi.c: Ditto.
	* fr30/fr30.c: Ditto.
	* h8300/h8300.c: Ditto.
	* i370/i370.c: Ditto.
	* i386/i386.c: Ditto.
	* i860/i860.c: Ditto.
	* i960/i960.c: Ditto.
	* ia64/ia64.c: Ditto.
	* m32r/m32r.c: Ditto.
	* m68hc11/m68hc11.c: Ditto.
	* m68k/m68k.c: Ditto.
	* m88k/m88k.c: Ditto.
	* mips/mips.c: Ditto.
	* ns32k/ns32k.c: Ditto.
	* pa/pa.c: Ditto.
	* pdp11/pdp11.c: Ditto.
	* romp/romp.c: Ditto.
	* rs6000/rs6000.c: Ditto.
	* sh/sh.c: Ditto.
	* sparc/sparc.c: Ditto.
	* vax/vax.c: Ditto.
	* we32k/we32k.c: Ditto.
	* doc/tm.texi: Update the manual to match.

2001-07-06  Richard Henderson  <rth@redhat.com>

	* except.h (MUST_USE_SJLJ_EXCEPTIONS): Examine the value of
	DWARF2_UNWIND_INFO not just whether it is defined.

2001-07-06  Diego Novillo  <dnovillo@redhat.com>

	* combine.c (combine_simplify_rtx): Also recompute 'mode' if the
	call to simplify_binary_operation returns a new pattern.

2001-07-06  Roman Lechtchinsky  <rl@cs.tu-berlin.de>

	* glimits.h (__SHRT_MAX__): New.
	(SHRT_MIN, USHRT_MAX): Define in terms of SHRT_MAX.
	(SHRT_MAX): Define in terms of __SHRT_MAX__.

2001-07-06  Jan van Male  <jan.vanmale@fenk.wau.nl>

	* alias.c (base_alias_check): Cast GET_MODE_UNIT_SIZE to int to
	avoid warnings.

2001-07-06  Richard Henderson  <rth@redhat.com>

	* bitmap.c (bitmap_release_memory): Move adjacent to the
	allocation functions.
	(bitmap_first_set_bit, bitmap_last_set_bit): Streamline knowing
	the implementation.  Binary search for the set bit.
	(bitmap_union_of_diff): Allocate the temporary on the stack
	instead of using xmalloc.

2001-07-06  Richard Henderson  <rth@redhat.com>

	* genrecog.c (validate_pattern): Warn for constraints in
	define_{expand,split,peephole2}.  Remove strict_low_part
	before looking up match_dup.

2001-07-06  DJ Delorie  <dj@redhat.com>

	* doc/gcc.texi (Makefile): Rename to be a more general purpose
	chapter about various build hints and history.  Add section
	talking about the various types of native and cross builds.

2001-07-06  Neil Booth  <neil@daikokuya.demon.co.uk>

	* Makefile.in (final.o): Depend on target.h.
	* final.c: Include target.h.
	(default_function_pro_epilogue): New.
	(final_start_function): Use target structure for function prologues.
	(final_end_function): Use target structure for function epilogues.
	* fold-const.c (real_hex_to_f): Constify s and p.
	* output.h (default_function_pro_epilogue): New.
	* real.h (real_hex_to_f): Update prototype.
	* target-def.h (TARGET_ASM_FUNCTION_PROLOGUE,
	TARGET_ASM_FUNCTION_EPILOGUE, TARGET_ASM_OUT): New.
	(TARGET_INITIALIZER): Update.
	* target.h (gcc_target): Add struct asm_out.
	* doc/tm.texi: Update.

config:
	Update each arch to use TARGET_ASM_FUNCTION_PROLOGUE and
	TARGET_ASM_FUNCTION_EPILOGUE.  Move macro code to functions
	in cpu/cpu.c, or rename old functions consistently.  Take
	a HOST_WIDE INT not an int as the SIZE parameter.  Remove now
	redundant macros and prototypes.  Make new functions static.

	* 1750a/1750a.c: Similarly.
	* 1750a/1750a.h: Similarly.
	* a29k/a29k-protos.h: Similarly.
	* a29k/a29k.c: Similarly.
	* a29k/a29k.h: Similarly.
	* arc/arc-protos.h: Similarly.
	* arc/arc.c: Similarly.
	* arc/arc.h: Similarly.
	* arm/arm-protos.h: Similarly.
	* arm/arm.c: Similarly.
	* arm/arm.h: Similarly.
	* avr/avr-protos.h: Similarly.
	* avr/avr.c: Similarly.
	* avr/avr.h: Similarly.
	* clipper/clipper-protos.h: Similarly.
	* clipper/clipper.c: Similarly.
	* clipper/clipper.h: Similarly.
	* convex/convex.c: Similarly.
	* convex/convex.h: Similarly.
	* d30v/d30v-protos.h: Similarly.
	* d30v/d30v.c: Similarly.
	* d30v/d30v.h: Similarly.
	* d30v/d30v.md: Similarly.
	* dsp16xx/dsp16xx-protos.h: Similarly.
	* dsp16xx/dsp16xx.c: Similarly.
	* dsp16xx/dsp16xx.h: Similarly.
	* elxsi/elxsi.c: Similarly.
	* elxsi/elxsi.h: Similarly.
	* fr30/fr30.c: Similarly.
	* fr30/fr30.md: Similarly.
	* h8300/h8300-protos.h: Similarly.
	* h8300/h8300.c: Similarly.
	* h8300/h8300.h: Similarly.
	* i370/i370-protos.h: Similarly.
	* i370/i370.c: Similarly.
	* i370/i370.h: Similarly.
	* i386/i386.c: Similarly.
	* i386/osf1elf.h: Similarly.
	* i386/osfrose.h: Similarly.
	* i860/i860-protos.h: Similarly.
	* i860/i860.c: Similarly.
	* i860/i860.h: Similarly.
	* i960/i960-protos.h: Similarly.
	* i960/i960.c: Similarly.
	* i960/i960.h: Similarly.
	* ia64/ia64-protos.h: Similarly.
	* ia64/ia64.c: Similarly.
	* ia64/ia64.h: Similarly.
	* m32r/m32r-protos.h: Similarly.
	* m32r/m32r.c: Similarly.
	* m32r/m32r.h: Similarly.
	* m68hc11/m68hc11-protos.h: Similarly.
	* m68hc11/m68hc11.c: Similarly.
	* m68hc11/m68hc11.h: Similarly.
	* m68k/crds.h: Similarly.
	* m68k/dpx2.h: Similarly.
	* m68k/m68k-protos.h: Similarly.
	* m68k/m68k.c: Similarly.
	* m68k/m68k.h: Similarly.
	* m68k/news.h: Similarly.
	* m88k/m88k-protos.h: Similarly.
	* m88k/m88k.c: Similarly.
	* m88k/m88k.h: Similarly.
	* mips/mips-protos.h: Similarly.
	* mips/mips.c: Similarly.
	* mips/mips.h: Similarly.
	* ns32k/merlin.h: Similarly.
	* ns32k/ns32k.c: Similarly.
	* ns32k/ns32k.h: Similarly.
	* ns32k/tek6000.h: Similarly.
	* pa/pa-protos.h: Similarly.
	* pa/pa.c: Similarly.
	* pa/pa.h: Similarly.
	* pdp11/2bsd.h: Similarly.
	* pdp11/pdp11-protos.h: Similarly.
	* pdp11/pdp11.c: Similarly.
	* pdp11/pdp11.h: Similarly.
	* romp/romp-protos.h: Similarly.
	* romp/romp.c: Similarly.
	* romp/romp.h: Similarly.
	* rs6000/rs6000-protos.h: Similarly.
	* rs6000/rs6000.c: Similarly.
	* rs6000/rs6000.h: Similarly.
	* rs6000/sysv4.h: Similarly.
	* sh/sh-protos.h: Similarly.
	* sh/sh.c: Similarly.
	* sh/sh.h: Similarly.
	* sparc/sparc-protos.h: Similarly.
	* sparc/sparc.c: Similarly.
	* sparc/sparc.h: Similarly.
	* vax/vax.c: Similarly.
	* vax/vax.h: Similarly.
	* vax/vms.h: Similarly.
	* we32k/we32k.c: Similarly.
	* we32k/we32k.h: Similarly.

Fri Jul  6 11:47:59 2001  Jeffrey A Law  (law@cygnus.com)

	* basic-block.h (first_insn_after_basic_block_note): Declare.
	* flow.c (first_insn_after_basic_block_note): Define.  Moved
	from...
	* ssa.c (first_insn_after_basic_block_note): Remove.
	* ssa-dce.c (find_inherently_necessary): Consider BARRIERs
	necessary.
	(ssa_eliminate_dead_code): Properly update the CFG and PHI
	nodes when we find a dead conditional branch.  Insert BARRIERs
	after any blocks with no successors, but which do not have
	any BARRIERs.

2001-07-06  Zack Weinberg  <zackw@stanford.edu>

	* varray.c (varray_check_failed): Use internal_error.

2001-07-05  Andrew Haley  <aph@redhat.com>

	* Makefile.in (LIB2_DIVMOD_FUNCS): New.
	(LIB2FUNCS): Move divmod functions to LIB2_DIVMOD_FUNCS.
	* mklibgcc.in: Compile LIB2_DIVMOD_FUNCS.

2001-07-02  Jason Merrill  <jason_merrill@redhat.com>

	* dwarf2out.c (mem_loc_descriptor): Only look through a constant pool
	reference if the target constant is also a SYMBOL_REF.

2001-07-05  Eric Christopher  <echristo@redhat.com>

	* config/mips/mips.h (MASK_MIPS3900): Remove.
	(MASK_MIPS16,MASK_NO_CHECK_ZERO_DIV,MASK_CHECK_RANGE_DIV,
	MASK_UNINIT_CONST_IN_RODATA): Change for 3900 mask removal.
	(TARGET_MIPS3900): Change to use mips_arch.
	(TARGET_MIPS4000): New.
	(TARGET_MIPS4100): New.
	(TARGET_MIPS4300): New.
	(TARGET_SWITCHES): Change 3900 and 4650 options to NULL.
	(SUBTARGET_TARGET_OPTIONS): Add -march. Change help text
	for -mipsX.
	(GENERATE_BRANCHLIKELY): Move TARGET_MIPS3900.
	(ISA_HAS_BRANCHLIKELY): To here.
	(CC1_CPU_SPEC):	 New.
	(CC1_SPEC): Use here.  Remove 4650 and 3900 options.
	(mips_arch_string): Declare.
	(mips_arch): Declare.
	(TARGET_OPTIONS): Add -march and -mtune.

	* config/mips/mips.c (mips_arch_string): New.
	(mips_arch): New.
	(override_options): Handle -march for codegen and -mtune
	for scheduling. Use mips_arch. Move tx39 target default here.
	(mips_parse_cpu): Move error message to override_options.

	* config/mips/r3900.h (TARGET_DEFAULT): Remove.

	* config/mips/mips.md: Use TARGET_MIPS4000 and TARGET_MIPS4300.

	* doc/invoke.texi (Option Summary): Add -march and -mtune entries.
	(MIPS Options): Ditto.	Change mcpu entry to historical text.

2001-07-05  H.J. Lu  (hjl@gnu.org)

        * config/mips/mips.c (mips_parse_cpu): New function to parse
        -march=*/-mcpu=*.

2001-07-05  Jim Wilson  <wilson@redhat.com>

	* config/ia64/lib1funcs.asm: Revert 2001-07-02 change.
	* config/ia64/t-ia64: Likewise.
	(LIB1ASMFUNCS): Update comment.

2001-07-05  David Edelsohn  <edelsohn@gnu.org>

	* doc/install.texi (Install GCC: Binaries): Fix typo.

2001-07-04  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/m68hc11.md ("*ashlsi3"): Operand 1 can be a memory
	reference using the stack pointer, adjust it since we push Y
	temporarily.
	("*ashrsi3"): Likewise.
	("*lshrsi3"): Likewise.

2001-07-05  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/m68hc11.h (RETURN_ADDR_RTX): Fix return address
	when -fomit-frame-pointer is used.

2001-07-05  Jeffrey Oldham  <oldham@codesourcery.com>

	* flow.c: Reverse Jan Hubicka's patch of 02July2001.
	(try_redirect_by_replacing_jump): Reverse updating properly the
	count and frequency information.  Reverse removing cc0 setter.
	(forwarder_block_p): Reverse fixing for fallthru blocks.

2001-07-05  DJ Delorie  <dj@redhat.com>

	* gcc.c (TARGET_OPTION_TRANSLATE_TABLE): New.
	(translate_options): If the above is defined, use it to map
	given options to new options.
	* doc/tm.texi: Document it.

2001-07-05  Brad Lucier <lucier@math.purdue.edu>
	    Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* doc/invoke.texi (Optimize Options): Document that -fgcse may
	cause programs using computed gotos to run more slowly.

2001-07-05  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* doc/install.texi (Specific): Markup, spelling and typo fixes.
	Fixed sorting.
	Consistently require binutils 2.11.2, not prereleases.
	(Specific, decstation-*): Canonicalize as mips-dec-*.
	(Specific, i?86-*-sco3.2v5*): Remove make bootstrap requirement,
	always necessary.
	(Specific, m68k-altos): Removed reference to README.altos, deleted.
	(Specific, mips-*): Reword MIPS C compiler requirements.
	(Specific, powerpc*-*-*): New, mention --with-cpu once.
	(Specific, sunv5): Removed, obsolete.

2001-07-05  Nathan Sidwell  <nathan@codesourcery.com>

	* dwarf2out.c (output_loc_list): Use an all ones mask for
	.text asm output and don't rely on long long
	literals. Reformat some long lines.

2001-07-05  Andreas Jaeger  <aj@suse.de>

	* doc/gcc.texi (GNU/Linux): Remove accidental re-add of GPL
	section.

2001-07-04  Daniel Berlin  <dan@cgsoftware.com>

	* dwarf2out.c (dwarf2out_define): Update comment.
	(dwarf2out_undef): Ditto.
	(dwarf2out_start_source_file): Ditto.
	(dwarf2out_end_source_file): Ditto.
	(dwarf2out_finish): Output DW_MACINFO_end_file for primary file,
	since we never call the start/end debug hook for the primary file.

2001-07-04  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.c (get_shift_alg): Remove an extra operand
	from shll.

2001-07-04  Nathan Sidwell  <nathan@codesourcery.com>

	* cppinit.c (remove_dup_dirs): Inform if a system include
        directory is being reordered.
	* doc/invoke.texi (Directory Options): GCC warns if you hide a
	system include.
	* doc/cpp.texi (Search Paths): Likewise.
	* doc/gcc.texi (Interoperation): Remove information about
	-I/usr/include.

2001-07-04  Nathan Sidwell  <nathan@codesourcery.com>

	* varray.h (VARRAY_TOP_GENERIC_PTR): Remove spurious parameter.
	(VARRAY_TOP_CHAR_PTR): Likewise.

2001-07-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* gcc.c (process_command): Don't assign elements of a const char*.

Wed Jul  4 13:40:02 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* emit-rtl.c (change_address): Don't abort if invalid address while
	reload is in progress.

2001-07-04  Daniel Berlin  <dan@cgsoftware.com>

	* c-lex.c (cb_file_change): Pass line number to
	debug_start_source_file.
	(cb_undefine): Pass correct line number to debug_undef.

	* toplev.c (debug_start_source_file): Add line number to
	parameters. Pass it along to dwarf2out_start_source_file.
	(decode_g_option): Stop resetting debug level back to normal when
	we change debug formats, unless the current level is
	none. (Before, -g3 -gdwarf-2 would use debug level 2, rather than
	3).

	* toplev.h (debug_start_source_file): Add line number to
	parameters.

	* dwarf2out.h (dwarf2out_start_source_file): Add line number to
	parameters.

	* dwarf2out.c (dwarf2out_start_source_file): Add line number to
	parameters.
	Output debug_macinfo data for starting file if requested.
	(dwarf2out_end_source_file): Output debug_macinfo data for ending
	file if requested.
	(dwarf2out_define): Output debug_macinfo data for defining a macro
	if requested.
	(dwarf2out_undef): Output debug_macinfo data for undefining a
	macro if requested.
	(DEBUG_MACINFO_SECTION): New. DWARF2 macro info section name.
	(DEBUG_MACINFO_SECTION_LABEL): New. DWARF2 macro info section label.
	(macinfo_section_label): New. DWARF2 macro info section label.
	(dwarf2out_init): If we want macro info, output the start label
	for the section.
	(dwarf2out_finish): If we want macro info, add a DW_AT_macro_info
	attribute to the compilation unit die pointing to the macro info.

2001-07-04  Daniel Berlin  <dan@cgsoftware.com>

	* dwarf2out.c (new_loc_list): Move to inside #ifdef
	DWARF2_DEBUGGING_INFO.
	(add_loc_descr_to_loc_list): Ditto.
	(output_loc_list): Ditto.
	Also, fix thinko in curr not being initialized.
	(gen_internal_sym): Ditto.

Wed Jul  4 13:40:02 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* emit-rtl.c (replace_equiv_address): New function.
	* expr.h (replace_equiv_address): New declaration.
	* explow.c (validize_mem): Call it instead of change_address and
	also call if -fforce-addr and address is constant.
	* expr.c: Replace more calls to change_address with adjust_address
	and/or replace_equiv_address or to validize_mem.
	* function.c, regmove.c, config/alpha/alpha.c: Likewise.
	* config/arm/arm.md, config/clipper/clipper.md: Likewise.
	* config/dsp16xx/dsp16xx.md, config/fr30/fr30.c: Likewise.
	* config/i370/i370.md, config/i860/i860.md: Likewise.
	* config/i960/i960.md, config/mips/mips.c: Likewise.
	* config/mips/mips.md, config/pa/pa.md: Likewise.
	* config/pdp11/pdp11.md, config/rs6000/rs6000.c: Likewise.
	* config/rs6000/rs6000.md, config/sh/sh.md: Likewise.

2001-07-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* bitmap.c (bitmap_union_of_diff): Don't use BITMAP_ALLOCA.

	* bitmap.h (BITMAP_ALLOCA): Don't pass alloca as an argument to a
	function.

2001-07-04  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/include: New directory.
	* doc/fdl.texi: Move to doc/include/fdl.texi.
	* doc/texinfo.tex: Move to doc/include/texinfo.tex.
	* doc/include/funding.texi, doc/include/gpl.texi: New files.
	* doc/gcc.texi: Use funding.texi and gpl.texi.
	* Makefile.in ($(docdir)/cpp.info, $(docdir)/gcc.info,
	$(docdir)/cppinternals.info, cpp.dvi. gcc.dvi. cppinternals.dvi):
	Update dependencies and use -I $(docdir)/include.

2001-07-04  Anthony Green  <green@redhat.com>

	* config/v850/t-v850 (v850-c.o): Add missing dependencies.

2001-07-04  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* doc/install.texi (sparc64-*-*): Remove garbage.

Wed Jul  4 09:07:44 2001  Jan van Male  <jan.vanmale@fenk.wau.nl>

	* i386.c (ix86_expand_builtin, case IX86_BUILTIN_SETPS):
	Fix typo in last change to use adjust_address.

2001-07-04  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* doc/install.texi (Specific): Update information for *-*-solaris*.

Tue Jul  3 22:33:15 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* explow.c (plus_constant_wide): Reinitialize Y for restart.

2001-07-03  Stan Shebs  <shebs@apple.com>

	* config/darwin.h (SECTION_FUNCTION): Remove WAS_TEXT argument, remove
	case for flag_no_mach_text_sections.
	(EXTRA_SECTION_FUNCTIONS): Remove arg from uses of SECTION_FUNCTION.
	* config/darwin.c (flag_no_mach_text_sections): Remove.
	* config/darwin-protos.h (darwin_init_pragma): Remove decl.

Tue Jul  3 15:35:52 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* explow.c (plus_constant_wide, case PLUS): Call find_constant_term
	and avoid checking for constant as first operand.
	* recog.c (find_constant_term_loc): No longer static.
	(adj_offettable_operand): Delete.
	* rtl.h (adj_offsettable_operand): Delete declaration.
	(find_constant_term): Add declaration.
	* caller-save.c: Replace calls to adj_offsettable_operand with calls
	to adjust_address.
	* config/arm/arm.c, config/c4x/c4x.c: Likewise.
	* config/clipper/clipper.md, config/h8300/h8300.c: Likewise.
	* config/i386/i386.c, config/i386/i386.md: Likewise.
	* config/i860/i860.c, config/i960/i960.c: Likewise.
	* config/i960/i960.md, config/m68hc11/m68hc11.c: Likewise.
	* config/m68k/m68k.c, config/m68k/m68k.md: Likewise.
	* config/m88k/m88k.md, config/mcore/mcore.c: Likewise.
	* config/mips/mips.c, config/mips/mips.md: Likewise.
	* config/mn10200/mn10200.c, config/mn10300/mn10300.c: Likewise.
	* config/ns32k/ns32k.c, config/ns32k/ns32k.md: Likewise.
	* config/pa/pa.c, config/pdp11/pdp11.c: Likewise.
	* config/pdp11/pdp11.md, config/sh/sh.c, config/v850/v850.c: Likewise.
	* config/vax/vax.md, config/ns32k/ns32k.c: Likewise.
	* config/ns32k/ns32k.md: Likewise.

2001-07-03  Zack Weinberg  <zackw@stanford.edu>

	* rtl.c (copy_rtx): Handle 'T' format letter.
	* gensupport.c (collect_insn_data): Likewise.
	* print-rtl.c (print_rtx): Print 'T' slots like 's'.

2001-07-03  Nick Clifton  <nickc@cambridge.redhat.com>

	* doc/invoke.texi (Directory Options): Specifiy range for <N> in
	-B option.  Use 'dir' not 'foo' as example directory name.

2001-07-03  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* config/i386/sol2.h (ASM_PREFERRED_EH_DATA_FORMAT): Define.
	Fixes PRs bootstrap/3067, bootstrap/3249, bootstrap/3275.

2001-07-03  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/cppinternals.texi: Improve formatting and logical markup.

2001-07-03  Andreas Jaeger  <aj@suse.de>

	* Makefile.in (insn-recog.o): Add dependency on reload.h.

	* genrecog.c (write_header): Include reload.h for prototypes in
	insn-recog.c.

2001-07-03  Neil Booth  <neil@daikokuya.demon.co.uk>

config:
	* i386/cygwin.h (VALID_MACHINE_DECL_ATTRIBUTE,
	VALID_MACHINE_TYPE_ATTRIBUTE): Remove.
	* i386/i386-protos.h (i386_pe_valid_decl_attribute_p,
	i386_pe_valid_type_attribute_p): Add.
	* i386/i386.c (TARGET_INITIALIZER): Override for cygwin targets.
	* i386/winnt.c (i386_valid_decl_attribute_p): Return directly.

Mon Jul  2 21:52:19 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* explow.c (plus_constant_wide, case LO_SUM): New case.
	(plus_constant_for_output_wide): Delete.
	* rtl.h (plus_constant_for_output): Delete.
	* alias.c (canon_rtx, init_alias_analysis): Call plus_constant
	instead of plus_constant_for_output.
	* recog.c (offsettable_address_p, adj_offsettable_operand): Likewise.
	* config/darwin.c, config/arm/arm.c, config/m68k/m68k.c: Likewise.
	* config/m88k/m88k.c, config/mips/mips.c, config/pa/pa.c: Likewise.
	* config/rs6000/rs6000.c, config/sparc/sparc.c: Likewise.
	* config/sparc/sparc.md: Likewise.
	Convert some change_address calls to adjust_address.

2001-07-03  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/extend.texi, doc/gcc.texi, doc/invoke.texi, doc/md.texi,
	doc/rtl.texi, doc/tm.texi: Improve formatting.  Improve
	documentation of -std and -Wwrite-strings.

2001-07-02  Geoffrey Keating  <geoffk@redhat.com>

	* cse.c (canon_hash): Don't register registers in very small
	register classes, as extending their lifetime might cause
	reload to fail.

Mon Jul  2 23:14:00 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* flow.c (try_redirect_by_replacing_jump): Remove cc0 setter.

	* flow.c (forwarder_block_p): Fix for fallthru blocks.
	(try_redirect_by_replacing_jump): Update properly the count
	and frequency information.

Mon Jul  2 14:20:13 2001  Jeffrey A Law  (law@cygnus.com)

	* toplev.c (dump_file_index): Move SSA dumps just after first
	jump dump.
	(dump_file): Corresponding changes.
	(rest_of_compilation): Move SSA path to just after the first
	jump pass.
	* doc/gcc.texi (Passes): Update due to movement of SSA path.
	* doc/invoke.texi: Update dump file #s as they were completely
	out of date with reality.

2001-07-02  Geoffrey Keating  <geoffk@redhat.com>

	* doc/tm.texi (Frame Layout): Document STACK_PUSH_CODE.

	* expr.c (emit_move_insn_1): Deal with non-default
	STACK_PUSH_CODE.

	* expr.c (emit_single_push_insn): Fix warning.

2001-07-02  Toshiyasu Morita  <toshiyasu.morita@hsa.hitachi.com>

	* expr.c (emit_move_insn_1): Avoid modifying
	cfun->expr->x_stack_pointer when PUSH_ROUNDING is defined.

Mon Jul  2 15:33:31 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* emit-rtl.c (adjust_address): New function.
	* expr.h (adjust_address): Add declaration.
	* builtins.c: Replace some calls to change_address with calls to it
	or to validize_mem.
	* caller-save.c, dwarf2out.c, except.c, expmed.c, expr.c: Likewise.
	* function.c, config/a29k/a29k.md, config/alpha/alpha.c: Likewise.
	* config/arm/arm.c, config/convex/convex.c: Likewise.
	* config/dsp16xx/dsp16xx.md, config/fr30/fr30.c: Likewise.
	* config/i386/i386.c, config/i386/i386.md: Likewise.
	* config/ia64/ia64.c, config/ia64/ia64.md: Likewise.
	* config/m32r/m32r.c, config/m68k/m68k.md: Likewise.
	* config/m88k/m88k.c, config/mips/mips.md: Likewise.
	* config/ns32k/ns32k.c, config/rs6000/rs6000.c: Likewise.
	* config/sh/sh.c, config/sparc/sparc.md: Likewise.

2001-07-02  Jim Wilson  <wilson@redhat.com>

	* config/ia64/ia64.h: Delete obsolete lib1funcs.asm comment.

2001-07-02  Steve Ellcey  <sje@cup.hp.com>

        * config/ia64/t-ia64: Change LIB1ASMFUNCS to use single underscore.
        * config/ia64/lib1funcs.asm: Change macro names to match t-ia64.

2001-07-02  Zack Weinberg  <zackw@stanford.edu>

	* cppinit.c (lang_defaults): New table.
	(set_lang): Just read from lang_defaults into the live options
	structure.

2001-07-02  Zack Weinberg  <zackw@stanford.edu>

	* Makefile.in (doc): Depend on $(GENERATED_MANPAGES).
	* doc/.cvsignore: Add gcc.1, cpp.1, gcov.1.
	* doc/gcc.1, doc/cpp.1, doc/gcov.1: Removed.

2001-07-02  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* doc/install.texi: Various spelling and markup fixes.
	(Installing GCC): Component specific installation instructions are
	gone.
	Fix reference.
	Warn about removing old install dir in the presence of shared libs.
	(Configuration): Invoke with options target to match configure
	--help.
	Consistently refer to gas, gld pathnames.
	Invert --enable-multilib documentation.
	Remove references to old compiler versions.

Mon Jul  2 12:50:51 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* flow.c (try_simplify_condjump): Fix typo in updating fallthru flags.

2001-07-02  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* doc/install.texi (Specific, mips*-sgi-irix4): Split from IRIX 5
	section.
	(Specific, mips*-sgi-irix5): Note IDO download.
	Reworded MIPS C hints.
	Use GNU as instead of GAS.
	Markup fixes.
	Removed SGI Freeware reference, IRIX 6 only.
	(Specific, mips*-sgi-irix6): Removed ranlib caveats, obsolete.
	Note N64 library requirement/workaround.
	Update O32 hints.
	Complete list of structure passing bug victims.

2001-07-02  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* doc/install.texi: Remove CVS Id.

2001-07-02  Andreas Jaeger  <aj@suse.de>

	* ssa-dce.c (note_inherently_necessary_set): Add unused attribute.
	(find_inherently_necessary): Remove unused variable.

2001-07-02  Nathan Sidwell  <nathan@codesourcery.com>

	* c-common.h (TDI_inlined): New ast dump phase.
	(dump_flag_name): New function.
	* c-dump.c (dump_files): Add inlined phase.
	(dump_flag_name): Define.
	* doc/invoke.texi (-fdump-ast-inlined): Document.

Mon Jul  2 06:29:36 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* stor-layout.c (layout_decl): Revert change to handling of alignment
	in packed types.

Sun Jul  1 11:53:52 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* c-common.c (decl_attributes, case A_MODE): Don't call layout_decl
	for FIELD_DECL.

2001-07-01  Geoffrey Keating  <geoffk@redhat.com>

	* doc/tm.texi (FUNCTION_ARG): Document that the last call
	is special.

2001-07-01  Nathan Sidwell  <nathan@codesourcery.com>

	* tlink.c (recompile_files): Remove COMPILER_PATH and
	LIBRARY_PATH from the environment.

2001-07-01  Zack Weinberg  <zackw@stanford.edu>

	* c-common.h (enum rid): Add RID_FIRST_AT, RID_LAST_AT,
	RID_LAST_PQ.  Move RID_FIRST_PQ down with the other FIRST/LAST
	enumerators.
	(OBJC_IS_AT_KEYWORD, OBJC_IS_PQ_KEYWORD): New macros.

	* c-parse.in (OBJC_STRING): Kill.
	(objc_string): Decompose to [objc_string] '@' STRING.
	(reswords): Take the leading '@' off all the Objective C keywords.
	(objc_rid_sans_at): Kill.
	(init_reswords): Don't initialize it.
	(yylexname): Use OBJC_IS_AT_KEYWORD and OBJC_IS_PQ_KEYWORD.
	(_yylex): Kill reconsider label.  Look ahead one token after
	an '@'; if we get an identifier, check whether it's an
	Objective C @-keyword.  If so, return the keyword.  Otherwise,
	put back the token and return the '@' as a terminal.

	* cpplib.c (lex_macro_node): Remove unnecessary check for
	leading '@' on identifier.  Clarify control flow and commentary.

Sun Jul  1 11:53:52 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* cse.c (new_label_ref): Variable deleted.
	(insert): Remove set of new_label_ref.
	(check_for_label_ref): New function.
	(cse_basic_block): Don't check new_label_ref; call check_for_label_ref.

See ChangeLog.5 for earlier changes.

From-SVN: r43861
2001-07-09 07:20:51 -04:00
Andrew Haley
5154e79ae4 optabs.c (emit_libcall_block): When using non-call exceptions, don't mark libcalls never throwing.
2001-06-14  Andrew Haley  <aph@cambridge.redhat.com>

        * optabs.c (emit_libcall_block): When using non-call exceptions,
        don't mark libcalls never throwing.

From-SVN: r43504
2001-06-22 16:42:33 +00:00
Jan Hubicka
76791f3d95 * optabs.c (expand_twoval_binop): Avoid undefined behaviour.
From-SVN: r43403
2001-06-15 17:44:56 +00:00
Jan Hubicka
8c9864f32d combine.c (gen_binary): Use swap_commutative_operands_p
* combine.c (gen_binary): Use swap_commutative_operands_p
        (simplify_comparison): Likewise.
        * expmed.c (emit_store_flag): Likewise.
        * expr.c (compare_from_rtx): Likewise.
        (do_compare_rtx_and_jump): Likewise.
        * optabs.c (emit_cmp_and_jump_insn): Revert last patch; abort
        if not emitting a branch and operands want swapping.

From-SVN: r42433
2001-05-22 00:40:26 -07:00
Richard Henderson
9f4ccc25e3 optabs.c (emit_cmp_and_jump_insns): Don't swap commutative operands unless the operation is commutative.
* optabs.c (emit_cmp_and_jump_insns): Don't swap commutative
        operands unless the operation is commutative.

From-SVN: r42366
2001-05-20 18:33:53 -07:00
Jan Hubicka
e5c56fd9bf integrate.c (copy_rtx_and_substitute): Use simplify_gen_subreg.
* integrate.c (copy_rtx_and_substitute): Use simplify_gen_subreg.
	(simplify_subreg): Handle complex types represented as CONCAT.

	* recog.c (validate_replace_rtx_1): Properly canonicalize expression
	* rtl.h (swap_commutative_operands_p): Declare.
	* rtlanal.c (swap_commutative_operands_p): New.
	(operand_preference): New static function.

	* combine.c (combine_simplify_rtx): Use swap_commutative_operands_p.
	(gen_binary): Likewise.
	* optabs.c (emit_cmp_and_jump_insns, emit_conditional_move): Likewise.
	* simplify-rtx.c (simplify_gen_binary,
	simplify_gen_relational): Likewise.

From-SVN: r42224
2001-05-17 21:21:21 +00:00
Mark Mitchell
897aa57fd0 * optabs.c (emit_libcall_block): Don't mark calls as CONST_CALL_P.
From-SVN: r41963
2001-05-11 15:28:40 +00:00
Zack Weinberg
7d25bcce9e config.gcc (i[34567]86-*-sco3.2v4*, [...]): Delete stanzas.
* config.gcc (i[34567]86-*-sco3.2v4*, i[34567]86-*-sco*):
	Delete stanzas.
	* config/i386/sco.h, config/i386/sco4.h, config/i386/scodbx.h,
	config/i386/sco4dbx.h, config/i386/x-sco4: Delete file.

	* optabs.c: Delete #ifdef BROKEN_LDEXP block.

	* POTFILES.in: Remove config/i386/sco.h, config/i386/sco4.h,
	config/i386/sco4dbx.h, and config/i386/scodbx.h.

From-SVN: r41912
2001-05-08 06:26:49 +00:00
Alexandre Oliva
3c04502e2b optabs.c (expand_binop): Sign-extend xop0 and xop1 from the widest mode in narrowing and widening operations.
* optabs.c (expand_binop): Sign-extend xop0 and xop1 from the
widest mode in narrowing and widening operations.

From-SVN: r41885
2001-05-06 19:47:15 +00:00
Loren J. Rittle
b215b52e59 expr.h (enum libfunc_index): Add LTI_memmove.
* expr.h (enum libfunc_index): Add LTI_memmove.
        (memmove_libfunc): Define macro.
        * optabs.c (init_optabs): Initialize memmove_libfunc.
        * expr.c (expand_assignment): Use memmove_libfunc instead of
        memcpy_libfunc.

From-SVN: r41345
2001-04-13 21:39:22 -06:00
Alexandre Oliva
691073076b expmed.c (store_bit_field): Truncate CONST_INTs.
* expmed.c (store_bit_field): Truncate CONST_INTs.
(expand_mult_highpart, expand_divmod): Likewise.
* expr.c (convert_modes, store_field): Likewise.
* integrate.c (expand_inline_function): Use promote_mode() to
determine whether to convert_modes() an argument as signed
or unsigned.
* optabs.c (expand_binop): Get CONST_INT operands
sign-extended for their appropriate modes.
* stmt.c (emit_case_nodes): Convert node values to the
appropriate mode.
(expand_end_case): Convert minval and range to the appropriate
mode.
* unroll.c (loop_iterations): Truncate abs_diff to the mode of
the iteration variable.
* varasm.c (immed_double_const): Don't require words to be
narrower than host wide ints to properly sign-extend
CONST_INTs.

From-SVN: r41285
2001-04-12 03:41:36 +00:00
Richard Henderson
52a11cbfcf IA-64 ABI Exception Handling.
From-SVN: r40924
2001-03-28 03:04:51 -08:00
Richard Henderson
5e7f4a4ab9 mkconfig.sh: Include insn-flags.h.
* mkconfig.sh: Include insn-flags.h.
	* Makefile.in (CONFIG_H): Include insn-flags.h.
	(lots of objects): Remove insn-codes.h and insn-flags.h.

	* alias.c, bb-reorder.c, calls.c, do-loop.c, flow.c, haifa-sched.c,
	integrate.c, jump.c, loop.c, predict.c, profile.c, reg-stack.c,
	regmove.c, reorg.c, a29k/a29k.c, alpha/alpha.c, arc/arc.c, arm/arm.c,
	avr/avr.c, clipper/clipper.c, convex/convex.c, d30v/d30v.c,
	dsp16xx/dsp16xx.c, fr30/fr30.c, h8300/h8300.c, i370/i370.c,
	i386/i386.c, i860/i860.c, ia64/ia64.c, m32r/m32r.c, m68hc11/m68hc11.c,
	m68k/m68k.c, m88k/m88k.c, mcore/mcore.c, mn10200/mn10200.c,
	mn10300/mn10300.c, ns32k/ns32k.c, pa/pa.c, pdp11/pdp11.c,
	pj/pj.c, romp/romp.c, rs6000/rs6000.c, sh/sh.c, sparc/sparc.c,
	v850/v850.c, vax/vax.c:
	Don't include insn-flags.h.

	* diagnostic.c, expr.h, reload.c, toplev.c:
	Don't include insn-codes.h.

	* builtins.c, combine.c, except.c, explow.c, expmed.c, expr.c,
	final.c, function.c, optabs.c, recog.c, reload1.c, stmt.c,
	c4x/c4x.c, i960/i960.c, mips/mips.c:
	Don't include insn-codes.h or insn-flags.h.

	* genemit.c, genopinit.c, genoutput.c: Don't include insn-codes.h
	or insn-flags.h in the generated code.
	* genflags.c (gen_proto): Use "struct rtx_def *" instead of "rtx".
	(main): Forward declare struct rtx_def.

From-SVN: r40754
2001-03-22 10:48:52 -08:00
Brad Lucier
de6c597958 Brad's -ffast-math breakup.
From-SVN: r40300
2001-03-07 11:29:41 -08:00
Lars Brinkhoff
e1078cfca6 optabs.c (expand_abs): Remove reference to HAVE_contitional_arithmetic.
* optabs.c (expand_abs): Remove reference to
        HAVE_contitional_arithmetic.
        * combine.c (simplify_set): Likewise.

From-SVN: r39844
2001-02-18 12:24:10 -08:00
Kaveh R. Ghazi
c913b6f18e configure.in: Arrange to include defaults.h in [ht]config.h/tm.h.
* configure.in: Arrange to include defaults.h in [ht]config.h/tm.h.

	* Makefile.in: Remove all dependencies on defaults.h.
	* builtins.c: Don't include defaults.h.
	* c-common.c: Likewise.
	* c-decl.c: Likewise.
	* c-pragma.c: Likewise.
	* c-typeck.c: Likewise.
	* combine.c: Likewise.
	* i386.c: Likewise.
	* frame-ia64.c: Likewise.
	* cppexp.c: Likewise.
	* crtstuff.c: Likewise.
	* dbxout.c: Likewise.
	* dwarf2out.c: Likewise.
	* dwarfout.c: Likewise.
	* emit-rtl.c: Likewise.
	* except.c: Likewise.
	* expr.c: Likewise.
	* final.c: Likewise.
	* frame-dwarf2.c: Likewise.
	* libgcc2.c: Likewise.
	* optabs.c: Likewise.
	* profile.c: Likewise.
	* sdbout.c: Likewise.
	* toplev.c: Likewise.
	* tradcif.y: Likewise.
	* tree.c: Likewise.
	* varasm.c: Likewise.

ch:
	* Makefile.in: Remove all dependencies on defaults.h.
	* decl.c: Don't include defaults.h.
	* timing.c: Likewise.

cp:
	* Make-lang.in: Remove all dependencies on defaults.h.
	* call.c: Don't include defaults.h.
	* decl.c: Likewise.
	* decl2.c: Likewise.
	* except.c: Likewise.
	* pt.c: Likewise.
	* rtti.c: Likewise.
	* tree.c: Likewise.
	* typeck.c: Likewise.

f:
	* Make-lang.in: Remove all dependencies on defaults.h.
	* com.c: Don't include defaults.h.

java:
	* Make-lang.in: Remove all dependencies on defaults.h.
	* decl.c: Don't include defaults.h.
	* expr.c: Likewise.
	* parse.y: Likewise.

From-SVN: r39308
2001-01-28 01:50:22 +00:00
Zack Weinberg
520a57c81c stringpool.c: New file.
* stringpool.c: New file.
	* ggc-common.c (ggc_mark_string_ptr, ggc_add_string_root): Delete.
	(ggc_alloc_string): Now in stringpool.o.
	* ggc-page.c, ggc-simple.c: Do not define or allocate empty_string.
	* ggc.h: Delete prototype of ggc_add_string_root.  #define
	ggc_add_string_root and ggc_mark_string to nothing.  Prototype
	init_stringpool and stringpool_statistics.
	(ggc_alloc_string): Returns a const char *.
	* tree.c (hash_table, do_identifier_warnings): Delete.
	(init_obstacks): Don't initialize the identifier hash table.
	(get_identifier, maybe_get_identifier, start_identifier_warnings,
	set_identifier_size): Now in stringpool.c.
	* tree.h (struct tree_string): Constify pointer field.
	(approx_sqrt): Prototype.

	* Makefile.in (stringpool.o): Add rule, mention in OBJS.

	* toplev.c (approx_sqrt): New function.
	(compile_file): Call stringpool_statistics if mem_report is on.
	(main): Call init_stringpool.

	* builtins.c (c_strlen), c-decl.c (finish_decl), c-lex.c
	(process_directive), c-typeck.c (constructor_asmspec, struct
	initializer_stack, start_init), except.c (create_rethrow_ref),
	stmt.c (digit_strings), toplev.c (decode_f_option), tree.c
	(built_in_filename), varasm,c (in_named_name,
	assemble_static_space, struct constant_descriptor, struct
	deferred_string, struct pool_constant, force_const_mem),
	i386.c (pic_label_name, global_offset_table_name), rs6000.c
	(rs6000_emit_prologue, rs6000_emit_epilogue) : Constify a char *.

	* c-common.c (combine_strings): Combine strings in scratch
	buffer, then pass to build_string.
	* optabs.c (init_libfuncs), profile.c (init_edge_profiler,
	output_func_start_profiler), stmt.c (init_stmt), alpha.c
	(alpha_need_linkage), arm.c (arm_encode_call_attribute),
	i386.c (load_pic_register), ia64.c (ia64_encode_section_info),
	rs6000.c (rs6000_encode_section_info): Create string in
	scratch buffer, then pass to ggc_alloc_string.

	* stmt.c (expand_asm_operands): If we must adjust the
	constraint strings, do so by creating a new one, not by
	modifying the old one in place.  Constify some char *s.
	* config/pa/pa.c (hppa_encode_label): Drop unnecessary second
	argument.  Create string in scratch buffer, then pass to
	ggc_alloc_string.
	* config/pa/pa-protos.h: Update prototype.
	* config/pa/elf.h, config/pa/pa.h, config/pa/som.h:
	hppa_encode_label takes only one argument.

	* c-parse.in (if_prefix): Find the filename and line number at
	$-2 and $-1 respectively.
	* diagnostic.c (error_recursion): Add missing newline, use
	fputs, translate string.

cp:
	* lex.c (struct impl_files, internal_filename): Constify a char *.
java:
	* jcf-parse.c (get_constant), parse.y (do_merge_string_cste):
	Create string in scratch buffer, then pass to build_string.

From-SVN: r37514
2000-11-17 06:05:31 +00:00
Chandrakala Chavva
10e927efe9 optabs.c (expand_complex_ab): Use overflow-trapping optabs for signed types if flag_trapv.
* optabs.c (expand_complex_ab):: Use overflow-trapping optabs for
signed types if flag_trapv.

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

From-SVN: r36856
2000-10-13 06:26:46 +00:00
Bernd Schmidt
cf67d23198 Set CONST_CALL_P for libcalls
From-SVN: r36486
2000-09-18 09:46:51 +00:00
Bernd Schmidt
ebb1b59ac0 Bring back equal forms for libcalls
From-SVN: r36469
2000-09-17 12:45:51 +00:00