Commit Graph

492 Commits

Author SHA1 Message Date
David Mosberger b1eae41634 re PR target/18987 ([ia64] Extra '.restore sp' in tail call)
Patch from David Mosberger to fix -fno-omit-frame-pointer bug.
PR target/18987
* config/ia64/ia64.c (process_set): For alloc insn, only call
process_epilogue is !frame_pointer_needed.

From-SVN: r93174
2005-01-10 19:44:10 -08:00
Jan Beulich 826eb7eda5 ia64.c (ia64_in_small_data_p): Also handle the section names resulting from...
gcc/
2005-01-10  Jan Beulich  <jbeulich@novell.com>

	* config/ia64/ia64.c (ia64_in_small_data_p): Also handle the section
	names resulting from -ffunction-sections/-fdata-sections and linkonce
	ones.
	* varasm.c (default_section_type_flags_1): Also set SECTION_SMALL
	based on the section name. Rearrange the section name comparison logic
	slightly so that each section name is compared against at most once.

From-SVN: r93134
2005-01-10 07:42:49 +00:00
Richard Henderson 051d824588 ia64.c (rtx_needs_barrier): Handle CONST_VECTOR and VEC_SELECT.
* config/ia64/ia64.c (rtx_needs_barrier): Handle CONST_VECTOR
        and VEC_SELECT.
        * config/ia64/vect.md (mulv8qi3): Re-implement with mix_[rl].
        (mulv4hi3): Set itanium_class mmmul.
        (fpack_sfxf, fpack_xfsf, fpack_xfxf): Remove.

From-SVN: r92987
2005-01-05 22:18:15 -08:00
Richard Henderson f61134e88b ia64.c (TARGET_VECTOR_MODE_SUPPORTED_P): New.
* config/ia64/ia64.c (TARGET_VECTOR_MODE_SUPPORTED_P): New.
        (ia64_const_ok_for_letter_p): New.
        (ia64_const_double_ok_for_letter_p): New.
        (ia64_extra_constraint): New.
        (ia64_expand_vecint_compare): New.
        (ia64_expand_vcondu_v2si): New.
        (ia64_expand_vecint_cmov): New.
        (ia64_expand_vecint_minmax): New.
        (ia64_print_operand): Add 'v'.
        (ia64_preferred_reload_class): New.
        (ia64_vector_mode_supported_p): New.
        * config/ia64/ia64.h (UNITS_PER_SIMD_WORD): New.
        (PREFERRED_RELOAD_CLASS): Move to function.
        (CONST_OK_FOR_LETTER_P): Move to function.
        (CONST_DOUBLE_OK_FOR_LETTER_P): Move to function.
        (CONSTRAINT_OK_FOR_Q, CONSTRAINT_OK_FOR_R): Remove.
        (CONSTRAINT_OK_FOR_S, CONSTRAINT_OK_FOR_T): Remove.
        (EXTRA_CONSTRAINT): Move to function.
        * config/ia64/ia64.md: Include vect.md.
        (itanium_class): Add mmalua.
        (type): Handle it.
        * config/ia64/itanium1.md (1_mmalua): New.  Add it to bypasses.
        (1b_mmalua): New.
        * config/ia64/itanium2.md (2_mmalua, 2b_mmalua): Similarly.
        * config/ia64/predicates.md (gr_reg_or_0_operand): Accept any
        CONST0_RTX.
        (const_int_2bit_operand): New.
        (fr_reg_or_0_operand): New.
        * config/ia64/ia64-modes.def: Add vector modes.
        * config/ia64/ia64-protos.h: Update.
        * config/ia64/vect.md: New file.

        * gcc.dg/vect/vect.exp: Enable for ia64.
        * lib/target-supports.exp (check_effective_target_vect_int): Likewise.
        (check_effective_target_vect_float): Likewise.
        (check_effective_target_vect_no_align): Likewise.
        * gcc.dg/vect/vect-30.c: XFAIL for vect_no_align.
        * gcc.dg/vect/vect-8.c: Likewise.

From-SVN: r92862
2005-01-03 11:59:13 -08:00
Richard Henderson 3d6a9acd51 ia64.c (hfa_element_mode): Return false for zero-sized top-level aggregates.
* config/ia64/ia64.c (hfa_element_mode): Return false for
        zero-sized top-level aggregates.

From-SVN: r92741
2004-12-30 12:47:55 -08:00
Richard Henderson 8c5cacfdca ia64.c (ia64_function_value): Use PARALLEL for aggregates with XF/XCmode.
* config/ia64/ia64.c (ia64_function_value): Use PARALLEL for
        aggregates with XF/XCmode.

From-SVN: r92728
2004-12-30 00:59:15 -08:00
Richard Henderson 78a52f1158 target.h (targetm.calls.arg_partial_bytes): New.
* target.h (targetm.calls.arg_partial_bytes): New.
	* target-def.h (TARGET_ARG_PARTIAL_BYTES): New.
	* calls.c (store_unaligned_arguments_into_pseudos): Update for
	partial in bytes.
	(load_register_parameters): Likewise.
	(store_one_arg): Likewise.
	(initialize_argument_information): Use targetm.calls.arg_partial_bytes.
	(emit_library_call_value_1): Likewise.
	* expr.c (block_move_libcall_safe_for_call_parm): Likewise.
	(emit_push_insn): Update for partial in bytes.
	* expr.h (FUNCTION_ARG_PARTIAL_NREGS): Remove.
	* function.c (assign_parm_find_entry_rtl): Use
	targetm.calls.arg_partial_bytes.  Update for result in bytes.
	(locate_and_pad_parm): Update for partial in bytes.
	* system.h (FUNCTION_ARG_PARTIAL_NREGS): Poison.
	* targhooks.c (hook_int_CUMULATIVE_ARGS_mode_tree_bool_0): New.
	* targhooks.h (hook_int_CUMULATIVE_ARGS_mode_tree_bool_0): Declare.
	* doc/tm.texi (TARGET_ARG_PARTIAL_BYTES): Rename and update from
	FUNCTION_ARG_PARTIAL_NREGS.

	* config/arc/arc.h, config/c4x/c4x.h, config/i386/i386.h,
	config/i860/i860.h, config/m68hc11/m68hc11.h, config/m68k/m68k.h,
	config/pdp11/pdp11.h, config/s390/s390.h, config/stormy16/stormy16.h,
	config/xtensa/xtensa.h (FUNCTION_ARG_PARTIAL_NREGS): Remove.

	* config/alpha/alpha.c (alpha_arg_partial_bytes): New.
	(TARGET_ARG_PARTIAL_BYTES): New.
	* config/alpha/alpha.h, config/alpha/unicosmk.h,
	config/alpha/vms.h (FUNCTION_ARG_PARTIAL_NREGS): Remove.

	* config/arm/arm.h (FUNCTION_ARG_PARTIAL_NREGS): Move ...
	* config/arm/arm.c (arm_arg_partial_bytes): ... here.
	(TARGET_ARG_PARTIAL_BYTES): New.

	* config/cris/cris.h (FUNCTION_ARG_PARTIAL_NREGS): Move ...
	* config/cris/cris.c (cris_arg_partial_bytes): ... here.
	(TARGET_ARG_PARTIAL_BYTES): New.

	* config/fr30/fr30.h (FUNCTION_ARG_PARTIAL_NREGS): Remove.
	* config/fr30/fr30.c (fr30_arg_partial_bytes): Rename from
	fr30_function_arg_partial_nregs.  Adjust to return bytes.
	(TARGET_ARG_PARTIAL_BYTES): New.
	* config/fr30/fr30-protos.h: Update.

	* config/frv/frv.h (FUNCTION_ARG_PARTIAL_NREGS): Remove.
	* config/frv/frv.c (frv_arg_partial_bytes): Rename from
	frv_function_arg_partial_nregs.  Adjust to return bytes.
	(TARGET_ARG_PARTIAL_BYTES): New.
	* config/frv/frv-protos.h: Update.

	* config/ia64/ia64.h (FUNCTION_ARG_PARTIAL_NREGS): Remove.
	* config/ia64/ia64.c (ia64_arg_partial_bytes): Rename from
	ia64_function_arg_partial_nregs.  Adjust to return bytes.
	(TARGET_ARG_PARTIAL_BYTES): New.
	* config/ia64/ia64-protos.h: Update.

	* config/iq2000/iq2000.h (FUNCTION_ARG_PARTIAL_NREGS): Remove.
	* config/iq2000/iq2000.c (iq2000_arg_partial_bytes): Rename from
	function_arg_partial_nregs.  Adjust to return bytes.
	(TARGET_ARG_PARTIAL_BYTES): New.
	* config/iq2000/iq2000-protos.h: Update.

	* config/m32r/m32r.h (FUNCTION_ARG_PARTIAL_NREGS): Remove.
	* config/m32r/m32r.c (m32r_arg_partial_bytes): Rename from
	function_arg_partial_nregs.  Adjust to return bytes.
	(TARGET_ARG_PARTIAL_BYTES): New.
	* config/m32r/m32r-protos.h: Update.

	* config/mcore/mcore.h (FUNCTION_ARG_PARTIAL_NREGS): Remove.
	* config/mcore/mcore.c (mcore_arg_partial_bytes): Rename from
	mcore_function_arg_partial_nregs.  Adjust to return bytes.
        (TARGET_ARG_PARTIAL_BYTES): New.
	* config/mcore/mcore-protos.h: Update.

	* config/mips/mips.h (FUNCTION_ARG_PARTIAL_NREGS): Remove.
	* config/mips/mips.c (mips_arg_partial_bytes): Rename from
	function_arg_partial_nregs.  Adjust to return bytes.
	(TARGET_ARG_PARTIAL_BYTES): New.
	* config/mips/mips-protos.h: Update.

	* config/mn10300/mn10300.h (FUNCTION_ARG_PARTIAL_NREGS): Remove.
	* config/mn10300/mn10300.c (mn10300_arg_partial_bytes): Rename from
	function_arg_partial_nregs.  Adjust to return bytes.
	(TARGET_ARG_PARTIAL_BYTES): New.
	* config/mn10300/mn10300-protos.h: Update.

	* config/ns32k/ns32k.h (FUNCTION_ARG_PARTIAL_NREGS): Move ...
	* config/ns32k/ns32k.c (ns32k_arg_partial_bytes): ... here.
	(TARGET_ARG_PARTIAL_BYTES): New.

	* config/pa/pa.h (FUNCTION_ARG_PARTIAL_NREGS): Remove.
	* config/pa/pa.c (pa_arg_partial_bytes): Rename from
	function_arg_partial_nregs.  Handle 32-bit.  Adjust to return bytes.
	(TARGET_ARG_PARTIAL_BYTES): New.
	* config/pa/pa-protos.h: Update.

	* config/rs6000/rs6000.h (FUNCTION_ARG_PARTIAL_NREGS): Remove.
	* config/rs6000/rs6000.c (rs6000_arg_partial_bytes): Rename from
	function_arg_partial_nregs.  Adjust to return bytes.
	(TARGET_ARG_PARTIAL_BYTES): New.
	* config/rs6000/rs6000-protos.h: Update.

	* config/sh/sh.h (FUNCTION_ARG_PARTIAL_NREGS): Move ...
	* config/sh/sh.c (sh_arg_partial_bytes): ... here.
	(TARGET_ARG_PARTIAL_BYTES): New.

	* config/sparc/sparc.h (FUNCTION_ARG_PARTIAL_NREGS): Remove.
	* config/sparc/sparc.c (sparc_arg_partial_bytes): Rename from
	function_arg_partial_nregs.  Adjust to return bytes.
        (TARGET_ARG_PARTIAL_BYTES): New.
	* config/sparc/sparc-protos.h: Update.

	* config/v850/v850.h (FUNCTION_ARG_PARTIAL_NREGS): Remove.
	* config/v850/v850.c (v850_arg_partial_bytes): Rename from
        function_arg_partial_nregs.  Adjust to return bytes.
        (TARGET_ARG_PARTIAL_BYTES): New.
	* config/v850/v850-protos.h: Update.

From-SVN: r92726
2004-12-29 19:08:18 -08:00
Jason Merrill 445cf5eb0d Add memory barriers to the double-checked locking used for static initialization.
libstdc++:
        Add memory barriers to the double-checked locking used for static
        initialization.
        * libsupc++/guard.cc (__test_and_acquire): Define default.
        (_GLIBCXX_GUARD_TEST_AND_ACQUIRE, __set_and_release)
        (_GLIBCXX_GUARD_SET_AND_RELEASE): Likewise.
        (recursion_push, recursion_pop): New abstraction functions.
        (__cxa_guard_acquire): Use _GLIBCXX_GUARD_TEST_AND_ACQUIRE.
        (__cxa_guard_release): Use _GLIBCXX_GUARD_SET_AND_RELEASE.
        * config/cpu/generic/cxxabi_tweaks.h (_GLIBCXX_GUARD_TEST): Rename
        from _GLIBCXX_GUARD_ACQUIRE and reverse sense.
        (_GLIBCXX_GUARD_SET): Rename from _GLIBCXX_GUARD_RELEASE.
        * config/cpu/arm/cxxabi_tweaks.h: Likewise.
        * config/cpu/alpha/atomic_word.h (_GLIBCXX_READ_MEM_BARRIER)
        (_GLIBCXX_WRITE_MEM_BARRIER): Define.
        * config/cpu/powerpc/atomic_word.h: Likewise.
        * config/cpu/sparc/atomic_word.h: Likewise.
        * config/cpu/generic/atomic_word.h: Define them, commented out.
        * include/bits/atomicity.h: Define defaults.
        * config/cpu/ia64/atomic_word.h (__test_and_acquire)
        (__set_and_release): New inlines.
        (_GLIBCXX_GUARD_TEST_AND_ACQUIRE): Define.
        (_GLIBCXX_GUARD_SET_AND_RELEASE): Define.

        * libsupc++/guard.cc (acquire_1): Use __builtin_trap instead of
        abort();

gcc:
        * doc/tm.texi (TARGET_RELAXED_ORDERING): Document.
        * target.h (struct gcc_target): Add relaxed_ordering field.
        * target-def.h (TARGET_RELAXED_ORDERING): Define default.
        (TARGET_INITIALIZER): Add it.
        * config/alpha/alpha.c (TARGET_RELAXED_ORDERING): Define.
        * config/ia64/ia64.c (TARGET_RELAXED_ORDERING): Define.
        * config/rs6000/rs6000.c (TARGET_RELAXED_ORDERING): Define.
        * config/sparc/sparc.c (TARGET_RELAXED_ORDERING): Define.
        * cp/decl.c (expand_static_init): Don't use shortcut if
        targetm.relaxed_ordering.

From-SVN: r92659
2004-12-27 23:36:54 -05:00
Nathan Sidwell 08f2586c92 tree.def (SET_TYPE): Remove.
* tree.def (SET_TYPE): Remove.
	(CONSTRUCTOR): Update description.
	* builtins.c (type_to_class) Remove SET_TYPE case.
	* dbxout.c (dbxout_type): Likewise.
	* dwarf2out.c (is_base_type): Likewise.
	(gen_set_type_die): Remove.
	(gen_type_die): Remove SET_TYPE case.
	* expr.c (count_type_elements): Likewise.
	(mostly_zeroes_p): Likewise.
	(store_constructor): Likewise.
	* print_tree.c (print_node): Likewise.
	* stor-layout.c (layout_type): Likewise.
	* tree-browser.c (browse_tree): Likewise.
	* tree-inline.c (remap_type): Likewise.
	* tree-pretty-print.c (dump_generic_node): Likewise.
	* tree.c (type_contains_plaeholder_1, type_hash_eq,
	variably_modified_type_p, initializer_zerop): Likewise.
	* tree.h (SET_OR_ARRAY_CHECK): Remove.
	(AGGREGATE_TYPE_P): Remove SET_TYPE check.
	(TYPE_DOMAIN): Use ARRAY_TYPE_CHECK.
	* typeclass.h (enum type_class): Remove set_type_class.
	* varasm.c (const_hash_1): Remove SET_TYPE case.
	(compare_constant, copy_constant, output_constant): Likewise.
	* config/i386/i386.c (classify_argument): Likewise.
	* config/ia64/ia64.c (hfa_element_mode): Likewise.
	* config/sparc/sparc.c (sparc_type_code): Likewise.

	* ada/decl.c (gnat_substitute_in_type): Remove SET_TYPE case.

From-SVN: r91931
2004-12-09 10:54:50 +00:00
David Mosberger 1b79dc38dd re PR target/18443 (#pragma pack(1) breaks function pointer initialization)
PR target/18443
        * config/ia64/ia64.c (ia64_assemble_integer): Add support for
        emitting unaligned pointer-sized integers.

From-SVN: r91842
2004-12-07 16:20:49 -08:00
Joseph Myers 9e637a2679 builtins.c, [...]: Avoid "`" as left quote, using "'" or %q, %< and %> as appropriate.
* builtins.c, c-common.c, c-decl.c, c-format.c, c-format.h,
	c-parse.in, c-pch.c, c-pragma.c, collect2.c, final.c, gcc.c,
	gcov.c, opts.c, pretty-print.h, protoize.c, reg-stack.c, rtl.c,
	tlink.c, config/alpha/alpha.c, config/arc/arc.c, config/arm/arm.c,
	config/avr/avr.c, config/c4x/c4x.c, config/darwin.c,
	config/frv/frv.c, config/h8300/h8300.c, config/i386/i386.c,
	config/i386/winnt.c, config/ia64/ia64.c, config/ip2k/ip2k.c,
	config/iq2000/iq2000.c, config/m32r/m32r.c,
	config/m68hc11/m68hc11.c, config/m68k/m68k.c, config/m68k/m68k.h,
	config/mcore/mcore.c, config/mips/mips.c, config/mmix/mmix.c,
	config/ns32k/ns32k.c, config/rs6000/host-darwin.c,
	config/rs6000/rs6000.c, config/s390/s390.c, config/sh/sh.c,
	config/sh/symbian.c, config/stormy16/stormy16.c,
	config/v850/v850.c: Avoid "`" as left quote, using "'" or %q, %<
	and %> as appropriate.  Use %' as apostrophe in diagnostics where
	applicable.  Use %< and %> in place of '' quotes where applicable.
	Use %qs in place of %<%s%>.  Consistently quote __builtin function
	names.

ada:
	* misc.c (gnat_handle_option): Use %< and %> for quoting in
	warning message.

cp:
	* call.c, class.c, decl.c, decl2.c, error.c, mangle.c, parser.c,
	pt.c, search.c, semantics.c, typeck.c: Use %q, %< and %> for
	quoting in diagnostics.
	* parser.c (cp_parser_sizeof_operand): Use '' instead of `' for
	quoting in printf format.
	* decl.c (duplicate_decls, start_decl): Use %qD instead of
	unquoted %D.

objc:
	* objc-act.c: Use %q, %< and %> for quoting in diagnostics.

testsuite:
	* gcc.dg/builtin-prefetch-1.c: Adjust expected messages.

From-SVN: r90337
2004-11-09 10:13:30 +00:00
Richard Henderson f526a3c8fd ia64.md (UNSPEC_SHRP): New.
* ia64.md (UNSPEC_SHRP): New.
        (dshift_count_operand): New.
        (ashrti3, ashrti3_internal, lshrti3, lshrti3_internal, shrp): New.
        * ia64.c (rtx_needs_barrier): Handle UNSPEC_SHRP.

From-SVN: r90149
2004-11-05 15:54:30 -08:00
James E Wilson 83338d15a9 Fix 4 execute/va-arg-26.c gcc testsuite failures.
* config/ia64/ia64.c (rtx_needs_barrier, case UNSPEC_GR_SPILL): Change
1 to UNSPEC_GR_SPILL.

From-SVN: r90141
2004-11-05 12:38:36 -08:00
David Mosberger a8f5224e01 IA-64 sibcall unwind bug, PR target/13158
IA-64 sibcall unwind bug, PR target/13158
* config/ia64/ia64.c (ia64_expand_epilogue): Set RTX_FRAME_RELATED_P on
sibcall alloc instruction.
(process_set): Handle sibcall alloc instruction.

From-SVN: r89714
2004-10-27 15:44:07 -07:00
Kazu Hirata 93348822aa * config/ia64/ia64.c: Fix a comment typo.
From-SVN: r88686
2004-10-07 13:18:34 +00:00
Steve Ellcey d13256a357 ia64.h (FUNCTION_ARG_BOUNDARY): Change macro to call ia64_function_arg_boundary.
* config/ia64/ia64.h (FUNCTION_ARG_BOUNDARY): Change macro to
	call ia64_function_arg_boundary.
	* config/ia64/ia64-protos.h (ia64_function_arg_boundary): New.
	* config/ia64/ia64.c (ia64_function_arg_boundary): New.
	(ia64_function_arg_advance): Do not put 128 bit floats into
	FP registers.

From-SVN: r88608
2004-10-06 16:07:03 +00:00
Jakub Jelinek 9924d7d8d8 ia64.c (ia64_expand_prologue): Declare ei variable.
* config/ia64/ia64.c (ia64_expand_prologue): Declare ei
	variable.

From-SVN: r88253
2004-09-28 23:17:53 +02:00
Ben Elliston 628f6a4e7c backport: basic-block.h: Include vec.h, errors.h.
2004-09-24  Ben Elliston  <bje@au.ibm.com>
	    Steven Bosscher  <stevenb@suse.de>
	    Andrew Pinski  <pinskia@physics.uc.edu>

	Merge from edge-vector-branch:
	* basic-block.h: Include vec.h, errors.h. Instantiate a VEC(edge).
	(struct edge_def): Remove pred_next, succ_next members.
	(struct basic_block_def): Remove pred, succ members.  Add preds
	and succs members of type VEC(edge).
	(FALLTHRU_EDGE): Redefine using EDGE_SUCC.
	(BRANCH_EDGE): Likewise.
	(EDGE_CRITICAL_P): Redefine using EDGE_COUNT.
	(EDGE_COUNT, EDGE_I, EDGE_PRED, EDGE_SUCC): New.
	(edge_iterator): New.
	(ei_start, ei_last, ei_end_p, ei_one_before_end_p): New.
	(ei_next, ei_prev, ei_edge, ei_safe_edge): Likewise.
	(FOR_EACH_EDGE): New.
	* bb-reorder.c (find_traces): Use FOR_EACH_EDGE and EDGE_* macros
	where applicable.
	(rotate_loop): Likewise.
	(find_traces_1_route): Likewise.
	(bb_to_key): Likewise.
	(connect_traces): Likewise.
	(copy_bb_p): Likewise.
	(find_rarely_executed_basic_blocks_and_crossing_edges): Likewise.
	(add_labels_and_missing_jumps): Likewise.
	(fix_up_fall_thru_edges): Likewise.
	(find_jump_block): Likewise.
	(fix_crossing_conditional_branches): Likewise.
	(fix_crossing_unconditional_branches): Likewise.
	(add_reg_crossing_jump_notes): Likewise.
	* bt-load.c (augment_live_range): Likewise.
	* cfg.c (clear_edges): Likewise.
	(unchecked_make_edge): Likewise.
	(cached_make_edge): Likewise.
	(make_single_succ_edge): Likewise.
	(remove_edge): Likewise.
	(redirect_edge_succ_nodup): Likewise.
	(check_bb_profile): Likewise.
	(dump_flow_info): Likewise.
	(alloc_aux_for_edges): Likewise.
	(clear_aux_for_edges): Likewise.
	(dump_cfg_bb_info): Likewise.
	* cfganal.c (forwarder_block_p): Likewise.
	(can_fallthru): Likewise.
	(could_fall_through): Likewise.
	(mark_dfs_back_edges): Likewise.
	(set_edge_can_fallthru_flag): Likewise.
	(find_unreachable_blocks): Likewise.
	(create_edge_list): Likewise.
	(verify_edge_list): Likewise.
	(add_noreturn_fake_exit_edges): Likewise.
	(connect_infinite_loops_to_exit): Likewise.
	(flow_reverse_top_sort_order_compute): Likewise.
	(flow_depth_first_order_compute): Likewise.
	(flow_preorder_transversal_compute): Likewise.
	(flow_dfs_compute_reverse_execute): Likewise.
	(dfs_enumerate_from): Likewise.
	(compute_dominance_frontiers_1): Likewise.
	* cfgbuild.c (make_edges): Likewise.
	(compute_outgoing_frequencies): Likewise.
	(find_many_sub_basic_blocks): Likewise.
	(find_sub_basic_blocks): Likewise.
	* cfgcleanup.c (try_simplify_condjump): Likewise.
	(thread_jump): Likewise.
	(try_forward_edges): Likewise.
	(merge_blocks_move): Likewise.
	(outgoing_edges_match): Likewise.
	(try_crossjump_to_edge): Likewise.
	(try_crossjump_bb): Likewise.
	(try_optimize_cfg): Likewise.
	(merge_seq_blocks): Likewise.
	* cfgexpand.c (expand_gimple_tailcall): Likewise.
	(expand_gimple_basic_block): Likewise.
	(construct_init_block): Likewise.
	(construct_exit_block): Likewise.
	* cfghooks.c (verify_flow_info): Likewise.
	(dump_bb): Likewise.
	(delete_basic_block): Likewise.
	(split_edge): Likewise.
	(merge_blocks): Likewise.
	(make_forwarder_block): Likewise.
	(tidy_fallthru_edges): Likewise.
	(can_duplicate_block_p): Likewise.
	(duplicate_block): Likewise.
	* cfglayout.c (fixup_reorder_chain): Likewise.
	(fixup_fallthru_exit_predecessor): Likewise.
	(can_copy_bbs_p): Likewise.
	(copy_bbs): Likewise.
	* cfgloop.c (flow_loops_cfg_dump): Likewise.
	(flow_loop_entry_edges_find): Likewise.
	(flow_loop_exit_edges_find): Likewise.
	(flow_loop_nodes_find): Likewise.
	(mark_single_exit_loops): Likewise.
	(flow_loop_pre_header_scan): Likewise.
	(flow_loop_pre_header_find): Likewise.
	(update_latch_info): Likewise.
	(canonicalize_loop_headers): Likewise.
	(flow_loops_find): Likewise.
	(get_loop_body_in_bfs_order): Likewise.
	(get_loop_exit_edges): Likewise.
	(num_loop_branches): Likewise.
	(verify_loop_structure): Likewise.
	(loop_latch_edge): Likewise.
	(loop_preheader_edge): Likewise.
	* cfgloopanal.c (mark_irreducible_loops): Likewise.
	(expected_loop_iterations): Likewise.
	* cfgloopmanip.c (remove_bbs): Likewise.
	(fix_bb_placement): Likewise.
	(fix_irreducible_loops): Likewise.
	(remove_path): Likewise.
	(scale_bbs_frequencies): Likewise.
	(loopify): Likewise.
	(unloop): Likewise.
	(fix_loop_placement): Likewise.
	(loop_delete_branch_edge): Likewise.
	(duplicate_loop_to_header_edge): Likewise.
	(mfb_keep_just): Likewise.
	(create_preheader): Likewise.
	(force_single_succ_latches): Likewise.
	(loop_split_edge_with): Likewise.
	(create_loop_notes): Likewise.
	* cfgrtl.c (rtl_split_block): Likewise.
	(rtl_merge_blocks): Likewise.
	(rtl_can_merge_blocks): Likewise.
	(try_redirect_by_replacing_jump): Likewise.
	(force_nonfallthru_and_redirect): Likewise.
	(rtl_tidy_fallthru_edge): Likewise.
	(commit_one_edge_insertion): Likewise.
	(commit_edge_insertions): Likewise.
	(commit_edge_insertions_watch_calls): Likewise.
	(rtl_verify_flow_info_1): Likewise.
	(rtl_verify_flow_info): Likewise.
	(purge_dead_edges): Likewise.
	(cfg_layout_redirect_edge_and_branch): Likewise.
	(cfg_layout_can_merge_blocks_p): Likewise.
	(rtl_flow_call_edges_add): Likewise.
	* cse.c (cse_cc_succs): Likewise.
	* df.c (hybrid_search): Likewise.
	* dominance.c (calc_dfs_tree_nonrec): Likewise.
	(calc_dfs_tree): Likewise.
	(calc_idoms): Likewise.
	(recount_dominator): Likewise.
	* domwalk.c (walk_dominator_tree): Likewise.
	* except.c (emit_to_new_bb_before): Likewise.
	(connect_post_landing_pads): Likewise.
	(sjlj_emit_function_enter): Likewise.
	(sjlj_emit_function_exit): Likewise.
	(finish_eh_generation): Likewise.
	* final.c (compute_alignments): Likewise.
	* flow.c (calculate_global_regs_live): Likewise.
	(initialize_uninitialized_subregs): Likewise.
	(init_propagate_block_info): Likewise.
	* function.c (thread_prologue_and_epilogue_insns): Likewise.
	* gcse.c (find_implicit_sets): Likewise.
	(bypass_block): Likewise.
	(bypass_conditional_jumps): Likewise.
	(compute_pre_data): Likewise.
	(insert_insn_end_bb): Likewise.
	(insert_store): Likewise.
	(remove_reachable_equiv_notes): Likewise.
	* global.c (global_conflicts): Likewise.
	(calculate_reg_pav): Likewise.
	* graph.c (print_rtl_graph_with_bb): Likewise.
	* ifcvt.c (mark_loop_exit_edges): Likewise.
	(merge_if_block): Likewise.
	(find_if_header): Likewise.
	(block_jumps_and_fallthru_p): Likewise.
	(find_if_block): Likewise.
	(find_cond_trap): Likewise.
	(block_has_only_trap): Likewise.
	(find_if_case1): Likewise.
	(find_if_case_2): Likewise.
	* lambda-code.c (lambda_loopnest_to_gcc_loopnest): Likewise.
	(perfect_nestify): Likewise.
	* lcm.c (compute_antinout_edge): Likewise.
	(compute_laterin): Likewise.
	(compute_available): Likewise.
	(compute_nearerout): Likewise.
	* loop-doloop.c (doloop_modify): Likewise.
	* loop-init.c (loop_optimizer_init): Likewise.
	* loop-invariant.c (find_exits): Likewise.
	* loop-iv.c (simplify_using_initial_values): Likewise.
	(check_simple_exit): Likewise.
	(find_simple_exit): Likewise.
	* loop-unroll.c (peel_loop_completely): Likewise.
	(unroll_loop_constant_iterations): Likewise.
	(unroll_loop_runtime_iterations): Likewise.
	* loop-unswitch.c (may_unswitch_on): Likewise.
	(unswitch_loop): Likewise.
	* modulo-sched.c (generate_prolog_epilog): Likewise.
	(sms_schedule): Likewise.
	* postreload-gcse.c (eliminate_partially_redundant_load):
	Likewise.
	* predict.c (can_predict_insn_p): Likewise.
	(set_even_probabilities): Likewise.
	(combine_predictions_for_bb): Likewise.
	(predict_loops): Likewise.
	(estimate_probability): Likewise.
	(tree_predict_by_opcode): Likewise.
	(tree_estimate_probability): Likewise.
	(last_basic_block_p): Likewise.
	(propagate_freq): Likewise.
	(estimate_loops_at_level): Likewise.
	(estimate_bb_frequencies): Likewise.
	* profile.c (instrument_edges): Likewise.
	(get_exec_counts): Likewise.
	(compute_branch_probabilities): Likewise.
	(branch_prob): Likewise.
	* ra-build.c (live_in): Likewise.
	* ra-rewrite.c (rewrite_program2): Likewise.
	* ra.c (reg_alloc): Likewise.
	* reg-stack.c (reg_to_stack): Likewise.
	(convert_regs_entry): Likewise.
	(compensate_edge): Likewise.
	(convert_regs_1): Likewise,
	(convert_regs_2): Likewise.
	(convert_regs): Likewise.
	* regrename.c (copyprop_hardreg_forward): Likewise.
	* reload1.c (fixup_abnormal_edges): Likewise.
	* sbitmap.c (sbitmap_intersection_of_succs): Likewise.
	(sbitmap_insersection_of_preds): Likewise.
	(sbitmap_union_of_succs): Likewise.
	(sbitmap_union_of_preds): Likewise.
	* sched-ebb.c (compute_jump_reg_dependencies): Likewise.
	(fix_basic_block_boundaries): Likewise.
	(sched_ebbs): Likewise.
	* sched-rgn.c (build_control_flow): Likewise.
	(find_rgns): Likewise.
	* tracer.c (find_best_successor): Likewise.
	(find_best_predecessor): Likewise.
	(tail_duplicate): Likewise.
	* tree-cfg.c (make_edges): Likewise.
	(make_ctrl_stmt_edges): Likewise.
	(make_goto_expr_edges): Likewise.
	(tree_can_merge_blocks_p): Likewise.
	(tree_merge_blocks): Likewise.
	(cfg_remove_useless_stmts_bb): Likewise.
	(remove_phi_nodes_and_edges_for_unreachable_block): Likewise.
	(tree_block_forwards_to): Likewise.
	(cleanup_control_expr_graph): Likewise.
	(find_taken_edge): Likewise.
	(dump_cfg_stats): Likewise.
	(tree_cfg2vcg): Likewise.
	(disband_implicit_edges): Likewise.
	(tree_find_edge_insert_loc): Likewise.
	(bsi_commit_edge_inserts): Likewise.
	(tree_split_edge): Likewise.
	(tree_verify_flow_info): Likewise.
	(tree_make_forwarder_block): Likewise.
	(tree_forwarder_block_p): Likewise.
	(thread_jumps): Likewise.
	(tree_try_redirect_by_replacing_jump): Likewise.
	(tree_split_block): Likewise.
	(add_phi_args_after_copy_bb): Likewise.
	(rewrite_to_new_ssa_names_bb): Likewise.
	(dump_function_to_file): Likewise.
	(print_pred_bbs): Likewise.
	(print_loop): Likewise.
	(tree_flow_call_edges_add): Likewise.
	(split_critical_edges): Likewise.
	(execute_warn_function_return): Likewise.
	(extract_true_false_edges_from_block): Likewise.
	* tree-if-conv.c (tree_if_conversion): Likewise.
	(if_convertable_bb_p): Likewise.
	(find_phi_replacement_condition): Likewise.
	(combine_blocks): Likewise.
	* tree-into-ssa.c (compute_global_livein): Likewise.
	(ssa_mark_phi_uses): Likewise.
	(ssa_rewrite_initialize_block): Likewise.
	(rewrite_add_phi_arguments): Likewise.
	(ssa_rewrite_phi_arguments): Likewise.
	(insert_phi_nodes_for): Likewise.
	(rewrite_into_ssa): Likewise.
	(rewrite_ssa_into_ssa): Likewise.
	* tree-mudflap.c (mf_build_check_statement_for): Likewise.
	* tree-outof-ssa.c (coalesce_abnormal_edges): Likewise.
	(rewrite_trees): Likewise.
	* tree-pretty-print.c (dump_bb_header): Likewise.
	(dump_implicit_edges): Likewise.
	* tree-sra.c (insert_edge_copies): Likewise.
	(find_obviously_necessary_stmts): Likewise.
	(remove_data_stmt): Likewise.
	* tree-ssa-dom.c (thread_across_edge): Likewise.
	(dom_opt_finalize_block): Likewise.
	(single_incoming_edge_ignoring_loop_edges): Likewise.
	(record_equivalences_from_incoming_edges): Likewise.
	(cprop_into_successor_phis): Likewise.
	* tree-ssa-live.c (live_worklist): Likewise.
	(calculate_live_on_entry): Likewise.
	(calculate_live_on_exit): Likewise.
	* tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Likewise.
	(copy_loop_headers): Likewise.
	* tree-ssa-loop-im.c (loop_commit_inserts): Likewise.
	(fill_always_executed_in): Likewise.
	* tree-ssa-loop-ivcanon.c (create_canonical_iv): Likewise.
	* tree-ssa-loop-ivopts.c (find_interesting_uses): Likewise.
	(compute_phi_arg_on_exit): Likewise.
	* tree-ssa-loop-manip.c (add_exit_phis_edge): Likewise.
	(get_loops_exit): Likewise.
	(split_loop_exit_edge): Likewise.
	(ip_normal_pos): Likewise.
	* tree-ssa-loop-niter.c (simplify_using_initial_conditions):
	Likewise.
	* tree-ssa-phiopt.c (candidate_bb_for_phi_optimization): Likewise.
	(replace_phi_with_stmt): Likewise.
	(value_replacement): Likewise.
	* tree-ssa-pre.c (compute_antic_aux): Likewise.
	(insert_aux): Likewise.
	(init_pre): Likewise.
	* tree-ssa-propagate.c (simulate_stmt): Likewise.
	(simulate_block): Likewise.
	(ssa_prop_init): Likewise.
	* tree-ssa-threadupdate.c (thread_block): Likewise.
	(create_block_for_threading): Likewise.
	(remove_last_stmt_and_useless_edges): Likewise.
	* tree-ssa.c (verify_phi_args): Likewise.
	(verify_ssa): Likewise.
	* tree_tailcall.c (independent_of_stmt_p): Likewise.
	(find_tail_calls): Likewise.
	(eliminate_tail_call): Likewise.
	(tree_optimize_tail_calls_1): Likewise.
	* tree-vectorizer.c (vect_transform_loop): Likewise.
	* var-tracking.c (prologue_stack_adjust): Likewise.
	(vt_stack_adjustments): Likewise.
	(vt_find_locations): Likewise.
	* config/frv/frv.c (frv_ifcvt_modify_tests): Likewise.
	* config/i386/i386.c (ix86_pad_returns): Likewise.
	* config/ia64/ia64.c (ia64_expand_prologue): Likewise.
	* config/rs6000/rs6000.c (rs6000_emit_prologue): Likewise.

Co-Authored-By: Andrew Pinski <pinskia@physics.uc.edu>
Co-Authored-By: Steven Bosscher <stevenb@suse.de>

From-SVN: r88222
2004-09-28 17:59:54 +10:00
James E Wilson 097f3d486a Fix linux kernel miscompilation.
PR target/17455
* config/ia64/ia64.c (ia64_function_ok_for_sibcall): Return false
if current_function_decl is a sibcall.

From-SVN: r87574
2004-09-15 16:26:33 -07:00
Steve Ellcey 88ed5ef592 ia64.c (ia64_scalar_mode_supported_p): New.
* config/ia64/ia64.c (ia64_scalar_mode_supported_p): New.
	(TARGET_SCALAR_MODE_SUPPORTED_P): New.

From-SVN: r87448
2004-09-13 20:34:55 +00:00
Frank Ch. Eigler c2433d7d16 builtins.c (build_va_arg_indirect_ref): New function.
2004-09-09  Frank Ch. Eigler  <fche@redhat.com>

	* builtins.c (build_va_arg_indirect_ref): New function.
	(std_gimplify_va_arg_expr): Call it instead of mudflap check and
	build_fold_indirect_ref.
	* config/i386/i386.c (ix86_gimplify_va_arg): Ditto.
	* config/ia64/ia64.c (ia64_gimplify_va_arg): Ditto.
	* tree.h: Declare new function.

From-SVN: r87242
2004-09-09 16:33:25 +00:00
Steve Ellcey 9dec91d433 ia64.c (ia64_function_arg): Use PARALLEL even if there is only one reg.
* config/ia64/ia64.c (ia64_function_arg): Use PARALLEL even if there
	is only one reg.
	(ia64_function_value): Ditto.

From-SVN: r87038
2004-09-03 17:52:08 +00:00
Nathan Sidwell 7d60be94d6 tree.h (build_int_cst): New, sign extended constant.
* tree.h  (build_int_cst): New, sign extended constant.
	(build_int_cstu): New, zero extended constant.
	(build_int_cst_wide): Renamed from build_int_cst.
	* tree.c (build_int_cst, build_int_cstu): New.
	(build_int_cst_wide): Renamed from build_int_cst.
	(make_vector_type, build_common_tree_nodes,
	build_common_tree_nodes_2): Adjust build_int_cst calls.
	* builtins.c (expand_builtin_prefetch, expand_builtin_strstr,
	expand_builtin_strpbrk, expand_builtin_fputs,
	build_string_literal, expand_builtin_printf,
	expand_builtin_sprintf, fold_builtin_classify_type,
	fold_builtin_lround, fold_builtin_bitop, fold_builtin_isascii,
	fold_builtin_toascii, fold_builtin_isdigit,
	simplify_builtin_strstr, simplify_builtin_strpbrk,
	fold_builtin_fputs, simplify_builtin_sprintf): Likewise.
	* c-common.c (start_fname_decls, fix_string_type, shorten_compare,
	DEF_ATTR_INT): Likewise.
	* c-decl.c (complete_array_type, check_bitfield_type_and_width):
	Likewise.
	* c-lex.c (interpret_integer, lex_charconst): Likewise.
	* c-parse.in (primary) <TYPES_COMPATIBLE_P> Likewise.
	* c-pretty-print.c (pp_c_integer_constant): Likewise.
	* c-typeck.c (really_start_incremental_init, push_init_level,
	set_nonincremental_init_from_string): Likewise.
	* calls.c (load_register_parameters): Likewise.
	convert.c (convert_to_pointer): Likewise.
	coverage.c (coverage_counter_alloc, tree_coverage_counter_ref,
	build_fn_info_type, build_fn_info_value, build_ctr_info_value,
	build_gcov_info): Likewise.
	* except.c (init_eh, assign_filter_values): Likewise.
	* expmed.c (store_fixed_bit_field, extract_bit_field,
	extract_fixed_bit_field, extract_split_bit_field, expand_shift,
	expand_mult_const, expand_mult_highpart_adjust, extract_high_half,
	expand_sdiv_pow2, expand_divmod, make_tree): Likewise.
	* expr.c (convert_move, emit_group_load, emit_group_store,
	expand_assignment, store_constructor, store_field,
	expand_expr_real_1, reduce_to_bit_field_precision): Likewise.
	fold-const.c (force_fit_type, int_const_binop, fold_convert_const,
	invert_truthvalue, optimize_bit_field_compare,
	decode_field_reference, all_ones_mask_p, constant_boolean_node,
	fold_div_compare, fold, fold_read_from_constant_string,
	fold_negate_const, fold_abs_const, fold_not_const, round_up,
	round_down): Likewise.
	* function.c (assign_parm_setup_block): Likewise.
	* stmt.c (shift_return_value, expand_case, estimate_case_costs):
	Likewise.
	* stor-layout.c (layout_type, initialize_sizetypes,
	set_min_and_max_values_for_integral_type): Likewise.
	* tree-chrec.c (chrec_fold_multiply_poly_poly,
	reset_evolution_in_loop): Likewise.
	* tree-chrec.h (build_polynomial_chrec): Likewise.
	* tree-complex.c (build_replicated_const): Likewise.
	* tree-eh.c (honor_protect_cleanup_actions,
	lower_try_finally_onedest, lower_try_finally_copy,
	lower_try_finally_switch): Likewise.
	* tree-mudflap.c (mf_build_string, mx_register_decls,
	mudflap_register_call, mudflap_enqueue_constant): Likewise.
	* tree-nested.c (get_trampoline_type, get_nl_goto_field): Likewise.
	* tree-pretty-print.c (dump_generic_node): Likewise.
	* tree-ssa-ccp.c (widen_bitfield, maybe_fold_offset_to_array_ref):
	Likewise.
	* tree-ssa-dom.c (simplify_rhs_and_lookup_avail_expr): Likewise.
	* tree-ssa-loop-niter.c (number_of_iterations_cond,
	loop_niter_by_eval, upper_bound_in_type, lower_bound_in_type):
	Likewise.
	* tree-ssa-loop-ivcanon.c (create_canonical_iv,
	canonicalize_loop_induction_variables): Likewise.
	* tree-vectorizer.c (vect_create_index_for_array_ref,
	vect_transform_loop_bound, vect_compute_data_ref_alignment):
	Likewise.

	* config/alpha/alpha.c (alpha_initialize_trampoline, alpha_va_start,
	alpha_gimplify_va_arg_1): Likewise.
	* config/arm/arm.c (arm_get_cookie_size): Likewise.
	* config/c4x/c4x.c (c4x_gimplify_va_arg_expr): Likewise.
	* config/i386/i386.c (ix86_va_start, ix86_gimplify_va_arg): Likewise.
	* config/ia64/ia64.c (ia64_gimplify_va_arg): Likewise.
	* config/mips/mips.c (mips_build_builtin_va_list, mips_va_start,
	mips_gimplify_va_arg_expr): Likewise.
	* config/pa/pa.c (hppa_gimplify_va_arg_expr): Likewise.
	* config/rs6000/rs6000.c (rs6000_va_start, rs6000_gimplify_va_arg,
	add_compiler_branch_island): Likewise.
	* config/s390/s390.c (s390_va_start): Likewise.
	* config/sh/sh.c (sh_va_start): Likewise.
	* config/stormy16/stormy16.c (xstormy16_expand_builtin_va_start):
	Likewise.
	* config/xtensa/xtensa.c (xtensa_va_start,
	xtensa_gimplify_va_arg_expr): Likewise.

	* objc/objc-act.c (build_objc_string_object,
	build_objc_symtab_template, init_def_list, init_objc_symtab,
	init_module_descriptor, generate_static_references,
	build_selector_translation_table, get_proto_encoding,
	build_typed_selector_reference, build_selector_reference,
	build_next_objc_exception_stuff,
	build_method_prototype_list_template, generate_descriptor_table,
	generate_protocols, build_protocol_initializer,
	build_ivar_list_template, build_method_list_template,
	build_ivar_list_initializer, generate_ivars_list,
	generate_dispatch_table, generate_protocol_list,
	build_category_initializer, build_shared_structure_initializer,
	generate_shared_structures, handle_impent,
	generate_objc_image_info): Likewise.

2004-04-25  Paolo Bonzini  <bonzini@gnu.org>

	* cfglayout.c (duplicate_insn_chain): Remove references to
	NOTE_INSN_LOOP_VTOP and NOTE_INSN_LOOP_CONT.
	* cfgloop.h (struct loop): Remove fields vtop, cont and cont_dominator.
	* cfgrtl.c (rtl_delete_block): Remove handling of NOTE_INSN_LOOP_CONT.
	* final.c (final_scan_insn): Remove references to NOTE_INSN_LOOP_VTOP
	and NOTE_INSN_LOOP_CONT.
	* insn-notes.def (NOTE_INSN_LOOP_VTOP, NOTE_INSN_LOOP_CONT): Remove.
	* jump.c (squeeze_notes): Remove references to NOTE_INSN_LOOP_VTOP
	and NOTE_INSN_LOOP_CONT.
	* loop.c (scan_loops, find_and_verify_loops, for_each_insn_in_loop,
	check_dbra_loop, loop_dump_aux): Remove references to removed notes
	and fields.
	* reorg.c (mostly_true_jump): Do not rely on NOTE_INSN_LOOP_VTOPs.
	* unroll.c (unroll_loop, copy_loop_body, loop_iterations): Remove
	references to removed notes and fields.
	(subtract_reg_term, ujump_to_loop_cont): Remove.

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

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

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

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

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

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

From-SVN: r86178
2004-08-18 01:25:01 -07:00
Nathan Sidwell 4a90aeeb51 tree.h (build_int_cst): New.
.:	* tree.h (build_int_cst): New.
	(build_int_2): Remove.
	* tree.c (build_int_2): Remove.
	(build_int_cst): New.
	(make_vector_type, build_common_tree_nodes,
	build_common_tree_nodes_2): Use build_int_cst.
	* builtins.c (expand_builtin_prefetch, expand_builtin_strstr,
	expand_builtin_strpbrk, expand_builtin_fputs,
	build_string_literal, expand_builtin_printf,
	expand_builtin_sprintf, fold_builtin_lround, fold_builtin_bitop,
	fold_builtin_bitop, fold_builtin_isascii, fold_builtin_toascii,
	fold_builtin_isdigit, simplify_builtin_strstr,
	simplify_builtin_strpbrk, fold_builtin_fputs,
	simplify_builtin_sprintf): Use build_int_cst.
	* c-common.c (start_fname_decls, fix_string_type,
	c_common_nodes_and_builtins, c_init_attributes,
	shorten_compare): Likewise.
	* c-decl.c (complete_array_type,
	check_bitfield_type_and_width): Likewise.
	* c-lex.c (interpret_integer, lex_charconst): Likewise.
	* c-parse.in (primary): <TYPES_COMPATIBLE_P> Likewise.
	* c-pretty-print.c (pp_c_integer_constant): Likewise.
	* c-typeck.c (really_start_incremental_init, push_init_level,
	set_nonincremental_init_from_string): Likewise.
	* calls.c (load_register_parameters): Likewise.
	* convert.c (convert_to_pointer): Likewise.
	* coverage.c (coverage_counter_alloc, tree_coverage_counter_ref,
	build_fn_info_type, build_ctr_info_value, build_gcov_info):
	Likewise.
	* except.c (init_eh, assign_filter_values, assign_filter_values):
	Likewise.
	* expmed.c (store_fixed_bit_field, extract_bit_field,
	extract_fixed_bit_field, extract_split_bit_field, expand_shift,
	expand_mult_const, expand_mult_highpart_adjust, extract_high_half,
	expand_sdiv_pow2, expand_divmod, make_tree): Likewise.
	* expr.c (convert_move, emit_group_load, emit_group_store,
	expand_assignment, store_constructor, store_field,
	expand_expr_real_1, reduce_to_bit_field_precision): Likewise.
	* fold-const.c (force_fit_type, int_const_binop, fold_convert_const,
	invert_truthvalue, optimize_bit_field_compare,
	decode_field_reference, all_ones_mask_p, constant_boolean_node,
	fold_div_compare, fold, fold_read_from_constant_string,
	fold_negate_const, fold_abs_const, fold_not_const): Likewise.
	* function.c (assign_parm_setup_block): Likewise.
	* stmt.c (shift_return_value, expand_end_case_type,
	estimate_case_costs): Likewise.
	* stor-layout.c (layout_type, initialize_sizetypes,
	set_min_and_max_values_for_integral_type): Likewise.
	* tree-chrec.c (chrec_fold_multiply_poly_poly,
	reset_evolution_in_loop): Likewise.
	* tree-chrec.h (build_polynomial_chrec): Likewise.
	* tree-complex.c (build_replicated_const): Likewise.
	* tree-eh.c (honor_protect_cleanup_actions,
	lower_try_finally_onedest, lower_try_finally_copy,
	lower_try_finally_switch): Likewise.
	* tree-mudflap.c (mf_build_string, mx_register_decls,
	mudflap_register_call, mudflap_enqueue_constant): Likewise.
	* tree-nested.c (get_trampoline_type, get_nl_goto_field): Likewise.
	* tree-pretty-print.c (dump_generic_node): Likewise.
	* tree-ssa-ccp.c (widen_bitfield, maybe_fold_offset_to_array_ref):
	Likewise.
	* tree-ssa-dom.c (simplify_rhs_and_lookup_avail_expr): Likewise.
	* tree-ssa-loop-niter.c (number_of_iterations_cond,
	loop_niter_by_eval, upper_bound_in_type, lower_bound_in_type):
	Likewise.

	* config/alpha/alpha.c (alpha_initialize_trampoline,
	alpha_va_start, alpha_gimplify_va_arg_1): Use build_int_cst.
	* config/arm/arm.c (arm_get_cookie_size): Likewise.
	* config/c4x/c4x.c (c4x_gimplify_va_arg_expr): Likewise.
	* config/i386/i386.c (ix86_va_start, ix86_gimplify_va_arg): Likewise.
	* config/i860/i860.c (i860_va_start): Likewise.
	* config/ia64/ia64.c (ia64_gimplify_va_arg): Likewise.
	* config/mips/mips.c (mips_build_builtin_va_list, mips_va_start,
	mips_gimplify_va_arg_expr): Likewise.
	* config/pa/pa.c (hppa_gimplify_va_arg_expr): Likewise.
	* config/rs6000/rs6000.c (rs6000_va_start, rs6000_gimplify_va_arg,
	add_compiler_branch_island): Likewise.
	* config/s390/s390.c (s390_va_start): Likewise.
	* config/sh/sh.c (sh_va_start): Likewise.
	* config/stormy16/stormy16.c (xstormy16_expand_builtin_va_start):
	Likewise.
	* config/xtensa/xtensa.c (xtensa_va_start,
	xtensa_gimplify_va_arg_expr): Likewise.

	* objc/objc-act.c (build_objc_string_object,
	build_objc_symtab_template, init_def_list, init_objc_symtab,
	init_module_descriptor, generate_static_references,
	build_selector_translation_table, get_proto_encoding,
	build_typed_selector_reference, build_selector_reference,
	build_next_objc_exception_stuff,
	build_method_prototype_list_template, generate_descriptor_table,
	generate_protocols, build_protocol_initializer,
	build_ivar_list_template, build_method_list_template,
	build_ivar_list_initializer, generate_ivars_list,
	generate_dispatch_table, generate_protocol_list,
	build_category_initializer, build_shared_structure_initializer,
	generate_shared_structures, handle_impent,
	generate_objc_image_info): Use build_int_cst.
ada:
	* cuintp.c (UI_To_gnu): Use build_int_cst..
	* trans.c (Exception_Handler_to_gnu_sjlj, gnat_to_gnu): Likewise.
	* utils.c (init_gigi_decls): Likewise.
	* utils2.c (build_call_raise): Likewise.
cp:
	* call.c (convert_class_to_reference,
	build_user_type_conversion_1, convert_like_real,
	build_java_interface_fn_ref, build_special_member_call): Use
	build_int_cst.
	* class.c (build_vtbl_initializer): Likewise.
	* cp-gimplify.c (cp_gimplify_expr): Likewise.
	* cvt.c (cp_convert_to_pointer): Likewise.
	* decl.c (cxx_init_decl_processing, complete_array_type): Likewise.
	* decl2.c (start_static_initialization_or_destruction,
	generate_ctor_or_dtor_function): Likewise.
	* except.c (build_throw): Likewise.
	* lex.c (cxx_init): Likewise.
	* mangle.c (write_integer_cst): Likewise.
	* rtti.c (build_headof, get_tinfo_decl_dynamic,
	build_dynamic_cast_1, ptr_initializer, ptm_initializer,
	get_pseudo_ti_init): Likewise.
	* search.c (get_dynamic_cast_base_type): Likewise.
	* tree.c (build_shared_int_cst): Likewise.
fortran:
	* trans-array.c (gfc_trans_array_constructor_value): Use
	build_int_cst.
	* trans-const.c (gfc_build_string_const,
	gfc_init_constants, gfc_conv_mpz_to_tree,
	gfc_conv_constant_to_tree): Likewise.
	* trans-decl.c (gfc_get_symbol_decl): Likewise.
	* trans-intrinsic.c (gfc_conv_intrinsic_ibits,
	gfc_conv_intrinsic_len, prepare_arg_info): Likewise.
	* trans-io.c (add_case, set_error_locus, build_dt,
	transfer_expr): Likewise.
	* trans-stmt.c (gfc_trans_label_assign, gfc_trans_pause,
	gfc_trans_stop, gfc_trans_character_select): Likewise.
	* trans-types.c (gfc_init_types, gfc_get_dtype): Likewise.
	* trans.c (gfc_trans_runtime_check): Likewise.
java:
	* boehm.c (get_boehm_type_descriptor): Use build_int_cst.
	* class.c (build_utf8_ref, build_static_field_ref,
	make_field_value, make_method_value, get_dispatch_table,
	make_class_data, emit_symbol_table, emit_catch_table): Likewise.
	* constants.c (get_tag_node,  build_ref_from_constant_pool,
	build_constants_constructor): Likewise.
	* decl.c (java_init_decl_processing): Likewise.
	* expr.c (build_java_array_length_access, build_newarray,
	expand_java_multianewarray, expand_java_pushc, expand_iinc,
	build_java_binop, build_field_ref, expand_java_add_case,
	expand_java_call, build_known_method_ref, build_invokevirtual,
	build_invokeinterface, build_jni_stub): Likewise.
	* java-gimplify.c (java_gimplify_new_array_init): Likewise.
	* jcf-parse.c (get_constant): Likewise.
	* lex.c (do_java_lex): Likewise.
	* parse.y (patch_binop, patch_unaryop, patch_cast,
	build_null_of_type, patch_newarray): Likewise.
	* resource.c (compile_resource_data): Likewise.
	* typeck.c (build_prim_array_type): Likewise.

From-SVN: r86022
2004-08-15 15:45:33 +00:00
Andrew Pinski 1e5f171639 darwin-c.c (find_subframework_file): Fix spelling of cannot.
2004-08-12  Andrew Pinski  <pinskia@physics.uc.edu>

        * config/darwin-c.c (find_subframework_file): Fix spelling of cannot.
        * config/libgloss.h: Likewise.
        * config/arm/arm.c (arm_gen_load_multiple): Likewise.
        * c4x/c4x-modes.def: Likewise.
        * config/c4x/c4x.c (c4x_hard_regno_rename_ok): Likewise.
        (c4x_rptb_nop_p): Likewise.
        (c4x_rptb_valid_p): Likewise.
        (c4x_rptb_insert): Likewise.
        (c4x_address_conflict): Likewise.
        * config/c4x/c4x.md: Likewise.
        * config/frv/frv.md: Likewise.
        * config/i386/athlon.md: Likewise.
        * config/i386/i386.md: Likewise.
        * config/i386/predicates.md: Likewise.
        * config/ia64/ia64.c: Likewise.
        * config/ia64/itanium1.md: Likewise.
        * config/ia64/itanium2.md: Likewise.
        * config/iq2000/iq2000.md: Likewise.
        * config/mcore/mcore.c: Likewise.
        * config/mips/mips.c: Likewise.
        * config/mips/r3900.h: Likewise.
        * config/mips/sb1.md: Likewise.
        * config/pa/milli64.S: Likewise.
        * config/pa/pa.c: Likewise.
        * config/pa/pa.h: Likewise.
        * config/rs6000/8540.md: Likewise.

From-SVN: r85944
2004-08-13 08:34:00 -07:00
Zack Weinberg e543e219eb genpreds.c: Add capability to generate predicate bodies as well as function prototypes.
* genpreds.c: Add capability to generate predicate bodies as
	well as function prototypes.  Write function prototypes for
	the generic predicates too.
	(process_define_predicate, write_tm_preds_h, write_insn_preds_c)
	(write_predicate_subfunction, mark_mode_tests, add_mode_tests)
	(write_match_code, write_predicate_expr, write_one_predicate_function)
	(parse_option): New functions.
	(output_predicate_decls): Delete.
	(main): Read the machine description, process DEFINE_PREDICATE or
	DEFINE_SPECIAL_PREDICATE patterns, write tm-preds.h or insn-preds.c
	as appropriate.

	* genrecog.c (struct decision_test): Replace index with
	struct pred_data pointer.
	(next_index): Remove, unused.
	(pred_table, preds, special_mode_pred_table): Delete.
	(compute_predicate_codes, process_define_predicate): New functions.
	(validate_pattern, add_to_sequence, write_switch): Update for
	new data structures.
	(main): Handle DEFINE_PREDICATE and DEFINE_SPECIAL_PREDICATE.
	Check both error_count and have_error.

	* gensupport.c (in_fname, first_predicate): New globals.
	(define_pred_queue, define_pred_tail): New RTL-pattern queue.
	(predicate_table, last_predicate, old_pred_table)
	(old_special_pred_table): New statics.
	(hash_struct_pred_data, eq_struct_pred_data, lookup_predicate)
	(add_predicate, init_predicate_table): New functions.
	(process_rtx): Handle DEFINE_PREDICATE and DEFINE_SPECIAL_PREDICATE.
	(init_md_reader_args_cb): Use the global in_fname.  No need to zero
	it or max_include_len.  Call init_predicate_table.
	(read_rtx): Run the predicate queue after the attribute queue
	but before all the others.
	* gensupport.h (in_fname, struct pred_data, first_predicate)
	(lookup_predicate, add_predicate, FOR_ALL_PREDICATES): Declare.
	* rtl.def (MATCH_CODE, MATCH_TEST, DEFINE_PREDICATE)
	(DEFINE_SPECIAL_PREDICATE): New RTL codes.
	* dummy-conditions.c: Don't include bconfig.h, system.h,
	coretypes.h, tm.h, or system.h.  Do include stddef.h.
	Duplicate declaration of struct c_test from gensupport.h.

	* Makefile.in (OBJS-common): Add insn-preds.o.
	(STAGESTUFF, .PRECIOUS): Add insn-preds.c.
	(insn-preds.c, insn-preds.o): New rules.
	(s-preds): Also generate insn-preds.c.
	(dummy-conditions.o, genpreds$(build_exeext), genpreds.o):
	Update dependencies.
	(print-rtl.o, print-rtl1.o): Correct dependencies.

	* recog.h: Delete prototypes of predicate functions.

	* doc/md.texi (Predicates): New section with complete
	documentation of operand/operator predicates.  Remove some
	incomplete documentation of predicates from other places.
	* doc/tm.texi (Misc): Move SPECIAL_MODE_PREDICATES next to
	PREDICATE_CODES; indicate that both are deprecated in favor
	of define_predicate/define_special_predicate.

	* config/ia64/ia64.c: All predicate function definitions moved
	to ia64.md, except
	(small_addr_symbolic_operand, tls_symbolic_operand): Delete.
	(ia64_expand_load_address, ia64_expand_move):
	Check SYMBOL_REF_TLS_MODEL directly, don't use tls_symbolic_operand.

	* config/ia64/ia64.md: All predicates now defined here.
	(symbolic_operand): Is now a special predicate.

	* config/ia64/ia64.h: Declare ia64_section_threshold.
	(PREDICATE_CODES): Delete.

From-SVN: r85855
2004-08-12 07:49:00 +00:00
Zack Weinberg 1f09d3eb5c ia64.c (got_symbolic_operand): Do require a symbol+offset operand to have its offset be zero mod 0x3fff when...
* config/ia64/ia64.c (got_symbolic_operand): Do require a
	symbol+offset operand to have its offset be zero mod 0x3fff
	when GOT entries are in use.  Clarify logic in SYMBOL_REF
	case.  Clarify comments.
	(ia64_expand_load_address): Split a symbol+offset load when
	the offset is nonzero mod 0x3fff, not 0x1fff.
testsuite:
	* gcc.dg/ia64-got-1.c: New test case.

From-SVN: r85426
2004-08-02 03:23:01 +00:00
Zack Weinberg 13b52b9060 ia64.c (setjmp_operand): Delete, unused.
* config/ia64/ia64.c (setjmp_operand): Delete, unused.
	(got_symbolic_operand): Remove unreachable code.
	* config/ia64/ia64.h (PREDICATE_CODES): Remove entry for
	setjmp_operand; add entry for tls_symbolic_operand.
	* config/ia64/ia64-protos.h: Remove all prototypes of
	predicate functions.

From-SVN: r85311
2004-07-29 18:30:27 +00:00
Steven Bosscher 4586b4cadc rtl.c (currently_expanding_to_rtl): New.
* rtl.c (currently_expanding_to_rtl): New.
	* rtl.h (currently_expanding_to_rtl): Export it.
	* cfgexpand.c (tree_cfg_expand): Set/clear it at entry/exit.

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

From-SVN: r85287
2004-07-29 07:37:16 +00:00
Zack Weinberg 968a7562a6 libgcc2.c: Change all conditionals testing LIBGCC2_LONG_DOUBLE_TYPE_SIZE == 96 to == 80.
* libgcc2.c: Change all conditionals testing
	LIBGCC2_LONG_DOUBLE_TYPE_SIZE == 96 to == 80.
	* libgcc2.h: Likewise.
	* config/i386/i386.c (ix86_init_mmx_sse_builtins): Set
	TYPE_PRECISION of float80_type to 80.
	* config/ia64/ia64.c (ia64_init_builtins): Set TYPE_PRECISION
	of fpreg_type and float80_type to 80.
	* config/i386/i386.h, config/ia64/ia64.h, config/m68k/m68k.h
	* config/m68k/netbsd-elf.h:
	Change LONG_DOUBLE_TYPE_SIZE and possibly LIBGCC2_LONG_DOUBLE_TYPE_SIZE
	to evaluate to 80 whenever they would formerly have evaluated to 96.
	* config/i386/sco5.h: Remove unnecessary redefinition of
	LONG_DOUBLE_TYPE_SIZE.
	* doc/rtl.texi: Clarify uses of XFmode and TFmode.
	* config/i386/i386-modes.def: Use FRACTIONAL_FLOAT_MODE for
	XFmode, with a bitsize of 80.  Update commentary.
	* config/ia64/ia64-modes.def: Likewise.
	* config/m68k/m68k-modes.def: Likewise.

From-SVN: r85232
2004-07-27 21:41:23 +00:00
Zack Weinberg 78d8e0f9d8 [multiple changes]
2004-07-24  Zack Weinberg  <zack@codesourcery.com>

	* config/ia64/ia64.c (general_xfmode_operand)
	(destination_xfmode_operand): Delete.
	* config/ia64/ia64.h (PREDICATE_CODES): Remove them.
	* config/ia64/ia64.md (*movxf_internal): Use general_operand
	and destination_operand.

2004-07-24  Alexander Kabaev  <kan@freebsd.org>

	* config/ia64/ia64.h (SUBTARGET_EXTRA_SPECS): Default to nothing.
	(EXTRA_SPECS): Use SUBTARGET_EXTRA_SPECS.

From-SVN: r85141
2004-07-25 04:03:42 +00:00
Paolo Bonzini fa0aee8996 genattr.c (struct range, [...]): Remove them.
2004-07-19  Paolo Bonzini  <bonzini@gnu.org>

	* genattr.c (struct range, struct function_unit,
	write_units, extend_range, init_range): Remove them.
	(main): Remove code dealing with DEFINE_FUNCTION_UNIT.
	Output "#define INSN_SCHEDULING" here.
	* genattrtab.c (struct range, struct function_unit_op,
	struct function_unit, struct dimension, enum operator,
	operate_exp, expand_units, simplify_knowing,
	encode_units_mask, simplify_by_exploding,
	find_and_mark_used_attributes, unmark_used_attributes,
	add_values_to_cover, increment_current_value,
	test_for_current_value, simplify_with_current_value,
	simplify_with_current_value_aux, gen_unit,
	write_unit_name, write_function_unit_info,
	write_complex_function, write_toplevel_expr,
	find_single_value, extend_range): Remove.
	(write_attr_get): Do not handle common_av->value
	being an FFS.
	(struct attr_desc): Remove func_units_p and blockage_p.
	(write_attr_valueq): Do not handle them.
	(find_attr): Do not clear them.
	(make_internal_attr): Do not initialize them.
	(main): Remove code dealing with DEFINE_FUNCTION_UNIT.
	* sched-vis.c (init_target_units, insn_print_units,
	init_block_visualization, print_block_visualization,
	visualize_scheduled_insns, visualize_no_unit,
	visualize_stall_cycles, visualize_alloc,
	visualize_free, target_units, get_visual_tbl_length,
	MAX_VISUAL_LINES, INSN_LEN, n_visual_lines,
	visual_tbl_line_length, visual_tbl, n_vis_no_unit,
	MAX_VISUAL_NO_UNIT, vis_no_unit): Remove.
	* haifa-sched.c (blockage_range, clear_units,
	schedule_unit, actual_hazard, potential_hazard,
	insn_unit, unit_last_insn, unit_tick,
	actual_hazard_this_instance, potential_hazard,
	schedule_unit, max_insn_queue_index_value): Remove.
	(MAX_INSN_QUEUE_INDEX): Removed, renamed throughout to
	max_insn_queue_index.
	* rtl.def (DEFINE_FUNCTION_UNIT): Remove.
	* doc/md.texi (Processor pipeline description): Remove
	references to old pipeline descriptions.
	(Automaton pipeline description): Merge with the above.
	(Old pipeline description, Comparison of the two descriptions):
	Remove.

	* bt-load.c (migrate_btr_def): Remove references to
	use_pipeline_interface.
	* haifa-sched.c (insn_cost, schedule_insn,
	schedule_block, advance_one_cycle, sched_init,
	queue_to_ready, sched_finish): Likewise.
	* modulo-sched.c (sms_schedule, advance_one_cycle,
	ps_has_conflicts): Likewise.
	* sched-rgn.c (init_ready): Likewise.
	(debug_dependencies): Likewise, and remove an "if (1)".
	* target.h (use_dfa_pipeline_interface): Remove.
	* config/alpha/alpha.c (TARGET_USE_DFA_PIPELINE_INTERFACE): Remove.
	* config/arc/arc.c (TARGET_USE_DFA_PIPELINE_INTERFACE): Remove.
	* config/arm/arm.c (TARGET_USE_DFA_PIPELINE_INTERFACE): Remove.
	* config/c4x/c4x.c (TARGET_USE_DFA_PIPELINE_INTERFACE): Remove.
	* config/frv/frv.c (TARGET_USE_DFA_PIPELINE_INTERFACE): Remove.
	* config/i386/i386.c (TARGET_USE_DFA_PIPELINE_INTERFACE): Remove.
	* config/ia64/ia64.c (TARGET_USE_DFA_PIPELINE_INTERFACE): Remove.
	* config/iq2000/iq2000.c (TARGET_USE_DFA_PIPELINE_INTERFACE): Remove.
	* config/m32r/m32r.c (TARGET_USE_DFA_PIPELINE_INTERFACE): Remove.
	* config/mcore/mcore.c (TARGET_USE_DFA_PIPELINE_INTERFACE): Remove.
	* config/mips/mips.c (TARGET_USE_DFA_PIPELINE_INTERFACE): Remove.
	* config/pa/pa.c (TARGET_USE_DFA_PIPELINE_INTERFACE): Remove.
	* config/rs6000/rs6000.c (TARGET_USE_DFA_PIPELINE_INTERFACE): Remove.
	* config/s390/s390.c (TARGET_USE_DFA_PIPELINE_INTERFACE): Remove.
	* config/sh/sh.c (TARGET_USE_DFA_PIPELINE_INTERFACE): Remove.
	* config/sparc/sparc.c (TARGET_USE_DFA_PIPELINE_INTERFACE): Remove.
	* config/v850/v850.c (TARGET_USE_DFA_PIPELINE_INTERFACE): Remove.
	* config/xtensa/xtensa.c (TARGET_USE_DFA_PIPELINE_INTERFACE): Remove.
	* doc/tm.texi (TARGET_USE_DFA_PIPELINE_INTERFACE): Remove.

From-SVN: r84944
2004-07-20 07:27:18 +00:00
Joseph Myers 6e34d3a39f langhooks.h (builtin_function): New langhook.
* langhooks.h (builtin_function): New langhook.
	* langhooks-def.h (LANG_HOOKS_BUILTIN_FUNCTION): New.
	(LANG_HOOKS_INITIALIZER): Update.
	* tree.h (builtin_function): Remove.
	* doc/tm.texi: Update.
	* c-tree.h (builtin_function): Declare.
	* c-common.c, config/alpha/alpha.c, config/arm/arm.c,
	config/c4x/c4x.c, config/frv/frv.c, config/i386/i386.c,
	config/ia64/ia64.c, config/iq2000/iq2000.c,
	config/rs6000/rs6000.c, config/s390/s390.c, config/sh/sh.c,
	config/stormy16/stormy16.c: All callers of builtin_function
	changed.

ada:
	* gigi.h (builtin_function): Declare.

cp:
	* cp-tree.h (builtin_function): Declare.

fortran:
	* trans.h (builtin_function): Declare.

java:
	* java-tree.h (builtin_function): Declare.

From-SVN: r84878
2004-07-17 20:35:04 +01:00
Paul Brook 951120eabf dwarf2out.c (dwarf2out_begin_prologue): Rename IA64_UNWIND_INFO to TARGET_UNWIND_INFO.
* dwarf2out.c (dwarf2out_begin_prologue): Rename IA64_UNWIND_INFO
	to TARGET_UNWIND_INFO.
	* except.c (output_function_exception_table): Ditto.
	* except.h: Ditto.
	* opts.c (decode_options): Ditto.
	* passes.c (rest_of_handle_final): Ditto.
	* final.c (final_start_function): Ditto.
	(final_scan_insn, final_scan_insn): Replace IA64_UNWIND_EMIT with
	target hook.
	* targhooks.h (default_unwind_emit): Declare.
	* targhooks.c (default_unwind_emit): New function.
	* target-def.h: Define and use TARGET_UNWIND_EMIT.
	* target.h (struct gcc_target): Add unwind_emit.
	* config/ia64/ia64.c (TARGET_UNWIND_EMIT): Define.
	* config/ia64/ia64.h: Rename IA64_UNWIND_INFO to TARGET_UNWIND_INFO.
	Remove IA64_UNWIND_EMIT.
	* doc/tm.texi: Document TARGET_UNWIND_EMIT and TARGET_UNWIND_INFO.

From-SVN: r84734
2004-07-15 01:07:53 +00:00
Steve Ellcey b1346fa335 ia64.c (ia64_expand_compare): Allow ORDERED comparision of TFmode.
* config/ia64/ia64.c (ia64_expand_compare): Allow ORDERED
	comparision of TFmode.

From-SVN: r84718
2004-07-14 23:48:38 +00:00
Richard Henderson 08b0dc1be5 alpha.c (alpha_gimplify_va_arg_1): Move indirect ...
* config/alpha/alpha.c (alpha_gimplify_va_arg_1): Move indirect ...
        (alpha_gimplify_va_arg): ... handling here.  Use pass_by_reference.
        * config/c4x/c4x.c (c4x_gimplify_va_arg_expr): Use pass_by_reference.
        * config/i386/i386.c (ix86_gimplify_va_arg): Likewise.
        * config/i860/i860.c (i860_gimplify_va_arg_expr): Likewise.
        * config/ia64/ia64.c (ia64_gimplify_va_arg): Likewise.
        * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
        * config/sh/sh.c (sh_gimplify_va_arg_expr): Likewise.
        * config/xtensa/xtensa.c (xtensa_gimplify_va_arg_expr): Likewise.

From-SVN: r84713
2004-07-14 14:19:39 -07:00
Richard Henderson 8cd5a4e07d target.h (struct gcc_target): Add calls.pass_by_reference.
* target.h (struct gcc_target): Add calls.pass_by_reference.
	* target-def.h (TARGET_PASS_BY_REFERENCE): New.
	* function.c (pass_by_reference): Use the hook.
	* system.h (FUNCTION_ARG_PASS_BY_REFERENCE): Poison.
	* targhooks.c, targhooks.h (hook_pass_by_reference_false): New.
	(hook_pass_by_reference_must_pass_in_stack): New.
	* config/alpha/alpha.c (function_arg): Don't query pass-by-ref.
	(alpha_pass_by_reference): New.
	(TARGET_PASS_BY_REFERENCE): New.
	* config/alpha/alpha.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
	* config/arc/arc.c (arc_pass_by_reference): New.
	(TARGET_PASS_BY_REFERENCE): New.
	* config/arc/arc.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
	(FUNCTION_ARG_CALLEE_COPIES): True.
	* config/arm/arm-protos.h (arm_function_arg_pass_by_reference): Remove.
	* config/arm/arm.c (TARGET_PASS_BY_REFERENCE): New.
	(arm_pass_by_reference): Rename from arm_function_arg_pass_by_reference.
	* config/arm/arm.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
	* config/c4x/c4x.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
	* config/cris/cris.c (cris_pass_by_reference): New.
	(TARGET_PASS_BY_REFERENCE): New.
	* config/cris/cris.h (FUNCTION_ARG): Don't query pass-by-ref.
	(FUNCTION_INCOMING_ARG, FUNCTION_ARG_ADVANCE): Likewise.
	(FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
	* config/fr30/fr30.c (TARGET_PASS_BY_REFERENCE): New.
	* config/fr30/fr30.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
	* config/frv/frv-protos.h (frv_function_arg_pass_by_reference): Kill.
	* config/frv/frv.c (TARGET_PASS_BY_REFERENCE): New.
	(frv_function_arg_pass_by_reference): Remove.
	* config/frv/frv.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
	* config/i386/i386-protos.h (function_arg_pass_by_reference): Remove.
	* config/i386/i386.c (TARGET_PASS_BY_REFERENCE): New.
	(ix86_pass_by_reference): Rename from function_arg_pass_by_reference.
	* config/i386/i386.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
	* config/ia64/ia64-protos.h (ia64_function_arg_pass_by_reference): Kill.
	* config/ia64/ia64.c (TARGET_PASS_BY_REFERENCE): New.
	(ia64_pass_by_reference): Rename from
	ia64_function_arg_pass_by_reference.
	* config/ia64/ia64.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
	* config/ip2k/ip2k.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
	* config/iq2000/iq2000-protos.h (function_arg_pass_by_reference): Kill.
	* config/iq2000/iq2000.c (TARGET_PASS_BY_REFERENCE): New.
	(iq2000_pass_by_reference): Rename from function_arg_pass_by_reference.
	* config/iq2000/iq2000.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
	(FUNCTION_ARG_CALLEE_COPIES): Don't reference pass-by-ref.
	* config/m32r/m32r-protos.h (m32r_pass_by_reference): Remove.
	* config/m32r/m32r.c (TARGET_PASS_BY_REFERENCE): New.
	(m32r_pass_by_reference): Adjust prototype.  Make static.
	Handle mode sizes correctly.
	* config/m32r/m32r.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
	* config/m68hc11/m68hc11-protos.h, config/m68hc11/m68hc11.c
	(m68hc11_function_arg_pass_by_reference): Remove.
	* config/m68hc11/m68hc11.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
	(FUNCTION_ARG_CALLEE_COPIES): Don't reference pass-by-ref.
	* config/mcore/mcore.c (TARGET_PASS_BY_REFERENCE): New.
	* config/mcore/mcore.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
	* config/mips/mips-protos.h (function_arg_pass_by_reference): Remove.
	* config/mips/mips.c (TARGET_PASS_BY_REFERENCE): New.
	(mips_va_arg): Use pass_by_reference.
	(mips_pass_by_reference): Rename from function_arg_pass_by_reference.
	Handle mode sizes correctly.
	* config/mips/mips.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
        (FUNCTION_ARG_CALLEE_COPIES): Don't reference pass-by-ref.
	* config/mmix/mmix-protos.h (mmix_function_arg_pass_by_reference): Kill.
	* config/mmix/mmix.c (TARGET_PASS_BY_REFERENCE): New.
	(mmix_pass_by_reference): Rename from
	mmix_function_arg_pass_by_reference.
	* config/mmix/mmix.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
	(FUNCTION_ARG_CALLEE_COPIES): True.
	* config/mn10300/mn10300.c (TARGET_PASS_BY_REFERENCE): New.
	(mn10300_pass_by_reference): New.
	* config/mn10300/mn10300.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
	(FUNCTION_ARG_CALLEE_COPIES): True.
	* config/pa/pa.c (pa_pass_by_reference): New.
	(TARGET_PASS_BY_REFERENCE): New.
	* config/pa/pa.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
        (FUNCTION_ARG_CALLEE_COPIES): True.
	* config/rs6000/rs6000-protos.h (function_arg_pass_by_reference): Kill.
	* config/rs6000/rs6000.c (TARGET_PASS_BY_REFERENCE): New.
	(rs6000_pass_by_reference): Rename from function_arg_pass_by_reference.
	* config/rs6000/rs6000.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
	* config/s390/s390-protos.h (s390_function_arg_pass_by_reference): Kill.
	* config/s390/s390.c (TARGET_PASS_BY_REFERENCE): New.
	(s390_pass_by_reference): Rename from
	s390_function_arg_pass_by_reference.
	(s390_function_arg_advance): Don't query pass-by-ref.
	(s390_function_arg): Likewise.
	(s390_gimplify_va_arg): Use pass_by_reference.
	(s390_call_saved_register_used): Likewise.
	* config/s390/s390.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
	* config/sh/sh.c (TARGET_PASS_BY_REFERENCE): New.
	(shcompact_byref, sh_pass_by_reference): New.
	* config/sh/sh.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
	(SHCOMPACT_BYREF): Remove.
	* config/sparc/sparc-protos.h (function_arg_pass_by_reference): Kill.
	* config/sparc/sparc.c (TARGET_PASS_BY_REFERENCE): New.
	(sparc_pass_by_reference): Rename from function_arg_pass_by_reference.
	(sparc_gimplify_va_arg): Use pass_by_reference.
	* config/sparc/sparc.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
	* config/stormy16/stormy16.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
	* config/v850/v850.c (TARGET_PASS_BY_REFERENCE): New.
	(v850_pass_by_reference): New.
	* config/v850/v850.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
	(FUNCTION_ARG_CALLEE_COPIES): True.
	* doc/tm.texi (TARGET_PASS_BY_REFERENCE): Update from
	FUNCTION_ARG_PASS_BY_REFERENCE docs.

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

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

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

From-SVN: r84584
2004-07-12 22:45:14 +00:00
Vladimir Makarov 52b754e8fc re PR target/16445 (Gcc 3.4 ICE on valid code)
2004-07-12  Vladimir Makarov  <vmakarov@redhat.com>

	PR target/16445
	* config/ia64/ia64.c (bundling): Don't count ignored insns.

From-SVN: r84580
2004-07-12 22:20:38 +00:00
James E Wilson 5806d4fd84 Fix for IA-64 union/long double ICE.
PR target/16364
* config/ia64/ia64.c (ia64_function_arg): For a single element HFA,
do return a parallel if hfa_mode == XFmode and mode == TImode.
* gcc.c-torture/compile/20040709-1.c: New.

From-SVN: r84416
2004-07-09 16:10:26 -07:00
Vladimir Makarov 2d8f9759a2 re PR target/16414 (Gcc 3.4 ICE on valid code)
2004-07-08  Vladimir Makarov  <vmakarov@redhat.com>

	PR target/16414
	* config/ia64/ia64.c (ia64_dfa_new_cycle): Fix typo in comparison
	of asm_noperands result.

From-SVN: r84318
2004-07-08 22:13:40 +00:00
Vladimir Makarov 25069b4269 re PR target/16130 (Gcc 3.4 ICE on valid code)
2004-07-07  Vladimir Makarov  <vmakarov@redhat.com>

	PR target/16130
	PR target/16142
	PR target/16143
	* config/ia64/ia64.c (ia64_dfa_new_cycle): Reset DFA state for asm
	insn.

From-SVN: r84202
2004-07-07 15:11:42 +00:00
Steven Bosscher ca4f3d1319 alpha.c (alpha_use_dfa_pipeline_interface): Remove.
* config/alpha/alpha.c (alpha_use_dfa_pipeline_interface): Remove.
	(TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE): Define to hook_int_void_1.
	* config/arm/arm.c (arm_use_dfa_pipeline_interface): Remove.
	(TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE): Define to hook_int_void_1.
	* config/frv/frv.c (frv_use_dfa_pipeline_interface): Remove.
	(TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE): Define to hook_int_void_1.
	* config/i386/i386.c (ia32_use_dfa_pipeline_interface): Remove.
	(TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE): Define to hook_int_void_1.
	* config/ia64/ia64.c (ia64_use_dfa_pipeline_interface): Remove.
	(TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE): Define to hook_int_void_1.
	* config/pa/pa.c (hhpa_use_dfa_pipeline_interface): Remove.
	(TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE): Define to hook_int_void_1.
	* config/sparc/sparc.c (sparc_use_dfa_pipeline_interface): Remove.
	(TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE): Define to hook_int_void_1.
	* config/v850/v850.c (v850_use_dfa_pipeline_interface): Remove.
	(TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE): Define to hook_int_void_1.

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

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

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

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

From-SVN: r84072
2004-07-04 01:07:15 -07:00
Richard Henderson 68d22aa55a ia64.c (spill_xfmode_operand): Use assign_stack_temp instead of gen_mem_addressof.
* config/ia64/ia64.c (spill_xfmode_operand): Use assign_stack_temp
        instead of gen_mem_addressof.
        * config/ia64/ia64.md (movxf): Use assign_stack_temp to handle
        TImode output register.

From-SVN: r84071
2004-07-03 20:03:00 -07:00
Andreas Schwab fa9784263f ia64.md: Define new attribute "empty".
* config/ia64/ia64.md: Define new attribute "empty".
	(prologue_use, nop_x, insn_group_barrier): Set it.

	* config/ia64/ia64.c (ia64_reorg): When looking for trailing call
	skip over "empty" insns.

From-SVN: r84059
2004-07-03 16:59:38 +00:00
Richard Henderson 6429e3bef3 gimple-low.c (lower_function_body): Don't reset_block_changes here.
* gimple-low.c (lower_function_body): Don't reset_block_changes here.
        * cfgexpand.c (tree_expand_cfg): Do it here.
        * config/alpha/alpha.c (alpha_output_mi_thunk_osf): And here.
        * config/ia64/ia64.c (ia64_output_mi_thunk): And here.
        * config/mips/mips.c (mips_output_mi_thunk): And here.
        * config/rs6000/rs6000.c (rs6000_output_mi_thunk): And here.
        * config/sh/sh.c (sh_output_mi_thunk): And here.
        * config/sparc/sparc.c (sparc_output_mi_thunk): And here.

From-SVN: r84012
2004-07-01 21:53:37 -07:00
Vladimir Makarov f75ce96a7c re PR target/15653 (Gcc 3.4 ICE on valid code)
2004-06-16  Vladimir Makarov  <vmakarov@redhat.com>

	PR target/15653
	* config/ia64/ia64.c (ia64_dfa_new_cycle): Do not insert nops
	after shifts before asm.

From-SVN: r83243
2004-06-16 15:47:29 +00:00
Jason Merrill 67c605a553 i386.h (EXPAND_BUILTIN_VA_ARG): Just abort.
* config/i386/i386.h (EXPAND_BUILTIN_VA_ARG): Just abort.
        * config/i386/i386.c (ix86_va_arg): Remove.
        * config/rs6000/rs6000.h (EXPAND_BUILTIN_VA_ARG): Just abort.
        * config/rs6000/rs6000.c (rs6000_va_arg): Remove.
        * config/alpha/alpha.h (EXPAND_BUILTIN_VA_ARG): Just abort.
        * config/alpha/alpha.c (alpha_va_arg): Remove.
        * config/sparc/sparc.h (EXPAND_BUILTIN_VA_ARG): Just abort.
        * config/sparc/sparc.c (sparc_va_arg): Remove.

        * tree-ssa-operands.c (get_stmt_operands): Use a V_MAY_DEF if the
        assignment might throw.
        * tree-eh.c (tree_could_throw_p): Support non-call exceptions in
        expressions.

From-SVN: r82992
2004-06-11 14:41:47 -04:00
Jason Merrill 23a60a0436 target.h (struct gcc_target): Change gimplify_va_arg_expr hook signature.
* target.h (struct gcc_target): Change gimplify_va_arg_expr
        hook signature.
        * tree-gimple.h: Adjust.
        * config/alpha/alpha.c (alpha_gimplify_va_arg): Adjust.
        * config/i386/i386.c (ix86_gimplify_va_arg): Adjust.
        Use fold_convert.
        * config/ia64/ia64.c (ia64_gimplify_va_arg): Adjust.
        * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Adjust.
        Use COMPLEX_EXPR for complex numbers.  Use fold_convert.
        * builtins.c (std_gimplify_va_arg_expr): Adjust.  Use fold_convert.
        (gimplify_va_arg_expr): Return GS_ERROR in error case.
        Gimplify valist rather than calling stabilize_va_list.

From-SVN: r82925
2004-06-10 11:49:49 -04:00
Jason Merrill cd3ce9b44c Gimplify VA_ARG_EXPR into simpler forms.
* target.h: Add gimplify_va_arg_expr hook.
        * target-def.h: Add TARGET_GIMPLIFY_VA_ARG_EXPR.
        * fold-const.c (build_fold_addr_expr)
        (build_fold_addr_expr_with_type): Move from gimplify.c.
        * tree.h: Declare them.
        * gimplify.c (gimplify_and_add): New fn.
        (build_addr_expr, build_addr_expr_with_type): Move to fold-const.c.
        (gimplify_array_ref_to_plus, gimplify_modify_expr)
        (gimplify_expr): Use build_fold_*.
        (copy_if_shared_r): Only mark VA_ARG_EXPR volatile if we
        don't know how to gimplify it.
        * builtins.c (std_gimplify_va_arg_expr): New fn.
        (dummy_object): New static fn.
        (gimplify_va_arg_expr): New fn.
        (stabilize_va_list): Use build_fold_*.
        * tree-gimple.h: Declare new fns.
        * config/i386/i386.c (TARGET_GIMPLIFY_VA_ARG_EXPR): Define.
        (ix86_gimplify_va_arg): New fn.
        * config/i386/ia64.c (TARGET_GIMPLIFY_VA_ARG_EXPR): Define.
        (ia64_gimplify_va_arg): New fn.
        * config/i386/rs6000.c (rs6000_gimplify_va_arg): New fn.
        (TARGET_GIMPLIFY_VA_ARG_EXPR): Define.
        * config/i386/sparc.c (sparc_gimplify_va_arg): New fn.
        * alias.c (get_varargs_alias_set): Just return 0 for now.

        * c-objc-common.c (c_tree_printer): Improve handling of %T.

From-SVN: r82838
2004-06-09 11:32:44 -04:00
Vladimir Makarov de101ad2f7 re PR target/15598 (Gcc 3.4 ICE on valid code)
2004-06-08  Vladimir Makarov  <vmakarov@redhat.com>

	PR target/15598
	* config/ia64/ia64.c (bundling): Add missed TYPE_A.

From-SVN: r82767
2004-06-08 15:58:28 +00:00
H.J. Lu 6bc709c1c5 re PR target/15383 (__float128 function name is used for long double)
2004-05-19  H.J. Lu  <hongjiu.lu@intel.com>

	PR target/15383
	* config/ia64/ia64.c (ia64_expand_compare): Don't check
	TARGET_HPUX for TFmode compare. Abort if op0 is in TFmode and
	cmptf_libfunc isn't set.
	(ia64_init_libfuncs): Rename TFmode libfuncs using the HPUX
	conventions.
	(ia64_sysv4_init_libfuncs): New.

	* config/ia64/sysv4.h (TARGET_INIT_LIBFUNCS): New. Defined as
	ia64_sysv4_init_libfuncs.

From-SVN: r82047
2004-05-19 19:15:45 -07:00
Diego Novillo 6de9cd9a88 Merge tree-ssa-20020619-branch into mainline.
From-SVN: r81764
2004-05-13 02:41:07 -04:00
Zack Weinberg 7c3ac422e4 re PR target/14887 (compat/struct-ret-19 failure on ia64-hpux - argument passing bug)
PR 14887
	* config/ia64/hpux.h (MEMBER_TYPE_FORCES_BLK): Look only at
	mode argument.
	* config/ia64/ia64.c (ia64_hpux_file_end): Check
	TREE_SYMBOL_REFERENCED on DECL_ASSEMBLER_NAME, not DECL_NAME.

From-SVN: r80571
2004-04-09 22:23:42 +00:00
H.J. Lu 2897f1d411 ia64.c (ia64_encode_section_info): Don't prod global register variables.
2004-04-07  H.J. Lu  <hongjiu.lu@intel.com>

	* config/ia64/ia64.c (ia64_encode_section_info): Don't prod
	global register variables.

From-SVN: r80501
2004-04-07 22:04:26 -07:00
Steve Ellcey 1f7aa7cdd6 hpux.h (TARGET_INIT_LIBFUNCS): Add undef.
* config/ia64/hpux.h (TARGET_INIT_LIBFUNCS): Add undef.
	* config/ia64/ia64.h (TARGET_INIT_LIBFUNCS): Add define.
	* config/ia64/ia64.c (ia64_init_libfuncs): New.
	(ia64_hpux_init_libfuncs): Add call to ia64_init_libfuncs.

From-SVN: r79339
2004-03-11 19:21:19 +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
Steve Ellcey b6b979d46b ia64.h (no-inline-float-divide): New option.
* config/ia64/ia64.h (no-inline-float-divide): New option.
	* config/ia64/ia64.h (no-inline-int-divide): New option.
	* config/ia64/ia64.h (no-inline-sqrt): New option.
	(TARGET_DEFAULT): Add MASK_INLINE_FLOAT_DIV_THR to define.
	* config/ia64/hpux.h (TARGET_DEFAULT): Ditto.
	* config/ia64/ia64.c (ia64_override_options): Modify error
	checking for inlined division/sqrt.

From-SVN: r78569
2004-02-27 17:17:01 +00:00
Richard Henderson c263766cf3 toplev.c (dump_file_tbl): Rename from dump_file.
* toplev.c (dump_file_tbl): Rename from dump_file.
        * bb-reorder.c, bt-load.c, cfgcleanup.c, cfglayout.c, cfgloopanal.c,
        cfgloopmanip.c, cfgrtl.c, config/arm/arm.c, config/frv/frv.c,
        config/i386/i386.c, config/ia64/ia64.c, config/mips/mips.c,
        config/sh/sh.c, cse.c, flow.c, ifcvt.c, loop-iv.c, loop-unroll.c,
        loop-unswitch.c, output.h, predict.c, profile.c, ra-build.c,
        ra-colorize.c, ra-debug.c, ra-rewrite.c, ra.c, regrename.c, reload1.c,
        toplev.c, tracer.c, value-prof.c, var-tracking.c, web.c:
        s/rtl_dump_file/dump_file/g.

From-SVN: r78399
2004-02-24 15:40:03 -08:00
Zack Weinberg f9c887ac06 ia64.c (ia64_function_arg): In big-endian mode...
* config/ia64/ia64.c (ia64_function_arg): In big-endian mode,
	when passing single SFmode quantities in general registers,
	put them in the high half.

From-SVN: r78119
2004-02-19 21:39:52 +00:00
Zack Weinberg 57d4f65c73 dwarf2out.c (loclabel_num): Move outside #ifdef DWARF2_DEBUGGING_INFO and mark with GTY(()).
* dwarf2out.c (loclabel_num): Move outside #ifdef
	DWARF2_DEBUGGING_INFO and mark with GTY(()).
	* config/ia64/ia64.c (struct extern_func_list,extern_func_head):
	Mark with GTY(()).
	(ia64_hpux_add_extern_decl): Save the decl, not the name string.
	Allocate memory with ggc_alloc.  No need to copy anything.
	(ia64_hpux_file_end): Update to match.

From-SVN: r78061
2004-02-18 23:58:00 +00:00
Mark Mitchell 8d04e6db1f re PR c++/11326 (C++ IA64 ABI: 3.1.4: sometimes pointer to temporary return value is implicit first parameter preceding "this")
PR c++/11326
	* config/ia64/ia64.c (ia64_struct_value_rtx): Cope with NULL
	fntype.

From-SVN: r78028
2004-02-18 14:21:13 +00:00
Mark Mitchell 57782ad852 re PR c++/11326 (C++ IA64 ABI: 3.1.4: sometimes pointer to temporary return value is implicit first parameter preceding "this")
PR c++/11326
	* c-common.c (flag_abi_version): Remove.
	* c-common.h (flag_abi_version): Likewise.
	* c-opts.c (c_common_handle_option): Remove OPT_fabi_version case.
	* c.opt (fabi-version): Remove.
	* calls.c (expand_call): Always pass a function type to
	struct_value_rtx.  Use convert_memory_address.
	* common.opt (fabi-version): Add it.
	* flags.h (flag_abi_version): Likewise.
	(abi_version_at_least): New macro.
	* opts.c (common_handle_option): Add OPT_fabi_version.
	* toplev.c (flag_abi_version): Define it.
	* config/ia64/ia64.c (ia64_struct_retval_addr_is_first_parm_p):
	New function.
	(ia64_output_mi_thunk): Use it.
	(ia64_struct_value_rtx): Likewise.

	PR c++/11326
	* cp-tree.h (abi_version_at_least): Remove.
	* mangle.c: Include flags.h.

	PR c++/11326
	* g++.dg/abi/structret1.C: New test.

From-SVN: r77968
2004-02-17 18:32:45 +00:00
Kazu Hirata 68776c4324 ia64.c, [...]: Fix comment typos.
* config/ia64/ia64.c, config/mips/mips.c,
	config/mmix/mmix-modes.def: Fix comment typos.

From-SVN: r77851
2004-02-15 14:53:41 +00:00
Josef Zlomek 014a1138d6 Josef Zlomek <zlomekj@suse.cz>
Josef Zlomek  <zlomekj@suse.cz>
	* Makefile.in (var-tracking.o): New.
	* common.opt (fvar-tracking): New.
	* flags.h (flag_var_tracking): New.
	* gengtype.c (adjust_field_rtx_def): NOTE_INSN_VAR_LOCATION was added.
	* opts.c (common_handle_option): Add OPT_fvar_tracking.
	* print-rtl.c (print_rtx): NOTE_INSN_VAR_LOCATION was added.
        * rtl.c (note_insn_name): Likewise.
        * rtl.def (VAR_LOCATION): New.
        * rtl.h (NOTE_VAR_LOCATION): New.
        (NOTE_VAR_LOCATION_DECL): New.
        (NOTE_VAR_LOCATION_LOC): New.
        (enum insn_note): NOTE_INSN_VAR_LOCATION was added.
        (variable_tracking_main): New exported function.
        * timevar.def (TV_VAR_TRACKING): New.
        * toplev.c (enum dump_file_index): Added DFI_vartrack.
        (dump_file): "vartrack" was added (-dV).
        (flag_var_tracking): New.
        (f_options): "var-tracking" was added.
	(rest_of_handle_variable_tracking): New function.
        (rest_of_compilation): Run variable tracking.
	(process_options): If user has not specified flag_var_tracking set it
	according to optimize, debug_info_level and debug_hooks.
	* tree.h (frame_base_decl): New.
        * var-tracking.c: New file.
	* config/ia64/ia64.c (ia64_flag_var_tracking): New variable.
	(ia64_override_options): Set flags to run variable tracking in machine
	dependent reorg instead of toplev.c.
	(ia64_reorg): Run variable tracking if wanted.
        * doc/invoke.texi: Mention variable tracking in -dV,
	add and -fvar-tracking.
        * doc/passes.texi: Added variable tracking pass.

	Daniel Berlin <dberlin@dberlin.org>
	* debug.h (struct gcc_debug_hooks): Added var_location debug hook.
	* dbxout.c (dbx_debug_hooks): Likewise.
	(xcoff_debug): Likewise.
	* debug.c (do_nothing_debug_hooks): Likewise.
	* dwarf2out.c (dwarf2_debug_hooks): Likewise.
	* dwarfout.c (dwarf_debug_hooks): Likewise.
	* sdbout.c (sdb_debug_hooks): Likewise.
	* vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
	* final.c (final_scan_insn): Call var_location debug hook for each
	NOTE_INSN_VAR_LOCATION.

Co-Authored-By: Daniel Berlin <dberlin@dberlin.org>

From-SVN: r77418
2004-02-06 20:03:45 +00:00
Kazu Hirata 66fcab25e9 * config/ia64/ia64.c (REG_GP): Remove.
From-SVN: r77353
2004-02-05 23:53:42 +00:00
Kazu Hirata 5efb104680 alpha.c, [...]: Revert the replacements of "FALLTHRU" with "Fall through" done in the previous...
* config/alpha/alpha.c, config/arc/arc.c, config/avr/avr.c,
	config/i386/i386.c, config/i386/i386.h, config/i386/i386.md,
	config/ia64/ia64.c, config/ia64/unwind-ia64.c,
	config/m32r/m32r.c, config/ns32k/ns32k.c, config/pa/pa.c,
	config/pdp11/pdp11.c, config/rs6000/rs6000.c,
	config/sparc/sparc.c, config/vax/vax.c: Revert the
	replacements of "FALLTHRU" with "Fall through" done in the
	previous patch.

From-SVN: r77269
2004-02-04 20:27:12 +00:00
Kazu Hirata ff482c8d4d darwin.c, [...]: Fix comment formatting.
* config/darwin.c, config/darwin.h, config/freebsd-spec.h,
	config/arm/arm.c, config/arm/arm.md,
	config/cris/cris-protos.h, config/fr30/fr30.c,
	config/fr30/fr30.h, config/h8300/h8300.c, config/i386/i386.h,
	config/i860/i860.c, config/i860/i860.h, config/ia64/ia64-c.c,
	config/ia64/ia64.c, config/ia64/ia64.h, config/ip2k/ip2k.h,
	config/ip2k/ip2k.md, config/ip2k/libgcc.S,
	config/m32r/linux.h, config/m32r/m32r.c, config/m32r/m32r.h,
	config/m68k/m68k.c, config/m68k/netbsd-elf.h,
	config/mips/mips.c, config/mmix/mmix.c, config/mmix/mmix.md,
	config/ns32k/netbsd.h, config/ns32k/ns32k.c,
	config/ns32k/ns32k.h, config/pdp11/pdp11.h,
	config/rs6000/darwin-ldouble.c, config/s390/s390.h,
	config/s390/s390.md, config/sparc/netbsd-elf.h,
	config/sparc/openbsd.h, config/sparc/sparc.c,
	config/xtensa/lib2funcs.S: Fix comment formatting.

From-SVN: r77268
2004-02-04 20:01:05 +00:00
Kazu Hirata 59b9a953b6 alpha.c, [...]: Fix comment typos.
* config/alpha/alpha.c, config/arc/arc.c,
	config/arm/arm-cores.def, config/arm/arm.c, config/arm/arm.h,
	config/arm/arm1026ejs.md, config/arm/arm1136jfs.md,
	config/arm/arm926ejs.md, config/arm/vfp.md, config/avr/avr.c,
	config/c4x/c4x.c, config/cris/cris.c, config/frv/frv.md,
	config/i386/i386.c, config/i386/i386.h, config/i386/i386.md,
	config/ia64/ia64.c, config/ia64/unwind-ia64.c,
	config/iq2000/iq2000.c, config/m32r/m32r.c,
	config/mips/mips.c, config/mmix/mmix.c, config/mmix/mmix.h,
	config/ns32k/ns32k.c, config/pa/pa.c, config/pdp11/pdp11.c,
	config/rs6000/darwin-ldouble.c, config/rs6000/rs6000.c,
	config/rs6000/rs6000.h, config/sparc/sparc.c,
	config/vax/vax.c: Fix comment typos.  Follow spelling
	conventions.

From-SVN: r77267
2004-02-04 19:46:25 +00:00
Kazu Hirata a556fd39ab alpha.c, [...]: Use const0_rtx instead of GEN_INT (0).
* config/alpha/alpha.c, config/arm/arm.c, config/c4x/c4x.c,
	config/fr30/fr30.md, config/frv/frv.c, config/frv/frv.md,
	config/h8300/h8300.c, config/ia64/ia64.c, config/ip2k/ip2k.md,
	config/m32r/m32r.md, config/m68hc11/m68hc11.c,
	config/mips/mips.md, config/mmix/mmix.c,
	config/mn10300/mn10300.c, config/mn10300/mn10300.md,
	config/ns32k/ns32k.c, config/pa/pa.md, config/pdp11/pdp11.c,
	config/rs6000/altivec.md, config/s390/s390.c,
	config/s390/s390.h, config/s390/s390.md, config/sh/sh.c,
	config/sh/sh.h, config/sh/sh.md, config/stormy16/stormy16.c:
	Use const0_rtx instead of GEN_INT (0).  Do the same for other
	constants that are readily available.

From-SVN: r77161
2004-02-03 06:43:59 +00:00
Zack Weinberg 2ffe0e0241 ia64.c (ia64_split_tmode, [...]): Rewrite to use POST_INC/POST_DEC/POST_MODIFY instead of a scratch pointer.
2004-01-28  Zack Weinberg  <zack@codesourcery.com>
	    Jim Wilson  <wilson@specifixinc.com>

	* config/ia64/ia64.c (ia64_split_tmode, ia64_split_tmode_move):
	Rewrite to use POST_INC/POST_DEC/POST_MODIFY instead of a
	scratch pointer.
	(ia64_secondary_reload_class): Delete case GR_REGS.
	* config/ia64/ia64.md (movti, *movti_internal, movtf, *movtf_internal):
	Do not allocate a scratch register.
	(reload_inti, reload_outti, reload_intf, reload_outtf): Delete.

From-SVN: r76798
2004-01-28 18:13:28 +00:00
Zack Weinberg 826b47cc77 ia64.c (ia64_function_arg): When placing HFAs in integer registers...
* ia64.c (ia64_function_arg): When placing HFAs in integer
	registers, do not special case the mode used for complex
	types.  Do not advance int_regs until the current register
	is full.

From-SVN: r76758
2004-01-27 22:48:11 +00:00
Kazu Hirata 351a758bd9 ia64-protos.h: Remove the prototype for ia64_setup_incoming_varargs and ia64_return_in_memory.
* config/ia64/ia64-protos.h: Remove the prototype for
	ia64_setup_incoming_varargs and ia64_return_in_memory.
	* config/ia64/ia64.c (TARGET_STRUCT_VALUE_RTX): New.
	(TARGET_RETURN_IN_MEMORY): Likewise.
	(TARGET_SETUP_INCOMING_VARARGS): Likewise.
	(TARGET_STRICT_ARGUMENT_NAMING): Likewise.
	(ia64_setup_incoming_varargs): Adjust the arguments to meet
	the requirement of TARGET_SETUP_INCOMING_VARARGS.
	(ia64_return_in_memory): Make it static.  Change the return
	type to bool from int.  Add an argument.
	(ia64_struct_value_rtx): New.
	* config/ia64/ia64.h: Remove commented-out definitions of
	PROMOTE_FUNCTION_ARGS, PROMOTE_FUNCTION_RETURN, and
	PROMOTE_PROTOTYPES.
	(RETURN_IN_MEMORY): Remove.
	(STRUCT_VALUE_REGNUM): Likewise.
	(STRICT_ARGUMENT_NAMING): Likewise.

From-SVN: r76635
2004-01-26 15:32:42 +00:00
Zack Weinberg f57fc998ee ia64.md (*movti_internal): C output template extracted to ia64.c.
* config/ia64/ia64.md (*movti_internal): C output template
	extracted to ia64.c.
	(*movti_internal_reg): Delete.
	(reload_inti, reload_outti): Use the correct mode on operand 2
	in the first place, don't fix it up in the output template.
	(movtf, reload_ointf, reload_outtf): New expanders.
	(*movtf_internal): New define_insn_and_split.
	* config/ia64/ia64.c (ia64_split_timode): Rename to ia64_split_tmode;
	make static; do not hand TFmode CONST_DOUBLEs to split_double.
	(ia64_split_tmode_move): New function, body mostly pulled
	from ia64.md:*movti_internal.
	(ia64_function_arg_words): New function, extracted common
	logic from ia64_function_arg et seq.
	(ia64_function_arg_offset): Likewise.  Handle correctly the
	case of a scalar quantity 16 bytes wide with only 8-byte alignment.
	(ia64_function_arg, ia64_function_arg_partial_nregs)
	(ia64_function_arg_advance): Use ia64_function_arg_words and
	ia64_function_arg_offset.
	(ia64_function_value): TCmode does not go in float regs.
	(ia64_secondary_reload_class): Also handle TFmode.
	* config/ia64/ia64-protos.h: Remove prototype for
	ia64_split_timode; add prototype for ia64_split_tmode_move.

From-SVN: r75956
2004-01-16 01:27:38 +00:00
Zack Weinberg 4c494a15bb ia64.c (ia64_va_arg): Pass pointer for variable-sized type through convert_memory_address.
gcc:
	* config/ia64/ia64.c (ia64_va_arg): Pass pointer for
	variable-sized type through convert_memory_address.
	(ia64_in_small_data_p): Always return false for FUNCTION_DECLs.

gcc/testsuite:
	* lib/gcc-dg.exp (dg-prune-output): New annotation.
	(additional_prunes): New global.
	(gcc-dg-prune): Handle additional per-test pruning.
	(dg-test): Clear additional_prunes between tests.

	* gcc.c-torture/compile/920625-1.c: Remove xfail.  Use
	dg-prune-output to avoid spurious failures from assembler
	complaining about nonexistent WAW violations.
	* gcc.c-torture/compile/981223-1.c: Remove dg-options line.
	Use dg-prune-output to avoid spurious failures from assembler
	warning about Itanium B-step errata.

From-SVN: r74980
2003-12-23 20:25:49 +00:00
Vladimir Makarov c856f53627 ia64.c: Add more comments about insn bundling.
2003-12-17  Vladimir Makarov  <vmakarov@redhat.com>

	* config/ia64/ia64.c: Add more comments about insn bundling.

From-SVN: r74751
2003-12-17 20:29:02 +00:00
Steven Bosscher a813c11120 basic-block.h (BLOCK_HEAD, BLOCK_END): Remove.
2003-12-11  Steven Bosscher  <steven@gcc.gnu.org>

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

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

From-SVN: r74520
2003-12-11 00:20:51 +00:00
Mark Mitchell c743369c89 hpux.h (TARGET_HAVE_TLS): Define it to false.
* config/ia64/hpux.h (TARGET_HAVE_TLS): Define it to false.
	* config/ia64/ia64.h (TARGET_HAVE_TLS): Define it to true if
	HAVE_AS_TLS is true.
	* config/ia64/ia64.c (TARGET_HAVE_TLS): Do not define it.

From-SVN: r74272
2003-12-04 05:46:16 +00:00
James E Wilson 4582b84915 re PR target/8407 ([IA-64] ICE in simplify_gen_subreg, at simplify-rtx.c:2711 with very simple code)
PR target/8407
* config/ia64/ia64.c (ia64_function_arg): For single-reg HFA, call
gen_rtx_REG to create new reg with argument mode.

From-SVN: r74142
2003-12-01 17:12:11 -08:00
Richard Kenner b6a41a622f ia64.c (ia64_assemble_integer): Test POINTER_SIZE, not TARGET_ILP32.
* config/ia64/ia64.c (ia64_assemble_integer): Test POINTER_SIZE,
	not TARGET_ILP32.
	(ia64_initialize_trampoline): Use globalize_label target call.

From-SVN: r73039
2003-10-29 09:23:45 -05:00
Zack Weinberg 24ea7948dc ia64.c (cmptf_libfunc): New static.
* config/ia64/ia64.c (cmptf_libfunc): New static.
	(ia64_expand_compare): Add logic to open-code calls to
	_U_Qfcmp for TFmode comparisons.
	(ia64_hpux_init_libfuncs): Initialize cmptf_libfunc.
	Set libfuncs for TFmode eq/ne/gt/ge/lt/gt to 0; these should
	never be generated anymore.
	* config/ia64/ia64.md (cmptf): New expander.

From-SVN: r73028
2003-10-29 01:28:09 +00:00
Zack Weinberg b38ba46301 ia64.md (UNSPEC_SETF_EXP,UNSPEC_FR_SQRT_RECIP_APPROX): New constants.
* ia64.md (UNSPEC_SETF_EXP,UNSPEC_FR_SQRT_RECIP_APPROX): New constants.
	(*sqrt_approx): New instruction pattern for approximate square roots.
	(*setf_exp_xf): New instruction pattern for exponentiation.
	(*maddxf4_alts_truncsf): New instruction pattern for truncation.
	(sqrtsf2_internal_thr): New define_and_split implementing
	throughput-optimized inline calculation of SFmode square root.
	(sqrtdf2_internal_thr): Likewise for DFmode.
	(sqrtxf2_internal_thr): Likewise for XFmode.
	(sqrtsf2, sqrtdf2, sqrtxf2): New expanders to choose between
	latency- and throughput-optimized square root algorithms.
	* ia64.h (MASK_INLINE_SQRT_LAT, MASK_INLINE_SQRT_THR,
	TARGET_INLINE_SQRT_LAT, TARGET_INLINE_SQRT_THR, TARGET_INLINE_SQRT):
	New macros.
	(TARGET_SWITCHES): Add -minline-sqrt-min-latency and
	-minline-sqrt-max-throughput.
	* ia64.c (ia64_override_options): If both -minline-sqrt-min-latency
	and -minline-sqrt-max-throughput are given, notify the user
	that both options cannot be used simultaneously.
	If -minline-sqrt-min-latency is given, notify the user that
	this mode is not yet implemented.
	(rtx_needs_barrier): Reformat initial comment to obey
	72-character width limit.  Support UNSPEC_SETF_EXP and
	UNSPEC_FR_SQRT_RECIP_APPROX.

From-SVN: r73027
2003-10-29 00:55:43 +00:00
Zack Weinberg 02befdf47f genmodes.c (struct mode_data): Add contained and next_cont fields.
* genmodes.c (struct mode_data): Add contained and next_cont
	fields.
	(complete_mode): Maintain linked list of modes that have a
	given component.
	(emit_mode_unit_size): Delete.
	(emit_mode_nunits): New.
	(emit_insn_modes_c): Update to match.
	(emit_mode_adjustments): Propagate size and alignment
	adjustments from component modes to their containers.
	* machmode.h (mode_unit_size): Delete.
	(mode_nunits): New.
	(GET_MODE_NUNITS): Just return the value in the table.
	(GET_MODE_UNIT_SIZE): Compute using GET_MODE_INNER and
	GET_MODE_SIZE.
	* expmed.c (store_bit_field, extract_bit_field): Can use a
	plain move instruction if bitsize >= GET_MODE_BITSIZE of
	destination/source mode, respectively.
	* varasm.c (assemble_real): Write out the full size of the
	constant, not just its bitsize.
	(output_constant): Honor TYPE_MODE of TREE_REAL_CSTs.

	* config/ia64/ia64-modes.def: Define XFmode as well as TFmode.
	Use ADJUST_BYTESIZE and ADJUST_ALIGNMENT to set size and
	alignment of XF and TF modes in compliance with ia64 ABIs.
	Can now hardwire the format of both modes.
	* config/ia64/ia64.c: Change TFmode to XFmode wherever appropriate.
	(general_tfmode_operand, destination_tfmode_operand)
	(tfreg_or_fp01_operand, spill_tfmode_operand): Rename to
	general_xfmode_operand, destination_xfmode_operand,
	xfreg_or_fp01_operand, spill_xfmode_operand respectively.
	(ia64_init_builtins): Make TYPE_PRECISION of fpreg_type
	and float80_type be 96 so they get XFmode.  Use !TARGET_HPUX,
	not INTEL_EXTENDED_IEEE_FORMAT, to decide how to define
	__float128.
	* config/ia64/ia64.h: Default TARGET_HPUX to 0.
	Change TFmode to XFmode wherever appropriate.  Remove all
	references to INTEL_EXTENDED_IEEE_FORMAT.
	(LONG_DOUBLE_TYPE_SIZE): Varies with TARGET_HPUX.
	(LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Define (always 96).
	(PREDICATE_CODES): Update to match function renames.
	* config/ia64/ia64.md: Change TF to XF throughout; rename all
	patterns to match.  Remove all references to
	INTEL_EXTENDED_IEEE_FORMAT.  Update predicate calls to match
	function renames.
	* config/ia64/ia64-protos.c: Update all prototypes to match
	renamed functions.
	* config/ia64/hpux.h: Redefine TARGET_HPUX to 1.
	Remove all references to INTEL_EXTENDED_IEEE_FORMAT.
	* config/ia64/lib1funcs.asm: Add __divxf3 as new name for
	__divtf3; keep old name for backward compatibility.
	(L__compat): New section providing forwarding stubs for
	__fixtfti, __fixunstfti, __floattitf.
	* config/ia64/t-ia64: Add __compat to LIB1ASMFUNCS.

From-SVN: r72916
2003-10-25 02:03:40 +00:00
Zack Weinberg 5634cf7242 ia64.md (cmpxchg_acq_si): Mark operand 3 as DImode.
* config/ia64/ia64.md (cmpxchg_acq_si): Mark operand 3 as DImode.
	* config/ia64/ia64.c (ia64_expand_fetch_and_op,
	ia64_expand_op_and_fetch): Make sure the REG for ar.ccv is
	DImode.   Use convert_move to load ar.ccv.
	(ia64_expand_compare_and_swap): Likewise.
	If expand_expr doesn't put 'old' and 'new' in the proper
	modes, run them through convert_to_mode.

From-SVN: r72770
2003-10-21 21:22:42 +00:00
Steve Ellcey c80831866f ia64.c (ia64_expand_call): Force function address to DImode.
* config/ia64/ia64.c (ia64_expand_call): Force function address
	to DImode.
	* config/ia64/ia64.md (call_gp): Put DImode on operand 0.

From-SVN: r72489
2003-10-14 19:25:54 +00:00
Zack Weinberg 94134f429f Makefile.in (BUILD_RTL): Replace $(BUILD_PREFIX)insn-modes.o with min-insn-modes.o.
* Makefile.in (BUILD_RTL): Replace $(BUILD_PREFIX)insn-modes.o
	with min-insn-modes.o.
	(STAGESTUFF): Add min-insn-modes.c.
	(genobjs): Add genmodes.o.
	(print-rtl.o, print-rtl1.o): Depend on $(TM_P_H).
	(insn-modes.o): Depend on $(TM_H) not $(GTM_H); also real.h.
	(min-insn-modes.c, min-insn-modes.o): New rules.
	(s-modes): Also generate min-insn-modes.c.
	($(BUILD_PREFIX_1)insn-modes.o): Kill.
	* genmodes.c (struct mode_data): Add format field.
	(blank_mode, validate_mode, complete_mode): Update to match.
	(make_scalar_mode): Separate into make_int_mode and make_float_mode.
	(_SCALAR_MODE): Kill.
	(FLOAT_MODE, FRACTIONAL_FLOAT_MODE): Add format argument.
	(emit_insn_modes_c_header): Adjust.
	(emit_min_insn_modes_c_header, emit_real_format_for_mode)
	(emit_min_insn_modes_c): New functions.
	(emit_insn_modes_c): Call emit_real_format_for_mode.
	(main): Add -m option to generate min-insn-modes.c.
	* machmode.h: Update documentation.  Add format argument to
	all uses of FLOAT_MODE.
	* real.c: Don't define real_format_for_mode here.

	* dwarfout.c: Move default definition of PRINT_REG...
	* defaults.h: ...here.
	* print-rtl.c: Include tm_p.h.
	(DEBUG_PRINT_REG, DEBUG_REGISTER_NAMES, debug_reg_names, reg_names):
	Kill.
	(print_rtx): Use PRINT_REG, not DEBUG_PRINT_REG.  But surround
	this entire block with #ifndef GENERATOR_FILE.
	* regclass.c: Unconditionally define reg_names.
	* config/mips/mips.h, config/rs6000/rs6000.h, config/sh/sh.h
	Don't define DEBUG_REGISTER_NAMES.
	* config/rs6000/darwin.h: Don't use DEBUG_REGISTER_NAMES in
	redefinition of REGISTER_NAMES.
	* config/i386/i386.h: Don't define DEBUG_PRINT_REG.

	* combine.c: Change all preprocessor conditionals on
	EXTRA_CC_MODES to use SELECT_CC_MODE instead; rearrange a bit
	for clarity.
	* genopinit.c: Remove mention of EXTRA_CC_MODES in comment.
	* configure.in: Don't define EXTRA_CC_MODES.
	* configure, config.in: Regenerate.
	* doc/tm.texi: Remove documentation of EXTRA_CC_MODES.

	* config/arc/arc.c, config/m32r/m32r.c, config/sparc/sparc.c:
	May assume that GET_MODE_CLASS is accurate for extra CC modes
	at all times.

	* config/i860/i860.h (INIT_CUMULATIVE_ARGS): Pass correct
	number of arguments to aggregate_value_p.

	* genmodes.c (RESET_FLOAT_FORMAT, reset_float_format): New.
	* machmode.def: Explain ARCH-modes.def.  Document
	RESET_FLOAT_FORMAT.  Improve commentary on various mode
	clusters.  Do not define OI, PQI, PHI, PSI, PDI, QF, HF, TQF,
	XF, or TF modes here.  Remove backward-compatibility
	definition of CC.

	* config/alpha/alpha-modes.def: New file; define TF mode.
	* config/arc/arm-modes.def: Define XF mode.
	* config/c4x/c4x-modes.def: Define QF and HF modes.  Unset
	float format for SF and DF modes.
	* config/dsp16xx/dsp16xx-modes.def: New file; define HF mode.
	* config/i386/i386-modes.def: Define XF and TF modes.
	* config/i960/i960-modes.def: Define TF mode.
	* config/ia64/ia64-modes.def: Define TF and OI modes.
	* config/m68k/m68k-modes.def: New file; define XF mode.
	* config/mips/mips-modes.def: New file; define TF mode, reset
	formats for SF and DF modes.
	* config/pa/pa-modes.def: Define TF mode.
	* config/rs6000/rs6000.c: Define TF and PSI modes.
	* config/s390/s390-modes.def: Define OI mode.
	* config/sh/sh-modes.def: New file; define PSI mode.
	* config/sparc/sparc-modes.def: Define TF mode.
	* config/vax/vax-modes.def: New file; reset formats for SF and
	DF modes.

	* config/c4x/c4x.c (c4x_override_options): No need to mess
	with real_format_for_mode or set REAL_MODE_FORMATs.
	(c4x_immed_int_constant): Don't apply GET_MODE_CLASS to rtx
	variable.
	* config/i386/i386.c (override_options): No need to set
	REAL_MODE_FORMATs here.
	* config/i960/i960.c (i960_initialize): Likewise.
	* config/m68k/m68k.c (m68k_override_options): Likewise.
	* config/ia64/ia64.c (ia64_override_options): Set REAL_MODE_FORMAT
	for TFmode only if not the default.
	* config/mips/mips.c (override_options): Likewise.
	* config/vax/vax.c (override_optionms): Set REAL_MODE_FORMAT for
	DFmode only if not the default.

	* config/i370/i370.h (RET_REG): Don't consider TFmode.
	* config/m68hc11/m68hc11.c (print_operand): Don't consider XFmode.
	* config/dsp16xx/dsp16xx.c (hard_regno_mode_ok): #if 0 out use
	of modes that don't appear anywhere in the machine description.

	* config/arc/arc-modes.def, config/arm/arm-modes.def
	* config/c4x/c4x-modes.def, config/frv/frv-modes.def
	* config/i386/i386-modes.def, config/i960/i960-modes.def
	* config/ia64/ia64-modes.def, config/mmix/mmix-modes.def
	* config/pa/pa-modes.def, config/pdp11/pdp11-modes.def
	* config/rs6000/rs6000-modes.def, config/s390/s390-modes.def
	* config/sparc/sparc-modes.def: Convert to new style for
	declaring extra CC modes.

From-SVN: r72440
2003-10-13 21:16:33 +00:00
Richard Kenner 738e7b39e0 ia64.c (ia64_vms_init_libfuncs): New function.
* config/ia64/ia64.c (ia64_vms_init_libfuncs): New function.
	(ia64_output_function_prologue): Only write .prologue if --with-gnu-as.
	(ia64_initialize_trampoline): If not using GAS, declare trampoline
	as global.
	* config/ia64/ia64.h (ASM_APP_ON, ASM_APP_OFF): Add vers for not GAS.
	(ASM_OUTPUT_DEBUG_LABEL): Likewise.

From-SVN: r72316
2003-10-10 18:44:41 -04: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
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
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
Richard Henderson ddd2d57e72 c-format.c (gcc_diag_char_table): Add %J.
* c-format.c (gcc_diag_char_table): Add %J.
        (gcc_cdiag_char_table, gcc_cxxdiag_char_table): Likewise.
        (check_format_types): Fix wanted_type name lookup.
        (init_dynamic_diag_info): Setup %J.
        * diagnostic.c (text_specifies_location): Implement %J.
        * c-common.c, c-decl.c, c-objc-common.c, c-pragma.c, calls.c,
        dwarfout.c, expr.c, function.c, stmt.c, stor-layout.c, toplev.c,
        tree-inline.c, tree-optimize.c, varasm.c, config/arm/pe.c,
        config/i386/winnt.c, config/ia64/ia64.c, config/mcore/mcore.c,
        config/v850/v850.c, objc/objc-act.c: Use %J in diagnostics.

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

From-SVN: r71619
2003-09-20 22:07:20 -07:00
Kazu Hirata d3704c4668 expr.h (DEFAULT_FUNCTION_ARG_PADDING): New.
* expr.h (DEFAULT_FUNCTION_ARG_PADDING): New.
	(FUNCTION_ARG_PADDING): Use DEFAULT_FUNCTION_ARG_PADDING.
	* config/ia64/ia64.c (ia64_hpux_function_arg_padding):
	Likewise.
	* config/m68hc11/m68hc11.c (m68hc11_function_arg_padding):
	Likewise.
	* config/rs6000/rs6000.c (function_arg_padding): Likewise.
	* config/sparc/sparc.c (function_arg_padding): Likewise.

From-SVN: r71406
2003-09-15 20:23:43 +00:00
Mark Mitchell bf9ab6b657 Fix thinko in last patch.
From-SVN: r71228
2003-09-09 03:51:56 +00:00
Mark Mitchell 9649812aae langhooks-def.h (lhd_register_builtin_type): New function.
* langhooks-def.h (lhd_register_builtin_type): New function.
	(LANG_HOOKS_REGISTER_BUILTIN_TYPE): New macro.
	(LANG_HOOKS_FOR_TYPES_INITIALIZER): Update.
	* langhooks.h (lang_hooks_for_types): Add register_builtin_type.
	* langhooks.c (lhd_register_builtin_type): New function.
	* c-common.h (c_register_builtin_type): Declare.
	* c-common.c (c_register_builtin_type): New function.
	* c-lang.c (LANG_HOOKS_REGISTER_BUILTIN_TYPE): Define to
	c_register_builtin_type.
	* config/ia64/hpux.h (TARGET_OS_CPP_BUILTINS): Remove __fpreg,
	__float80, and __float128 macros.
	* config/ia64/ia64.c (ia64_init_builtins): Create __fpreg,
	__float80, and __float128 types.

	* cp-lang.c (LANG_HOOKS_REGISTER_BUILTIN_TYPE): Define to
	c_register_builtin_type.

	* gcc.dg/ia64-types1.c: New test.
	* gcc.dg/ia64-types2.c: Likewise.

From-SVN: r71227
2003-09-09 03:35:31 +00:00
Richard Henderson 0d433a6a90 ia64.c (ia64_expand_tls_address): Properly truncate result when op0 is SImode.
* config/ia64/ia64.c (ia64_expand_tls_address): Properly truncate
        result when op0 is SImode.

From-SVN: r70790
2003-08-25 16:41:10 -07:00
Mark Mitchell 36c216e5d0 ia64.md (*ptr_extend_plus_1): Rename to ...
* config/ia64/ia64.md (*ptr_extend_plus_1): Rename to ...
	(ptr_extend_plus_imm): ... this.
	* config/ia64/ia64.c (addp4_optimize_ok): Do not disable addp4
	optimization in C++.
	(ia64_output_mi_thunk): Support ILP32 mode.

From-SVN: r70692
2003-08-22 17:58:05 +00:00
Andreas Jaeger 9c808aadb0 alpha.md: Remove usage of PARAMS.
* config/alpha/alpha.md: Remove usage of PARAMS.

        * config/i386/cygwin.h: Convert K&R prototypes to ISO C90.
        * config/i386/i386-interix.h: Likewise.
        * config/i386/winnt.c: Likewise.
        * config/i386/cygming.h: Likewise.
        * config/i386/cygwin2.c: Likewise.
        * config/darwin.c: Likewise.
        * config/darwin-c.c: Likewise.
        * config/darwin-protos.h: Likewise.
        * config/darwin.h: Likewise.
        * config/s390/s390-protos.h: Likewise.
        * config/s390/s390.c: Likewise.
        * config/ia64/ia64.c: Likewse
        * config/ia64/ia64-protos.h: Likewise.

From-SVN: r70515
2003-08-17 12:00:04 +02:00
Kaveh R. Ghazi 29da5c9288 avr.c (avr_init_once): Use xcalloc in lieu of xmalloc/memset.
* config/avr/avr.c (avr_init_once): Use xcalloc in lieu of
	xmalloc/memset.
	* config/ia64/ia64.c (ia64_reorg): Likewise.
	* conflict.c (conflict_graph_new): Likewise.
	* fixinc/fixincl.c (run_compiles): Likewise.
	* genattrtab.c (optimize_attrs): Likewise.
	* genrecog.c (new_decision): Likewise.
	* haifa-sched.c (schedule_block): Likewise.
	* hashtable.c (ht_create): Likewise.

From-SVN: r70337
2003-08-11 21:47:39 +00:00
Richard Henderson af1e551876 re PR target/11535 (__builtin_return_address may not work on ia64)
PR target/11535
        * config/ia64/ia64.c (ia64_initial_elimination_offset): Remove
        RETURN_ADDRESS_POINTER_REGNUM.
        (ia64_expand_prologue): Don't frob it.
        (ia64_output_function_epilogue): Likewise.
        (ia64_return_addr_rtx): New.
        (ia64_split_return_addr_rtx): New.
        * config/ia64/ia64-protos.h: Update.
        * config/ia64/ia64.h (FIRST_PSEUDO_REGISTER): Decrement.
        (RETURN_ADDRESS_POINTER_REGNUM): Remove.
        (GENERAL_REGNO_P): Don't check it.
        (AR_*_REGNUM): Renumber.
        (FIXED_REGISTERS): Remove RETURN_ADDRESS_POINTER_REGNUM.
        (CALL_USED_REGISTERS, CALL_REALLY_USED_REGISTERS): Likewise.
        (REG_ALLOC_ORDER, REG_CLASS_CONTENTS): Likewise.
        (ELIMINABLE_REGS, REGISTER_NAMES): Likewise.
        (RETURN_ADDR_RTX): Use ia64_return_addr_rtx.
        * config/ia64/ia64.md (UNSPEC_RET_ADDR): New.
        (movdi_ret_addr): New.

From-SVN: r70263
2003-08-08 16:49:57 -07:00
David Mosberger a32767e452 extend.texi (Function Attributes): Document the IA-64 version of the "model" attribute.
* doc/extend.texi (Function Attributes): Document the IA-64 version
        of the "model" attribute.

        * config/ia64/ia64.h (SYMBOL_FLAG_SMALL_ADDR): New macro.
        (SYMBOL_REF_SMALL_ADDR_P): Ditto.
        (PREDICATE_CODES): Mention "small_addr_symbolic_operand".

        * config/ia64/ia64.c (ia64_handle_model_attribute): New function.
        (ia64_encode_section_info): Likewise.
        (ia64_attribute_table): Add "model" attribute.
        (TARGET_ENCODE_SECTION_INFO): Define.
        (small_addr_symbolic_operand): New function.
        (got_symbolic_operand): Return 0 for a symbolref to an object
        in the small address area.
        (enum ia64_addr_area): New type.
        (small_ident1): New variable.
        (small_ident2): Likewise.
        (init_idents): New function.
        (ia64_get_addr_area): Likewise.
        (ia64_encode_addr_area): Likewise.
        (ia64_encode_section_info): Likewise.
        (ia64_expand_load_address): For symbolic references to objects in
        the small-address-area, load the address via gen_rtx_SET() (which,
        eventually, will expand into "addl").

From-SVN: r70209
2003-08-06 14:08:29 -07:00
Richard Henderson b23ba0b898 re PR target/10907 ([IA64] gcc violates the ia64 ABI)
PR target/10907
        * config/ia64/ia64.c (ia64_epilogue_uses): GP is live at end
        even with !TARGET_CONST_GP.
        (ia64_function_ok_for_sibcall): Reject non-local functions.

From-SVN: r69515
2003-07-17 09:33:22 -07:00
Kazu Hirata 2a43945fa5 h8300.c: Fix comment typos.
* config/h8300/h8300.c: Fix comment typos.
	* config/h8300/h8300.md: Likewise.
	* config/i386/athlon.md: Likewise.
	* config/i386/i386.c: Likewise.
	* config/i386/pentium.md: Likewise.
	* config/ia64/ia64.c: Likewise.
	* config/ia64/itanium1.md: Likewise.
	* config/ia64/itanium2.md: Likewise.
	* config/m32r/m32r.md: Likewise.
	* config/m68hc11/m68hc11.c: Likewise.
	* config/mcore/mcore.c: Likewise.
	* config/mips/sr71k.md: Likewise.
	* config/mips/t-iris5-as: Likewise.
	* config/mmix/mmix.h: Likewise.
	* config/ns32k/ns32k.h: Likewise.
	* config/ns32k/NOTES: Fix a typo.

From-SVN: r69021
2003-07-06 23:05:13 +00:00
Kazu Hirata c51e6d855e emmintrin.h: Fix comment typos.
* config/i386/emmintrin.h: Fix comment typos.
	* config/i386/i386.c: Likewise.
	* config/i386/i386.h: Likewise.
	* config/i386/sco5.h: Likewise.
	* config/ia64/ia64.c: Likewise.
	* config/ia64/itanium2.md: Likewise.

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

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

From-SVN: r68561
2003-06-27 09:49:44 +00:00
Richard Henderson 4e14f1f90f ia64.c (ia64_expand_call): Don't add ar.pfs for sibcalls.
* config/ia64/ia64.c (ia64_expand_call): Don't add ar.pfs for sibcalls.
        (ia64_split_call): Only load descriptor for GP register inputs.
        (ia64_expand_epilogue): Check current_frame_info.mask not
        current_function_is_leaf to restore ar.pfs.

From-SVN: r68549
2003-06-26 13:51:54 -07:00
Zack Weinberg 1bc7c5b629 target.h (asm_out.file_start, [...]): New hooks.
* target.h (asm_out.file_start, file_start_app_off,
	file_start_file_directive): New hooks.
	* target-def.h (TARGET_ASM_FILE_START_FILE_DIRECTIVE,
	TARGET_ASM_FILE_START_APP_OFF, TARGET_ASM_FILE_START):
	New hook-definition macros.
	* doc/tm.texi: Document new hooks; remove docs of ASM_FILE_START.
	* varasm.c (default_file_start): New.
	* output.h: Prototype it.
	* toplev.c (init_asm_output): Use targetm.asm_out.file_start.
	* system.h: Poison ASM_FILE_START.

	* config/alpha/alpha.c (alpha_write_verstamp): Delete.
	(alpha_file_start): New, define if !TARGET_ABI_UNICOSMK.
	(unicosmk_asm_file_start): Rename unicosmk_file_start,
	make static, take no arguments.
	(TARGET_ASM_FILE_START, TARGET_ASM_FILE_END,
	TARGET_ASM_FILE_START_FILE_DIRECTIVE): Set as appropriate.
	* config/alpha/unicosmk.h: Don't define ASM_FILE_START nor
	TARGET_ASM_FILE_END.  Remove reference to ASM_FILE_START in
	comment.
	* config/arc/arc.c (arc_asm_file_start): Rename
	arc_file_start, take no arguments, make static.
	(TARGET_ASM_FILE_START): Set it.
	* config/arm/arm.c (aof_file_start): New static function.
	(TARGET_ASM_FILE_START): Set it, when appropriate.
	* config/arm/coff.h, config/arm/elf.h:
	Set TARGET_ASM_FILE_START_APP_OFF to true.
	* config/avr/avr.c (asm_file_start): Rename avr_file_start,
	take no arguments, make static.
	(TARGET_ASM_FILE_START, TARGET_ASM_FILE_START_FILE_DIRECTIVE):
	Set them.
	* config/c4x/c4x.c (c4x_file_start): New static function.
	(TARGET_ASM_FILE_START, TARGET_ASM_FILE_START_FILE_DIRECTIVE):
	Set them.
	* config/cris/cris.c (cris_file_start): New static function.
	(TARGET_ASM_FILE_START): Set it.
	* config/dsp16xx/dsp16xx.c (coff_dsp16xx_file_start): Rename
	dsp16xx_file_start, make static.
	(luxworks_dsp16xx_file_start): Delete.
	(TARGET_ASM_FILE_START): Set it.
	* config/h8300/h8300.c (asm_file_start): Rename
	h8300_file_start, make static, take no arguments.
	(TARGET_ASM_FILE_START): Set it.
	* config/i370/i370.c (i370_file_start): New static function.
	(TARGET_ASM_FILE_START): Set it.
	* config/i386/i386.c (x86_file_start): New static function.
	(TARGET_ASM_FILE_START): Set it.
	* config/i386/i386.h (X86_FILE_START_VERSION_DIRECTIVE,
	X86_FILE_START_FLTUSED): New macros, default to false.
	* config/i386/i386-interix.h: Override X86_FILE_START_FLTUSED to 1.
	* config/i386/sysv4.h, config/i386/sco5.h: Override
	X86_FILE_START_VERSION_DIRECTIVE to true.
	* config/ia64/ia64.c (ia64_file_start): New static function.
	(TARGET_ASM_FILE_START): Set it.
	(emit_safe_across_calls): Take no arguments.
	* config/ia64/ia64.md: Update to match.
	* config/m32r/m32r.c (m32r_asm_file_start): Rename
	m32r_file_start, make static, take no arguments.
	(TARGET_ASM_FILE_START): Set it.
	* config/m68hc11/m68hc11.c (m68hc11_asm_file_start): Rename
	m68hc11_file_start, make static, take no arguments.
	(TARGET_ASM_FILE_START, TARGET_ASM_FILE_START_FILE_DIRECTIVE): Set.
	(print_options): Delete.
	* config/m68k/m68k.c (m68k_hp320_file_start): New static function.
	(TARGET_ASM_FILE_START_APP_OFF): Set.
	* config/m68k/hp320.h: Set TARGET_ASM_FILE_START to
	m68k_hp320_file_start.
	* config/mips/mips.c (iris6_asm_file_start, mips_asm_file_start):
	Make static, take no arguments.
	(TARGET_ASM_FILE_START, TARGET_ASM_FILE_START_FILE_DIRECTIVE): Set.
	* config/mmix/mmix.c (mmix_asm_file_start): Rename
	mmix_file_start, make static, take no arguments.
	(TARGET_ASM_FILE_START, TARGET_ASM_FILE_START_FILE_DIRECTIVE): Set.
	* config/mn10300/mn10300.c (asm_file_start): Rename
	mn10300_file_start, make static, take no arguments.
	(TARGET_ASM_FILE_START, TARGET_ASM_FILE_START_FILE_DIRECTIVE): Set.
	* config/ns32k/ns32k.c (TARGET_ASM_FILE_START_APP_OFF): Set.
	* config/pa/pa.c (pa_file_start_level, pa_file_start_space,
	pa_file_start_file, pa_file_start_mcount, pa_elf_file_start,
	pa_som_file_start, pa_linux_file_start, pa_hpux64_gas_file_start,
	pa_hpux64_hpas_file_start): New static functions.
	* config/pa/elf.h: Set TARGET_ASM_FILE_START to pa_elf_file_start.
	* config/pa/pa-linux.h: Set TARGET_ASM_FILE_START to
	pa_linux_file_start.
	* config/pa/pa64-hpux.h: Set TARGET_ASM_FILE_START to
	pa_hpux64_gas_file_start or pa_hpux64_hpas_file_start, as
	appropriate.
	* config/pa/som.h: Set TARGET_ASM_FILE_START to pa_som_file_start.
	* config/rs6000/rs6000.c: Include xcoffout.h when TARGET_XCOFF.
	(rs6000_file_start): Make static, take no arguments.  Reset
	default_cpu under certain conditions.
	(rs6000_xcoff_file_start): New function.
	* config/rs6000/rs6000.h (TARGET_ASM_FILE_START): Set.
	* config/rs6000/xcoff.h (TARGET_ASM_FILE_START,
	TARGET_ASM_FILE_START_FILE_DIRECTIVE): Override.
	* config/sh/sh.c (output_file_start): Rename
	sh_file_start, make static, take no arguments.  Merge in old
	code from sh/elf.h's ASM_FILE_START, conditioned on TARGET_ELF.
	(TARGET_ASM_FILE_START, TARGET_ASM_FILE_START_FILE_DIRECTIVE): Set.
	* config/sh/sh.c (TARGET_ELF): Define to 0.
	* config/sh/elf.h (TARGET_ELF): Redefine to 1.
	* config/v850/v850.c (asm_file_start): Delete.
	(TARGET_ASM_FILE_START_FILE_DIRECTIVE): Set.
	* config/vax/vax.c (vax_file_start): New static function.
	(TARGET_ASM_FILE_START, TARGET_ASM_FILE_START_APP_OFF): Set.

	* config/darwin.h: Override ASM_FILE_START_FILE_DIRECTIVE to false.
	* config/elfos.h, config/svr3.h, config/arm/elf.h, config/arm/pe.h
	* config/i386/att.h, config/i386/gas.h, config/i386/linux.h
	* config/i386/sysv4.h, config/i386/sco5.h, config/i960/i960-coff.h
	* config/m68k/coff.h, config/m68k/hp320.h, config/mcore/mcore-pe.h
	* config/vax/vaxv.h: Set ASM_FILE_START_FILE_DIRECTIVE to true.

	* config/darwin.h, config/elfos.h, config/alpha/elf.h
	* config/alpha/openbsd.h, config/alpha/osf.h, config/alpha/vms.h
	* config/arc/arc.h, config/arm/aof.h, config/arm/aout.h
	* config/arm/coff.h, config/arm/elf.h, config/arm/pe.h
	* config/avr/avr.h, config/c4x/c4x.h, config/cris/cris.h
	* config/dsp16xx/dsp16xx.h, config/h8300/elf.h, config/h8300/h8300.h
	* config/i370/i370.h, config/i386/att.h, config/i386/gas.h
	* config/i386/i386-interix.h, config/i386/linux.h, config/i386/sysv4.h
	* config/i386/sco5.h, config/i960/i960-coff.h, config/i960/i960.h
	* config/ia64/ia64.h, config/ia64/sysv4.h, config/m32r/m32r.h
	* config/m68hc11/m68hc11.h, config/m68k/coff.h, config/m68k/m68k.h
	* config/mcore/mcore-pe.h, config/mips/iris6.h, config/mips/mips.h
	* config/mmix/mmix.h, config/mn10300/mn10300.h, config/ns32k/ns32k.h
	* config/pa/elf.h, config/pa/pa-linux.h, config/pa/pa64-hpux.h
	* config/pa/som.h, config/pdp11/pdp11.h, config/rs6000/linux64.h
	* config/rs6000/lynx.h, config/rs6000/xcoff.h, config/sh/elf.h
	* config/sh/sh.h, config/sparc/sparc.h, config/v850/v850.h
	* config/vax/vax.h, config/vax/vaxv.h: Don't (re)define ASM_FILE_START.

	* config/alpha/alpha-protos.h, config/arc/arc-protos.h
	* config/avr/avr-protos.h, config/dsp16xx/dsp16xx-protos.h
	* config/h8300/h8300-protos.h, config/ia64/ia64-protos.h
	* config/m32r/m32r-protos.h, config/m68hc11/m68hc11-protos.h
	* config/mips/mips-protos.h, config/mmix/mmix-protos.h
	* config/mn10300/mn10300-protos.h, config/rs6000/rs6000-protos.h
	* config/sh/sh-protos.h, config/v850/v850-protos.h: Update.

	* xcoffout.h, config/rs6000/aix.h, config/rs6000/xcoff.h:
	Remove reference to ASM_FILE_START in comment.
	* config/arm/aof.h, config/arm/aout.h, config/arm/freebsd.h
	* config/arm/linux-gas.h, config/arm/netbsd-elf.h
	* config/arm/netbsd.h: Delete definition of ARM_OS_NAME.

From-SVN: r68229
2003-06-19 21:47:26 +00:00
Stephen Clarke fe3ad57221 bt-load.c: New file.
2003-06-18  Stephen Clarke <stephen.clarke@superh.com>
            J"orn Rennecke <joern.rennecke@superh.com>

	* bt-load.c: New file.
	* Makefile.in (OBJS): Include bt-load.o
	(bt-load.o): Add dependencies.
	* flags.h (flag_branch_target_load_optimize): Declare.
	(flag_branch_target_load_optimize2): Likewise.
	* hooks.c (hook_reg_class_void_no_regs): New function.
	(hook_bool_bool_false): Likewise.
	* hooks.h (hook_reg_class_void_no_regs, hook_bool_bool_false): Declare.
	* rtl.h (branch_target_load_optimize): Declare.
	* target-def.h (TARGET_BRANCH_TARGET_REGISTER_CLASS): Define.
	(TARGET_BRANCH_TARGET_REGISTER_CALLEE_SAVED): Likewise.
	(TARGET_INITIALIZER): Include these.
	* target.h (struct gcc_target): Add branch_target_register_class
	and branch_target_register_callee_saved members.
	* toplev.c (enum dump_file_index): Add DFI_branch_target_load
	(dump_file) Add "tars" entry.
	(flag_branch_target_load_optimize): New variable.
	(flag_branch_target_load_optimize2): Likewise.
	(lang_independent_options): Add entries for new options.
	(rest_of_compilation): Call branch_target_load_optimize.
	* doc/tm.texi (TARGET_BRANCH_TARGET_REGISTER_CLASS): Document.
	(TARGET_BRANCH_TARGET_REGISTER_CALLEE_SAVED): Likewise.
	* doc/invoke.texi: Document -fbranch-target-load-optimize and
	-fbranch-target-load-optimize2.
	* rtl.h (epilogue_completed): Declare.
	* recog.c (epilogue_completed): New variable.
	* toplev.c (rest_of_compilation): Set it.
	* flow.c (mark_regs_live_at_end): Use it.
	* config/ia64/ia64.c (ia64_output_mi_thunk): Set it.
	* config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
	* config/sh/sh.c (sh_output_mi_thunk): Likewise.
	* config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.

	* sh.c (shmedia_space_reserved_for_target_registers): New variable.
	(sh_target_reg_class): New function.
	(sh_optimize_target_register_callee_saved): Likwise.
	(shmedia_target_regs_stack_space): Likewise.
	(shmedia_reserve_space_for_target_registers_p): Likewise.
	(shmedia_target_regs_stack_adjust): Likewise.
	(TARGET_BRANCH_TARGET_REGISTER_CLASS): Override.
	(TARGET_BRANCH_TARGET_REGISTER_CALLEE_SAVED): Likewise.
	(calc_live_regs): If flag_branch_target_load_optimize2 and
	TARGET_SAVE_ALL_TARGET_REGS is enabled, and we have space reserved
	for target registers, make sure that we save all target registers.
	(sh_expand_prologue, sh_expand_epilogue): Take target register
	optimizations into account.  Collapse stack adjustments if that
	is beneficial.
	(initial_elimination_offset): Reserve space for target registers
	if necessary.
	* sh.h (SAVE_ALL_TR_BIT, TARGET_SAVE_ALL_TARGET_REGS): Define.
	(OPTIMIZATION_OPTIONS): Enable flag_branch_target_load_optimize.

Co-Authored-By: J"orn Rennecke <joern.rennecke@superh.com>

From-SVN: r68165
2003-06-18 20:43:55 +01:00
Richard Kenner 8419b6757b ia64.c (ia64_expand_builtin, [...]): Handle POINTERS_EXTEND_UNSIGNED.
* config/ia64/ia64.c (ia64_expand_builtin, case IA64_BUILTIN_BSP):
	Handle POINTERS_EXTEND_UNSIGNED.

From-SVN: r68083
2003-06-17 09:40:37 -04:00
Andrew Pinski 117dca74cc t-rs6000: Add dependence of cfglayout.h to rs6000.o.
* config/rs6000/t-rs6000: Add dependence of cfglayout.h to rs6000.o.
        * config/rs6000/rs6000.c: Include cfglayout.h.
        * config/alpha/alpha.c: Likewise.
        * config/ia64/ia64.c: Likewise.
        * config/sparc/sparc.c: Likewise.
        * config/sh/sh.c: Likewise.

From-SVN: r67982
2003-06-15 11:01:57 -07:00
Richard Henderson a2855205a5 alpha.c (alpha_output_mi_thunk_osf): Call insn_locators_initialize.
* config/alpha/alpha.c (alpha_output_mi_thunk_osf): Call
        insn_locators_initialize.
        * config/ia64/ia64.c (ia64_output_mi_thunk): Likewise.
        * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
        * config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
        * config/sh/sh.c (sh_output_mi_thunk): Do it later.

From-SVN: r67969
2003-06-15 00:36:43 -07:00
Zack Weinberg a5fe455b12 config.gcc (with_cpu handling): Translate sparc64 in $machine to --with-cpu=v9.
* config.gcc (with_cpu handling): Translate sparc64 in
	$machine to --with-cpu=v9.
	* config/alpha/alpha.c
	(TARGET_ASM_GLOBALIZE_LABEL [TARGET_ABI_UNICOSMK]): Correct definition.
	(alpha_setup_incoming_varargs): #ifdef out when TARGET_ABI_UNICOSMK.

	* target.h: New hook asm_out.file_end.
	* target.h: Update to match.  New hook macro TARGET_ASM_FILE_END.
	* toplev.c (compile_file: Use targetm.asm_out.file_end.
	* system.h: Poison ASM_FILE_END.
	* varasm.c (file_end_indicate_exec_stack): New.
	* output.h: Prototype it.
	* doc/tm.texi: Document TARGET_ASM_FILE_END and
	file_end_indicate_exec_stack.  Delete references to attasm.h.

	* config/darwin.h (TARGET_ASM_FILE_END): Reset to darwin_file_end.
	(ASM_FILE_END): Delete; move code...
	* config/darwin.c (darwin_file_end): Here; new function.
	* config/darwin-protos.h: Prototype it.
	* config/alpha/alpha.c (unicosmk_asm_file_end): Make static,
	rename unicosmk_file_end.
	* config/arm/aof.h (ASM_FILE_END): Delete; move code...
	* config/arm/arm.c (aof_file_end): ... here; new static function.
	Set TARGET_ASM_FILE_END to aof_file_end if AOF_ASSEMBLER.
	Make aof_dump_imports and aof_dump_pic_table static.
	* config/avr/avr.c (asm_file_end): Rename avr_file_end, make static.
	Set TARGET_ASM_FILE_END to avr_file_end.
	* config/c4x/c4x.c (c4x_file_end): Make static.  Take no arguments.
	Set TARGET_ASM_FILE_END to c4x_file_end.
	* config/h8300/h8300.c (asm_file_end): Rename h8300_file_end,
	make static. Take no arguments.  Set TARGET_ASM_FILE_END to
	h8300_file_end.
	* config/i370/i370.h (ASM_FILE_END): Delete; move code...
	* config/i370/i370.c (i370_file_end): ... here; new static function.
	Set TARGET_ASM_FILE_END to i370_file_end.
	 * config/i386/i386.c (ix86_asm_file_end): Rename ix86_file_end.
	 Take no arguments.  Call file_end_indicate_exec_stack if
	 NEED_INDICATE_EXEC_STACK; don't use SUBTARGET_FILE_END.
	* config/i386/i386.h: Set TARGET_ASM_FILE_END, not ASM_FILE_END.
	Define NEED_INDICATE_EXEC_STACK to 0.
	* config/i386/linux.h, config/i386/linux64.h: Redefine
	NEED_INDICATE_EXEC_STACK to 1 instead of setting SUBTARGET_FILE_END.
	* config/i386/winnt.c (i386_pe_asm_file_end): Rename to
	i386_pe_file_end.  Take no arguments.  Use ix86_file_end.
	* config/ia64/ia64.c (ia64_hpux_asm_file_end): Rename to
	ia64_hpux_file_end, make static.  Take no arguments.
	* config/ip2k/ip2k.c (asm_file_start, asm_file_end,
	commands_in_prologues, commands_in_epilogues): Delete.
	(function_epilogue): Update to match.
	* config/mips/mips.c (mips_asm_file_end): Rename mips_file_end,
	make static.  Take no arguments.
	(iris6_asm_file_end): Rename iris6_file_end, make static, use
	mips_file_end, take no arguments.
	Set TARGET_ASM_FILE_END to iris6_file_end or mips_file_end as
	appropriate.
	* config/mmix/mmix.c (mmix_asm_file_end): Rename mmix_file_end,
	make static, take no arguments. Set TARGET_ASM_FILE_END to
	mmix_file_end.
	* config/pa/pa.c (output_deferred_plabels): Make static, take
	no arguments.  Set TARGET_ASM_FILE_END to output_deferred_plabels.
	* config/rs6000/xcoff.h (TARGET_ASM_FILE_END): Set it.
	(ASM_FILE_END): Delete; move code...
	* config/rs6000/rs6000.c (rs6000_xcoff_file_end): ... here;
	new static function.

	* config/avr/avr.h, config/cris/cris.h, config/h8300/h8300.h
	* config/mmix/mmix.h, config/mips/iris6.h, config/mips/mips.h:
	Don't set ASM_FILE_END.
	* config/alpha/linux-elf.h, config/m68k/linux.h, config/rs6000/linux.h
	* config/rs6000/linux64.h, config/s390/linux.h, config/sparc/linux.h
	* config/sparc/linux64.h: Set TARGET_ASM_FILE_END to
	file_end_indicate_exec_stack; don't set ASM_FILE_END.
	* config/alpha/unicosmk.h, config/i386/cygming.h
	* config/ia64/hpux.h: Set TARGET_ASM_FILE_END, not ASM_FILE_END.
	* config/arm/arm-protos.h, config/alpha/alpha-protos.h
	* config/avr/avr-protos.h, config/c4x/c4x-protos.h
	* config/h8300/h8300-protos.h, config/ia64/ia64-protos.h
	* config/ip2k/ip2k-protos.h, config/mips/mips-protos.h
	* config/mmix/mmix-protos.h, config/pa/pa-protos.h: Update.

From-SVN: r67591
2003-06-07 17:11:48 +00:00
Kaveh R. Ghazi 4a0a75dd44 alpha.c (print_operand_address, [...]): Use string concatentation on HOST_WIDE_INT_PRINT_* format specifier to collapse...
* alpha.c (print_operand_address, alpha_start_function,
	unicosmk_output_ssib): Use string concatentation on
	HOST_WIDE_INT_PRINT_* format specifier to collapse multiple
	function calls into one.
	* arm.c (arm_print_operand): Likewise.
	* cris.c (cris_asm_output_mi_thunk): Likewise.
	* frv.c (frv_asm_output_mi_thunk): Likewise.
	* ia64.c (ia64_print_operand, process_set): Likewise.
	* m68k.c (m68k_output_function_epilogue, m68k_output_mi_thunk):
	Likewise.
	* mips/iris5gas.h (PUT_SDB_SIZE): Likewise.
	* mips.h (PUT_SDB_INT_VAL, PUT_SDB_SIZE): Likewise.
	* pa.c (output_div_insn, pa_asm_output_mi_thunk): Likewise.
	* pa.h (PRINT_OPERAND_ADDRESS): Likewise.
	* rs6000.c (rs6000_va_start, print_operand_address): Likewise.
	* s390.c (s390_assemble_integer): Likewise.
	* sparc.c (sparc_flat_function_prologue,
	sparc_flat_function_epilogue): Likewise.
	* stormy16.c (xstormy16_print_operand_address, xstormy16_print_operand): Likewise.
	* vax.c (vax_output_mi_thunk): Likewise.

From-SVN: r66876
2003-05-16 18:57:46 +00:00
Richard Henderson ae49d6e592 ia64.c (ia64_expand_load_address): Force destination to be DImode register.
* config/ia64/ia64.c (ia64_expand_load_address): Force destination
        to be DImode register.  Merge load_symptr.
        * config/ia64/ia64.md (load_symptr): Remove.

From-SVN: r66808
2003-05-14 10:46:50 -07:00
Richard Sandiford 18dbd95060 target-def.h (TARGET_MACHINE_DEPENDENT_REORG): Define.
* target-def.h (TARGET_MACHINE_DEPENDENT_REORG): Define.
	(TARGET_INITIALIZER): Include it.
	* target.h (struct gcc_target): Add machine_dependent_reorg field.
	* toplev.c (rest_of_compilation): Use targetm.machine_dependent_reorg.

	* config/alpha/alpha-protos.h (alpha_reorg): Remove declaration.
	* config/alpha/alpha.h (MACHINE_DEPENDENT_REORG): Remove.
	* config/alpha/alpha.c (TARGET_MACHINE_DEPENDENT_REORG): Define.
	(alpha_handle_trap_shadows): Remove "first insn" parameter.
	(alpha_align_insns): Likewise.
	(alpha_reorg): Likewise.  Make static.  Update calls to above
	functions.

	* config/arm/arm-protos.h (arm_reorg): Remove declaration.
	* config/arm/arm.h (MACHINE_DEPENDENT_REORG): Remove.
	* config/arm/arm.c (TARGET_MACHINE_DEPENDENT_REORG): Define.
	(arm_reorg): Remove parameter.  Make static.

	* config/avr/avr-protos.h (machine_dependent_reorg): Remove.
	* config/avr/avr.h (MACHINE_DEPENDENT_REORG): Remove.
	* config/avr/avr.c (TARGET_MACHINE_DEPENDENT_REORG): Define.
	(avr_reorg): Renamed from machine_dependent_reorg.  Make static.
	Remove parameter.

	* config/c4x/c4x-protos.h (c4x_process_after_reload): Remove.
	* config/c4x/c4x.h (MACHINE_DEPENDENT_REORG): Remove.
	* config/c4x/c4x.c (TARGET_MACHINE_DEPENDENT_REORG): Define.
	(c4x_reorg): Renamed from c4x_process_after_reload.  Make static.
	Remove parameter.

	* config/d30v/d30v-protos.h (d30v_machine_dependent_reorg): Remove.
	* config/d30v/d30v.h (MACHINE_DEPENDENT_REORG): Remove.
	* config/d30v/d30v.c (d30v_machine_dependent_reorg): Remove.

	* config/frv/frv-protos.h (frv_machine_dependent_reorg): Remove.
	* config/frv/frv.c: Remove orphaned comment.

	* config/i386/i386-protos.h (x86_machine_dependent_reorg): Remove.
	* config/i386/i386.h (MACHINE_DEPENDENT_REORG): Remove.
	* config/i386/i386.c (TARGET_MACHINE_DEPENDENT_REORG): Define.
	(ix86_reorg): Renamed from x86_machine_dependent_reorg.  Make static.
	Remove parameter.

	* config/ia64/ia64-protos.h (ia64_reorg): Remove declaration.
	* config/ia64/ia64.h (MACHINE_DEPENDENT_REORG): Remove.
	* config/ia64/ia64.c (TARGET_MACHINE_DEPENDENT_REORG): Define.
	(emit_insn_group_barriers): Remove "first insn" parameter.
	(emit_all_insn_group_barriers): Likewise.
	(ia64_reorg): Likewise.  Make static.  Update calls to above functions.
	(ia64_output_mi_thunk): Update call to emit_all_insn_group_barriers.

	* config/ip2k/ip2k-protos.h (machine_dependent_reorg): Remove.
	* config/ip2k/ip2k.h (MACHINE_DEPENDENT_REORG): Remove.
	* config/ip2k/ip2k.c (TARGET_MACHINE_DEPENDENT_REORG): Define.
	(ip2k_reorg): Renamed from machine_dependent_reorg.  Make static.
	Remove parameter.

	* config/m68hc11/m68hc11-protos.h (m68hc11_reorg): Remove declaration.
	* config/m68hc11/m68hc11.h (MACHINE_DEPENDENT_REORG): Remove.
	* config/m68hc11/m68hc11.c (TARGET_MACHINE_DEPENDENT_REORG): Define.
	(m68hc11_reorg): Make static.  Remove parameter.

	* config/mcore/mcore-protos.h (mcore_dependent_reorg): Remove.
	* config/mcore/mcore.h (MACHINE_DEPENDENT_REORG): Remove.
	* config/mcore/mcore.c (TARGET_MACHINE_DEPENDENT_REORG): Define.
	(conditionalize_optimization): Remove parameter.
	(mcore_reorg): Renamed from mcore_dependent_reorg.  Remove parameter.
	Make static.  Update call to conditionalize_optimization.

	* config/mips/mips-protos.h (machine_dependent_reorg): Remove.
	* config/mips/mips.h (MACHINE_DEPENDENT_REORG): Remove.
	* config/mips/mips.c (TARGET_MACHINE_DEPENDENT_REORG): Define.
	(mips_reorg): Renamed from machine_dependent_reorg.  Remove parameter.
	Make static.

	* config/mmix/mmix-protos.h (mmix_machine_dependent_reorg): Remove.
	* config/mmix/mmix.h (MACHINE_DEPENDENT_REORG): Remove.
	* config/mmix/mmix.c (TARGET_MACHINE_DEPENDENT_REORG): Define.
	(mmix_reorg): Renamed from mmix_machine_dependent_reorg.  Make static.
	Remove parameter.

	* config/pa/pa-protos.h (pa_reorg): Remove declaration.
	* config/pa/pa.h (MACHINE_DEPENDENT_REORG): Remove.
	* config/pa/pa.c (TARGET_MACHINE_DEPENDENT_REORG): Define.
	(pa_combine_instructions): Remove "first insn" parameter.
	(remove_useless_addtr_insns): Likewise.
	(pa_reorg): Likewise.  Make static.  Update calls to above functions.

	* config/rs6000/rs6000.h (MACHINE_DEPENDENT_REORG): Remove
	commented-out definition.

	* config/s390/s390-protos.h (s390_machine_dependent_reorg): Remove.
	* config/s390/s390.h (MACHINE_DEPENDENT_REORG): Remove.
	* config/s390/s390.c (TARGET_MACHINE_DEPENDENT_REORG): Define.
	(s390_reorg): Renamed from s390_machine_dependent_reorg.  Make static.
	Remove parameter.

	* config/sh/sh-protos.h (machine_dependent_reorg): Remove.
	* config/sh/sh.h (MACHINE_DEPENDENT_REORG): Remove.
	* config/sh/sh.c (TARGET_MACHINE_DEPENDENT_REORG): Define.
	(sh_reorg): Renamed from machine_dependent_reorg.  Make static.
	Remove parameter.
	(sh_output_mi_thunk): Call sh_reorg directly.
	* config/sh/sh.md: Update comment.

	* config/stormy16/stormy16.h (MACHINE_DEPENDENT_REORG): Remove
	commented-out definition.

	* config/v850/v850-protos.h (v850_reorg): Remove declaration.
	* config/v850/v850.h (MACHINE_DEPENDENT_REORG): Remove.
	* config/v850/v850.c (TARGET_MACHINE_DEPENDENT_REORG): Define.
	(v850_reorg): Make static.  Remove parameter.

	* config/xtensa/xtensa-protos.h (xtensa_reorg): Remove declaration.
	* config/xtensa/xtensa.h (MACHINE_DEPENDENT_REORG): Remove.
	* config/xtensa/xtensa.c (TARGET_MACHINE_DEPENDENT_REORG): Define.
	(xtensa_reorg): Make static.  Remove parameter.

	* doc/tm.texi (MACHINE_DEPENDENT_REORG): Remove.
	(TARGET_MACHINE_DEPENDENT_REORG): Document.

From-SVN: r66800
2003-05-14 07:29:54 +00:00
Andreas Schwab 746015842f ia64.c (ia64_function_ok_for_sibcall): Mark 'exp' as unused.
* config/ia64/ia64.c (ia64_function_ok_for_sibcall): Mark 'exp'
	as unused.
	(bundling): Initialize 'pos'.
	(ia64_expand_builtin): Initialize 'rmode'.

From-SVN: r66738
2003-05-12 21:17:12 +00:00
H.J. Lu 60986d641c ia64.c (ia64_expand_compare_and_swap): Add rmode for return mode.
2003-04-25  H.J. Lu <hjl@gnu.org>

	* config/ia64/ia64.c (ia64_expand_compare_and_swap): Add rmode
	for return mode.
	(ia64_expand_builtin): Set rmode to SImode for
	IA64_BUILTIN_BOOL_COMPARE_AND_SWAP_SI,
	IA64_BUILTIN_VAL_COMPARE_AND_SWAP_SI and
	IA64_BUILTIN_BOOL_COMPARE_AND_SWAP_DI. Set remode to DImode
	for IA64_BUILTIN_VAL_COMPARE_AND_SWAP_DI.

From-SVN: r66077
2003-04-25 15:09:12 -07:00
Richard Henderson f5bdba44f0 ia64.c (ia64_compute_frame_size): Allow inline asm to clobber ar.pfs and ar.unat.
* config/ia64/ia64.c (ia64_compute_frame_size): Allow inline asm
        to clobber ar.pfs and ar.unat.
        (ia64_expand_prologue): Force alloc instruction if ar.pfs saved;
        fix test for spilling ar.pfs to the stack.

From-SVN: r66074
2003-04-25 14:02:25 -07:00
H.J. Lu 0c79f08ba8 ia64.c (ia64_init_builtins): Add si_ftype_pdi_di_di for __sync_bool_compare_and_swap_di for int return type.
2003-04-24  H.J. Lu <hjl@gnu.org>

	* config/ia64/ia64.c (ia64_init_builtins): Add si_ftype_pdi_di_di
	for __sync_bool_compare_and_swap_di for int return type.

	* config/ia64/ia64intrin.h (__sync_bool_compare_and_swap_di):
	Change return type to int.
	(__sync_bool_compare_and_swap): Likewise.

From-SVN: r66042
2003-04-24 10:23:57 -07:00
Richard Henderson 3907500bf1 * config/ia64/ia64.c (ia64_in_small_data_p): Disallow strings.
From-SVN: r65747
2003-04-17 12:54:03 -07:00
Richard Henderson 1cdbd6309a ia64.c (sdata_symbolic_operand): Use SYMBOL_REF_SMALL_P and SYMBOL_REF_LOCAL_P.
* config/ia64/ia64.c (sdata_symbolic_operand): Use
        SYMBOL_REF_SMALL_P and SYMBOL_REF_LOCAL_P.
        (tls_symbolic_operand): Use SYMBOL_REF_TLS_MODEL.
        (function_operand): Use SYMBOL_REF_FUNCTION_P.
        (ia64_expand_load_address): Likewise.
        (ia64_assemble_integer): Likewise.
        (ia64_encode_section_info): Remove.
        (ia64_strip_name_encoding): Remove.
        * config/ia64/ia64.h (ENCODE_SECTION_INFO_CHAR): Remove.
        * config/ia64/sysv4.h (ASM_OUTPUT_LABELREF): Don't strip it.

From-SVN: r65697
2003-04-16 12:53:13 -07:00
Steve Ellcey 08744705c0 ia64-protos.h (addp4_optimize_ok): New.
* ia64-protos.h (addp4_optimize_ok): New.
	* ia64.c (addp4_optimize_ok): New.
	* ia64.md (*ptr_extend_plus_1): Use addp4_optimize_ok.
	(*ptr_extend_plus_2): Ditto.

From-SVN: r65435
2003-04-10 19:53:54 +00:00
Vladimir Makarov f32360c722 ia64.c (issue_nops_and_insn): Add new parameter.
2003-04-09  Vladimir Makarov  <vmakarov@redhat.com>

	* config/ia64/ia64.c (issue_nops_and_insn): Add new parameter.
	Check that asm insn starts on a new cycle.  Add nops after asm
	insn to end bundle.
	(bundling): Move insn type evaluation from the loop.  Call
	issue_nops_and_insn with the new parameter.  Ignore changing
	position for nops after asm insn.

From-SVN: r65401
2003-04-09 18:50:03 +00:00
Richard Henderson 21515593f6 ia64.c (move_operand): Allow symbolic_operand, but not tls_symbolic_operand.
* config/ia64/ia64.c (move_operand): Allow symbolic_operand,
        but not tls_symbolic_operand.
        (ia64_expand_load_address): Remove scratch operand.
        (ia64_expand_tls_address): Split out from ia64_expand_move.
        (ia64_expand_move): Split symbolics only after reload.
        (ia64_emit_cond_move): New.
        * config/ia64/ia64-protos.h: Update.
        * config/ia64/ia64.md (movsi_symbolic, movdi_symbolic): Remove.
        (symbolic splitter): Accept SImode operands too.
        (cmove splitter): Use ia64_emit_cond_move.

From-SVN: r65399
2003-04-09 10:13:31 -07:00
Jakub Jelinek be565ad7df ia64.c (ia64_expand_op_and_fetch): Fix comment.
* config/ia64/ia64.c (ia64_expand_op_and_fetch): Fix comment.
	(ia64_expand_compare_and_swap): Use always DImode ar.ccv,
	zero extend old to it.
	* config/ia64/ia64.md (cmpxchg_acq_si): Remove mode from ccv
	operand.

	* gcc.dg/ia64-sync-3.c: New test.

From-SVN: r64895
2003-03-26 17:00:52 +01:00
Mark Mitchell f89283915d function.c (put_var_into_stack): Change bool parameter to int.
* function.c (put_var_into_stack): Change bool parameter to int.
	(gen_mem_addressof): Likewise.
	* rtl.h (gen_mem_addressof): Likewise.
	* tree.h (put_var_into_stack): Likewise.
	* config/alpha/alpha.c (alpha_gp_save_rtx): Adjust call to
	gen_mem_addressof or put_var_into_stack.
	* config/c4x/c4x.c (c4x_expand_builtin): Likewise.
	* config/ia64/ia64.c (spill_tfmode_operand): Likewise.

From-SVN: r64807
2003-03-24 17:53:31 +00:00
Jakub Jelinek 6b2300b390 s390.c (s390_output_dwarf_dtprel): New.
* config/s390/s390.c (s390_output_dwarf_dtprel): New.
	* config/s390/s390-protos.h (s390_output_dwarf_dtprel): New proto.
	* config/s390/s390.h (ASM_OUTPUT_DWARF_DTPREL): Define.

	* config/ia64/ia64.c (ia64_output_dwarf_dtprel): New.
	* config/ia64/ia64-protos.h (ia64_output_dwarf_dtprel): New proto.
	* config/ia64/ia64.h (ASM_OUTPUT_DWARF_DTPREL): Define.

From-SVN: r64556
2003-03-19 01:13:02 +01:00
Nathanael Nerode 3bed29309b fde-glibc.c, [...]: It's GCC, not GNU CC.
* config/ia64/fde-glibc.c, config/ia64/freebsd.h,
	config/ia64/hpux.h, config/ia64/hpux_longdouble.h,
	config/ia64/ia64-c.c, config/ia64/ia64-modes.def,
	config/ia64/ia64-protos.h, config/ia64/ia64.c,
	config/ia64/ia64.h, config/ia64/ia64.md,
	config/ia64/itanium1.md, config/ia64/itanium2.md,
	config/ia64/quadlib.c, config/ia64/unwind-ia64.c,
	config/ia64/unwind-ia64.h: It's GCC, not GNU CC.

From-SVN: r64313
2003-03-13 18:26:30 +00:00
Richard Henderson 599aedd920 emit-rtl.c (try_split): Handle 1-1 splits of call insns properly.
* emit-rtl.c (try_split): Handle 1-1 splits of call insns properly.

        * config/ia64/ia64.c (TARGET_FUNCTION_OK_FOR_SIBCALL): New.
        (ia64_gp_save_reg): Remove.
        (struct ia64_frame_info): Move to the beginning of the file;
        add reg_save_gp.
        (ia64_expand_call): Rearrange for new call patterns.
        (ia64_reload_gp): New.
        (ia64_split_call): New.
        (ia64_compute_frame_size): Allocate reg_save_gp.
        (ia64_expand_prologue): Save reg_save_gp.
        (ia64_expand_epilogue): Don't restore gp.
        (ia64_hard_regno_rename_ok): Remove R4 hack.
        (ia64_function_ok_for_sibcall): New.
        (ia64_output_mi_thunk): Set reload_completed, no_new_pseudos;
        call try_split on sibcall pattern.
        * config/ia64/ia64-protos.h: Update.
        * config/ia64/ia64.md (call_nogp, call_value_nogp, sibcall_nogp):
        Rename from nopic versions.  Confiscate 2nd argument to call as
        a marker.
        (call_pic, call_value_pic, sibcall_pic): Remove.
        (call_gp, call_value_gp, sibcall_gp): New.
        (builtin_setjmp_setup): Remove.
        (builtin_setjmp_receiver): Call ia64_reload_gp.

From-SVN: r64303
2003-03-13 01:02:51 -08:00
Richard Henderson ef1ecf87a6 configure.in (HAVE_AS_LTOFFX_LDXMOV_RELOCS): New ia64 test.
* configure.in (HAVE_AS_LTOFFX_LDXMOV_RELOCS): New ia64 test.
        * config.in, configure: Rebuild.
        * config/ia64/ia64.c (ia64_ld_address_bypass_p): Accept lo_sum.
        * config/ia64/ia64.md (load_symptr): Use high/lo_sum for the
        paired ldtoffx and ldxmov annotations.
        (load_symptr_internal1): Remove.
        (load_symptr_high, load_symptr_low): New.

From-SVN: r63696
2003-03-02 14:15:51 -08:00
Richard Henderson c407570a72 ia64.c (rtx_needs_barrier): Handle POPCOUNT, UNSPEC_GETF_EXP; remove UNSPEC_POPCNT.
* config/ia64/ia64.c (rtx_needs_barrier): Handle POPCOUNT,
        UNSPEC_GETF_EXP; remove UNSPEC_POPCNT.
        * config/ia64/ia64.md (UNSPEC_POPCNT): Remove.
        (ffsdi2): Use popcount instead of unspec.
        (popcountdi2): Rename from *popcnt.
        (ctzdi2, clzdi2, getf_exp_tf): New.

From-SVN: r62428
2003-02-04 18:25:36 -08:00
Richard Henderson 1e1bd14eb2 ia64.c (ia64_rwreloc_section_type_flags): New.
* config/ia64/ia64.c (ia64_rwreloc_section_type_flags): New.
        * config/ia64/hpux.h (TARGET_SECTION_TYPE_FLAGS): New.

From-SVN: r62028
2003-01-28 14:08:24 -08:00
Richard Henderson dcefdf6717 target.h (targetm.address_cost): New.
* target.h (targetm.address_cost): New.
	* target-def.h (TARGET_ADDRESS_COST): New.
	(TARGET_RTX_COSTS): Uncomment.  Oops.
	* cse.c (address_cost): Use new target hook.
	(default_address_cost): New.
	* output.h (default_address_cost): Declare.
	* hooks.c (hook_int_rtx_0): New.
	* hooks.h (hook_int_rtx_0): Declare.
	* loop.c (combine_givs_p): Remove if 0 code.
	* system.h (ADDRESS_COST): Poison.

	* config/alpha/alpha.c, config/alpha/alpha.h, config/d30v/d30v.c,
	config/d30v/d30v.h, config/ia64/ia64.c, config/ia64/ia64.h,
	config/m32r/m32r.c, config/m32r/m32r.h, config/mcore/mcore.c,
	config/mcore/mcore.h, config/mmix/mmix.c, config/mmix/mmix.h,
	config/rs6000/rs6000.c, config/rs6000/rs6000.h, config/sparc/sparc.c,
	config/sparc/sparc.h, config/v850/v850.c, config/v850/v850.h,
	config/xtensa/xtensa.c, config/xtensa/xtensa.h
	(TARGET_ADDRESS_COST): Define as hook_int_rtx_0.
	(ADDRESS_COST): Remove.

	* config/arc/arc-protos.h, config/arc/arc.c, config/arc/arc.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/dsp16xx/dsp16xx-protos.h, config/dsp16xx/dsp16xx.c,
	config/dsp16xx/dsp16xx.h, config/i386/i386-protos.h,
	config/i386/i386.c, config/i386/i386.h, config/i960/i960-protos.h,
	config/i960/i960.c, config/i960/i960.h, config/ip2k/ip2k-protos.h,
	config/ip2k/ip2k.c, config/ip2k/ip2k.h, config/mips/mips-protos.h,
	config/mips/mips.c, config/mips/mips.h,
	config/m68hc11/m68hc11-protos.h, config/m68hc11/m68hc11.c,
	config/m68hc11/m68hc11.h, config/ns32k/ns32k-protos.h,
	config/ns32k/ns32k.c, config/ns32k/ns32k.h, config/pa/pa-protos.h,
	config/pa/pa.c, config/pa/pa.h, config/s390/s390-protos.h,
	config/s390/s390.c, config/s390/s390.h, config/vax/vax-protos.h,
	config/vax/vax.c, config/vax/vax.h
	(foo_address_cost): Make static.
	(TARGET_ADDRESS_COST): New.
	(ADDRESS_COST): Remove.

	* config/arm/arm.h, config/arm/arm.c, config/m88k/m88k.h,
	config/m88k/m88k.c, config/romp/romp.h, config/romp/romp.c,
	config/sh/sh.c, config/sh/sh.h, config/stormy16/stormy16.c,
	config/stormy16/stormy16.h
	(ADDRESS_COST): Move code ...
	(foo_address_cost): ... here.
	(TARGET_ADDRESS_COST): New.

	* config/m32r/m32r.c (m32r_address_cost): Remove.
	* config/m32r/m32r-protos.h: Update.

	* config/mmix/mmix.c (mmix_address_cost): Remove.
	* config/mmix/mmix-protos.h: Update.

	* config/mn10300/mn10300.c (mn10300_address_cost_1): Rename from
	mn10300_address_cost; move unsig allocation ...
	(mn10300_address_cost): ... here.
	(TARGET_ADDRESS_COST): New.
	* config/mn10300/mn10300-protos.h: Update.
	* config/mn10300/mn10300.h (ADDRESS_COST): Remove.

From-SVN: r61988
2003-01-28 10:08:56 -08:00
Richard Henderson 3c50106f69 Makefile.in (cse.o): Depend on TARGET_H.
* Makefile.in (cse.o): Depend on TARGET_H.
	* cse.c (rtx_cost): Use targetm.rtx_costs.
	* system.h (CONST_COSTS RTX_COSTS DEFAULT_RTX_COSTS): Poison.
	* doc/tm.texi: Update.

	* target.h (targetm.rtx_costs): New.
	* target-def.h (TARGET_RTX_COSTS): New.
	* hooks.c (hook_bool_rtx_int_int_intp_false): New.
	* hooks.h: Update.

	* config/alpha/alpha.c (alpha_rtx_cost_data): New.
	(alpha_rtx_costs, TARGET_RTX_COSTS): New.
	* config/alpha/alpha.h (PROCESSOR_MAX): New.
	(CONST_COSTS, RTX_COSTS): Remove.

	* config/arc/arc.c, config/arc/arc.h, config/c4x/c4x.c,
	config/c4x/c4x.h, config/cris/cris.c, config/cris/cris.h,
	config/d30v/d30v.c, config/d30v/d30v.h, config/dsp16xx/dsp16xx.c,
	config/dsp16xx/dsp16xx.h, config/frv/frv.c, config/frv/frv.h,
	config/h8300/h8300.c, config/h8300/h8300.h, config/i370/i370.c,
	config/i370/i370.h, config/i386/i386.c, config/i386/i386.h,
	config/i960/i960.c, config/i960/i960.h, config/ia64/ia64.c,
	config/ia64/ia64.h, config/m32r/m32r.c, config/m32r/m32r.h,
	config/m68k/m68k.c, config/m68k/m68k.h, config/m88k/m88k.c,
	config/m88k/m88k.h, config/mcore/mcore.c, config/mcore/mcore.h,
	config/mips/mips.c, config/mips/mips.h, config/mn10200/mn10200.c,
	config/mn10200/mn10200.h, config/mn10300/mn10300.c,
	config/mn10300/mn10300.h, config/ns32k/ns32k.c, config/ns32k/ns32k.h,
	config/pa/pa.c, config/pa/pa.h, config/pdp11/pdp11.c,
	config/pdp11/pdp11.h, config/romp/romp.c, config/romp/romp.h,
	config/rs6000/rs6000.c, config/rs6000/rs6000.h, config/s390/s390.c,
	config/s390/s390.h, config/sh/sh.c, config/sh/sh.h,
	config/stormy16/stormy16.c, config/stormy16/stormy16.h,
	config/v850/v850.c, config/v850/v850.h,
	config/xtensa/xtensa.c, config/xtensa/xtensa.h
	(CONST_COSTS, RTX_COSTS): Move code ...
	(foo_rtx_costs, TARGET_RTX_COSTS): ... here.

	* config/arm/arm.c (arm_rtx_costs_1): Rename from arm_rtx_costs.
	(arm_rtx_costs, TARGET_RTX_COSTS): New.
	* config/arm/arm-protos.h: Update.
	* config/arm/arm.h (DEFAULT_RTX_COSTS): Remove.

	* config/avr/avr.h (CONST_COSTS): Move code ...
	* config/avr/avr.c (avr_rtx_costs): ... here.
	(default_rtx_costs): Make static.
	* config/avr/avr-protos.h: Update.

	* config/h8300/h8300.c (const_costs): Make static.
	(h8300_and_costs, h8300_shift_costs): Likewise.
	* config/h8300/h8300-protos.h: Update.

	* config/ip2k/ip2k.h (DEFAULT_RTX_COSTS): Remove.
	(CONST_COSTS): Move code ...
	* config/ip2k/ip2k.c (ip2k_rtx_costs): ... here.  Rename from
	default_rtx_costs; update for signature change.
	* config/ip2k/ip2k-protos.h: Update.

	* config/m68hc11/m68hc11.h (RTX_COSTS): Remove.
	(CONST_COSTS): Move code ...
	* config/m68hc11/m68hc11.c (m68hc11_rtx_costs): ... here.
	(TARGET_RTX_COSTS): New.
	(m68hc11_rtx_costs_1): Rename from m68hc11_rtx_costs; make static.
	* config/m68hc11/m68hc11-protos.h: Update.

	* config/m68k/m68k.c (const_int_cost): Make static.
	* config/m68k/m68k-protos.h: Update.

	* config/mcore/mcore.c (mcore_const_costs): Make static.
	(mcore_and_cost, mcore_ior_cost): Likewise.
	* config/mcore/mcore-protos.h: Update.

	* config/mmix/mmix.c (mmix_rtx_costs, TARGET_RTX_COSTS): New.
	(mmix_rtx_cost_recalculated): Remove.
	* config/mmix/mmix.h (DEFAULT_RTX_COSTS): Remove.
	* config/mmix/mmix-protos.h: Update.

	* config/sh/sh.c (shiftcosts): Make static.
	(addsubcosts, andcosts, multcosts): Likewise.
	* config/sh/sh-protos.h: Update.

	* config/sparc/sparc.c (TARGET_RTX_COSTS): New.
	(sparc_rtx_costs): Make static; update for change in signature.
	* config/sparc/sparc.h (RTX_COSTS_CASES, RTX_COSTS): Remove.
	* config/sparc/sparc-protos.h: Update.

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

	* config/vax/vax.h (RTX_COSTS): Remove.
	(CONST_COSTS): Move code ...
	* config/vax/vax.c (vax_rtx_costs_1): ... here; rename
	from vax_rtx_cost.
	(vax_rtx_costs, TARGET_RTX_COSTS): New.

From-SVN: r61954
2003-01-27 20:46:33 -08:00
Kazu Hirata 9e4f94dea0 fde-glibc.c: Fix comment typos.
* config/ia64/fde-glibc.c: Fix comment typos.
	* config/ia64/hpux.h: Likewise.
	* config/ia64/ia64.c: Likewise.
	* config/ia64/ia64.h: Likewise.
	* config/ia64/unwind-ia64.c: Likewise.

From-SVN: r61857
2003-01-26 20:15:36 +00:00
Richard Henderson 6ca86a1a1e ia64.c (ia64_rwreloc_select_rtx_section): Rename from ia64_aix_select_rtx_section.
* config/ia64/ia64.c (ia64_rwreloc_select_rtx_section): Rename
        from ia64_aix_select_rtx_section.
        (ia64_rwreloc_select_section): Simlarly; use default*_1 function
        instead of saving and restoring flag_pic.
        (ia64_rwreloc_unique_section): Similarly.
        * config/ia64/aix.h (TARGET_ASM_SELECT_SECTION,
        TARGET_ASM_UNIQUE_SECTION, TARGET_ASM_SELECT_RTX_SECTION): Update.
        * config/ia64/hpux.h (TARGET_ASM_SELECT_SECTION,
        TARGET_ASM_UNIQUE_SECTION, TARGET_ASM_SELECT_RTX_SECTION): New.

From-SVN: r61797
2003-01-25 11:08:15 -08:00
Vladimir Makarov 30028c8515 2003-01-09 Vladimir Makarov <vmakarov@redhat.com>
Merging changes from itanium-sched-branch:

From-SVN: r61132
2003-01-09 23:15:34 +00:00
Kazu Hirata 5bdc58781b c-pretty-print.h: Fix comment typos.
* c-pretty-print.h: Fix comment typos.
	* integrate.c: Likewise.
	* varasm.c: Likewise.
	* config/c4x/c4x.h: Likewise.
	* config/c4x/c4x.md: Likewise.
	* config/fr30/fr30.md: Likewise.
	* config/frv/frv.c: Likewise.
	* config/h8300/h8300.c: Likewise.
	* config/i386/i386.c: Likewise.
	* config/i386/i386.h: Likewise.
	* config/ia64/ia64.c: Likewise.
	* config/ia64/ia64.h: Likewise.
	* config/ip2k/ip2k.md: Likewise.
	* config/m68hc11/m68hc11-crt0.S: Likewise.
	* config/m68hc11/m68hc11.h: Likewise.
	* config/m68hc11/m68hc11.md: Likewise.
	* config/m68hc11/m68hc12.h: Likewise.
	* config/mcore/mcore.md: Likewise.
	* config/mips/mips.c: Likewise.
	* config/mips/mips.md: Likewise.
	* config/mmix/mmix-modes.def: Likewise.
	* config/pa/pa.c: Likewise.
	* config/rs6000/rs6000.c: Likewise.
	* config/rs6000/rs6000.h: Likewise.
	* config/rs6000/rs6000.md: Likewise.

From-SVN: r60354
2002-12-20 04:30:57 +00:00
Kazu Hirata 272d0bee76 ChangeLog: Follow spelling conventions.
* ChangeLog: Follow spelling conventions.
	* ChangeLog.2: Likewise.
	* ChangeLog.4: Likewise.
	* ChangeLog.5: Likewise.
	* cppexp.c: Likewise.
	* df.c: Likewise.
	* gcov.c: Likewise.
	* gengtype.c: Likewise.
	* reload1.c: Likewise.
	* sched-rgn.c: Likewise.
	* stmt.c: Likewise.
	* stor-layout.c: Likewise.
	* timevar.c: Likewise.
	* toplev.c: Likewise.
	* tree.h: Likewise.
	* varasm.c: Likewise.
	* config/fr30/fr30.md: Likewise.
	* config/i386/i386.c: Likewise.
	* config/ia64/ia64.c: Likewise.
	* config/pa/pa.c: Likewise.

From-SVN: r60281
2002-12-19 05:18:13 +00:00
Zack Weinberg 4977bab6ed Merge basic-improvements-branch to trunk
From-SVN: r60174
2002-12-16 18:23:00 +00:00
Andreas Schwab 83ebfdc01c ia64.c (ia64_hpux_asm_file_end): Fix typo in last change and some warnings.
* config/ia64/ia64.c (ia64_hpux_asm_file_end): Fix typo in last
	change and some warnings.

From-SVN: r60073
2002-12-12 14:08:21 +00:00
Steve Ellcey 9a3873b48f ia64.c (ia64_hpux_asm_file_end): Don't send stripped name to globalize_label or assemble_name.
* config/ia64/ia64.c (ia64_hpux_asm_file_end): Don't send stripped
	name to globalize_label or assemble_name.

From-SVN: r60046
2002-12-11 20:41:43 +00:00
Steve Ellcey 3870df966e hpux.h (TARGET_STRUCT_ARG_REG_LITTLE_ENDIAN): Remove definition
* config/ia64/hpux.h (TARGET_STRUCT_ARG_REG_LITTLE_ENDIAN): Remove
	definition
	(MEMBER_TYPE_FORCES_BLK): Move.
	* config/ia64/ia64.c (ia64_function_arg): Use PARALLEL to pass
	aggregate arguments.
	(ia64_function_value): Use PARALLEL to return aggregate values.

From-SVN: r59963
2002-12-09 18:07:58 +00:00
Steve Ellcey dcffbadece ia64.h (MASK_INLINE_DIV_LAT): Remove.
* config/ia64/ia64.h (MASK_INLINE_DIV_LAT): Remove.
	(MASK_INLINE_DIV_THR): Remove.
	(TARGET_INLINE_DIV_LAT): Remove.
	(TARGET_INLINE_DIV_THR): Remove.
	(TARGET_INLINE_DIV): Remove.
	(MASK_INLINE_FLOAT_DIV_LAT): New macro.
	(MASK_INLINE_FLOAT_DIV_THR): New macro.
	(MASK_INLINE_INT_DIV_LAT): New macro.
	(MASK_INLINE_INT_DIV_THR): New macro.
	(TARGET_INLINE_FLOAT_DIV_LAT): New macro.
	(TARGET_INLINE_FLOAT_DIV_THR): New macro.
	(TARGET_INLINE_INT_DIV_LAT): New macro.
	(TARGET_INLINE_INT_DIV_THR): New macro.
	(TARGET_INLINE_FLOAT_DIV): New macro.
	(TARGET_INLINE_INT_DIV): New macro.
	* config/ia64/ia64.md (divsi3): Change to use new macros.
	(modsi3): Ditto.
	(udivsi3): Ditto.
	(umodsi3): Ditto.
	(divsi3_internal): Ditto.
	(divdi3): Ditto.
	(moddi3): Ditto.
	(udivdi3): Ditto.
	(umoddi3): Ditto.
	(divdi3_internal_lat): Ditto.
	(divdi3_internal_thr): Ditto.
	(divsf3): Ditto.
	(divsf3_internal_lat): Ditto.
	(divsf3_internal_thr): Ditto.
	(divdf3): Ditto.
	(divdf3_internal_lat): Ditto.
	(divdf3_internal_thr): Ditto.
	(divtf3): Ditto.
	(divtf3_internal_lat): Ditto.
	(divtf3_internal_thr): Ditto.
	* config/ia64/ia64.c (ia64_override_options): Change
	to check new macros for conflicts in settings.
	* doc/invoke.texi (-minline-divide-min-latency): Remove.
	(-minline-divide-max-throughput): Remove.
	(-minline-float-divide-min-latency): New.
	(-minline-float-divide-max-throughput): New.
	(-minline-int-divide-min-latency): New.
	(-minline-int-divide-max-throughput): New.

From-SVN: r58727
2002-11-01 20:25:35 +00:00
Richard Henderson 5f13cfc617 ia64.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): True.
* config/ia64/ia64.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): True.
        (ia64_output_mi_thunk): Rewrite to use rtl, and to handle the
        vcall offset.
        * g++.dg/inherit/thunk1.C: Enable for ia64.

From-SVN: r58491
2002-10-24 02:16:36 -07:00
Steve Ellcey 16448fd4f0 ia64.c (hfa_element_mode): Don't allow 128 bit floats in HFAs.
* config/ia64/ia64.c (hfa_element_mode): Don't allow 128 bit floats
	in HFAs.

From-SVN: r58464
2002-10-23 18:18:31 +00:00
Richard Henderson 3961e8fe9e target.h (gcc_target.asm_out): Merge output_mi_thunk and output_mi_vcall_thunk into a single hook.
gcc/
	* target.h (gcc_target.asm_out): Merge output_mi_thunk and
	output_mi_vcall_thunk into a single hook.  Add can_output_mi_thunk.
	* target-def.h (TARGET_ASM_OUTPUT_MI_THUNK): Don't conditionalize.
	(TARGET_ASM_OUTPUT_MI_VCALL_THUNK): Remove.
	(TARGET_ASM_CAN_OUTPUT_MI_THUNK): New.
	(TARGET_ASM_OUT): Update.
	* hooks.c (hook_bool_tree_hwi_hwi_tree_false): New.
	(hook_bool_tree_hwi_hwi_tree_true): New.
	(default_can_output_mi_thunk_no_vcall): New.
	* hooks.h: Declare them.
	* system.h (ASM_OUTPUT_MI_THUNK): Poison.

	* config/alpha/alpha.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): New.
	(alpha_output_mi_thunk_osf): Add VCALL_OFFSET parameter.
	* config/arm/arm.c, config/cris/cris.c, config/frv/frv.c,
	config/i960/i960.c, config/ia64/ia64.c, config/m68k/m68k.c,
	config/mmix/mmix.c, config/pa/pa.c, config/sparc/sparc.c,
	config/stormy16/stormy16.c: Similarly.

	* config/i386/i386.c (x86_output_mi_thunk): Merge vcall_offset code.
	Handle 64-bit properly.  Streamline.
	(x86_output_mi_vcall_thunk): Remove.
	(x86_this_parameter): Rename from ia32_this_parameter; handle 64-bit.
	(x86_can_output_mi_thunk): New.
	(TARGET_ASM_OUTPUT_MI_VCALL_THUNK): Remove.
	(TARGET_ASM_CAN_OUTPUT_MI_THUNK): New.
	(override_options): Don't zap targetm.asm_out.output_mi_vcall_thunk.

	* config/rs6000/rs6000.c (rs6000_output_mi_thunk): Rename from
	output_mi_thunk; make static; always use function_section.
	(TARGET_ASM_OUTPUT_MI_THUNK): New.
	(TARGET_ASM_CAN_OUTPUT_MI_THUNK): New.
	(rs6000_ra_ever_killed): Test no_new_pseudos not
	targetm.asm_out.output_mi_thunk in conjunction with thunks.
	* config/rs6000/rs6000-protos.h: Update.
	* config/rs6000/sysv4.h (TARGET_ASM_OUTPUT_MI_THUNK): Remove.
	* config/rs6000/xcoff.h (ASM_DECLARE_FUNCTION_NAME): Don't call
	xcoffout_declare_function when using rs6000_output_mi_thunk.

	* config/s390/s390.c (s390_output_mi_thunk): Rename from
	s390_output_mi_vcall_thunk.
	(TARGET_ASM_OUTPUT_MI_THUNK): Remove.
	(TARGET_ASM_CAN_OUTPUT_MI_THUNK): New.

	* config/vax/vax.c (vax_output_mi_thunk): Static; add vcall_offset.
	(TARGET_ASM_OUTPUT_MI_THUNK, TARGET_ASM_CAN_OUTPUT_MI_THUNK): New.
	* config/vax/vax-protos.h: Update.
	* config/vax/vax.h (ASM_OUTPUT_MI_THUNK): Remove.

gcc/cp/
        * method.c (use_thunk): Always compute vcall_value; assert that
        it is not zero.  Use can_output_mi_thunk; use output_mi_thunk
        for vcall thunks as well.

From-SVN: r58424
2002-10-22 16:05:28 -07:00
Richard Henderson c590b62588 target.h (struct gcc_target): Line wrap.
* target.h (struct gcc_target): Line wrap.

	* config/alpha/alpha.c (alpha_output_mi_thunk_osf): Static.
	(TARGET_ASM_OUTPUT_MI_THUNK): Define here...
	* config/alpha/alpha.h: ... not here.
	* config/alpha/alpha-protos.h: Update.

	* config/arm/arm.c, config/arm/arm.h, config/arm/arm-protos.h
	config/cris/cris-protos.h, config/cris/cris.c, config/cris/cris.h,
	config/frv/frv-protos.h, config/frv/frv.c, config/frv/frv.h,
	config/i386/i386-protos.h, config/i386/i386.c, config/i386/openbsd.h,
	config/i386/unix.h, config/i960/i960-protos.h, config/i960/i960.c,
	config/i960/i960.h, config/ia64/ia64-protos.h, config/ia64/ia64.c,
	config/ia64/ia64.h, config/m68k/linux.h, config/m68k/m68k-protos.h,
	config/m68k/m68k.c, config/m68k/netbsd-elf.h, config/m68k/openbsd.h,
	config/mmix/mmix-protos.h, config/mmix/mmix.c, config/mmix/mmix.h,
	config/pa/pa-protos.h, config/pa/pa.c, config/pa/pa.h,
	config/s390/s390-protos.h, config/s390/s390.c, config/s390/s390.h,
	config/sparc/openbsd.h, config/sparc/sparc-protos.h,
	config/sparc/sparc.c, config/sparc/sparc.h,
	config/stormy16/stormy16-protos.h, config/stormy16/stormy16.c,
	config/stormy16/stormy16.h: Similarly.

	* config/m68k/m68k.c (m68k_output_mi_thunk): Replicate mnemonic
	selection logic from call patterns.

From-SVN: r58340
2002-10-20 15:37:14 -07:00
Mark Mitchell eb0424da9d alpha-protos.h (alpha_output_mi_thunk_osf): Update signature to match target.h.
* alpha-protos.h (alpha_output_mi_thunk_osf): Update signature to
	match target.h.
	* arm-protos.h, arm.c (arm_output_mi_thunk): Likewise.
	* cris-protos.h, cris.c (cris_asm_output_mi_thunk): Likewise.
	* frv-protos.h, frv.c (frv_asm_output_mi_thunk): Likewise.
	* i386-protos.h, i386.c (x86_output_mi_vcall_thunk,
	x86_output_mi_thunk): Likewise.
	* i960-protos.h, i960.c (i960_output_mi_thunk): Likewise.
	* ia64-protos.h, ia64.c (ia64_output_mi_thunk): Likewise.
	* m68k-protos.h, m68k.c (m68k_output_mi_thunk): Likewise.
	* mmix-protos.h, mmix.c (mmix_asm_output_mi_thunk): Likewise.
	* rs6000-protos.h, rs6000.c (output_mi_thunk): Likewise.
	* s390-protos.h, s390.c (s390_output_mi_thunk): Likewise.
	* stormy16-protos.h, stormy16.c (xstormy16_asm_output_mi_thunk):
	Likewise.
	* vax-protos.h, vax.c (vax_output_mi_thunk): Likewise.

	* target.h (gcc_target): Update output_mi_thunk and
	output_mi_vcall_thunk to take a HOST_WIDE_INT delta and
	vcall_index.

	* config/alpha/alpha.c: Replace ASM_OUTPUT_MI_THUNK with
	TARGET_ASM_OUTPUT_MI_THUNK in comments.
	* config/alpha/vms.h (ASM_OUTPUT_MI_THUNK): Don't #undef it.
	(TARGET_ASM_OUTPUT_MI_THUNK): #undef it.
	* config/frv/frv.h (DEFAULT_VTABLE_THUNKS): Remove definition.
	* config/i386/i386-protos.h (x86_output_mi_vcall_thunk): Update
	signature.
	* config/i386/i386.c (x86_output_mi_vcall_thunk): Likewise.
	* config/i386/openbsd.h: Replace ASM_OUTPUT_MI_THUNK with
	TARGET_ASM_OUTPUT_MI_THUNK in comments.
	* config/i960/i960.h (ASM_OUTPUT_MI_THUNK): Don't define.
	(TARGET_ASM_OUTPUT_MI_THUNK): Do define.
	* config/m68k/openbsd.h: Replace ASM_OUTPUT_MI_THUNK with
	TARGET_ASM_OUTPUT_MI_THUNK in comments.
	* config/rs6000/rs6000.c (rs6000_ra_ever_killed): Remove #ifdef
	ASM_OUTPUT_MI_THUNK and replace with check of targetm.

	* doc/tm.texi (TARGET_ASM_OUTPUT_MI_THUNK): Update signature.
	(TARGET_ASM_OUTPU_MI_VCALL_THUNK): Likewise.

From-SVN: r58333
2002-10-20 18:52:01 +00:00
Mark Mitchell 483ab821df target-def.h (TARGET_ASM_OUTPUT_MI_THUNK): Default to NULL.
* target-def.h (TARGET_ASM_OUTPUT_MI_THUNK): Default to NULL.
	(TARGET_ASM_OUTPUT_MI_VCALL_THUNK): Likewise.
	(TARGET_ASM_OUT): Add them.
	* target.h (asm_out): Add output_mi_thunk and
	output_mi_vcall_thunk.
	* config/alpha/alpha.h (ASM_OUTPUT_MI_THUNK): Rename to ...
	(TARGET_ASM_OUTPUT_MI_THUNK): ... this.
	* config/arm/arm-protos.h (arm_output_mi_thunk): Declare.
	* config/arm/arm.c (arm_output_mi_thunk): Define.
	* config/arm/arm.h (ASM_OUTPUT_MI_THUNK): Rename to ...
	(TARGET_ASM_OUTPUT_MI_THUNK): ... this.
	* config/cris/cris.h (ASM_OUTPUT_MI_THUNK): Rename to ...
	(TARGET_ASM_OUTPUT_MI_THUNK): ... this.
	* config/frv/frv.h (ASM_OUTPUT_MI_THUNK): Rename to ...
	(TARGET_ASM_OUTPUT_MI_THUNK): ... this.
	* config/i386/i386-protos.h (x86_output_mi_thunk): Adjust
	prototype.
	(x86_output_mi_vcall_thunk): Declare.
	* config/i386/i386.c (override_options): Clear
	output_mi_vcall_thunk in 64-bit mode.
	(ix86_fntype_regparm): New function.
	(ix86_return_pops_args): Use it.
	(ia32_this_parameter): New function.
	(x86_output_mi_vcall_thunk): New function.
	(x86_output_mi_thunk): Use it
	* config/i386/unix.h (TARGET_ASM_OUTPUT_MI_THUNK): Adjust.
	(TARGET_ASM_OUTPUT_MI_VCALL_THUNK): Define.
	* config/i960/i960-protos.h (i960_output_mi_thunk): Declare.
	* config/i960/i960.c (i960_output_mi_thunk): New function.
	* config/i960/i960.h (ASM_OUTPUT_MI_THUNK): Adjust.
	* config/ia64/ia64-protos.h (ia64_output_mi_thunk): Declare.
	* config/ia64/ia64.c (ia64_output_mi_thunk): Define.
	* config/ia64/ia64.h (ASM_OUTPUT_MI_THUNK): Rename to ...
	(TARGET_ASM_OUTPUT_MI_THUNK): ... this.
	* config/m68k/m68k-protos.h (m68k_output_mi_thunk): New function.
	* config/m68k/linux.h (ASM_OUTPUT_MI_THUNK): Rename to ...
	(TARGET_ASM_OUTPUT_MI_THUNK): ... this.
	* config/m68k/netbsd-elf.h (ASM_OUTPUT_MI_THUNK): Rename to ...
	(TARGET_ASM_OUTPUT_MI_THUNK): ... this.
	* config/mmix/mmix.h (ASM_OUTPUT_MI_THUNK): Rename to ...
	(TARGET_ASM_OUTPUT_MI_THUNK): ... this.
	* config/pa/pa.h (ASM_OUTPUT_MI_THUNK): Rename to ...
	(TARGET_ASM_OUTPUT_MI_THUNK): ... this.
	* config/rs6000/sysv4.h (ASM_OUTPUT_MI_THUNK): Rename to ...
	(TARGET_ASM_OUTPUT_MI_THUNK): ... this.
	* config/s390/s390-protos.h (s390_output_mi_thunk): Declare.
	* config/s390/s390.c (s390_output_mi_thunk): Define.
	* config/s390/s390.h (ASM_OUTPUT_MI_THUNK): Rename to ...
	(TARGET_ASM_OUTPUT_MI_THUNK): ... this.
	* config/sparc/sparc.h (ASM_OUTPUT_MI_THUNK): Rename to ...
	(TARGET_ASM_OUTPUT_MI_THUNK): ... this.
	* config/stormy16/stormy16.h (ASM_OUTPUT_MI_THUNK): Rename to ...
	(TARGET_ASM_OUTPUT_MI_THUNK): ... this.
	* config/vax/vax-protos.h (vax_output_mi_thunk): Declare.
	* config/vax/vax.c (vax_output_mi_thunk): Define.
	* config/vax/vax.h (ASM_OUTPUT_MI_THUNK): Rename to ...
	(TARGET_ASM_OUTPUT_MI_THUNK): ... this.
	* doc/tm.texi: Adjust documentation.

From-SVN: r58293
2002-10-18 23:35:40 +00:00
Kaveh R. Ghazi 89b0654082 darwin-protos.h (darwin_asm_output_dwarf_delta): Prototype.
* darwin-protos.h (darwin_asm_output_dwarf_delta): Prototype.

	* ia64.c (ia64_hpux_asm_file_end): Const-ify.

From-SVN: r57632
2002-09-29 19:55:08 +00:00
Jakub Jelinek dce81a1a59 extend.texi (tls_model): Document.
* doc/extend.texi (tls_model): Document.
	* varasm.c (decl_tls_model): New.
	* c-common.c (handle_tls_model_attribute): New.
	(c_common_attribute_table): Add tls_model.
	* config/alpha/alpha.c (alpha_encode_section_info): Use
	decl_tls_model.
	* flags.h (enum tls_model, flag_tls_default): Move...
	* tree.h (enum tls_model, flag_tls_default): ...here.
	(decl_tls_model): New prototype.
	* config/ia64/ia64.c (ia64_encode_section_info): Likewise.
	* config/i386/i386.c (ix86_encode_section_info): Likewise.
	* config/i386/i386.md (tls_global_dynamic, tls_local_dynamic_base):
	Allow !flag_pic.

From-SVN: r57588
2002-09-27 15:30:10 +02:00
Steve Ellcey ee8a73d6e7 ia64.c (ia64_expand_load_address): Ensure correct mode for symbol address.
* config/ia64/ia64.c (ia64_expand_load_address): Ensure correct mode
	for symbol address.

From-SVN: r57554
2002-09-26 21:50:42 +00:00
Richard Henderson 3dc85dfb4a real.c (struct real_format): Move to real.h.
* real.c (struct real_format): Move to real.h.
	(real_format_for_mode): Rename from fmt_for_mode; update all users;
	initialize with ieee defaults.
	(real_to_target_fmt, real_from_target_fmt): New.
	(ieee_single_format, ieee_double_format, ieee_extended_motorola_format,
	ieee_extended_intel_96_format, ieee_extended_intel_128_format,
	ieee_quad_format, i370_single_format, i370_double_format,
	c4x_single_format, c4x_extended_format): Rename from s/_format//.
	(ieee_quad_format): Fix emin.
	(format_for_size, init_real_once): Remove.
	* real.h (struct real_format): Move from real.c.
	(real_format_for_mode): Declare.
	(real_to_target_fmt, real_from_target_fmt): Declare.
	(ieee_single_format, ieee_double_format, ieee_extended_motorola_format,
	ieee_extended_intel_96_format, ieee_extended_intel_128_format,
	ieee_quad_format, vax_f_format, vax_d_format, vax_g_format,
	i370_single_format, i370_double_format, c4x_single_format,
	c4x_extended_format): Declare.
	* toplev.c (do_compile): Don't call init_real_once.

	* defaults.h (INTEL_EXTENDED_IEEE_FORMAT): Remove.
	* doc/tm.texi (INTEL_EXTENDED_IEEE_FORMAT): Remove.

	* config/alpha/alpha.h (TARGET_FLOAT_FORMAT): Define.
	* config/alpha/osf5.h (LONG_DOUBLE_TYPE_SIZE): 64, if vax mode.
	* config/alpha/alpha.c (override_options): Set real_format_for_mode
	for VAX, if enabled.

	* config/c4x/c4x.c (c4x_override_options): Set real_format_for_mode
	for C4X.

	* config/i370/i370.h (OVERRIDE_OPTIONS): New.
	* config/i370/i370.c (override_options): New.
	* config/i370/i370-protos.h: Update.

	* config/i386/i386.c (override_options): Set real_format_for_mode
	for Intel 80-bit extended.
	* config/i386/i386.h (INTEL_EXTENDED_IEEE_FORMAT): Remove.

	* config/i960/i960.h (LONG_DOUBLE_TYPE_SIZE): Mind -mlong-double-64.
	(OVERRIDE_OPTIONS): Move code...
	* config/i960/i960.c (i960_initialize): ... here.  Set
	real_format_for_mode for Intel 80-bit extended.

	* config/ia64/ia64.c (ia64_override_options): Set real_format_for_mode
	for Intel 80-bit extended, if enabled.

	* config/m68k/m68k.c (override_options): Set real_format_for_mode
        for Motorola 96-bit extended.

	* config/vax/vax.h (OVERRIDE_OPTIONS): New.
	* config/vax/vax.c (override_options): New.
	* config/vax/vax-protos.h: Update.

From-SVN: r57388
2002-09-21 09:10:36 -07:00
Steve Ellcey 686f3bf031 hpux.h (TARGET_HPUX_LD): New, define true.
* config/ia64/hpux.h (TARGET_HPUX_LD): New, define true.
	(ASM_FILE_END) New.
	* config/ia64/ia64.h (TARGET_HPUX_LD): New, define false.
	* config/ia64/ia64-protos.h (ia64_hpux_asm_file_end): New.
	* config/ia64/ia64.c (ia64_asm_output_external): Create list
	of external functions if TARGET_HPUX_LD is true.
	(ia64_hpux_add_extern_decl): New, routine to put names on
	list of external functions.
	(ia64_hpux_asm_file_end): Put out declarations for external
	functions if and only if they are used.

From-SVN: r56986
2002-09-09 22:03:31 +00:00
Kaveh R. Ghazi 5eb99654a2 alpha.c (TARGET_ASM_GLOBALIZE_LABEL): Define for unicosmk.
* alpha.c (TARGET_ASM_GLOBALIZE_LABEL): Define for unicosmk.
	* alpha/elf.h (ASM_OUTPUT_EXTERNAL_LIBCALL,
	ASM_OUTPUT_ALIGNED_BSS): Use target hook.
	* alpha/osf.h (ASM_OUTPUT_WEAK_ALIAS): Likewise.
	* alpha/unicosmk.h (ASM_GLOBALIZE_LABEL): Delete.
	* arm/aof.h (ASM_GLOBALIZE_LABEL): Likewise.
	(GLOBAL_ASM_OP): Define.
	* arm.c (aof_globalize_label): New function.
	(TARGET_ASM_GLOBALIZE_LABEL): Define for AOF.
	* arm/unknown-elf.h (ASM_OUTPUT_ALIGNED_BSS): Use target hook.
	* c4x.c (c4x_globalize_label): New function.
	(TARGET_ASM_GLOBALIZE_LABEL): Define for c4x.
	* c4x.h (ASM_GLOBALIZE_LABEL): Delete.
	(GLOBAL_ASM_OP): Define.
	* cris/aout.h (ASM_OUTPUT_EXTERNAL_LIBCALL): Use target hook.
	* darwin-protos.h (darwin_globalize_label): Declare.
	* darwin.c (darwin_globalize_label): New function.
	* darwin.h (ASM_DECLARE_CLASS_REFERENCE): Use target hook.
	(ASM_GLOBALIZE_LABEL): Delete.
	(GLOBAL_ASM_OP, TARGET_ASM_GLOBALIZE_LABEL): Define.
	* dsp16xx.c (asm_output_common): Use target hook.
	* elfos.h (ASM_OUTPUT_EXTERNAL_LIBCALL): Likewise.
	* frv.h (ASM_GLOBALIZE_LABEL): Delete.
	(GLOBAL_ASM_OP): Define.
	* i370.c (i370_globalize_label): New function.
	(TARGET_ASM_GLOBALIZE_LABEL): Define for i370.
	* i370.h (ASM_GLOBALIZE_LABEL): Delete.
	* i386.c (ix86_asm_file_end): Use target hook.
	* i386/sco5.h (ASM_GLOBALIZE_LABEL): Don't undef.
	(ASM_OUTPUT_EXTERNAL_LIBCALL): Use target hook.
	* ia64.c (ia64_asm_output_external): Likewise.
	* ia64/sysv4.h: Update comment.
	* m32r.h (ASM_OUTPUT_ALIGNED_BSS): Use target hook.
	* mips/elf.h (ASM_OUTPUT_ALIGNED_BSS): Likewise.
	* mips/iris5.h (ASM_OUTPUT_WEAK_ALIAS): Use target hook.
	* mips/linux.h (ASM_OUTPUT_ALIGNED_BSS): Likewise.
	* mips.h (ASM_OUTPUT_ALIGNED_DECL_COMMON): Use target hook.
	* mmix-protos.h (mmix_asm_globalize_label): Delete.
	* mmix.c (mmix_asm_globalize_label): Likewise.
	* mmix.h (ASM_GLOBALIZE_LABEL): Likewise.
	(GLOBAL_ASM_OP): Define.
	* ns32k.c (ns32k_globalize_label): New function.
	* ns32k.h (TARGET_ASM_GLOBALIZE_LABEL): Define for ns32k.
	(ASM_GLOBALIZE_LABEL): Delete.
	* pa/pa-linux.h (ASM_GLOBALIZE_LABEL): Don't undef.
	(TARGET_ASM_GLOBALIZE_LABEL): Undefine.
	* pa.c (pa_globalize_label): New function.
	* pa.h (ASM_GLOBALIZE_LABEL): Delete.
	(TARGET_ASM_GLOBALIZE_LABEL): Define for pa.
	* rs6000/darwin.h (ASM_GLOBALIZE_LABEL): Delete.
	(GLOBAL_ASM_OP): Define.
	(TARGET_ASM_GLOBALIZE_LABEL): Undef.
	* rs6000/sysv4.h (ASM_OUTPUT_ALIGNED_BSS): Use target hook.
	* rs6000/xcoff.h (ASM_GLOBALIZE_LABEL): Delete.
	(GLOBAL_ASM_OP): Define.
	* v850.c (v850_output_aligned_bss): Use target hook.
	* vax.c (vms_globalize_label): New function.
	(TARGET_ASM_GLOBALIZE_LABEL): Define for vms.
	* vax/vms.h (ASM_GLOBALIZE_LABEL): Delete.
	(GLOBAL_ASM_OP): Define.
	* defaults.h (ASM_GLOBALIZE_LABEL): Delete.
	* doc/tm.texi: Update docs.
	* dwarf2out.c (default_eh_frame_section, output_die_symbol): Use
	target hook.
	* final.c (output_alternate_entry_point): Likewise.
	* hooks.c (hook_FILEptr_constcharptr_void): New function.
	* hooks.h (hook_FILEptr_constcharptr_void): Declare.
	* output.h (assemble_global): Delete.
	(default_globalize_label): Declare.
	* system.h (ASM_GLOBALIZE_LABEL): Poison.
	* target-def.h (TARGET_ASM_GLOBALIZE_LABEL): Define.
	(TARGET_ASM_OUT): Add TARGET_ASM_GLOBALIZE_LABEL.
	* target.h (gcc_target): Add globalize_label member.
	* varasm.c (asm_output_bss, asm_output_aligned_bss,
	globalize_decl): Use target hook.
	(assemble_global): Delete.
	(default_globalize_label): New function.

From-SVN: r56478
2002-08-21 02:41:51 +00:00
Zack Weinberg 2be2ac706e defaults.h (ASM_OUTPUT_TYPE_DIRECTIVE, [...]): New default definitions of new macros.
* defaults.h (ASM_OUTPUT_TYPE_DIRECTIVE, ASM_OUTPUT_SIZE_DIRECTIVE,
	ASM_OUTPUT_MEASURED_SIZE): New default definitions of new macros.
	* doc/tm.texi: Document them.  Also document SIZE_ASM_OP,
	TYPE_ASM_OP, and TYPE_OPERAND_FMT.

	* config/elfos.h, config/netbsd-aout.h, config/openbsd.h,
	config/alpha/elf.h, config/arm/elf.h, config/avr/avr.h,
	config/cris/aout.h, config/i386/freebsd-aout.h,
	config/i386/sco5.h, config/ia64/ia64.c, config/ip2k/ip2k.h,
	config/m68k/m68kelf.h, config/m68k/m68kv4.h, config/m88k/m88k.h,
	config/mcore/mcore-elf.h, config/mips/elf.h, config/mips/elf64.h,
	config/mips/iris6.h, config/mips/linux.h, config/pa/pa-linux.h,
	config/pa/pa64-hpux.h, config/rs6000/sysv4.h,
	config/xtensa/elf.h, config/xtensa/linux.h:
	Use the new macros.
	Where possible, remove redundant definitions of SIZE_ASM_OP,
	TYPE_ASM_OP, and TYPE_OPERAND_FMT.

From-SVN: r55735
2002-07-25 05:14:23 +00:00
David Mosberger dc44a4d856 ia64.c (gen_thread_pointer): Fix typo in marking thread_pointer_rtx as unchanging.
* config/ia64/ia64.c (gen_thread_pointer): Fix typo in marking
        thread_pointer_rtx as unchanging.

From-SVN: r55722
2002-07-24 14:42:48 -07:00
Steve Ellcey 5da4f54878 explow.c (convert_memory_address): Remove special handling when POINTERS_EXTEND_UNSIGNED < 0.
* gcc/explow.c (convert_memory_address): Remove special handling
	when POINTERS_EXTEND_UNSIGNED < 0.
	* gcc/config/ia64.md (movsi_symbolic): New instruction for ILP32
	mode.
	(movedi_symbolic): Fix typo.
	(load_fptr): Remove mode restriction so it works for SI and DI.
	(load_fptr_internal1): Ditto.
	(load_gprel): Ditto.
	(load_symptr_internal1): Ditto.
	(call_pic): Ditto.
	* gcc/config/ia64.c (call_operand): Modify mode check.
	(ia64_expand_load_address): Handle DI and SI addresses and symbols.
	(ia64_expand_move): Ditto.
	(ia64_assemble_integer): Handle SImode function pointers.
	(ia64_expand_fetch_and_op): Handle SImode mem addresses.
	(ia64_expand_op_and_fetch): Ditto.
	(ia64_expand_compare_and_swap): Ditto.
	(ia64_expand_lock_test_and_set): Ditto.
	(ia64_expand_lock_release): Ditto.

From-SVN: r55488
2002-07-16 16:07:13 +00:00
Zack Weinberg 6c535c69ee varargs.h: Replace with stub which issues #error.
* ginclude/varargs.h: Replace with stub which issues #error.
	* ginclude/stdarg.h: __builtin_stdarg_start is renamed
	__builtin_va_start.

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

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

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

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

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

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

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

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

From-SVN: r55472
2002-07-16 02:16:47 +00:00
Roger Sayle 6a2dd09a65 tree.h: Modify builtin_function interface to take an extra argument ATTRS...
* tree.h:  Modify builtin_function interface to take an extra
	argument ATTRS, which is a tree representing an attribute list.

	* c-decl.c (builtin_function): Accept additional parameter.
	* objc/objc-act.c (builtin_function): Likewise.
	* f/com.c (builtin_function): Likewise.
	* java/decl.c (builtin_function): Likewise.
	* ada/utils.c (builtin_function): Likewise.
	* cp/decl.c (builtin_function): Likewise.
	(builtin_function_1): Likewise.

	* c-common.c (c_common_nodes_and_builtins): Pass an additional
	NULL_TREE argument to builtin_function.  (builtin_function_2):
	Likewise.
	* cp/call.c (build_java_interface_fn_ref): Likewise.
	* objc/objc-act.c (synth_module_prologue): Likewise.
	* java/decl.c (java_init_decl_processing): Likewise.
	* f/com.c (ffe_com_init_0): Likewise.

	* config/alpha/alpha.c (alpha_init_builtins): Pass an additional
	NULL_TREE argument builtin_function.
	* config/arm/arm.c (def_builtin): Likewise.
	* config/c4x/c4x.c (c4x_init_builtins): Likewise.
	* config/i386/i386.c (def_builtin): Likewise.
	* config/ia64/ia64.c (def_builtin): Likewise.
	* config/rs6000/rs6000.c (def_builtin): Likewise.

From-SVN: r55161
2002-07-01 23:07:19 +00:00
Aldy Hernandez b4de2f7db7 i386.c (ix86_init_mmx_sse_builtins): Use build_function_type_list instead of build_function_type.
2002-06-29  Aldy Hernandez  <aldyh@redhat.com>

        * config/i386/i386.c (ix86_init_mmx_sse_builtins): Use
        build_function_type_list instead of build_function_type.

        * config/ia64/ia64.c (ia64_init_builtins): Same.

        * config/alpha/alpha.c (alpha_init_builtins): Same.

        * config/rs6000/rs6000.c (altivec_init_builtins): Same.

        * config/arm/arm.c (arm_init_builtins): Same.

        * tree.h: Add build_function_type_list prototype.

        * tree.c (build_function_type_list): New.

From-SVN: r55109
2002-06-30 01:19:58 +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
Roger Sayle 852c6ec7ac cfgrtl.c (create_basic_block_structure): Remove index argument and use last_basic_block++ instead.
2002-06-10  Roger Sayle  <roger@eyesopen.com>
	    Andreas Jaeger <aj@suse.de>

	* cfgrtl.c (create_basic_block_structure):  Remove index argument
	and use last_basic_block++ instead.  (create_basic_block): Update.
	* cfgbuild.c (find_basic_blocks_1): Likewise.

	* cfgrtl.c (compute_bb_for_insn): Remove unused "max" argument.
	* haifa-sched.c (sched_init): Update compute_bb_for_insn caller.
	* sched-ebb.c (schedule_ebbs): Likewise.
	* sched-rgn.c (schedule_insns): Likewise.
	* ssa-ccp.c (ssa_const_prop): Likewise.
	* ssa-dcs.c (ssa_eliminate_dead_code): Likewise.
	* toplev.c (rest_of_compilation): Likewise.
	* config/ia64/ia64.c (ia64_reorg): Likewise.

Co-Authored-By: Andreas Jaeger <aj@suse.de>

From-SVN: r54477
2002-06-10 22:33:08 +00:00
Janis Johnson 135ca7b247 * config/ia64/ia64.c (gen_thread_pointer): Fix variable name.
From-SVN: r54253
2002-06-04 18:03:45 +00: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
Richard Henderson 7b6e506ee0 configure.in (HAVE_AS_TLS): Add ia64 test.
* configure.in (HAVE_AS_TLS): Add ia64 test.
	* configure: Rebuild.
	* config/ia64/ia64.c (ia64_tls_size_string, ia64_tls_size): New.
	(override_options): Set it.
	(TARGET_HAVE_TLS): New.
	(sdata_symbolic_operand): Look for 's'.
	(tls_symbolic_operand): New.
	(ia64_expand_load_address): Abort for tls symbols.
	(gen_tls_get_addr): New.
	(gen_thread_pointer): New.
	(ia64_expand_move): Split out from movdi.  Handle tls symbols.
	(rtx_needs_barrier): Add new unspecs.
	(ia64_encode_section_info): Handle tls symbols.
	(ia64_strip_name_encoding): Strip two encoding chars.
	* config/ia64/ia64.h (ia64_tls_size, ia64_tls_size_string): New.
	(TARGET_TLS14, TARGET_TLS22, TARGET_TLS64): New.
	(TARGET_OPTIONS): Add tls-size.
	(ENCODE_SECTION_INFO_CHAR): Rename from SDATA_NAME_FLAG_CHAR.
	* config/ia64/ia64.md (UNSPEC_LTOFF_DTPMOD, UNSPEC_LTOFF_DTPREL,
	UNSPEC_DTPREL, UNSPEC_LTOFF_TPREL, UNSPEC_TPREL, UNSPEC_LD_BASE): New.
	(movqi, movhi, movsi, movdi, movti): Use ia64_expand_move.
	(movsf, movdf): Likewise.
	(movdi_symbolic): Use match_scratch.  Don't split if we won't
	have a scratch availiable.
	(load_ltoff_dtpmod, load_dtprel, load_dtprel64, load_dtprel22,
	add_dtprel, add_dtprel14, add_dtprel22, load_ltoff_tprel, load_tprel,
	load_tprel64, load_tprel22, add_tprel, add_tprel14, add_tprel22): New.
	* config/ia64/ia64-protos.h: Update.
	* config/ia64/sysv4.h (ASM_OUTPUT_ALIGNED_DECL_LOCAL): Use
	sdata_symbolic_operand.
	(ASM_OUTPUT_LABELREF): Strip two characters.

From-SVN: r53874
2002-05-25 12:51:43 -07:00
Richard Henderson 8beda321a5 ia64.c (ia64_reorg): Use update_life_info instead of update_life_info_in_dirty_blocks.
* config/ia64/ia64.c (ia64_reorg): Use update_life_info instead
        of update_life_info_in_dirty_blocks.

From-SVN: r53858
2002-05-24 15:54:28 -07:00
Zdenek Dvorak e0082a7265 bb-reorder.c (make_reorder_chain, [...]): Use FOR_EACH_BB macros to iterate over basic block chain.
* bb-reorder.c (make_reorder_chain, make_reorder_chain_1):
	Use FOR_EACH_BB macros to iterate over basic block chain.
	* cfg.c (clear_edges, clear_bb_flags, dump_flow_info,
	alloc_aux_for_blocks, clear_aux_for_blocks, alloc_aux_for_edges):
	Likewise.
	* cfganal.c (set_edge_can_fallthru_flag, flow_call_edges_add,
	find_unreachable_blocks, create_edge_list, verify_edge_list,
	remove_fake_edges, add_noreturn_fake_exit_edges,
	flow_preorder_transversal_compute, flow_dfs_compute_reverse_execute):
	Likewise.
	* cfgbuild.c (make_edges, find_basic_blocks, find_many_sub_basic_blocks,
	find_sub_basic_blocks): Likewise.
	* cfgcleanup.c (try_optimize_cfg, delete_unreachable_blocks):
	Likewise.
	* cfglayout.c (record_effective_endpoints, cleanup_unconditional_jumps):
	Likewise.
	* cfgloop.c (flow_loops_cfg_dump, flow_loops_find):
	Likewise.
	* cfgrtl.c (compute_bb_for_insn, tidy_fallthru_edges,
	commit_edge_insertions, commit_edge_insertions_watch_calls,
	print_rtl_with_bb, verify_flow_info, purge_all_dead_edges): Likewise.
	* combine.c (combine_instructions, reg_dead_at_p): Likewise.
	* conflict.c (conflict_graph_compute): Likewise.
	* df.c (df_bitmaps_alloc, df_bitmaps_free, df_alloc, df_analyse_1,
	df_modified_p, df_refs_unlink, df_dump): Likewise.
	* dominance.c (calc_dfs_tree, calculate_dominance_info): Likewise.
	* final.c (compute_alignments): Likewise.
	* flow.c (update_life_info, update_life_info_in_dirty_blocks,
	delete_noop_moves, calculate_global_regs_live, allocate_bb_life_data,
	count_or_remove_death_notes): Likewise.
	* gcse.c (oprs_unchanged_p, record_last_reg_set_info,
	compute_hash_table, compute_kill_rd, compute_rd, compute_ae_kill,
	classic_gcse, compute_transp, cprop, compute_pre_data,
	compute_transpout, invalidate_nonnull_info,
	delete_null_pointer_checks_1, delete_null_pointer_checks,
	compute_code_hoist_vbeinout, hoist_code, compute_ld_motion_mems,
	compute_store_table, build_store_vectors, store_motion): Likewise.
	* global.c (global_conflicts, mark_elimination): Likewise.
	* graph.c (print_rtl_graph_with_bb): Likewise.
	* haifa-sched.c (sched_init): Likewise.
	* ifcvt.c (if_convert): Likewise.
	* lcm.c (compute_antinout_edge, compute_laterin, compute_insert_delete,
	compute_available, compute_nearerout, compute_rev_insert_delete,
	optimize_mode_switching): Likewise.
	* local-alloc.c (local_alloc, update_equiv_regs): Likewise.
	* predict.c (estimate_probability, note_prediction_to_br_prob,
	propagate_freq, counts_to_freqs, expensive_function_p,
	estimate_bb_frequencies): Likewise.
	* profile.c (instrument_edges, get_exec_counts,
	compute_branch_probabilities, compute_checksum, branch_prob,
	find_spanning_tree): Likewise.
	* recog.c (split_all_insns, peephole2_optimize): Likewise.
	* reg-stack.c (reg_to_stack, convert_regs_entry, convert_regs):
	Likewise.
	* regclass.c (scan_one_insn, regclass): Likewise.
	* regmove.c (mark_flags_life_zones, regmove_optimize,
	record_stack_memrefs): Likewise.
	* regrename.c (regrename_optimize, copyprop_hardreg_forward): Likewise.
	* reload1.c (reload, reload_combine, fixup_abnormal_edges): Likewise.
	* resource.c (find_basic_block): Likewise.
	* sched-ebb.c (schedule_ebbs): Likewise.
	* sched-rgn.c (is_cfg_nonregular, build_control_flow,
	find_single_block_region, find_rgns, schedule_insns)
	* sibcall.c (optimize_sibling_and_tail_recursive_call)
	* ssa-ccp.c (optimize_unexecutable_edges,
	ssa_ccp_df_delete_unreachable_insns): Likewise.
	* ssa-dce.c (ssa_eliminate_dead_code): Likewise.
	* ssa.c (find_evaluations, compute_dominance_frontiers_1,
	rename_block, convert_to_ssa, compute_conservative_reg_partition,
	compute_coalesced_reg_partition, rename_equivalent_regs,
	convert_from_ssa): Likewise.
	* config/ia64/ia64.c (emit_predicate_relation_info, process_epilogue,
	process_for_unwind_directive): Likewise.

	* df.c (FOR_ALL_BBS): Removed.
	* gcse.c (struct null_pointer_info): Type of current_block field
	changed.
	(struct reg_avail_info): Type of last_bb field changed.
	* config/ia64/ia64.c (block_num): Removed.
	(need_copy_state): Type changed.
	(last_block): New.

From-SVN: r53804
2002-05-23 19:23:51 +00:00
Richard Henderson 47754fd548 target-def.h (TARGET_BINDS_LOCAL_P): New.
* target-def.h (TARGET_BINDS_LOCAL_P): New.
	* target.h (struct gcc_target): Move boolean fields to the end.
	Add binds_local_p.
	* varasm.c (default_binds_local_p): New.
	* output.h: Declare it.

	* config/alpha/alpha.c (alpha_encode_section_info): Use the new hook.
	* config/cris/cris.c (cris_encode_section_info): Likewise.
	* config/i386/i386.c (i386_encode_section_info): Likewise.
	* config/ia64/ia64.c (ia64_encode_section_info): Likewise.
	* config/sh/sh.c (sh_encode_section_info): Likewise.

	* doc/tm.texi (TARGET_IN_SMALL_DATA_P): New.
	(TARGET_BINDS_LOCAL_P): New.

From-SVN: r53620
2002-05-19 02:50:27 -07:00
Richard Henderson 772c526579 system.h (STRIP_NAME_ENCODING): Poison it.
* system.h (STRIP_NAME_ENCODING): Poison it.
	* output.h (STRIP_NAME_ENCODING): Remove.
	(default_strip_name_encoding): Declare.
	* target-def.h (TARGET_STRIP_NAME_ENCODING): New.
	* target.h (strip_name_encoding): New.
	* varasm.c (default_strip_name_encoding): New.

	* dwarf2asm.c, varasm.c, config/darwin.c, config/darwin.h,
	config/alpha/alpha.c, config/arm/pe.c, config/avr/avr.c,
	config/cris/cris.c, config/i386/cygwin.h, config/i386/interix.c,
	config/i386/winnt.c, config/m32r/m32r.h, config/mcore/mcore-elf.h,
	config/mcore/mcore-pe.h, config/mcore/mcore.c, config/mcore/mcore.h,
	config/mips/mips.c, config/mn10200/mn10200.h, config/mn10300/mn10300.h,
	config/pa/pa.c, config/pa/pa.h, config/pa/som.h,
	config/rs6000/rs6000.c, config/rs6000/sysv4.h, config/rs6000/xcoff.h,
	config/v850/v850.h: Use the hook, not the macro.

	* config/darwin-protos.h, config/darwin.c, config/darwin.h,
	config/alpha/alpha.c, config/alpha/alpha.h, config/h8300/h8300.c,
	config/h8300/h8300.h, config/i386/cygwin.h, config/i386/i386-interix.h,
	config/i386/i386-protos.h, config/i386/win32.h, config/i386/winnt.c,
	config/ia64/ia64.c, config/ia64/ia64.h, config/m32r/m32r.c,
	config/m32r/m32r.h, config/mcore/mcore.c, config/mcore/mcore.h,
	config/pa/pa.c, config/rs6000/rs6000.c, config/rs6000/sysv4.h,
	config/rs6000/xcoff.h, config/sh/sh.c, config/sh/sh.h,
	config/v850/v850.c, config/v850/v850.h:
	Move STRIP_NAME_ENCODING to out-of-line function and add
	TARGET_STRIP_NAME_ENCODING.

	* config/arm/arm.c, config/arm/arm.h, config/mmix/mmix-protos.h,
	config/mmix/mmix.c, config/mmix/mmix.h: Replace STRIP_NAME_ENCODING
	with TARGET_STRIP_NAME_ENCODING referencing existing function;
	make function static.

	* xcoffout.c: Include target.h
	* Makefile.in (xcoffout.o): Update.

	* config/avr/avr.c (avr_encode_section_info): Correct prototype.
	* config/avr/avr.h (STRIP_NAME_ENCODING): Remove.
	* config/rs6000/rs6000.c (rs6000_xcoff_unique_section): Mark
	reloc argument unused.
	* config/sh/sh.c (TARGET_ENCODE_SECTION_INFO): New.

	* doc/tm.texi (TARGET_STRIP_NAME_ENCODING): Update from previous
	STRIP_NAME_ENCODING docs.

From-SVN: r53615
2002-05-19 00:55:48 -07: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
Richard Henderson b64a1b533c system.h (SELECT_RTX_SECTION): Poison.
* system.h (SELECT_RTX_SECTION): Poison.
	* target-def.h (TARGET_ASM_SELECT_RTX_SECTION): New.
	* target.h (select_rtx_section): New.
	* varasm.c (output_constant_pool): Use it.
	(default_select_rtx_section, default_elf_select_rtx_section): New.
	* output.h: Declare them.

	* config/darwin.h (SELECT_RTX_SECTION): Move ...
	* config/darwin.c (machopic_select_rtx_section): ... here.
	* config/darwin-protos.h: Update.

	* config/nextstep.h (SELECT_RTX_SECTION): Move ...
	* config/nextstep.c (machopic_select_rtx_section): ... here.
	(nextstep_select_section): Rename variable to avoid macro clash.
	* config/nextstep-protos.h: Update.

	* config/elfos.h, config/svr3.h, config/arm/aof.h, config/c4x/c4x.h,
	config/i386/dgux.h, config/i386/osfrose.h, config/i386/sco5.h,
	config/i386/svr3gas.h, config/i860/paragon.h, config/ia64/aix.h,
	config/m32r/m32r.h, config/m68k/dpx2.h, config/m68k/lynx.h,
	config/m68k/m68k.h, config/m68k/tower-as.h, config/m88k/dgux.h,
	config/mcore/mcore-pe.h, config/mips/mips.h, config/mmix/mmix.h,
	config/pa/pa-linux.h, config/pa/pa.h, config/romp/romp.h,
	config/rs6000/lynx.h, config/rs6000/sysv4.h, config/s390/linux.h,
	config/sparc/sysv4.h, config/xtensa/elf.h, config/xtensa/linux.h
	(SELECT_RTX_SECTION): Remove.

	* config/darwin.h, config/elfos.h, config/nextstep.h,
	config/ia64/aix.h, config/ia64/sysv4.h, config/alpha/alpha.c,
	config/mips/mips.c, config/romp/romp.c, config/rs6000/sysv4.h,
	config/rs6000/xcoff.h, config/s390/s390.c, config/sparc/aout.h,
	config/sparc/lynx.h, config/xtensa/xtensa.c
	(TARGET_ASM_SELECT_RTX_SECTION): New.

	* config/alpha/elf.h (SELECT_RTX_SECTION): Move ...
	* config/alpha/alpha.c (alpha_elf_select_rtx_section): ... here.
	* config/ia64/sysv4.h (SELECT_RTX_SECTION): Move ...
	* config/ia64/ia64.c (ia64_select_rtx_section): ... here.
	(ia64_aix_select_rtx_section): New.
	* config/mips/iris6.h (READONLY_DATA_SECTION_ASM_OP): Undef before
	redefining.
	* config/mips/mips.c (mips_select_rtx_section): Make static.
	Support ELF SHF_MERGE features.
	* config/mips/mips-protos.h: Update.
	* config/rs6000/xcoff.h (SELECT_RTX_SECTION): Move ...
	* config/rs6000/rs6000.c (rs6000_xcoff_select_rtx_section): ... here.
	(rs6000_elf_select_rtx_section): Rename from rs6000_select_rtx_section;
	make static, fall back to default_elf_select_rtx_section.
	* config/rs6000/rs6000-protos.h: Update.
	* config/sparc/sparc.h (SELECT_RTX_SECTION): Move ...
	* config/sparc/sparc.c (sparc_aout_select_rtx_section): ... here.
	* config/sparc/sunos4.h (on_exit): Declare only if IN_LIBGCC2.
	* config/romp/romp.c (romp_select_rtx_section): New.
	* config/s390/s390.c (s390_select_rtx_section): New.
	* config/xtensa/xtensa.c: Include output.h.  Shuffle local function
	declarations before target macro definition.
	(xtensa_emit_call): Use static buffer.
	(xtensa_select_rtx_section): New.
	* config/xtensa/xtensa.h (MAX_INT_TYPE_SIZE): Remove.
	(IMPLICIT_FIX_EXPR, EASY_DIV_EXPR): Remove.
	(ASM_OUTPUT_POOL_PROLOGUE): Update call to resolve_unique_section.

	* doc/tm.texi (TARGET_ASM_SELECT_RTX_SECTION): Update from
	SELECT_RTX_SECTION docs.

From-SVN: r53600
2002-05-18 16:47:22 -07:00
Richard Henderson ae46c4e08a hooks.c (hook_tree_bool_false): New.
* hooks.c (hook_tree_bool_false): New.
	* hooks.h: Declare it.
	* target-def.h (TARGET_ASM_SELECT_SECTION): New.
	(TARGET_ASM_UNIQUE_SECTION, TARGET_IN_SMALL_DATA_P): New.
	* target.h (select_section, unique_section): New.
	(in_small_data_p): New.
	* varasm.c (resolve_unique_section): Use hooks instead of macros.
	(variable_section, output_constant_def_contents): Likewise.
	(default_select_section, default_unique_section): New.
	(categorize_decl_for_section, default_elf_select_section): New.
	* output.h: Declare them.

	* config/darwin.h (ALIAS_SECTION, try_section_alias): Remove.
	(TARGET_ASM_SELECT_SECTION): New.
	(SELECT_SECTION): Move ...
	* config/darwin.c (machopic_select_section): ... here.
	* config/darwin-protos.h: Update.

	* config/nextstep.h (TARGET_ASM_SELECT_SECTION): New.
	(SELECT_SECTION): Move ...
	* config/nextstep.c (nextstep_select_section): ... here.
	* config/nextstep-protos.h: Update.

	* config/elfos.h (UNIQUE_SECTION, SELECT_SECTION): Remove.
	(TARGET_ASM_SELECT_SECTION): New.
	* config/svr3.h (SELECT_SECTION): Remove.

	* config/alpha/alpha.c (unicosmk_unique_section): Make static.
	(TARGET_ASM_UNIQUE_SECTION) [UNICOS]: New.
	(TARGET_IN_SMALL_DATA_P, alpha_in_small_data_p): New.
	(alpha_encode_section_info): Use it.
	* config/alpha/alpha-protos.h: Update.
	* config/alpha/elf.h (DO_SELECT_SECTION): Remove.
	(SELECT_SECTION, UNIQUE_SECTION): Remove.
	(TARGET_ASM_SELECT_SECTION): New.
	* config/alpha/unicosmk.h (UNIQUE_SECTION): Remove.

	* config/arm/pe.h (UNIQUE_SECTION): Remove.
	(TARGET_ASM_UNIQUE_SECTION): New.

	* config/avr/avr.c (TARGET_ASM_UNIQUE_SECTION): New.
	(avr_unique_section): Rename from unique_section; make static.
	* config/avr/avr-protos.h: Update.
	* config/avr/avr.h (UNIQUE_SECTION): Remove.

	* config/c4x/c4x.h (SELECT_SECTION): Remove.

	* config/i386/cygwin.h (UNIQUE_SECTION): Remove.
	(TARGET_ASM_UNIQUE_SECTION): New.
	* config/i386/i386-interix.h: Likewise.
	* config/i386/win32.h: Likewise.
	* config/i386/djgpp.h (UNIQUE_SECTION): Remove.
	* config/i386/i386.c (ix86_asm_file_end): Use target hook not macro.
	* config/i386/sco5.h (SELECT_SECTION): Remove.
	(TARGET_ASM_SELECT_SECTION): New.
	* config/i386/svr3gas.h (SELECT_SECTION): Remove.

	* config/i860/paragon.h: Undef TARGET_ASM_SELECT_SECTION
	instead of SELECT_SECTION.
	* config/m68k/dpx2.h: Likewise.
	* config/rs6000/lynx.h: Likewise.

	* config/ia64/aix.h (SELECT_SECTION, UNIQUE_SECTION): Remove.
	(TARGET_ASM_SELECT_SECTION, TARGET_ASM_UNIQUE_SECTION): New.
	* config/ia64/ia64.c (TARGET_IN_SMALL_DATA_P): New.
	(ia64_in_small_data_p): New.
	(ia64_encode_section_info): Use it.  Reorganize overlarge conditional.
	(ia64_aix_select_section, ia64_aix_unique_section): New.
	* config/ia64/sysv4.h (DO_SELECT_SECTION): Remove.
	(SELECT_SECTION, UNIQUE_SECTION): Remove.

	* config/m32r/m32r.h (SELECT_SECTION): Remove.
	(TARGET_ASM_SELECT_SECTION): New.
	* config/m32r/m32r.c (m32r_select_section): Take align argument.
	* config/m32r/m32r-protos.h: Update.

	* config/m88k/m88k.h (TARGET_ASM_SELECT_SECTION): New.
	(SELECT_SECTION): Move ...
	* config/m88k/m88k.c (m88k_select_section): ... here.

	* config/mcore/mcore-pe.h (SELECT_SECTION): Remove.
	* config/mcore/mcore.h (UNIQUE_SECTION): Remove.
	* config/mcore/mcore.c (TARGET_ASM_UNIQUE_SECTION): New.
	(mcore_unique_section): Make static.
	* config/mcore/mcore-protos.h: Update.

	* config/mips/elf.h (UNIQUE_SECTION): Remove.
	(TARGET_ASM_UNIQUE_SECTION): New.
	* config/mips/elf64.h: Likewise.
	* config/mips/iris6gld.h: Likewise.
	* config/mips/linux.h: Likewise.
	* config/mips/mips-protos.h: Update.
	* config/mips/mips.c (mips_select_section): Add align argument.
	* config/mips/mips.h (SELECT_SECTION): Remove.
	(TARGET_ASM_SELECT_SECTION): New.

	* config/mmix/mmix.h (SELECT_SECTION, UNIQUE_SECTION): Remove.
	* config/mmix/mmix.c (mmix_select_section): Remove.
	(mmix_unique_section): Remove.
	* config/mmix/mmix-protos.h: Update.

	* config/pa/pa.h (TARGET_ASM_SELECT_SECTION): New.
	(SELECT_SECTION): Move ...
	* config/pa/pa.c (pa_select_section): ... here.
	* config/pa/pa64-hpux.h (UNIQUE_SECTION): Remove.

	* config/rs6000/rs6000.c (rs6000_elf_select_section): Rename
	from rs6000_select_section and make static.
	(rs6000_elf_unique_section): Similarly.
	(rs6000_xcoff_select_section): From xcoff.h.
	(rs6000_xcoff_unique_section): Likewise.
	* config/rs6000/rs6000-protos.h: Update.
	* config/rs6000/sysv4.h (SELECT_SECTION, UNIQUE_SECTION): Remove.
	(TARGET_ASM_SELECT_SECTION, TARGET_ASM_UNIQUE_SECTION): New.
	* config/rs6000/xcoff.h: Likewise.

	* config/sparc/aout.h (TARGET_ASM_SELECT_SECTION): New.
	(SELECT_SECTION): Move ...
	* config/sparc/sparc.c (sparc_aout_select_section): ... here.

	* config/v850/v850.h (SELECT_SECTION): Move ...
	* config/v850/v850.c (v850_select_section): ... here.
	(TARGET_ASM_SELECT_SECTION): New.

	* config/vax/vms.h (SELECT_SECTION): Move ...
	* config/vax/vax.c (vms_select_section): ... here.
	(TARGET_ASM_SELECT_SECTION): New.

	* doc/tm.texi: Update SELECT_SECTION and UNIQUE_SECTION docs
	for the target hooks.

From-SVN: r53550
2002-05-17 00:43:41 -07:00
Richard Henderson a00fe19fa5 ia64.c (ia64_reorg): Rebuild bb_for_insn before splitting.
* config/ia64/ia64.c (ia64_reorg): Rebuild bb_for_insn before
        splitting.  Use split_all_insns; update_life_info_in_dirty_blocks.

From-SVN: r53544
2002-05-17 00:01:18 -07:00
Richard Henderson 068d7739b9 * config/ia64/ia64.c (saveable_obstack): Do not declare.
From-SVN: r53541
2002-05-16 21:24:53 -07:00
Richard Henderson 086c0f96be ia64.md: Use define_constants for unspec numbers.
* config/ia64/ia64.md: Use define_constants for unspec numbers.
        * config/ia64/ia64.c: Likewise.

From-SVN: r53344
2002-05-09 13:58:35 -07:00
Janis Johnson 5a63e06940 rtl.h (struct rtx_def): Update comments.
* rtl.h (struct rtx_def): Update comments.
	(RTL_FLAG_CHECK[12345678]): New.  (rtl_check_failed_flag): Declare.
	(RTL_FLAG): New.  (CLEAR_RTX_FLAGS): New.  (flag access macros): Use
	RTL_FLAG_CHECK macros with list of expected RTL codes.
	* rtl.c (copy_rtx, shallow_copy_rtx): Use RTX_FLAG macro.
	(rtl_check_failed_flag): New.
	* reload1.c (reload): Use REG macro before changing rtx to MEM.
	(reload_cse_noop_set_p): Check rtx code before using access macro.
	* config/ia64/ia64.c (process_for_unwind_directive): Check rtx code
	before using access macro.

From-SVN: r53245
2002-05-07 00:18:48 +00:00
David S. Miller 14d118d655 ia64.c (ia64_emit_insn_before): Put it back.
2002-05-03  David S. Miller  <davem@redhat.com>

	* config/ia64/ia64.c (ia64_emit_insn_before): Put it back.
	(rtx_needs_barrier): Delete reference to cycle_display unspec.
	(ia64_sched_reorder2): Mention need for cycle display handling
	once such notes exist.

From-SVN: r53139
2002-05-03 18:04:18 -07:00
David S. Miller aaaed75228 Delete cycle display scheduling hook.
2002-05-03  David S. Miller  <davem@redhat.com>

	Delete cycle display scheduling hook.
	* config/ia64/ia64.c (ia64_cycle_display,
	TARGET_SCHED_CYCLE_DISPLAY, ia64_emit_insn_before): Delete.
	(ia64_sched_reorder2): Don't check for CODE_FOR_cycle_display
	and use emit_insn_before instead of ia64_emit_insn_before.
	* config/ia64/ia64.md (unspec usage): Delete cycle display.
	(cycle_display): Delete insn pattern.
	* config/sparc/sparc.md (unspec usage): Delete cycle display.
	(cycle_display): Delete insn pattern.
	* config/sparc/sparc.c (sparc_cycle_display,
	TARGET_SCHED_CYCLE_DISPLAY): Delete.
	* doc/md.texi (cycle_display): Don't mention.
	* doc/tm.texi (TARGET_SCHED_CYCLE_DISPLAY): Likewise.

From-SVN: r53134
2002-05-03 17:31:28 -07:00
Richard Henderson 2840e66a78 ia64.c (ia64_function_arg_pass_by_reference): Don't crash with no type for by-mode libcalls.
* config/ia64/ia64.c (ia64_function_arg_pass_by_reference): Don't
        crash with no type for by-mode libcalls.

From-SVN: r52508
2002-04-18 20:59:51 -07:00
Richard Henderson 51dcde6f95 ia64.c (ia64_function_arg_pass_by_reference): New.
* config/ia64/ia64.c (ia64_function_arg_pass_by_reference): New.
        (ia64_va_arg): Expect variable sized types by reference.
        * config/ia64/ia64-protos.h: Update.
        * config/ia64/ia64.h (FUNCTION_ARG_PASS_BY_REFERENCE): Use
        ia64_function_arg_pass_by_reference.

From-SVN: r52494
2002-04-18 13:28:39 -07:00
Richard Henderson bdbe5b8d8d ia64.c (group_barrier_needed_p): Special case prologue_allocate_stack.
* config/ia64/ia64.c (group_barrier_needed_p): Special case
        prologue_allocate_stack.
        (ia64_single_set): Use insn codes for recognition of special
        cases, not rtl matching.
        * config/ia64/ia64.md (prologue_allocate_stack): Op 3 is in-out.

	* gcc.c-torture/compile/20020330-1.c: New.

From-SVN: r51615
2002-03-30 16:15:19 -08:00
Steve Ellcey e206a74f52 ia64.md (*ptr_extend_plus_1, [...]): New.
* config/ia64/ia64.md (*ptr_extend_plus_1, *ptr_extend_plus_2): New.
        * config/ia64/ia64.c (basereg_operand): New.
        * config/ia64/ia64-protos.h (basereg_operand): Declare.
        * config/ia64/ia64.h (PREDICATE_CODES): Add basereg_operand.

From-SVN: r51564
2002-03-29 10:39:56 -08:00
Richard Henderson 6dad5a5631 re PR target/6054 (GCC 3.1 for ia64 fails to restore gp after indirect call in Linux kernel)
PR target/6054
        * config/ia64/ia64.c (ia64_expand_call): Use pic patterns for
        TARGET_CONST_GP.  Simplify conditions.

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

From-SVN: r51444
2002-03-27 02:34:14 -08:00
Richard Henderson 648fe28b9d re PR target/3177 (Invalid sibcall optimisation on ia64)
PR target/3177
        * config/ia64/ia64.h (CUMULATIVE_ARGS): Add int_regs.
        (INIT_CUMULATIVE_ARGS, INIT_CUMULATIVE_INCOMING_ARGS): Update.
        * config/ia64/ia64.c (ia64_function_arg_advance): Set int_regs.
        (ia64_expand_prologue): Look at int_regs, not words, for number
        of incomming int regs.

From-SVN: r51180
2002-03-22 11:23:05 -08:00
Richard Kenner 46399021f6 * config/ia64/ia64.c (hfa_element_call, case ARRAY_TYPE): Recurse.
From-SVN: r51125
2002-03-21 10:05:26 -05:00
Richard Henderson 15b5aef3e7 flow.c (EH_USES): Provide default.
* flow.c (EH_USES): Provide default.
        (calculate_global_regs_live): Use it for EH edges and noreturn calls.
        * doc/tm.texi (EH_USES): New.

        * config/ia64/ia64.c (ia64_eh_uses): New.
        * config/ia64/ia64-protos.h: Update.
        * config/ia64/ia64.h (EH_USES): New.

From-SVN: r51060
2002-03-19 18:13:39 -08:00
Richard Henderson ebf0e888b1 ia64.c: Revert 2002-03-01 patch.
* config/ia64/ia64.c: Revert 2002-03-01 patch.
        * config/ia64/ia64.h (INIT_EXPANDERS): New.

From-SVN: r51048
2002-03-19 14:16:10 -08:00
Richard Henderson e6542f4e1f ia64.c (ia64_attribute_table): Move before targetm definition.
* config/ia64/ia64.c (ia64_attribute_table): Move before
        targetm definition.  Make static.

From-SVN: r50927
2002-03-17 12:44:59 -08:00
Richard Henderson 98d2b17e0c re PR target/5312 ([IA64] ICE in itanium_reorder at config/ia64/ia64.c:5917)
PR target/5312
        * config/ia64/ia64.c: Include tm_p.h last.
        (gen_nop_type): Remove duplicate definition.
        (cycle_end_fill_slots): Set sched_data for second L slot.
        (maybe_rotate): Call cycle_end_fill_slots to fill in nop slots.
        (nop_cycles_until): Fix typos.

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

From-SVN: r50796
2002-03-14 22:50:26 -08:00
Jan Hubicka 1e3881c2a0 toplev.c (rest_of_compilation): Add CLEANUP_UPDATE_LIFE to cfg_cleanup call after liveness analysis.
* toplev.c (rest_of_compilation): Add CLEANUP_UPDATE_LIFE to cfg_cleanup
	call after liveness analysis.

	* recog.c (split_insn): Use delete_insn_and_edges.

	* cfgrtl.c (verify_flow_info): Be permisive about non-any_condjump
	instructions to have branch prediction notes.
	* ia64reorg.c (ia64_reorg): Do not rebuild CFG.

From-SVN: r50765
2002-03-14 10:10:13 +00:00
Jakub Jelinek 09948ece3d re PR rtl-optimization/5892 (ICE in gen_nop_type during 2.4.17 ia64 kernel build)
PR optimization/5892
	* config/ia64/ia64.c (rotate_one_bundle): Update current packet.

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

From-SVN: r50723
2002-03-13 08:49:23 +01:00
Richard Henderson b20032503b varasm.c (make_decl_rtl): Remove call to REDO_SECTION_INFO_P; invoke ENCODE_SECTION_INFO with first call flag.
* varasm.c (make_decl_rtl): Remove call to REDO_SECTION_INFO_P;
	invoke ENCODE_SECTION_INFO with first call flag.

	* config/darwin-protos.h, config/darwin.c, config/darwin.h,
	config/a29k/a29k.h, config/alpha/alpha-protos.h, config/alpha/alpha.c,
	config/alpha/alpha.h, config/arc/arc.h, config/arm/arm-protos.h,
	config/arm/arm.h, config/arm/pe.c, 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/d30v/d30v.h, config/h8300/h8300.h, config/i370/i370.h,
	config/i386/cygwin.h, config/i386/i386-interix.h, config/i386/i386.h,
	config/i386/osfrose.h, config/i386/win32.h, config/i386/winnt.c,
	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/m88k/m88k.h,
	config/mcore/mcore-protos.h, config/mcore/mcore.c,
	config/mcore/mcore.h, config/mips/mips.h, config/ns32k/ns32k.h,
	config/pa/pa.h, config/romp/romp.h, config/rs6000/linux64.h,
	config/rs6000/rs6000-protos.h, config/rs6000/rs6000.c,
	config/rs6000/sysv4.h, config/rs6000/xcoff.h, config/s390/s390.h,
	config/sh/sh.h, config/sparc/sparc.h,
	config/stormy16/stormy16-protos.h, config/stormy16/stormy16.c,
	config/stormy16/stormy16.h, config/v850/v850.h, config/vax/vms.h,
	config/xtensa/xtensa.h, doc/tm.texi: ENCODE_SECTION_INFO now takes
	FIRST argument.  As needed, examine it and do nothing.

	* config/darwin.h, config/alpha/alpha.h, config/arm/pe.h,
	config/i386/cygwin.h, config/ia64/ia64.h, config/m68hc11/m68hc11.h,
	config/mcore/mcore.h: Remove REDO_SECTION_INFO_P.

	* config/arm/t-pe (pe.o): Add dependencies.

From-SVN: r50236
2002-03-02 20:23:21 -08:00
Richard Henderson 49b723064f ia64.c (ia64_initial_elimination_offset): Do not adjust argument_pointer by pretend_args_size.
* config/ia64/ia64.c (ia64_initial_elimination_offset): Do not
        adjust argument_pointer by pretend_args_size.
        (ia64_va_start): Adjust va_start address by -pretend_args_size.

From-SVN: r50212
2002-03-01 15:56:33 -08:00
Richard Henderson abda4f1c2d ia64.c (ia64_adjust_cost): All non-MM consumers have 4 cycle latency from MM producers.
* config/ia64/ia64.c (ia64_adjust_cost): All non-MM consumers have
        4 cycle latency from MM producers.
        (ia64_internal_sched_reorder): Likewise with pipeline flush.

From-SVN: r50160
2002-02-28 11:48:40 -08:00