2004-12-31  Richard Henderson  <rth@redhat.com>

	PR tree-opt/19042
	* tree-sra.c (decide_block_copy): Force use_block_copy false
	for complex values.

2004-12-31  Richard Henderson  <rth@redhat.com>

	PR middle-end/17799
	* function.c (use_register_for_decl): Check DECL_IGNORED_P instead
	of DECL_ARTIFICIAL.
	(assign_parms_augmented_arg_list): Set DECL_IGNORED_P.
	* c-decl.c (build_compound_literal): Likewise.
	* dwarf2asm.c (dw2_force_const_mem): Likewise.
	* gimplify.c (create_artificial_label): Likewise.
	* tree-inline.c (expand_call_inline): Likewise.
	* var-tracking.c (vt_initialize): Likewise.
	* tree-outof-ssa.c (create_temp): Copy DECL_IGNORED_P.

2004-12-31  Andrew Pinski  <pinskia@physics.uc.edu>

	PR target/19211
	* config/darwin.c (machopic_legitimize_pic_address): If the orig
	is subregister return orig.

2004-12-31  Zdenek Dvorak  <dvorakz@suse.cz>

	* tree-scalar-evolution.c (instantiate_parameters_1): Copy the
	expression only if needed.

2004-12-31  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* pa-hpux.h (HANDLE_SYSV_PRAGMA, HANDLE_PRAGMA_PACK_PUSH_POP): Define.

2004-12-31  Hans-Peter Nilsson  <hp@bitrange.com>

	PR target/18701
	* combine.c (combine_simplify_rtx): Do not allow paradoxical
	subregs of MEM.

	PR target/18701
	* combine.c (gen_lowpart_for_combine): When stripping SUBREG of
	MEM, adjust imode and isize.

2004-12-30  Richard Henderson  <rth@redhat.com>

	* config/ia64/ia64.c (hfa_element_mode): Return false for
	zero-sized top-level aggregates.

2004-12-30  Jan Hubicka  <jh@suse.cz>

	PR target/18019
	* i386.md (movqi_1): Fix -Os instruction choice.

2004-12-30  Steven Bosscher  <stevenb@suse.de>

	* global.c (regclass_intersect): Remove.
	(mark_reg_use_for_earlyclobber): Use reg_classes_intersect_p instead.

2004-12-30  Richard Henderson  <rth@redhat.com>

	* config/ia64/ia64.c (ia64_function_value): Use PARALLEL for
	aggregates with XF/XCmode.

2004-12-29  Richard Henderson  <rth@redhat.com>

	* 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.

2004-12-30  Hans-Peter Nilsson  <hp@bitrange.com>

	* config/mmix/mmix.h (ASM_OUTPUT_INTERNAL_LABEL): Define.
	* config/mmix/mmix.c (mmix_asm_output_internal_label): New
	function.
	* config/mmix/mmix-protos.h (mmix_asm_output_internal_label):
	Prototype.

2004-12-29  Richard Henderson  <rth@redhat.com>

	* config/sparc/sparc.c (TARGET_RELAXED_ORDERING): True.

2004-12-29  Jeff Law  <law@redhat.com>

	* tree-outof-ssa.c (insert_backedge_copies): New function.
	(rewrite_out_of_ssa): Use it.

2004-12-29  Ira Rosen  <irar@il.ibm.com>

	PR tree-optimization/18179
	* tree-vectorizer.c (vect_get_base_and_offset): Call get_inner_reference
	and vect_analyze_offset_expr.
	(vect_create_addr_base_for_vector_ref): Build address_base by combining
	base and initial_offset fields of vect_stmt_info.
	(vect_update_inits_of_dr): Update offset of data-ref instead of its
	access-fn. Remove argument.
	(vect_update_inits_of_drs): Call vect_update_inits_of_dr with new
	arguments.
	(vect_compute_data_ref_alignment): Check misalignment info in
	vect_stmt_info. Remove argument.
	(vect_compute_data_refs_alignment): Call vect_compute_data_ref_alignment
	with correct argument.
	(vect_analyze_data_ref_access): Check access info in vect_stmt_info.
	(vect_analyze_pointer_ref_access): Update step and initial_offset fields
	of vect_stmt_info.
	(vect_get_memtag_and_dr): Call vect_get_base_and_offset and set the
	fields of stmt_vec_info.
	(vect_analyze_data_refs): Find vectype and pass it to
	vect_get_memtag_and_dr.
	(vect_get_first_index): Remove.
	(vect_compute_array_base_alignment): Remove.
	(vect_compute_array_ref_alignment): Remove
	(vect_create_data_ref_ptr): Use TYPE_SIZE_UNIT instead GET_MODE_SIZE.
	(vect_gen_niters_for_prolog_loop): Use TREE_CONSTANT instead
	host_integerp.
	(vectorizable_load): Use size arithmetics.

2004-12-29  Ira Rosen  <irar@il.ibm.com>

	PR tree-optimization/18179
	* tree-vectorizer.c (vect_get_base_and_offset): Rename (previous name
	vect_get_base_and_bit_offset).
	(vect_get_memtag_and_dr): Rename (previous name vect_get_symbl_and_dr).

2004-12-29  Ira Rosen  <irar@il.ibm.com>

	PR tree-optimization/18179
	* tree-vectorizer.h (struct _stmt_vec_info): Add new fields:
	initial_offset, step, misalignment and base_aligned_p and macros
	to access them.
	* tree-vectorizer.c (vect_analyze_offset_expr): New function.
	(new_stmt_vec_info): Initialize the new fields of stmt_vec_info.

	(vect_create_data_ref_ptr): Fix printings.

2004-12-29  Ira Rosen  <irar@il.ibm.com>

	PR tree-optimization/18179
	* tree-vectorizer.c (vect_get_symbl_and_dr): Reorganize. Add memtag
	retrieval.
	(vect_analyze_data_refs): Remove memtag retrieval.

2004-12-28  Richard Henderson  <rth@redhat.com>

	PR inline-asm/15740
	* gimplify.c (gimplify_asm_expr): Move resolve asm names ...
	* c-typeck.c (build_asm_expr): ... here.  Validate input
	constraints.  Mark memory inputs addressable.

2004-12-28  Hans-Peter Nilsson  <hp@bitrange.com>

	PR target/18321
	* config/mmix/mmix.c (mmix_expand_epilogue): Change type of
	variable offset to HOST_WIDE_INT.  Remove obsolete comment.  Fix
	spacing.

2004-12-28  Andrew Pinski  <pinskia@physics.uc.edu>

	* fold-const.c (fold_build_cleanup_point_expr): For a RETURN_EXPR,
	we only need a cleanup point expression when the expression on the
	left hand side of the MODIFIY_EXPR inside the return has side
	effects.

2004-12-28  Dorit Naishlos  <dorit@il.ibm.com>

	* tree-vectorizer.c (vect_mark_relevant) First argument changed from
	varray_type to varray_type*.
	(vect_mark_stmts_to_be_vectorized): Pass &worklist instead of worklist
	when calling vect_mark_relevant.

2004-12-28  Alan Modra  <amodra@bigpond.net.au>

	* config/rs6000/rs6000.c (rs6000_legitimize_reload_address): Don't
	generate non-offsettable DImode lo_sum addresses.

2004-12-28  Zdenek Dvorak  <dvorakz@suse.cz>

	PR rtl-optimization/19103
	* loop-iv.c (iv_number_of_iterations): Fix typo.

2004-12-28  Andreas Jaeger  <aj@suse.de>

	* genrecog.c (compute_predicate_codes): Avoid warning.

2004-12-27 John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* vax.c (vax_address_cost, vax_rtx_cost): Correct casts.
	(vax_rtx_cost): Handle small offsets for both PLUS and MINUS.

2004-12-27  Jeff Law  <law@redhat.com>

	* tree-ssa-dom.c (thread_across_edge): Remove broken code to
	avoid threading into a loop.

2004-12-27  Richard Henderson  <rth@redhat.com>

	PR target/17406
	* config/i386/i386.c (ix86_expand_prologue): Add REG_FRAME_RELATED_EXPR
	note for allocate_stack_worker insn.

2004-12-27  Jason Merrill  <jason@redhat.com>

	* 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.

2004-12-27  Roger Sayle  <roger@eyesopen.com>

	PR driver/16118
	* doc/invoke.texi: Document the interaction between -save-temps
	and -x.

2004-12-27  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.c (rs6000_eliminate_indexed_memrefs):
	Do not break apart constant pool addresses.
	(rs6000_emit_move): Only force source into REG if target is MEM.

2004-12-27  Mark Mitchell  <mark@codesourcery.com>

	PR c++/19148
	* gimplify.c (gimplify_cond_expr): Add post_p parameter.
	(gimplify_modify_expr_rhs): Adjust call to gimplify_cond_expr.
	(gimplify_expr): Likewise.

2004-12-27  Richard Henderson  <rth@redhat.com>

	* config/i386/i386.h (UNITS_PER_SIMD_WORD): Don't use MMX/3DNOW.

2004-12-26  Richard Henderson  <rth@redhat.com>

	* config/i386/i386.c (ix86_gimplify_va_arg): Also pass the result
	of type_natural_mode to examine_argument.

	* config/i386/i386.md (mov<MMXMODEI>_internal_rex64): New.
	(movv2sf_internal_rex64): New.
	(mov<MMXMODEI>_internal): Use no register preferences at all.
	(movv2sf_internal): Likewise.

2004-12-26  Richard Henderson  <rth@redhat.com>

	* simplify-rtx.c (simplify_relational_operation_1): Don't simplify
	plus/minus across EQ for floating-point.

2004-12-26  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	PR target/17643
	* pa.c (pa_function_ok_for_sibcall): Sibcalls are not ok when
	generating code for the portable runtime.

2004-12-25  Richard Henderson  <rth@redhat.com>

	* expr.c (clear_storage): Validate CONST0_RTX extant.  Special case
	complex modes.

2004-12-25  Zdenek Dvorak  <dvorakz@suse.cz>

	PR rtl-optimization/19078
	* tree-ssa-loop-ivopts.c (determine_use_iv_cost_generic,
	determine_use_iv_cost_outer): Fix computing of cost for the original
	bivs.
	(dump_use): Handle case related_cands == NULL.

2004-12-25  Marek Michalkiewicz  <marekm@amelek.gda.pl>

	PR target/19059
	* config/avr/avr.c (avr_mcu_types): Move attiny{13,2313} from avr4
	to avr2.
	* config/avr/avr.h (LINK_SPEC): Ditto.
	* config/avr/t-avr (MULTILIB_MATCHES): Ditto.

2004-12-25  Alan Modra  <amodra@bigpond.net.au>

	PR target/19137
	* config/rs6000/rs6000.md (movti_power, movti_string): Relax
	operand[1] predicate to input_operand, and add r<-n alternative.
	Move TImode const_double_operand splitter to where it belongs.

2004-12-25  Alan Modra  <amodra@bigpond.net.au>

	PR target/19147
	* config/rs6000/rs6000.md (andsi3_internal7, andsi3_internal8): Delete.

2004-12-24  Uros Bizjak  <uros@kss-loka.si>

	* config/i386/i386.md (*fix_trunc{d,s,h}i_1):
	Rename to *fix_trunc{d,s,h}i_i387.
	(fix_trunc{d,s}fdi2): Reorder tests.

2004-12-24  Daniel Berlin  <dberlin@dberlin.org>

	Fix PR debug/14638

	* tree.h (DECL_DEBUG_ALIAS_OF): New macro.
	* var-tracking.c (track_expr_p): Don't disqualify tracking of variables
	that are aliases of variables we want to track, unless the
	original variable is also ignored for debugging purposes.
	(VARIABLE_HASH_VAL): Use DECL_UID, so that this is deterministic.
	* tree-outof-ssa.c (create_temp): Note who we are a debug alias of.
	* dwarf2out.c (dwarf2out_var_location): Add us to the location of
	the decl we are an alias of.

2004-12-24  Alan Modra  <amodra@bigpond.net.au>

	PR target/19142
	* config/rs6000/rs6000.c (legitimate_lo_sum_address_p): Allow
	DFmode for 32-bit again.

2004-12-23  Roger Sayle  <roger@eyesopen.com>

	* reload.c (regno_clobbered_p): Add a gcc_assert that regno
	refers to a hard register.

2004-12-23  Mark Mitchell  <mark@codesourcery.com>

	* gimplify.c (gimplify_modify_expr_rhs): Use types_compatible_p.

2004-12-23  DJ Delorie  <dj@redhat.com>

	* genrecog.c (did_you_mean_codes): New.
	(compute_predicate_codes): Fail unmatched codes.

2004-12-23  Eric Christopher  <echristo@redhat.com>

	* config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Add
	assert for machine=mips for !TARGET_IRIX.
	* config/mips/linux.h: Remove machine=mips assert.
	* config/mips/netbsd.h: Ditto.
	* config/mips/openbsd.h: Ditto.

2004-12-23  Dale Johannesen  <dalej@apple.com>

	* tree.c (iterative_hash_expr): Canonicalize builtins.

2004-12-23  Alexandre Oliva  <aoliva@redhat.com>

	PR target/16819
	* calls.c (load_register_parameters): Don't call use_regs when
	nregs is zero.

2004-12-23  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR middle-end/17746
	* expr.c (get_inner_reference): Add 'keep_aligning' parameter.
	Break on aligning VIEW_CONVERT_EXPR nodes on STRICT_ALIGNMENT
	platforms only if keep_aligning is true.
	(expand_assignment): Adjust call to get_inner_reference.
	(expand_expr_addr_expr_1): Likewise.
	(expand_expr_real_1): Likewise.
	* dojump.c (do_jump): Likewise.
	* dwarf2out.c (loc_descriptor_from_tree_1): Likewise.
	* fold-const.c (optimize_bit_field_compare): Likewise.
	(decode_field_reference): Likewise.
	(split_address_to_core_and_offset): Likewise.
	* tree-ssa-loop-ivopts.c (split_address_cost): Likewise.
	* tree.h (get_inner_reference): Adjust prototype.

2004-12-23  Richard Henderson  <rth@redhat.com>

	* config/i386/i386.c (override_options): Revert last change
	wrt fancy 387 math.

2004-12-23  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.md (one_cmpl<mode>2, and<mode>3, andnot<mode>3,
	ior<mode>3, iornot<mode>3, xor<mode>3, xornot<mode>3): New macroized
	vector operate patterns.

2004-12-23  Richard Henderson  <rth@redhat.com>

	* config/i386/i386.c (ix86_expand_vector_move): Tidy.
	(ix86_expand_vector_move_misalign): New.
	(ix86_misaligned_mem_ok): Remove.
	(TARGET_VECTORIZE_MISALIGNED_MEM_OK): Remove.
	* config/i386/i386-protos.h: Update.
	* config/i386/i386.md (SSEMODEI): Rename from SSEINT16.
	(MMXMODEI): Rename from MMXINT8.
	(SSEMODE, MMXMODE, movmisalign<mode>): New.

2004-12-23  Mark Mitchell  <mark@codesourcery.com>

	PR c++/16405
	* gimplify.c (gimplify_modify_expr_rhs): Handle
	INDIRECT_REF/ADDR_EXPR combinations.

2004-12-22  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.c (alpha_expand_mov): Split out ...
	(alpha_expand_movmisalign): ... misaligned vector support.
	(TARGET_VECTORIZE_MISALIGNED_MEM_OK): Remove.
	* config/alpha/alpha-protos.h: Update.
	* config/alpha/alpha.md (VEC): New macro.
	(movv8qi, movv4hi, movv2si): Compress with VEC.
	(movv8qi_fix, movv4hi_fix, movv2si_fix): Likewise.
	(movv8qi_nofix, movv4hi_nofix, movv2si_nofix): Likewise.
	(movmisalign<mode>): New.

2004-12-22  Richard Henderson  <rth@redhat.com>

	* optabs.h (OTI_movmisalign, movmisalign_optab): New.
	* optabs.c (init_optabs): Create it.
	* genopinit.c (optabs): Initialize it.
	* expr.c (expand_expr_real_1) <MISALIGNED_INDIRECT_REF>: Use it.
	* tree-vectorizer.c (vect_supportable_dr_alignment): Likewise.
	* target-def.h (TARGET_VECTORIZE_MISALIGNED_MEM_OK): Remove.
	* target.h (vectorize.misaligned_mem_ok): Remove.
	* targhooks.c (default_vect_misaligned_mem_ok): Remove.
	* doc/md.texi (movmisalign): New.
	* doc/tm.texi (TARGET_VECTORIZE_MISALIGNED_MEM_OK): Remove.

2004-12-22  Richard Henderson  <rth@redhat.com>

	* config/i386/emmintrin.h (_mm_loadh_pd): Don't cast pointer arg
	to __v2si.
	(_mm_storeh_pd, _mm_loadl_pd, _mm_storel_pd): Likewise.
	* config/i386/i386.c (ix86_init_mmx_sse_builtins): Use double* or
	const double* for __builtin_ia32_loadhpd, __builtin_ia32_loadlpd,
	__builtin_ia32_storehpd, __builtin_ia32_storelpd.
	(ix86_expand_builtin): Update to match.
	(ix86_expand_vector_init): Use sse2_loadlpd.
	* config/i386/i386.md (vec_setv2df): Use sse2_loadlpd, sse2_loadhpd.
	(vec_extractv2df): Use sse2_storelpd, sse2_storehpd.
	(sse2_storehpd, sse2_loadhpd, sse2_storelpd, sse2_loadlpd): New.
	(sse2_movhpd): Remove.

2004-12-23  Alan Modra  <amodra@bigpond.net.au>

	PR target/18751
	* config/rs6000/rs6000.c (legitimate_lo_sum_address_p): Return
	false for anything larger than 32 bits in 32-bit code.

2004-12-22  Richard Henderson  <rth@redhat.com>

	* config/i386/i386.md (btsq, btrq, btcq): Fix modes.
	(bt peepholes): Likewise.

	* varasm.c (force_const_mem): Call set_mem_align.

2004-12-22  Richard Henderson  <rth@redhat.com>

	* config/i386/predicates.md (sse_comparison_operator): Fix
	typo in ieee test.
	(arith_or_logical_operator): Downcase codes.

2004-12-23  Kaz Kojima  <kkojima@gcc.gnu.org>

	PR target/18511
	* reload1.c (emit_output_reload_insns): Check if OLD is a hard
	register before calling regno_clobbered_p.
	* reload.c: Update comment for regno_clobbered_p.

2004-12-22  Richard Henderson  <rth@redhat.com>

	* config/i386/i386.c (override_options): Respect user disable of
	fancy 387 math, sse, mmx.
	(construct_container): Generate error if we need an sse regster
	and sse has been disabled.
	* config/i386/i386.h (TARGET_SWITCHES): Disabling sse also disables
	later sse generations.  Disabling mmx also disables 3dnow.

2004-12-22  Daniel Berlin  <dberlin@dberlin.org>

	* tree-inline.c (struct inline_data): Remove inlined_fns.
	(expand_call_inline): Remove dead code setting
	inlined_fns.
	(optimize_inline_calls): Remove dead code setting DECL_INLINED_FNS.
	* tree.h (struct tree_decl): Remove inlined_fns.

2004-12-22  Roger Sayle  <roger@eyesopen.com>

	* tree-browser.c: Remove obsolete #ifdef HOST_EBCDIC code.

2004-12-23  Alan Modra  <amodra@bigpond.net.au>

	PR target/18896
	* function.c (split_complex_args): Set DECL_ARTIFICIAL, DECL_IGNORED_P
	for real and imaginary parts if the parm is addressable.
	(assign_parms_unsplit_complex): If parm addressable, save real
	and imaginary parts to a stack temp.  Pass assign_parm_data_all.
	(assign_parms): Adjust assign_parms_unsplit_complex call.

2004-12-22  Daniel Berlin  <dberlin@dberlin.org>

	* tree.h (DECL_PTA_ALIASVAR): Dead.
	(struct tree_decl): Remove alias_var field.

2004-12-22  Nathan Sidwell  <nathan@codesourcery.com>

	* system.h (IN_RANGE): Restore HOST_WIDE_INT cast.
	* tree.h (IS_EXPR_CODE_CLASS): Do not use IN_RANGE.

2004-12-22  Richard Henderson  <rth@redhat.com>
	    Uros Bizjak  <uros@kss-loka.si>

	* config/i386/i386.md (truncdfsf2): Don't create stack temp when
	using sse math only.  Use truncdfsf2_with_temp.
	(truncdfsf2_with_temp): New.
	(truncdfsf_fast_i387): Rename from truncdfsf2_noop.  Add memory
	output alternative.
	(truncdfsf_mixed): Rename from truncdfsf2_1_sse.  Compress duplicate
	alternatives.
	(truncdfsf_fast_sse): Rename from truncdfsf2_2.  Remove f alternative.
	(truncdfsf2_3, truncdfsf2_sse_only): Remove.
	(truncdfsf_i387): Rename from truncdfsf2_1.  Compress duplicates.
	(truncdfsf_fast_mixed): New.
	(truncdfsf splitters): Remove all except the 387 load/store split.
	(truncxfsf2_1, truncxfdf2_1): Unify enable constraint with
	respect to TARGET_SSE2, TARGET_80387, TARGET_SSE_MATH and
	TARGET_MIX_SSE_I387.
	(*truncxf{s,d}f2_1): Rename to *truncxf{s,d}f2_mixed.
	(truncxf{s,d}f2_noop) Rename to truncxf{d,s}f2_i387_noop.
	(*truncxf{s,d}f2_i387): New patterns.
	(*truncxf{s,d}f2_2): Rename to *truncxf{s,d}f2_i387_1.
	(truncxf{s,d}f2, fmod{s,d}f3, drem{s,d}f3, log1p{s,d}f2,
	rint{s,d}f2, floor{s,d}f2, ceil{s,d}f2, btrunc{s,d}f2,
	nearbyint{s,d}f2): Use renamed patterns.

2004-12-22  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* tree.h (TYPE_SIZES_GIMPLIFIED): New.
	* function.c (gimplify_parm_type): Don't gimplify type if already done.
	* gimplify.c (gimplify_decl_expr): Likewise.
	(gimplify_type_sizes): Set TYPE_SIZES_GIMPLIFIED.  Examine nested
	array types.

2004-12-22  Richard Henderson  <rth@redhat.com>

	* gimplify.c (eval_save_expr): Remove.
	(gimplify_one_sizepos): Unshare expr before gimplifying.
	* stor-layout.c (variable_size): Revert 2004-12-19 change.
	(layout_decl): Revert 2004-12-18 change.
	(layout_type): Revert 2004-12-21 change.

2004-12-22  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* tree-sra.c (type_can_be_decomposed_p): Reject variable sized types.

2004-12-22  Mark Mitchell  <mark@codesourcery.com>

	* Makefile.in (install-common): Remove special-case code for when
	SPECS is defined.

2004-12-22  Jan Beulich  <jbeulich@novell.com>

	* config.gcc: Add dbxelf.h to NetWare's tm_file.
	* config/i386/netware-crt0.c: Prototype __init_environment and
	__deinit_environment prior to their definition.
	(__init_environment): Correct invokation of constructor function.
	* config/i386/netware.h (TARGET_OS_CPP_BUILTINS): Use
	builtin_define_std rather than builtin_define on IAPX386.
	* config/i386/nwld.h: Disable stabs debugging info with the linker
	this file supports.
	* config/i386/t-nwld (SHLIB_LINK): Do not use a temporary file for
	the output. Add -posix to the options as that is the more compatible
	mode.
	* gthr-nks.h: Formatting.
	(__gthread_mutex_init_function): Kill the dubious use of
	NX_MUTEX_RECURSIVE as it is now clear that the traditional mutexes
	were not meant to be recursive.
	(__gthread_recursive_mutex_t, __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION,
	__gthread_recursive_mutex_init_function,
	__gthread_recursive_mutex_lock, __gthread_recursive_mutex_trylock,
	__gthread_recursive_mutex_unlock): New.

2004-12-22  Alexandre Oliva  <aoliva@redhat.com>

	* config/mips/t-linux64: Remove code that messed with $(SPECS).
	(MULTILIB_OPTIONS, MULTILIB_DIRNAMES, MULTILIB_OSDIRNAMES): Move
	n32 to the front.
	(MULTILIB_EXTRA_OPTS, CRTSTUFF_T_CFLAGS, CRTSTUFF_T_CFLAGS_S):
	Removed.
	* config/mips/linux64.h (DRIVER_SELF_SPECS): Don't handle
	-mabi-fake-default.
	(SUBTARGET_TARGET_SWITCHES): Likewise.

2004-12-21  Andrew Pinski  <pinskia@physics.uc.edu>

	PR c++/18984
	* pointer-set.c (pointer_set_contains): Add back.
	* pointer-set.h (pointer_set_contains): Add back.

2004-12-21  Richard Henderson  <rth@redhat.com>

	* gimplify.c (eval_save_expr): New.
	(gimplify_one_sizepos): Use it.
	* stor-layout.c (layout_type): Unshare TYPE_MIN/MAX_VALUE.

2004-12-21  Nathan Sidwell  <nathan@codesourcery.com>

	* system.c (IN_RANGE): Use plain unsigned, not unsigned
	HOST_WIDE_INT.
	* tree.def (VOID_TYPE, INTEGER_TYPE, REAL_TYPE, COMPLEX_TYPE,
	VECTOR_TYPE, OFFSET_TYPE, ENUMERAL_TYPE, BOOLEAN_TYPE, CHAR_TYPE,
	POINTER_TYPE, REFERENCE_TYPE, METHOD_TYPE, FUNCTION_TYPE,
	FILE_TYPE, ARRAY_TYPE, RECORD_TYPE, UNION_TYPE,
	QUAL_UNION_TYPE): Reorder for better code efficiency.
	(CONST_DECL, TYPE_DECL, VAR_DECL, FIELD_DECL, PARM_DECL): Likewise.
	(INDIRECT_REF, ALIGN_INDIRECT_REF, MISALIGNED_INDIRECT_REF): Likewise.
	* tree.h (INDIRECT_REF_P): Reorder checks for better optimization.
	(IS_EXPR_CODE_CLASS): Use IN_RANGE.
	(INTEGRAL_TYPE_P, FLOAT_TYPE_P): Reorder checks for better
	optimization.

2004-12-21  David O'Brien  <obrien@FreeBSD.org>

	* config/freebsd-spec.h: Use KSE pthread lib for -pthread.

2004-12-21  James A. Morrison  <phython@gcc.gnu.org>

	PR c/18963
	* c-decl.c (pushdecl): Remove block trying to merge static function
	declarations at block scope to file scope declarations.

2004-12-21  James A. Morrison  <phython@gcc.gnu.org>

	PR c/18596
	* c-parse.in (initdcl): Don't process a declaration if start_decl fails.
	(notype_initdcl): Don't process a declaration if start_decl fails.
	* c-decl.c (start_decl): Fail if grokdeclarator fails.
	(grokdeclarator): Fail if a function definition has an invalid storage
	class.
	* c-typeck.c (start_init): Treat error_mark_node the same as 0.

2004-12-21  Richard Henderson  <rth@redhat.com>

	* config/i386/i386.c (x86_sse_split_regs): Rename from
	x86_sse_partial_regs.
	* config/i386/i386.h (x86_sse_split_regs): Likewise.
	(TARGET_SSE_SPLIT_REGS): Rename from TARGET_SSE_PARTIAL_REGS.
	* config/i386/i386.md (*): Update to match.  Remove two
	floatsisf splitters that use it.

	* config/i386/i386.h (x86_sse_partial_regs_for_cvtsd2ss): Remove.

	* config/i386/i386.c (x86_sse_partial_regs_for_cvtsd2ss): Remove.
	* config/i386/i386.h (TARGET_SSE_PARTIAL_REGS_FOR_CVTSD2SS): Remove.
	* config/i386/i386.md (truncdfsf2_1_sse): Don't test it.
	(truncdfsf2_2, truncdfsf2_sse_only): Likewise.
	(truncdfsf2_1_sse_nooverlap, truncdfsf2_2_nooverlap): Remove.
	(truncdfsf2_sse_only_nooverlap): Remove.

	* config/i386/i386.h (TARGET_SSE_TYPELESS_LOAD0): Remove.

2004-12-21  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* expr.c (emit_group_load_1): Return the source if the move
	is a regular move between complex values.

2004-12-20  Roger Sayle  <roger@eyesopen.com>

	PR middle-end/18683
	* config/rs6000/rs6000.c (current_file_function_operand): Only check
	current_function_decl's DECL_RTL if it has already been set.

2004-12-20  Roger Sayle  <roger@eyesopen.com>

	PR middle-end/18683
	* function.c (pop_function_context_from): Don't reset reg_renumber.

2004-12-20  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR middle-end/18776
	* expr.c (write_complex_part): Use a subreg if the original object
	is a hard reg that spans an even number of regs or a MEM.
	(read_complex_part): Likewise.

2004-12-20  Mark Mitchell  <mark@codesourcery.com>

	* Makefile.in (install-common): Do not install the specs file
	unless SPECS is defined.

2004-12-20  Zdenek Dvorak  <dvorakz@suse.cz>

	PR rtl-optimization/18942
	* simplify-rtx.c (simplify_relational_operation_1): Simplify
	x + cst1 == cst2 to x == cst2 - cst1.  Made static.

2004-12-20  Matt Austern  <austern@apple.com>

	PR c++/19044
	* c-common.c (set_builtin_user_assembler_name): New.
	* c-common.h (set_builtin_user_assembler_name): Declare.
	* c-decl.c (finish_decl): Use set_builtin_user_assembler_name

2004-12-20  Diego Novillo  <dnovillo@redhat.com>

	PR tree-optimization/19080

	Merge from tree-cleanup-branch

	* tree-flow-inline.h (clear_call_clobbered): New function.
	* tree-ssa-alias.c (init_alias_info): Call it.

2004-12-20  Richard Henderson  <rth@redhat.com>

	* config/i386/i386.md (sse2_movsd): Remove ix86_binary_operator_ok
	check.

2004-12-20  Steven Bosscher  <stevenb@suse.de>
	    Andrew Pinski  <pinskia@physics.uc.edu>

	PR middle-end/18191
	PR middle-end/18965
	PR middle-end/18999
	* expr.c (categorize_ctor_elements_1): Count the total number
	of elements in the constructor.
	(categorize_ctor_elements): Return it in a new argument.
	* tree.h (categorize_ctor_elements): Adjust prototype.
	* gimplify.c (gimplify_init_ctor_eval_range): New.
	(gimplify_init_ctor_eval): Gimplify RANGE_EXPR.
	(gimplify_init_constructor): Block clear the object if the
	constructor has fewer elements than the object type.  Only try
	to add assignments to individual elements when we have to.

2004-12-20  Richard Henderson  <rth@redhat.com>

	* config/i386/i386.c (ix86_init_mmx_sse_builtins): Use
	long_long_integer_type_node in building V2DI_type_node.

	* config/i386/emmintrin.h: Use __vector_size__ instead of vector_size.
	* config/i386/mmintrin.h, config/i386/xmmintrin.h: Likewise.

2004-12-20  Ben Elliston  <bje@au.ibm.com>

	* doc/md.texi (Expander Definitions): Use @emph instead of @strong
	around Note: text to workaround a limitation of the Info format.
	* doc/cpp.texi (Invocation): Likewise.
	* doc/cppopts.texi: Likewise.

2004-12-19  Dale Johannesen  <dalej@apple.com>

	* tree-ssa-loop-ivopts.c (contains_abnormal_ssa_name_p): Don't
	reference operand 1 of ADDR_EXPRs.

2004-12-19  Mark Mitchell  <mark@codesourcery.com>

	* defaults.h (ASM_OUTPUT_INTERNAL_LABEL): New macro.
	* output.h (assemble_name_raw): Declare it.
	* system.h (ASM_OUTPUT_INTERNAL_LABEL): Do not poison it.
	* varasm.c (assemble_name_raw): New function.
	(assemble_name): Use it.
	(default_internal_label): Likewise.
	* config/darwin.c (darwin_asm_output_dwarf_delta): Likewise.
	* doc/tm.texi (ASM_OUTPUT_INTERNAL_LABEL): Document.

2004-12-19  Richard Henderson  <rth@redhat.com>

	PR 18067
	* stor-layout.c (variable_size): Force creation of a SAVE_EXPR.

2004-12-19  Steven Bosscher  <stevenb@suse.de>

	* config/i386/i386.c (ix86_split_to_parts): Use an array with
	four elements for decoding a CONST_DOUBLE on 64 bits targets.

2004-12-19  Bernardo Innocenti  <bernie@develer.com>

	* config/m68k/m68kemb.h (TARGET_OS_CPP_BUILTINS): Remove redundant
	definition of mc68000, already present in TARGET_CPU_CPP_BUILTINS.

2004-12-18  Daniel Berlin  <dberlin@dberlin.org>

	* lambda-code.c (can_convert_to_perfect_nest): Make checking
	match up with what perfect_nestify can actually handle.
	(perfect_nestify): Don't return false in the phi node loop.

2004-12-18  Richard Henderson  <rth@redhat.com>

	* config/i386/i386.md (SSEINT16): New.
	(movv16qi, movv8hi, movv4si, movv2di): Compress via macros.
	(movv16qi_internal, movv8hi_internal, movv4si_internal,
	movv2di_internal): Compress via macros.  Add SSE zero alternative.
	Fix pure SSE alternatives to use 'x' instead of 'Y'.
	(MMXINT8): New.
	(movv8qi, movv4hi, movv2si, movv8qi_internal, movv4hi_internal,
	movv2si_internal): Compress via macros.
	(SSEPUSH, MMXPUSH): New.
	(pushv18qi, pushv8hi, pushv4si, pushv2di, pushti, pushv4sf, pushv2df,
	pushv8qi, pushv4hi, pushv2si, pushv2sf): Compress via macros.

2004-12-18  Richard Henderson  <rth@redhat.com>

	PR middle-end/16417
	* c-decl.c (store_parm_decls): Clarify get_pending_sizes insertion
	comment.
	* c-objc-common.c (c_cannot_inline_tree_fn): Remove pending sizes
	checks.
	* c-tree.h (struct lang_decl): Remove pending_sizes.
	* function.c: Include tree-gimple.h
	(assign_parm_setup_reg): Remove callee-copies code.
	(gimplify_parm_type, gimplify_parameters): New functions.
	(expand_pending_sizes): Remove.
	(expand_function_start): Don't call it.
	* gimplify.c (gimplify_expr): Examine DECL_VALUE_EXPR for PARM_DECL.
	(gimplify_body): Add do_parms argument.  Use gimplify_parameters.
	(gimplify_function_tree): Setup cfun.  Update gimplify_body call.
	* tree-gimple.h (gimplify_body): Update decl.
	* tree-inline.c (initialize_inlined_parameters): Update gimplify_body
	call.
	* tree.h (gimplify_parameters): Declare.
	* Makefile.in (function.o): Depend on TREE_GIMPLE_H.

2004-12-18  Richard Henderson  <rth@redhat.com>

	* c-decl.c (finish_struct): Add DECL_EXPR for variable sized
	structures seen inside functions.

2004-12-18  Richard Henderson  <rth@redhat.com>

	* c-decl.c (grokdeclarator): Save variable array size before
	subtracting 1, rather than after.

2004-12-18  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR middle-end/15486
	* varasm.c (asm_emit_uninitialised): Return early if
	a custom section is requested.
	(assemble_variable): Revert 2002-03-15 patch.

2004-12-18  Richard Henderson  <rth@redhat.com>

	* stor-layout.c (layout_decl): Use unshare_expr, not unsave_expr.

2004-12-18  Zdenek Dvorak  <dvorakz@suse.cz>

	PR tree-optimization/18800
	* params.def (PARAM_IV_ALWAYS_PRUNE_CAND_SET_BOUND): New parameter.
	* tree-ssa-loop-ivopts.c (struct iv_ca): Add n_cands field.
	(ALWAYS_PRUNE_CAND_SET_BOUND): New macro.
	(iv_ca_set_no_cp, iv_ca_set_cp, iv_ca_new): Update n_cands field.
	(iv_ca_delta_join, iv_ca_delta_reverse, iv_ca_n_cands, iv_ca_prune):
	New functions.
	(iv_ca_extend): Return number of candidates in the set.
	(try_add_cand_for): Add argument to iv_ca_extend calls.
	(try_improve_iv_set): Use iv_ca_prune.
	* doc/invoke.texi (iv-always-prune-cand-set-bound): Document.

2004-12-18  Zdenek Dvorak  <dvorakz@suse.cz>

	PR rtl-optimization/19001
	* loop-iv.c (iv_number_of_iterations): Record assumptions for loops
	with power of two step to 'infinite' field.

2004-12-18  Roger Sayle  <roger@eyesopen.com>

	* Makefile.in (stor-layout.o): Depend upon gt-stor-layout.h.
	(tree-ssa-propagate.o): Depend upon gt-tree-ssa-propagate.h.
	(tree-ssa-operands.o): Depend upon gt-tree-ssa-operands.h.
	(tree-mudflap.o): Depend upon gt-tree-mudflap.h.
	(expr.o): Depend upon gt-expr.h.
	(regclass.o): Depend upon gt-regclass.h.
	(bitmap.o): Depend upon gt-bitmap.h.
	(lists.o): Depend upon gt-lists.h.

	(cfgexpand.o): Don't depend upon gt-tree-cfg.h.

	(GTFILES): Remove fold-const.c.
	(gt-stmt.h, gt-fold-const.h, gt-input.h, gt-tree-ssa-ccp.h):
	Remove rules.

2004-12-18  Richard Henderson  <rth@redhat.com>

	* stor-layout.c (layout_decl): Unshare size expressions copied
	from the type.

	* fold-const.c (multiple_of_p): Handle BIT_AND_EXPR when
	BOTTOM is a power of two.

2004-12-18  Richard Henderson  <rth@redhat.com>

	* tree-nested.c (save_tmp_var): New.
	(struct walk_stmt_info): Add is_lhs.
	(walk_stmts) <MODIFY_EXPR>: Be more accurate with setting of
	val_only; set is_lhs.
	(convert_nonlocal_reference): Use save_tmp_var when is_lhs;
	clear is_lhs when appropriate.
	(convert_local_reference): Likewise.

2004-12-18  Richard Earnshaw  <rearnsha@arm.com>

	* arm/ieee754-sf.S (floatdisf): Fix label definition in FPA
	compatibility code.

2004-12-18  Roger Sayle  <roger@eyesopen.com>

	* ifcvt.c (total_bb_rtx_cost): Rename function to cheap_bb_rtx_cost_p.
	Take a max_cost argument to avoid scanning large blocks, by returning
	a Boolean instead of a total.  Include the cost of a "fstp %st(0)"
	instruction required to pop dead values off of a register stack.

2004-12-18  Roger Sayle  <roger@eyesopen.com>

	PR middle-end/18548
	* expr.c (expand_expr_real_1) <MAX_EXPR>: Ensure that target, op0
	and op1 are all registers (or constants) before expanding the RTL
	comparison sequence [to avoid reg_overlap_mentioned (target, op1)].

2004-12-18  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR rtl-optimization/16968
	* loop.c (scan_loop): Stop scanning the loop for movable
	insns as soon as an optimization barrier is encountered.

2004-12-17  Zack Weinberg  <zack@codesourcery.com>

	PR 18897
	* toplev.c (compile_file): Call process_pending_assemble_externals
	just before targetm.asm_out.file_end.

2004-12-17  Diego Novillo  <dnovillo@redhat.com>

	tree-optimization/18501
	* tree-optimize.c (init_tree_optimization_passes): Run
	pass_late_warn_uninitialized before the last DCE run.

2004-12-17  Richard Henderson  <rth@redhat.com>

	* config/i386/i386.c (x86_64_reg_class_name): Re-indent.
	(classify_argument, examine_argument, construct_container,
	merge_classes): Remove prototypes.
	(type_natural_mode): Split out from ...
	(function_arg): ... here.
	(gen_reg_or_parallel): Remove alt_mode argument.  Update callers.
	Use orig_mode unless it's BLKmode.
	(construct_container): Add orig_mode argument.  Update callers.
	Use gen_reg_or_parallel for SSE registers.
	(ix86_function_value): Use type_natural_mode.
	(ix86_gimplify_va_arg): Likewise.
	(ix86_hard_regno_mode_ok): Always accept all SSE, MMX, 3DNOW modes in
	SSE registers; always accept all MMX, 3DNOW modes in MMX registers.
	* config/i386/i386.h (VALID_SSE2_REG_MODE): Don't include
	VALID_MMX_REG_MODE.
	* config/i386/i386.md (attribute mode): Add V1DF.
	(movsi_1): Use 'x' instead of 'Y' constraints.
	(movsi_1_nointernunit, movdi_2, movdi_1_rex64): Likewise.
	(movdi_1_rex64_nointerunit): Likewise.
	(movdf_nointeger, movdf_integer): Likewise.  Handle SSE1.
	(movsf_1, movsf_1_nointerunit): Line up constraint alternatives.
	(swapsf): Use fp_register_operand, don't disable for TARGET_SSE.
	(swapdf): Likewise.
	(swapxf): Enable only for TARGET_80387.
	(movv2sf, movv2sf_internal, pushv2sf): Enable for MMX.
	(movtf): Remove double-check for TARGET_64BIT.
	(movv2df_internal): Enable for SSE1.
	(movv8hi_internal, movv16qi_internal): Likewise.
	(movv2df, movv8hi, movv16qi): Likewise.
	(pushv2di, pushv8hi, pushv16qi, pushv4si): Likewise.
	(pushdi2_rex64, movv4sf_internal, movv4si_internal, movv2di_internal,
	movv8qi_internal, movv4hi_internal, movv2sf_internal,
	movv2df_internal, movv8hi_internal, movv16qi_internal,
	movti_internal): Add leading '*' to name.

2004-12-17  Dale Johannesen  <dalej@apple.com>

	* c-decl.c (diagnose_mismatched_decls): Accept mismatched
	function types: void with previous implicit int.

2004-12-17  Andreas Krebbel  <krebbel1@de.ibm.com>

	* config/s390/s390.c (s390_gimplify_va_arg): Set alias set to
	s390_sr_alias_set.

2004-12-17  Jan Beulich  <jbeulich@novell.com>

	PR target/17603
	* config/i386/i386.c (enum x86_64_reg_class): Define
	X86_64_COMPLEX_X87_CLASS.
	(x86_64_reg_class_names): Add name for X86_64_COMPLEX_X87_CLASS.
	(merge_classes): Handle X86_64_COMPLEX_X87_CLASS.
	(classify_argument): XCmode is X86_64_COMPLEX_X87_CLASS.
	(examine_argument): X86_64_COMPLEX_X87_CLASS requires two
	registers when dealing with a return value.
	(construct_container): Handle X86_64_COMPLEX_X87_CLASS.
	Eliminate impossible case of two X87/X87UP pairs (this now is
	being expressed by a single COMPLEX_X87).
	(x86_libcall_value): XCmode gets returned in st0/st1.

2004-12-17  Steven Bosscher  <stevenb@suse.de>

	* tree.c (type_contains_placeholder_1): Always return false
	for VECTOR_TYPE if its TREE_TYPE does not contain a placeholder.

2004-12-17  Uros Bizjak  <uros@kss-loka.si>

	* config/i386/i386.md (extendsfdf2, *extendsfdf2_1,
	*extendsfdf2_1_sse_only): Unify enable constraint with
	respect to TARGET_SSE2, TARGET_80387, TARGET_SSE_MATH
	and TARGET_MIX_SSE_I387.
	(*extendsfdf2_i387): New insn pattern.
	(*extendsfdf2_1): Rename to *extendsfdf2_mixed. Fix
	register constraint for operand 0.
	(*extendsfdf2_1_sse_only): Rename to *extendsfdf2_sse.
	(*extend{s,d}fxf2_1): Rename to *extend{s,d}fxf2_i387.

2004-12-16  Andrew Pinski  <pinskia@physics.uc.edu>

	PR target/19041
	* config/darwin.c (machopic_symbol_defined_p): Return false
	if the binds local and is a common symbol.

2004-12-16  Richard Henderson  <rth@redhat.com>

	* config/i386/i386.md (extv, extzv, insv): Revalidate the
	operand with ext_register_operand.

2004-12-16  Kazu Hirata  <kazu@cs.umass.edu>

	* global.c: Fix a comment typo.

2004-12-16  Eric Botcazou  <ebotcazou@libertysurf.fr>
	    Roger Sayle  <roger@eyesopen.com>

	PR tree-optimization/18707
	* cfgloopmanip.c (create_preheader): Move the preheader
	only if the latch was falling through to the header.

2004-12-16  Danny Smith  <dannysmith@users.sourceforge.net>

	PR target/18997
	* config/i386/cygwin.h (GTHREAD_USE_WEAK): Define to 0.

2004-12-16  Richard Henderson  <rth@redhat.com>
	    Aldy Hernandez  <aldyh@redhat.com>

	* simplify-rtx.c (simplify_replace_rtx): Do not blindly replace
	hard registers.

2004-12-16  H.J. Lu  <hongjiu.lu@intel.com>

	PR other/18508
	* config/alpha/t-osf4 (SHLIB_LINK): Use `.backup' as the suffix
	to back up the existing shared library.
	* config/arm/t-netbsd (SHLIB_LINK): Likewise.
	* config/mips/t-slibgcc-irix (SHLIB_LINK): Likewise.
	* config/pa/t-hpux-shlib (SHLIB_LINK): Likewise.
	* config/sh/t-linux (SHLIB_LINK): Likewise.
	* config/t-libunwind-elf (SHLIBUNWIND_LINK): Likewise.
	* config/t-slibgcc-darwin (SHLIB_LINK): Likewise.
	* config/t-slibgcc-elf-ver (SHLIB_LINK): Likewise.
	* config/t-slibgcc-sld (SHLIB_LINK): Likewise.

	* config/i386/t-nwld (SHLIB_LINK): Don't use the temporary
	file.

2004-12-16  Richard Henderson  <rth@redhat.com>

	* Makefile.in (MD_DEPS, s-mddeps): New.
	(s-config, s-conditions, s-flags, s-codes, s-constants, s-emit,
	s-recog, s-opinit, s-extract, s-peep, s-attr, s-attrtab, s-output,
	s-preds): Depend on MD_DEPS instead of md_file.
	(genobjnames): Add genmddeps.o
	(build/genmddeps, build/genmddeps.o): New.
	(mostlyclean): Remove mddeps.mk.
	* genmddeps.c: New file.
	* gensupport.c (include_callback): New.
	(process_include): Call it.
	* gensupport.h (include_callback): Declare.

2004-12-16  Nathan Sidwell  <nathan@codesourcery.com>

	* local-alloc.c (block_alloc): Replace IN_RANGE with simple
	comparison.

	* doc/c-tree.texi (CONSTRUCTOR): Mention RANGE_EXPRs.

2004-12-16  Mark Dettinger  <dettinge@de.ibm.com>

	* config/s390/s390.c (struct processor_costs): Two new fields:
	madbr, maebr.
	(s390_rtx_costs): Added handling of multipy and add in SFmode.
	More precise values for cost of multiply and add.

2004-12-15  Richard Henderson  <rth@redhat.com>

	PR target/19028
	* config/i386/i386.md (sse compare splitter): Test for SF and DFmode
	explicitly instead of using VALID_SSE_REG_MODE.

2004-12-15  Richard Henderson  <rth@redhat.com>

	PR target/19005
	* config/i386/i386.md (swaphi_1): Swap with swaphi_2, allow with
	optimize_size.
	(swapqi_1): Rename from swapqi.  Enable only for no partial reg
	stall and optimize_size.
	(swapqi_2): New.
	(swaphi_1, swaphi_2, swapqi_1): Add athlon_decode.
	(swapsi, swaphi_1, swaphi_2, swapqi_1, swapdi): Remove modrm override.

2004-12-16  Uros Bizjak  <uros@kss-loka.si>

	* config/i386/i386.md (*floathisf2_i387, *floathidf2_i387):
	Also enable for TARGET_MIX_SSE_I387.

2004-12-16  Uros Bizjak  <uros@kss-loka.si>

	* config/i386/i386.md (sqrt{s,d}f2_1, sqrt{s,d}f2_1_sse_only,
	sqrt{s,d}f2_i387): Unify enable constraint with respect to
	TARGET_SSE, TARGET_SSE2, TARGET_USE_FANCY_MATH_387,
	TARGET_SSE_MATH and TARGET_MIX_SSE_I387.
	(sqrt{s,d}f2_1): Rename to *sqrt{s,d}f2_mixed.
	(sqrt{s,d}f2_1_sse_only): Rename to *sqrt{s,d}f2_sse.
	(sqrt{s,d}f2_i387): Rename to *sqrt{s,d}f2_i387.
	(*sqrtextendsfdf2): Also enable for TARGET_MIX_SSE_I387.
	(*sqrtextend?f?f2): Rename to *sqrtextendsfdf2_i387.

2004-12-16  Uros Bizjak  <uros@kss-loka.si>

	* config/i386/i386.md (*fop_?f_comm_{,sse,nosse},
	*fop_?f_1_{,sse,nosse}, *fop_{d,x}f_{2,3,4,5,6}): Unify enable
	constraint with respect to TARGET_80387, TARGET_SSE, TARGET_SSE2,
	TARGET_SSE_MATH and TARGET_MIX_SSE_I387.
	(*fop_?f_{comm,1}): Rename to *fop_?f_{comm,1}_mixed.
	(*fop_?f_{comm,1}_nosse): Rename to *fop_?f_{comm,1}_i387.
	(*fop_{d,x}f_{2,3,4,5,6}): Rename to *fop_{d,x}f_{2,3,4,5,6}_i387.

2004-12-15  H.J. Lu  <hongjiu.lu@intel.com>

	PR target/18153
	* configure.ac: Define HAVE_LD_STATIC_DYNAMIC if linker supports
	-Bstatic/-Bdynamic option.
	* config.in: Regenerated.
	* configure: Likewise.

	* gcc.c (init_spec): Pass -Bstatic/-Bdynamic to ld for static
	-lunwind if possible.

2004-12-15  Daniel Berlin  <dberlin@dberlin.org>

	* cfgloop.c (flow_loops_dump): Don't print out levels.
	(flow_loops_find): Don't set loop->levels.
	(flow_loops_level_compute): Make void.
	* cfgloop.h (struct loops): Remove levels member.
	Add comment about loops in parray possibly being NULL.

2004-12-15  Alexandre Oliva  <aoliva@redhat.com>

	* reload.c (SMALL_REGISTER_CLASS_P): New.
	(push_secondary_reload, find_reusable_reload, find_reloads): Use
	it instead of testing only the class size.

2004-12-15  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR c++/17972
	* tree-inline.c (expand_call_inline): Set TREE_SIDE_EFFECTS
	on the STMT_EXPR wrapping up the inlined body.

2004-12-15  Vladimir Makarov  <vmakarov@redhat.com>
	    Steven Bosscher  <stevenb@suse.de>
	PR middle end/17340

	* global.c: Update comments in a few places.
	(check_earlyclobber): Return true if there are early clobber
	classes.
	(calculate_local_reg_bb_info): Do not try to mark earlyclobber
	regs if there are none.
	(bb_info, allocate_bb_info, free_bb_info, modify_reg_pav,
	make_accurate_live_analysis): Rename pavin, pavout to live_pavin,
	live_pavout.
	(modify_bb_reg_pav): Remove.
	(calculate_reg_pav): Use code from modify_bb_reg_pav.
	(temp_bitmap): New variable.
	(calculate_reg_pav): Allocate/deallocate temp_bitmap.

2004-12-15  Richard Henderson  <rth@redhat.com>

	PR target/19010
	* config/i386/i386.c (ix86_must_pass_in_stack): Don't return true
	for TImode vectors.
	(gen_reg_or_parallel): New.
	(function_arg): Use it.
	(ix86_hard_regno_mode_ok): Test SSE1 and SSE2 separately,
	MMX and 3DNOW separately.
	(ix86_rtx_costs): Simplify FLOAT_EXTEND case.
	(ix86_vector_mode_supported_p): Test SSE1 and SSE2 separately.
	* config/i386/i386.h (VALID_SSE2_REG_MODE): Move SSE2 cases from ...
	(VALID_SSE_REG_MODE): ... here.

2004-12-15  David Edelsohn  <edelsohn@gnu.org>

	* xcoffout.c (xcoffout_declare_function): Change strncpy to memcpy.

2004-12-15  Ian Lance Taylor  <ian@wasabisystems.com>

	* config/arm/arm.c (arm_xscale_rtx_costs): Increase cost of
	COMPARE of MULT.
	* config/arm/arm.md (mulsi3_compare0): Don't check
	arm_arch_xscale.
	(mulsi_compare0_scratch, mulsi3_addsi_compare0): Likewise.
	(mulsi3addsi_compare0_scratch): Likewise.

2004-12-15  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR other/18665
	* libgcc-std.ver (GCC_3.4.4): Inherit from GCC_3.4.2.
	Export __absvti2, __addvti3, __mulvti3, __negvti2 and __subvti3.
	* libgcc2.c (__addvsi3): Rename to __addvSI3.
	New version if COMPAT_SIMODE_TRAPPING_ARITHMETIC.
	(__addvdi3): Rename to __addvDI3.
	(__subvsi3): Rename to __subvSI3.  Use word type for the result.
	New version if COMPAT_SIMODE_TRAPPING_ARITHMETIC.
	(__subvdi3): Rename to __subvDI3.
	(_mulvsi3): Rename to _mulvSI3.
	New version if COMPAT_SIMODE_TRAPPING_ARITHMETIC.
	(_mulvdi3): Rename to _mulvDI3.
	(__negvsi2): Rename to __negvSI2.
	New version if COMPAT_SIMODE_TRAPPING_ARITHMETIC.
	(__negvdi2): Rename to __negvDI2.
	(__absvsi2): Rename to __absvSI2.
	New version if COMPAT_SIMODE_TRAPPING_ARITHMETIC.
	(__absvdi2): Rename to __absvDI2.
	* libgcc2.h (64-bit targets): Define COMPAT_SIMODE_TRAPPING_ARITHMETIC.
	(__absvSI2, __addvSI3, __subvSI3, __mulvSI3, __negvSI2, __absvDI2,
	__addvDI3, __subvDI3, __mulvDI3, __negvDI2): Define to the appropriate
	symbol and declare.
	(__absvsi2, __addvsi3, __subvsi3, __mulvsi3, __negvsi2): Declare if
	COMPAT_SIMODE_TRAPPING_ARITHMETIC.

2004-12-15  Kazuhiro Inaoka <inaoka.kazuhiro@reneasas.com>

	* config/m32r/m32r.h (PREFERRED_DEBUGGING_TYPE):
	Use DWARF2_DEBUG.

	* config/m32r.c (m32r_legitimize_pic_address): Changed
	to support GOTOFF relocation.
	* config/m32r.md (UNSPEC_GOTOFF): New.
	(gotoff_load_addr): New.

2004-12-15  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.c (mips_arg_info): Use FUNCTION_ARG_BOUNDARY to
	decide whether an argument is double-word aligned.

2004-12-15  Richard Henderson  <rth@redhat.com>

	* config/i386/i386.md: Fix missing modes on cmove splitters.

2004-12-15 Jan Beulich  <jbeulich@novell.com>

	* mklibgcc.in (libgcc2_c_dep): Add dependency on libgcc2.h.

2004-12-15  Uros Bizjak  <uros@kss-loka.si>

	* config/i386/i386.md (floathisf2, *floathisf2_1, floatsisf2,
	*floatsisf2_i387, *floatsisf2_sse, floatdisf2,
	*floatdisf2_i387_only, *floatdisf2_i387, *floatdisf2_sse,
	floathidf2, *floathidf2_1, *floatsidf2_i387, *floatsidf2_sse,
	floatdidf2, *floatdidf2_i387_only, *floatdidf2_i387,
	*floatdidf2_sse, floatunssisf2, floatunsdisf2, floatunsdidf2):
	Unify enable constraint with respect to TARGET_80387, TARGET_SSE,
	TARGET_SSE2, TARGET_64BIT, TARGET_SSE_MATH and TARGET_MIX_SSE_I387.
	(*float?i?f_i387): Rename to *float?i?f2_mixed.
	(*float?i?f2_1): Rename to *float?i?f2_i387.
	(*float?i?f2_i387_only): Rename to *float?i?f2_i387.
	(float?ixf2): Penalize integer register operand.

2004-12-14  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	PR c++/17242
	* configure.ac: Add GAS check for HP-UX .nsubspa comdat.
	* configure, config.in: Rebuilt.
	* config/pa/pa-hpux10.h (SUPPORTS_ONE_ONLY, MAKE_DECL_ONE_ONLY): Delete
	defines.
	* config/pa/pa.c (pa_select_section): Allow uninitialized variables in
	one-only (comdat) subspaces.
	* config/pa/som.h (SUPPORTS_SOM_COMDAT): New define.
	(SUPPORTS_ONE_ONLY): True if SUPPORTS_WEAK or SUPPORTS_SOM_COMDAT are
	true.
	(MAKE_DECL_ONE_ONLY): Place uninitialized variables in common.

2004-12-14  Ian Lance Taylor  <ian@wasabisystems.com>

	* combine.c (combine_validate_cost): Consider cost of
	undobuf.other_insn rather than always allowing the recombination
	if it is set.

2004-12-14  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* pa-host.c (MAP_FAILED): Define if not defined.
	(pa_gt_pch_use_address): Handle short reads.

2004-12-14  Richard Henderson  <rth@redhat.com>

	PR target/17990
	* config/i386/i386.c (x86_use_bt): New.
	(ix86_expand_unary_operator): Use MEM_P.
	(ix86_expand_fp_absneg_operator): New.
	* config/i386/i386.h (x86_use_bt): Declare.
	(TARGET_USE_BT): New.
	* config/i386/i386-protos.h: Update.
	* config/i386/i386.md (negsf2): Use ix86_expand_fp_absneg_operator.
	(negdf2, negxf2, abssf2, absdf2, absxf2): Likewise.
	(negsf2_memory, negsf2_ifs, negsf2_if, negdf2_memory, negdf2_ifs,
	negdf2_ifs_rex64, negdf2_if, negdf2_if_rex64, negxf2_if,
	abssf2_memory, abssf2_ifs, abssf2_if, absdf2_memory, absdf2_ifs,
	absdf2_ifs_rex64, absdf2_if, absxf2_if): Remove.
	(absnegsf2_mixed, absnegsf2_sse, absnegsf2_i387, absnegdf2_mixed,
	absnegdf2_sse, absnegdf2_i387, absnegxf2_i387): New.  Merge all
	neg and abs splitters.  Handle DFmode in general regs in 64-bit mode.
	(negextendsfdf2, absextendsfdf2): Disable for non-mixed sse math.
	(btsq, btrq, btcq): New.  Add peepholes as well.
	(movv4sf_internal splitter): Postpone til after reload.
	(movv2di_internal splitter): Likewise.
	* config/i386/predicates.md (const_0_to_63_operand): New.
	(absneg_operator): New.

2004-12-14  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* pa.h (REGNO_OK_FOR_INDEX_P, REGNO_OK_FOR_BASE_P, REGNO_OK_FOR_FP_P):
	Check register number and that reg_renumber is nonzero before using it.

2004-12-14  Steve Ellcey  <sje@cup.hp.com>

	* doc/invoke.texi (IA-64 options): Add existing options that
	weren't already listed.

2004-12-14  Jeff Law  <law@redhat.com>

	* tree-outof-ssa.c (coalesce_abnormal_edges): Pass the correct target
	partition to conflict_graph_merge_regs.

2004-12-14  Uttam Pawar  <uttamp@us.ibm.com>
	    Janis Johnson  <janis187@us.ibm.com>

	* rs6000.c (rs6000_handle_altivec_attribute_tree): Report errors
	for vector types with invalid component types.

2004-12-14  Jakub Jelinek  <jakub@redhat.com>

	PR middle-end/18951
	* builtins.c (expand_builtin_mathfn, expand_builtin_mathfn_2,
	expand_builtin_mathfn_3): Avoid using arguments passed to
	save_expr after that call.

	* fold-const.c (fold_single_bit_test): If flag_syntax_only, pretend
	LOAD_EXTEND_OP is not defined.
	(fold): Likewise.  If flag_syntax_only, don't depend on BITS_PER_WORD.

2004-12-14  Tobias Schlueter  <tobias.schlueter@physik.uni-muenchen.de>

	* tree.def, doc/c-tree.texi: Correctly document restrictions on the
	shift width.

2004-12-14  Kazu Hirata  <kazu@cs.umass.edu>

	* expr.h (expand_modifier): Define EXPAND_STACK_PARM as 1.

2004-12-14  Richard Earnshaw  <rearnsha@arm.com>

	PR target/18973
	arm-cores.def (arm926ej-s, arm1026ej-s, arm1136j-s, arm1136-jfs)
	(arm1176jz-s, arm1176jzf-s, mpcorenovfp, mpcore): Add load-scheduling
	property to flags.

2004-12-14  Diego Novillo  <dnovillo@redhat.com>

	* tree-gimple.c (get_base_address): Update documentation.

2004-12-13  Richard Henderson  <rth@redhat.com>

	PR middle-end/17930
	* passes.c (rest_of_clean_state): Fix computation of
	preferred_incoming_stack_boundary.

2004-12-13  Wolfgang Bangerth <bangerth@dealii.org>

	* reload.h: Remove struct needs and its only use.

2004-12-13  Roger Sayle  <roger@eyesopen.com>

	PR rtl-optimization/18928
	* simplify_rtx.c (plus_minus_operand_p): New function to encode
	the test for suitable operands for calls to simplify_plus_minus.
	Only allow (CONST (PLUS x y)) if both x and y are CONSTANT_P.
	(simplify_binary_operation): Use plus_minus_operand_p.

2004-12-13  Alexandre Oliva  <aoliva@redhat.com>

	PR tree-opt/16951
	* tree-inline.c (setup_one_parameter): Don't directly map a
	parameter to the address of another variable of the same
	function.

2004-13-12  Steven Bosscher  <stevenb@suse.de>

	* basic-block.h (PROP_POSTRELOAD): Do not include PROP_AUTOINC, we
	can never create autoinc insns after reload.

2004-12-13  Jeff Law  <law@redhat.com>
	    Kazu Hirata  <kazu@cs.umass.edu>

	PR tree-optimization/18694
	* tree-ssa-dom.c (thread_across_edge): Do not thread jumps if a
	PHI argument is set from a PHI_RESULT in the same block and the
	PHI argument is not the same as the PHI result.

2004-12-13  David Edelsohn  <edelsohn@gnu.org>

	* xcoffout.c (xcoffout_declare_function): Always strip storage
	class encoding.

2004-12-13  Andrew Pinski  <pinskia@physics.uc.edu>

	PR target/18964
	* config/darwin.c (darwin_assemble_visibility): Fix minor diagnostic
	problem, adding a space at the end of the string before concatenation.

2004-12-13  Kazu Hirata  <kazu@cs.umass.edu>

	* c-common.c (fname_as_string): Free namep if we are returning
	cstr.text.

	* tree-ssa-dom.c (record_edge_info): Fix memory leak.

2004-12-13  Andrew Pinski  <pinskia@physics.uc.edu>

	* tree-cfg.c (remove_useless_stmts_cond): Call fold on COND_EXPR_COND.

2004-12-13  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-ssa-dom.c (record_equivalences_from_phis): Speed up by
	doing a pointer comparison.

	* tree-ssa-dom.c (record_equivalences_from_phis): Add a
	comment.

	* defaults.h, stmt.c, tree-cfg.c, tree-ssa-dce.c: Fix comment
	typos.

2004-12-13  Kazuhiro Inaoka <inaoka.kazuhiro@renesas.com>

	* config/m32r/t-linux (SHLIB_MAPFILES): Add libgcc-glibc.ver to
	the list rather than replacing the existing value.

2004-12-13  Richard Henderson  <rth@redhat.com>

	* cfg.c (dump_flow_info): Don't dump pseudo info after reload.

2004-12-13  Richard Henderson  <rth@redhat.com>

	* Makefile.in (insn-preds.o): Depend on REGS_H.
	* genpreds.c (write_insn_preds_c): Include regs.h.
	* config/i386/predicates.md (index_register_operand): Use
	REG_OK_FOR_INDEX_STRICT_P and REG_OK_FOR_INDEX_NONSTRICT_P.

	* config/i386/i386.h (REG_CLASS_FROM_LETTER): Add 'l'.
	* config/i386/i386.md (lea_general_1, lea_general_1_zext,
	lea_general_2, lea_general_2_zext, lea_general_3, lea_general_3_zext,
	adddi_1_rex64, addsi_1, addsi_1_zext, addhi_1_lea, addqi_1_lea,
	ashldi3_1_rex64, ashlsi3_1, ashlsi3_1_zext, ashlhi3_1_lea,
	ashlqi3_1_lea): Use 'l' for index register operand.
	(ashldi3_1_rex64 splitter): Use index_register_operand.
	(ashlsi3_1 splitter): Be more careful with modes.

2004-12-13  Danny Smith  <dannysmith@users.sourceforge.net>

	PR target/18459
	* defaults.h (TARGET_USE_JCR_SECTION): New macro.
	* doc/tm.texi (TARGET_USE_JCR_SECTION): Document it.
	* config/i386/cygming.h (TARGET_USE_JCR_SECTION): Override
	default.

2004-12-13 Uros Bizjak <uros@kss-loka.si>

	PR target/14941
	PR target/18503
	* config/i386/i386.md (sse_movss, sse2_movsd, sse2_movhpd):
	Fix wrong vec_merge selector bitmask.

2004-12-12  Richard Henderson  <rth@redhat.com>

	PR rtl-opt/17186
	* reg-stack.c (move_nan_for_stack_reg): New.
	(subst_stack_regs_pat): Use it.
	(move_for_stack_reg): Handle source register not live with a nan.

2004-12-12  Richard Henderson  <rth@redhat.com>

	* config/i386/i386.c (ix86_gimplify_va_arg): Fix type mismatch
	errors across operations.

2004-12-12  Di-an Jan  <dianj@freeshell.org>

	* doc/passes.texi (Pass Manager): Correct list of source files.

2004-12-12  Richard Henderson  <rth@redhat.com>

	* expr.c (emit_move_change_mode): New.
	(emit_move_via_alt_mode): Use it.

2004-12-12  Nathanael Nerode  <neroden@gcc.gnu.org>
	    John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	PR middle-end/17564
	* dojump.c (do_compare_and_jump): Only canonicalize function pointers
	in a comparison if both sides are function pointers.

2004-12-12  Richard Henderson  <rth@redhat.com>

	PR target/18932
	* config/i386/i386.md (all splits and peepholes): Use flags_reg_operand
	and compare_operator to propagate the input CC mode to the output.
	* config/i386/predicates.md (compare_operator): New.

2004-12-12  Andrew Pinski  <pinskia@physics.uc.edu>

	PR tree-opt/18040
	* expr.c (get_inner_reference): Remove NON_LVALUE_EXPR, NOP_EXPR,
	CONVERT_EXPR cases.
	(handled_component_p): Likewise.

2004-12-12  Kazu Hirata  <kazu@cs.umass.edu>

	* reg-stack.c (convert_regs_2): Free stack.

	* tree-ssa-dom.c (thread_across_edge, dom_opt_finalize_block): Fix
	comment typos.

2004-12-12  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-loop-ch.c (copy_loop_headers): Loop can be null.
	* tree-ssa-loop-im.c (determine_lsm): tree_root may not have a real
	inner loop.

2004-12-12  Diego Novillo  <dnovillo@redhat.com>

	* tree-gimple.c (get_base_address): Update documentation.

2004-12-12  Kazu Hirata  <kazu@cs.umass.edu>

	* lcm.c (optimize_mode_switching): Free ptr even when mode_set
	is NULL_RTX.

2004-12-12  Roger Sayle  <roger@eyesopen.com>

	* reg-stack.c (change_stack): Avoid placing the new top-of-stack in
	its correct location during popping if we need to permute the stack
	afterwards.  Attempt to preserve the original stack ordering.

2004-12-12  Kazu Hirata  <kazu@cs.umass.edu>

	* lcm.c (optimize_mode_switching): Free insert and delete in
	the "for" loop.

2004-12-11  David Edelsohn  <edelsohn@gnu.org>
	    Ulrich Weigand  <uweigand@de.ibm.com>

	PR target/18641
	* config/rs6000/darwin.h (PREFERRED_RELOAD_CLASS): Reload all
	constants into all register classes intersecting with FLOAT_REGS
	via memory.
	* config/rs6000/rs6000.h (PREFERRED_RELOAD_CLASS): Same.
	* config/rs6000/rs6000.md (movdi_internal32): Ignore FPRs when
	choosing register preferences.
	(movdi_internal64): Same.

2004-12-11  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-into-ssa.c (rewrite_ssa_into_ssa): Free SSA_NAME_AUX
	before we release an SSA_NAME.

2004-12-11  Roger Sayle  <roger@eyesopen.com>

	PR middle-end/18921
	* fold-const.c (fold_unwidened_comparison): Use omit_one_operand
	instead of constant_boolean_node as arg0 may have side-effects.

2004-12-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* pa-host.c (pa_gt_pch_use_address): Use lseek and read to copy PCH
	file to anonymous private map.

2004-12-10  Roger Sayle  <roger@eyesopen.com>

	PR target/18002
	PR middle-end/18424
	* dojump.c (do_jump): When attempting to reverse the effects of
	fold_single_bit_test, we need to STRIP_NOPS and narrowing type
	conversions, and handle BIT_XOR_EXPR that's used to invert the
	sense of the single bit test.

2004-12-10  Devang Patel  <dpatel@apple.com>

	PR 18732
	* gcc.c (main): Do not break out of loop when error is reported while
	processing one source file.

2004-12-10  Diego Novillo  <dnovillo@redhat.com>

	* tree-into-ssa.c (REWRITE_THIS_STMT): Define.
	(mark_def_sites): Clear REWRITE_THIS_STMT for statements that
	don't need any operands rewritten.
	(rewrite_stmt): Ignore statements that don't need to be
	rewritten.
	(rewrite_operand): Validate that an existing SSA_NAME is
	identical to the current reaching definition of the operand.

2004-12-10  Diego Novillo  <dnovillo@redhat.com>

	* tree-dfa.c (mark_call_clobbered_vars_to_rename): New function.
	* tree-vectorizer.c (vectorizable_load): Call it.
	* tree-flow.h (mark_call_clobbered_vars_to_rename): Declare.
	* tree-sra.c (mark_all_v_defs): Also mark VUSEs for renaming.

2004-12-10  Kazu Hirata  <kazu@cs.umass.edu>

	* regmove.c (combine_stack_adjustments_for_block): Free
	memlist if it hasn't been freed.

2004-12-10  Ziemowit Laski  <zlaski@apple.com>

	* c-typeck.c (lookup_field): Check if a TYPE_LANG_SPECIFIC
	pointer field is set before dereferencing it.

2004-12-10  Andrew Pinski  <pinskia@physics.uc.edu>

	PR middle-end/18903
	* tree-cfg.c (remove_bb): Put the moved label at the beginning
	of the basic block.

2004-12-10  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-data-ref.c (free_data_refs): Free each data_reference
	object.

	* tree-ssa-dom.c (thread_across_edge): Speed up by avoiding a
	call to is_gimple_min_invariant if we know the result.

2004-12-10  Jeff Law  <law@redhat.com>

	* tree-ssa-alias.c (setup_pointers_and_addressables): Remove
	redundant test of v_ann->mem_tag_kind.

	* tree-ssa-operands.c (get_indirect_ref_operands): Remove
	redundant conditional clearing opf_kill_def.

2004-12-10  Richard Sandiford  <rsandifo@redhat.com>

	* config/frv/frv-modes.def: Fix comment typos.
	(CC_NZ): Define new mode.
	* config/frv/frv-protos.h (frv_select_cc_mode): Declare.
	(condexec_intop_cmp_operator): Delete.
	* config/frv/frv.c (comparison_string): New function.
	(frv_print_operand): Use it to handle 'c' and 'C'.
	(relational_operator): Redefine in terms of integer_relational_operator
	and float_relational_operator.
	(signed_relational_operator, unsigned_relational_operator): Delete.
	(integer_relational_operator): New predicate, combining the above.
	Check the mode of the first operand but leave frv.md to check the rest.
	(float_relational_operator): Just check the mode of the first operand
	and leave frv.md to check the rest.
	(intop_compare_operator): Assume the result is compared with zero
	in mode CC_NZmode.  Allow PLUS and MINUS.  Leave frv.md to check
	the operand predicates.
	(condexec_intop_cmp_operator): Delete.
	(frv_ifcvt_modify_tests, frv_ifcvt_modify_multiple_tests)
	(frv_hard_regno_mode_ok): Handle CC_NZmode.
	(frv_select_cc_mode): New function.
	* config/frv/frv.h (SELECT_CC_MODE): Use frv_select_cc_mode.
	(REVERSIBLE_CC_MODE): Include CC_NZmode.
	(PREDICATE_CODES): Replace entries for signed_relational_operand and
	unsigned_relational_operator with one for integer_relational_operator.
	Delete entry for condexec_intop_cmp_operator.
	* config/frv/frv.md (movcc_nz, *internal_movcc_nz, reload_incc_nz)
	(reload_outcc_nz, *cmpsi_cc_nz, *cond_exec_cmpsi_cc_nz): New patterns.
	(*combo_intop_compare2, *combo_intop_compare4): Delete.
	(*combo_intop_compare1): Change mode to CC_NZ.
	(*combo_intop_compare2): Likewise.  Renamed from *combo_intop_compare3.
	(branch_{un,}signed_true, branch_{un,}signed_false)
	(*scc_{un,}signed, *scc_neg1_{un,}signed, *ck_{un,}signed)
	(*movqicc_internal1_{un,}signed, *movqicc_internal2_{un,}signed)
	(*movhicc_internal1_{un,}signed, *movhicc_internal2_{un,}signed)
	(*movsicc_internal1_{un,}signed, *movsicc_internal2_{un,}signed)
	(*movsfcc_has_fprs_{un,}signed, *movsfcc_no_fprs_{un,}signed)
	(*return_{unsigned_,}true, *return_{unsigned_,}false): Merge these
	pattern pairs.  Use integer_relational_operator.  Remove mode from
	icc_operand.

2004-12-10  Mark Dettinger  <dettinge@de.ibm.com>

	* config/s390/s390.c (struct processor_costs): New fields ml,
	sqdbr, sqebr.
	(s390_rtx_costs): Added the missing handling of multiply & add,
	square root, and umulsidi.

2004-12-10  Kazu Hirata  <kazu@cs.umass.edu>

	* expmed.c (synth_mult): Initialize new_limit.latency before
	making a recursive call.

2004-12-10  Nick Clifton  <nickc@redhat.com>

	* config/mn10300/mn10300.c (legitimate_address_p): Reject address
	whose index is itself the sum of two other parts.

2004-12-10  Alan Modra  <amodra@bigpond.net.au>

	* config/t-slibgcc-sld (SHLIB_LINK): Correct symlink.

2004-12-10  Uros Bizjak  <uros@kss-loka.si>

	* config/i386/i386.md (*cmpfp_sf): Change type attribute to "multi".

2004-12-09  Richard Henderson  <rth@redhat.com>

	PR c/18282
	* attribs.c (decl_attributes): Use relayout_decl.
	* c-common.c (handle_mode_attribute): Copy all relevant type
	parameters from the new underlying integral type.

2004-12-09  Richard Henderson  <rth@redhat.com>

	* c-common.c (shorten_compare): Don't special-case min/maxval
	for C enumerations.

2004-12-09  Richard Sandiford  <rsandifo@redhat.com>

	* simplify-rtx.c (simplify_subreg): In the CONCAT case, check whether
	the request subreg is entirely contained in the requested component.
	(simplify_gen_subreg): Return null for CONCATs that are rejected
	by simplify_subreg.
	* expmed.c (store_bit_field): Create a temporary when changing the
	value to an integer mode.

2004-12-09  David Edelsohn  <edelsohn@gnu.org>

	* real.c (ibm_extended): Correct comment.

2004-12-09  Stan Shebs  <shebs@apple.com>

	* config/rs6000/darwin-asm.h: New file, 32/64-bit assembly macros
	formerly in darwin-tramp.asm.
	* config/rs6000/darwin-tramp.asm: Include darwin-asm.h.
	* config/rs6000/darwin-fpsave.asm: Use 32/64-bit macros.
	* config/rs6000/t-darwin: Add dependencies.

2004-12-09  Richard Henderson  <rth@redhat.com>

	PR target/17025
	* config/i386/i386.md (testqi_1_maybe_si, andqi_2_maybe_si): New.
	(test_qi_1, andqi_2): Do not promote to simode.

2004-12-09  Andrew Pinski  <pinskia@physics.uc.edu>

	PR tree-opt/18904
	* tree-chrec.c (chrec_convert): Use fold_convert
	instead of convert.

2004-12-09  Matt Rice  <ratmice@yahoo.com>

	PR preprocessor/18102
	* c-incpath.c (remove_duplicates): Check for construct
	equality.

2004-12-09  Dorit Naishlos  <dorit@il.ibm.com>

	* genopinit.c (vec_realign_store_optab): Initialization removed.
	* optabs.c (optab_for_tree_code): REALIGN_STORE_EXPR case removed.
	* optabs.h (optab_index): OTI_vec_realign_store Removed.
	(vec_realign_store_optab): Removed.
	* target-def.h (TARGET_VECTORIZE_BUILTIN_MASK_FOR_STORE): Removed.
	* target.h (builtin_mask_for_store): Removed.
	* tree.def (REALIGN_STORE_EXPR): Removed.
	* config/rs6000/rs6000.c (rs6000_builtin_mask_for_store): Removed.
	(altivec_builtin_mask_for_store): Removed.
	(altivec_init_builtins): Removed initialization of
	altivec_builtin_mask_for_store.

	* doc/tm.texi (TARGET_VECTORIZE_MISALIGNED_MEM_OK): New.
	(TARGET_VECTORIZE_BUILTIN_MASK_FOR_LOAD): New.

2004-12-09  Nathan Sidwell  <nathan@codesourcery.com>

	* doc/c-tree.texi (CONSTRUCTOR): Mention RANGE_EXPRs.

	* 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.

	PR c++/16681
	* tree-inline.c (estimate_num_insns_1): Add RANGE_EXPR case.

2004-12-08  Richard Henderson  <rth@redhat.com>

	* config/i386/i386.md: Use FLAGS_REG everywhere.

2004-12-08  Eric Christopher  <echristo@redhat.com>

	* config/mips/mips.c (mips_scalar_mode_supported_p): Rewrite
	to avoid call to default function.

2004-12-08  Zack Weinberg  <zack@codesourcery.com>

	PR 17982
	* varasm.c (pending_assemble_externals): New static.
	(assemble_external_real): Meat of assemble_external split out
	to this new function.
	(process_pending_assemble_externals): New function.
	(assemble_external): Use gcc_assert.  If flag_unit_at_a_time
	is true and the basic test passes, merely cons the decl onto
	the pending list to be handled later.
	* tree.h: Declare process_pending_assemble_externals.
	* cgraphunit.c (cgraph_optimize): Call it.

	* config/h8300/h8300.h: Do not define ASM_OUTPUT_EXTERNAL.

2004-12-08  Kazu Hirata  <kazu@cs.umass.edu>

	* cfgloopmanip.c (create_preheader): Speed up by "unrolling"
	and simplifying FOR_EACH_EDGE.

2004-12-08  Richard Sandiford  <rsandifo@redhat.com>

	* config/frv/frv.c (frv_sort_insn_group): Always initialize
	packet_group->nop.

2004-12-08  Nathan Sidwell  <nathan@codesourcery.com>

	PR c++/18672
	* gimplify.c (canonicalize_addr_expr): Cope with array of
	incomplete type.
	(gimplify_conversion): Remove redundant checks.

	* doc/trouble.texi (Non-bugs): Clarify empty loop removal.

2004-12-08  Uros Bizjak  <uros@kss-loka.si>

	* config/i386/i386.c (output_387_binary_op,
	ix86_prepare_fp_compare_args): Fix is_sse condition.

2004-12-07  Uros Bizjak  <uros@kss-loka.si>

	* config/i386/i386-protos.h (ix86_split_fp_branch): New rtx
	argument.

	* config/i386/i386.c (output_fp_compare): Fix is_sse condition.
	Use EFLAGS_P only when fcomi insn should be used. Fix handling
	of eflags_p variable. Change alt table accordingly. For non-fcomi
	compare insn always use trailing fnstsw insn. Fix intmode
	calculation for ficom insn.
	(ix86_split_fp_branch): Add "rtx pushed" as new parameter. Call
	ix86_free_from_memory when "pushed" is specified.
	(ix86_expand_branch): Change call to ix86_split_fp_branch.

	* config/i386/i386.md (*cmpfp_0_sf, *cmpfp_0_df, *cmpfp_0_xf):
	Change eflags_p parameter in call to output_fp_compare.
	(*cmpfp_2_sf, *cmpfp_2_df, *cmpfp_2_xf): Remove.
	(*cmpfp_2_sf_1, *cmpfp_2_df_1, *cmpfp_2_xf_1): Rename to
	*cmpfp_2_sf, *cmpfp_2_df, *cmpfp_2_xf.	Change eflags_p
	parameter in call to output_fp_compare.
	(*cmpfp_2_u): Remove.
	(*cmpfp_2_u_1): Rename to *cmpfp_2_u. Change eflags_p parameter
	in call to output_fp_compare.
	(*ficom_1): Remove insn definition and corresponding define_split.
	(*cmpfp_si): New insn definition.
	(*fp_jcc_8): New insn definition. Add new splitters for
	"memory_operand" and "register_operand".
	(define_split): Add new parameter in call to ix86_split_fp_branch.

	config/i386/predicates.md (float_operator): New predicate.

2004-12-08  Kazu Hirata  <kazu@cs.umass.edu>

	* c-common.c (verify_tree): Don't check code length if we know
	we are handling tcc_unary.
	* print_tree.c (print_node): Remove code to handle RTL
	appearing as a part of a tree node.
	* tree-gimple.c (recalculate_side_effects): Rename fro as len.
	* tree.c (build1_stat): Don't check TREE_CODE_LENGTH.
	(PROCESS_ARG): Don't refer to fro.
	(build2_stat, build3_stat, build4_stat): Don't compute fro.

2004-12-07  Roger Sayle  <roger@eyesopen.com>

	PR middle-end/18293
	* expmed.c (EXACT_POWER_OF_2_OR_ZERO_P): Move definition earlier.
	(expand_mult): Special case powers of two to avoid synth_mult.
	* loop.c (product_cheap_p): Handle case where expand_mult does
	require/generate any instructions (i.e. multiplication by zero).

2004-12-07  Richard Henderson  <rth@redhat.com>

	* tree-pretty-print.c (dump_array_domain): Split out from
	dump_generic_node; fix off-by-one error on zero-based array bounds.
	(dump_generic_node): Use it.
	(print_declaration): Likewise.

2004-12-08  Richard Guenther <richard.guenther@uni-tuebingen.de>

	* doc/invoke.texi: Adjust default values for
	large-function-growth and inline-unit-growth to match
	params.def.  Clarify used algorithm.

2004-12-07  David Mosberger  <davidm@hpl.hp.com>

	PR target/18443
	* config/ia64/ia64.c (ia64_assemble_integer): Add support for
	emitting unaligned pointer-sized integers.

2004-12-07  Steven Bosscher  <stevenb@suse.de>

	PR c/18867
	* c-typeck.c (c_start_case): Set orig_type to error_mark_node
	when the type of the controlling expression is not a valid type.

2004-12-07  Steven Bosscher  <stevenb@suse.de>

	PR tree-optimization/17340
	* tree-ssa-pre.c (compute_antic): Fix comment.
	(compute_avail): Do not recurse, instead do a DFS using a stack
	and a loop.
	(execute_pre): Adjust.

2004-12-07  Ziemowit Laski  <zlaski@apple.com>

	* c-tree.h (struct lang_type): Rename 'objc_protocols' field
	to 'objc_info'.

2004-12-07  Eric Christopher  <echristo@redhat.com>

	PR target/16317
	* config/netbsd.h (NO_IMPLICIT_EXTERN_C): Define.

2004-12-07  Eric Christopher  <echristo@redhat.com>

	* config/mips/mips-protos.h (mips_valid_pointer_mode): Move
	prototype...
	* config/mips/mips.c: ... here. Make static.

2004-12-07  Eric Christopher  <echristo@redhat.com>

	PR target/18442
	* config/mips/mips.c (mips_vector_mode_supported_p): New function.
	(TARGET_SCALAR_MODE_SUPPORTED_P): Define to above.

2004-12-07  Kazu Hirata  <kazu@cs.umass.edu>

	* c-common.c, expr.c, fold-const.c, print-tree.c,
	tree-gimple.c, tree-inline.c, tree-pretty-print.c,
	tree-ssa-loop-im.c, tree-ssa-loop-ivopts.c: Replace uses of
	first_rtl_op with TREE_CODE_LENGTH.
	* tree.c (first_rtl_op): Remove.
	Replace uses of first_rtl_op with TREE_CODE_LENGTH.
	* tree.h: Remove the prototype for first_rtl_op.

2004-12-07  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/t-aix43, config/rs6000/t-aix52 (SHLIB_LINK):
	Revert 2004-12-01 change.

2004-12-06  Ziemowit Laski  <zlaski@apple.com>

	* c-tree.h (struct lang_type): Add 'objc_protocols' field.

2004-12-06  DJ Delorie  <dj@redhat.com>

	* reload.c (find_valid_class): Fix logic to test inner mode as well.
	(push_reload): Pass inner mode.

2004-12-06  Eric Christopher  <echristo@redhat.com>

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

2004-12-06  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/sysv4.h: Define RELOCATABLE_NEEDS_FIXUP to 1.

2004-12-06  Zdenek Dvorak  <dvorakz@suse.cz>
	    Kazu Hirata  <kazu@cs.umass.edu>

	PR tree-optimization/18601
	* tree-cfg.c (thread_jumps, thread_jumps_from_bb): Removed.
	(tree_forwarder_block_p): Do not consider blocks that are its own
	successors forwarders.
	(cleanup_forwarder_blocks, remove_forwarder_block): New functions.
	(cleanup_tree_cfg): Use cleanup_forwarder_blocks instead of
	thread_jumps.
	* tree-flow.h (bb_ann_d): Remove forwardable.

2004-12-06  Kazu Hirata  <kazu@cs.umass.edu>

	* expr.c (expand_expr_real_1): Remove an "if" whose condition
	is always false.

2004-12-06  Roger Sayle  <roger@eyesopen.com>

	* c-gimplify.c (gimplify_c_loop): Improve initial implementations
	for loops whose conditions are known at compile-time.
	* gimplify.c (append_to_statement_list_1): Remove side_effects
	parameter, this function should never be called if its false.
	(append_to_statement_list): Only call append_to_statement_list_1
	if t is non-NULL tree with side-effects.
	(append_to_statement_list_force): Likewise, if t is not NULL.

2004-12-06  J"orn Rennecke <joern.rennecke@st.com>

	* bt-load.c (btr_def_s): New member own_end;
	(add_btr_to_live_range): Add second parameter.  Changed caller.
	(clear_btr_from_live_range): Clear btrs_live_at_end bit
	for the register its definition basic block if own_end is set.
	(augment_live_range): Also take btrs_live_at_end into account.
	(combine_btr_defs): Don't bother with
	other_def->other_btr_uses_after_use if it pertains to a different
	register.
	(move_btr_def): Set def->other_btr_uses_before_def after
	calling combine_btr_defs."

	* bt-load.c (augment_live_range): New argument full_range.
	Changed all callers.

	* bt-load.c (move_tr_def): Set other_tr_uses_before_def
	taking new btr assignment into account.

2004-12-05  Daniel Berlin <dberlin@dberlin.org>

	* tree-ssa-alias.c (create_global_var): Use void_type_node,
	not size_type_node.

2004-12-05  Kazu Hirata  <kazu@cs.umass.edu>

	* expr.c (expand_expr_real_1): Abort on COND_EXPR of
	VOID_TYPE.

2004-12-05  Richard Henderson  <rth@redhat.com>

	PR target/18841
	* config/alpha/alpha.md (UNSPECV_SETJMPR_ER): New.
	(builtin_setjmp_receiver_er_sl_1): Use it.
	(builtin_setjmp_receiver_er_1): Likewise.
	(builtin_setjmp_receiver_er, exception_receiver_er): Remove.
	(builtin_setjmp_receiver): Don't split for explicit relocs until
	after reload.
	(exception_receiver): Likewise.

2004-12-05  Andrew Pinski  <pinskia@physics.uc.edu>

	* mklibgcc.in (vis_hide): Add the prototype for the test.

2004-12-05  Roger Sayle  <roger@eyesopen.com>

	* c-typeck.c (c_finish_loop): Improve initial implementations
	for loops whose conditions are known at compile-time.

2004-12-05  Kazu Hirata  <kazu@cs.umass.edu>

	* builtins.c: Fix comment typos.

2004-12-04  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	PR middle-end/18730
	* emit-rtl.c (get_first_nonnote_insn, get_last_nonnote_insn): When
	the first/last insn is a sequence, return the first/last insn of the
	sequence.

	PR bootstrap/18804
	* mklibgcc.in (vis_hide): Use implementation instead of declaration
	for test function.

2004-12-04  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.c (alpha_expand_unaligned_load): Don't forget to
	use ofs in BWX two byte special case.
	(alpha_expand_unaligned_store): Likewise.

2004-12-04  Kazu Hirata  <kazu@cs.umass.edu>

	* gcse.c (gcse_main): Add a comment.

2004-12-04  Andrew  Pinski  <pinskia@physics.uc.edu>

	PR middle-end/17909
	* builtins.c (fold_builtin_next_arg): Export and return true
	when there is a warning or an error.
	(expand_builtin_va_start): When fold_builtin_next_arg returns true,
	return const0_rtx.
	(expand_builtin): Likewise.
	* gimplify.c (gimplify_call_expr): Error out if there is not
	enough arguments to va_start. Call fold_builtin_next_arg also
	on the second argument.
	* tree.h (fold_builtin_next_arg): Prototype.

2004-12-04  Alan Modra  <amodra@bigpond.net.au>

	* mklibgcc.in: Build shared libgcc and shared libunwind in gcc/.
	Don't subst shlib_dir for SHLIB_LINK, SHLIBUNWIND_LINK,
	SHLIB_INSTALL, and SHLIBUNWIND_INSTALL.
	* config/i386/t-nwld (SHLIB_NAME): Use shlib_base_name in place of
	shlib_dir and shlib_so_name.
	* config/mips/t-slibgcc-irix (SHLIB_NAME): Likewise.
	* config/t-libunwind-elf (SHLIB_NAME): Likewise.
	* config/t-slibgcc-darwin (SHLIB_NAME): Likewise.
	* config/t-slibgcc-elf-ver (SHLIB_NAME): Likewise.
	* config/t-slibgcc-sld (SHLIB_NAME): Likewise.
	(SHLIB_LINK): Don't use shlib_dir when creating symlink.

2004-12-03  Roger Sayle  <roger@eyesopen.com>

	* doc/tm.texi (TARGET_DELEGITIMIZE_ADDRESS): Document target hook.

2004-12-03  Richard Henderson  <rth@redhat.com>

	* alias.c (component_uses_parent_alias_set): Rename from
	can_address_p.  Return bool.  Reverse the sense of the result.
	Reinstate the check for alias set zero.
	(get_alias_set): Update to match.
	* alias.h (component_uses_parent_alias_set): Likewise.
	* emit-rtl.c (set_mem_attributes_minus_bitpos): Likewise.
	* expr.c (expand_assignment): Likewise.
	* expr.h: Remove commented out prototypes that were moved to alias.h.

2004-12-03  Richard Henderson  <rth@redhat.com>

	* doc/tm.texi (TARGET_BUILD_BUILTIN_VA_LIST): New.
	(TARGET_CANNOT_FORCE_CONST_MEM): New.

2004-12-04  Alan Modra  <amodra@bigpond.net.au>

	PR middle end/18718
	* sched-rgn.c (schedule_region): Don't assume REG_SAVE_NOTEs are
	in pairs.
	* sched-ebb.c (schedule_ebb): Likewise.

2004-12-03  Andreas Schwab  <schwab@suse.de>

	* Makefile.in (HOSTHOOKS_DEF_H): Define.
	(ggc-common.o): Depend on $(HOSTHOOKS_DEF_H).
	(host-default.o): Likewise.

2004-12-03  Eric Christopher  <echristo@redhat.com>

	* config/stormy16/stormy16.md (pushqi, popqi, pushhi,
	pophi): Add number of arguments to name so that the
	pattern is recognized as a named pattern.

2004-12-03  Janis Johnson  <janis187@us.ibm.com>

	* doc/extend.texi (AltiVec Builtins): Fix info about signedness.

2004-12-03  Andreas Tobler  <a.tobler@schweiz.ch>

	* config/rs6000/rs6000.c (rs6000_override_options): Protect
	darwin_one_byte_bool with #if.

2004-12-03  Paolo Bonzini  <bonzini@gnu.org>

	* doc/tm.texi (Misc): Document TARGET_FOLD_BUILTIN.

2004-12-03  H.J. Lu  <hongjiu.lu@intel.com>

	* mklibgcc.in: Put back the default set of EXTRA_MULTILIB_PART.

2004-12-03  Richard Sandiford  <rsandifo@redhat.com>

	* configure.ac: Move TL_AC_GCC_VERSION into initialization section.
	Set libstdcxx_incdir directly.
	* configure: Regenerate.

2004-12-03  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-ssa-dom.c (record_equivalences_from_phis): Remove an
	"if" whose condition is always true.

	* cfgrtl.c (rtl_verify_flow_info_1): Use JUMP_P instead of
	INSN_P.

2004-12-02  Stan Shebs  <shebs@apple.com>

	* config/rs6000/rs6000.c (rs6000_override_options): Make 64-bit
	Darwin default to one-byte bools.

2004-12-02  Richard Henderson  <rth@redhat.com>

	PR 18774
	* simplify-rtx.c (simplify_immed_subreg): Fail complex modes.

2004-12-03  Ben Elliston  <bje@au.ibm.com>

	* doc/cfg.texi (Edges): Update. Document the edge_iterator data
	type and its methods.

2004-12-02  Richard Henderson  <rth@redhat.com>

	* expr.c (write_complex_part): Use simplify_gen_subreg when the
	submode is at least as large as a word.
	(read_complex_part): Likewise.

2004-12-02  H.J. Lu  <hongjiu.lu@intel.com>

	PR bootstrap/18532
	* mklibgcc.in: Build one set of EXTRA_MULTILIB_PARTS for
	multilib at a time. Don't build the default set. Don't add
	EXTRA_MULTILIB_PARTS to shared libunwind nor libgcc. Remove
	filter for shared libunwind and libgcc.

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

	PR target/18759
	* config/i386/i386.c (override_options): If -fomit-frame-pointer has
	already been specified, ignore the -momit-leaf-frame-pointer option.

2004-12-02  H.J. Lu  <hongjiu.lu@intel.com>

	* varasm.c (make_decl_rtl): Add the missing `;'.

2004-12-02  Andrew Pinski  <pinskia@physics.uc.edu>

	* tree.c (is_attribute_p): Split out to ..
	(is_attribute_with_length_p): Here.  Use IDENTIFIER_LENGTH instead
	of strlen and compare the string lengths before calling strcmp.
	(lookup_attribute): Call is_attribute_with_length_p instead of
	is_attribute_p.

2004-12-02  Devang Patel  <dpatel@apple.com>

	* config/darwin.h (TARGET_OPTION_TRANSLATE_TABLE): Add -gfull and -gused.
	* config/rs6000/darwin.h (CC1_SPEC): Do not handle -gfull and -gused.
	* config/i386/darwin.h (CC1_SPEC): Same.

2004-12-02  Richard Henderson  <rth@redhat.com>

	* optabs.c (lowpart_subreg_maybe_copy): New.
	(expand_unop, expand_abs_nojump): Use it.

2004-12-02  J"orn Rennecke <joern.rennecke@st.com>

	* sh.md (extv, extzv): Add pattern predicate.

2004-12-02  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-cfg.c (phi_alternatives_equal): Check that PHI_ARG_DEF
	is not null.

	* tree-cfg.c (phi_alternatives_equal): Check that PHI_ARG_DEF
	is not null.

	* tree-cfg.c (thread_jumps): Reduce the size of WORKLIST.

2004-12-02  Jeff Law  <law@redhat.com>

	* tree-eh.c: Revert yesterday's change.

2004-12-02  Andrew Pinski  <pinskia@physics.uc.edu>

	* varasm.c (decode_reg_name): Revert change to check for zero
	length strings.
	(make_decl_rtl): Make sure that we call decode_reg_name only
	when needed.

2004-12-02  Dorit Naishlos  <dorit@il.ibm.com>

	PR tree-opt/18716
	* tree-vectorizer.c (slpeel_make_loop_iterate_ntimes): Properly set
	then and else labels.

2004-12-02  Andreas Schwab  <schwab@suse.de>

	* Makefile.in (WERROR_FLAGS): Renamed from WERROR.
	(STRICT2_WARN): Use $(WERROR_FLAGS) instead of $(WERROR).
	(STAGE2_FLAGS_TO_PASS): Likewise.

	* config/i386/x-mingw32: Set WERROR_FLAGS instead of WERROR.

2004-12-02  Richard Sandiford  <rsandifo@redhat.com>

	* configure.ac: Use TL_AC_GCC_VERSION to set gcc_version.  Remove
	now-redundant AC_SUBSTs.
	* aclocal.m4: Include ../config/gcc-version.m4.
	* configure: Regenerate.

2004-12-02  Alan Modra  <amodra@bigpond.net.au>

	* config/rs6000/rs6000.c (rs6000_assemble_integer): Put back the
	#ifdef RELOCATABLE_NEEDS_FIXUP.

2004-12-01  Roger Sayle  <roger@eyesopen.com>

	PR target/9908
	* config/i386/i386.md (*call_value_1, *sibcall_value_1): Correct
	Intel assembler syntax by using %A1 instead of %*%1.

2004-12-01  Richard Henderson  <rth@redhat.com>

	* expr.c (expand_assignment): Handle CONCAT both as a final
	destination and as a middle point.

2004-12-01  Jeff Law  <law@redhat.com>

	* tree-eh.c (save_eptr, save_filt): Now file scoped statics.
	(honor_protect_cleanup_actions): Only create save_eptr and
	save_filt if they do not already exist.
	(lower_eh_constructs): Wipe all knowledge of save_eptr and
	save_filt before returning.

2004-12-02  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-phinodes.c (remove_phi_arg_num): Fix a comment.

2004-12-02  Alan Modra  <amodra@bigpond.net.au>

	PR target/16952
	* config/rs6000/rs6000.c (rs6000_assemble_integer): Replace
	#ifdef RELOCATABLE_NEEDS_FIXUP with if.
	* config/rs6000/linux.h (RELOCATABLE_NEEDS_FIXUP): Define in terms
	of target_flags_explicit.
	* config/rs6000/linux64.h (RELOCATABLE_NEEDS_FIXUP): Ditto for biarch
	case.  Define as 0 for non-biarch.

2004-12-01  Zack Weinberg  <zack@codesourcery.com>

	* config/rs6000/t-aix43, config/rs6000/t-aix52 (SHLIB_LINK):
	Change temporary file tag from a prefix to an infix.

2004-12-02  Andreas Schwab  <schwab@suse.de>

	* gcc.c (struct option_map): Add entry for "--pass-exit-codes".

2004-12-01  Andrew Pinski  <pinskia@physics.uc.edu>

	PR tree-opt/18763
	PR tree-opt/18746
	* tree-ssa-alias.c (init_alias_info): Get statement operands for all
	the statements if aliases_computed_p is true.

2004-12-01  Mark Mitchell  <mark@codesourcery.com>

	* Makefile.in (WERROR): New variable.
	(STRICT2_WARN): Use it.
	(STAGE2_FLAGS_TO_PASS): Likewise.
	* config/i386/x-mingw32 (WERROR): Add -Wno-format.

2004-12-01  Richard Henderson  <rth@redhat.com>

	* expr.c (get_inner_reference): Fix thinko in REAL/IMAGPART_EXPR
	offsetting.

2004-12-01  Diego Novillo  <dnovillo@redhat.com>

	PR tree-optimization/18291
	* tree-ssa-copy.c (merge_alias_info): Fix merging of
	flow-sensitive alias information.  If the new pointer has no
	name tag, copy it from the original pointer.  Otherwise, make
	sure that the pointed-to sets have a common intersection.

2004-12-01  Richard Henderson  <rth@redhat.com>

	PR rtl-opt/15289
	* emit-rtl.c (gen_complex_constant_part): Remove.
	(gen_realpart, gen_imagpart): Remove.
	* rtl.h (gen_realpart, gen_imagpart): Remove.
	* expmed.c (extract_bit_field): Remove CONCAT hack catering to
	gen_realpart/gen_imagpart.
	* expr.c (write_complex_part, read_complex_part): New.
	(emit_move_via_alt_mode, emit_move_via_integer, emit_move_resolve_push,
	emit_move_complex_push, emit_move_complex, emit_move_ccmode,
	emit_move_multi_word): Split out from ...
	(emit_move_insn_1): ... here.
	(expand_expr_real_1) <COMPLEX_EXPR>: Use write_complex_part.
	<REALPART_EXPR, IMAGPART_EXPR>: Use read_complex_part.
	* function.c (assign_parm_setup_reg): Hard-code transformations
	instead of using gen_realpart/gen_imagpart.

	* expr.c (optimize_bitfield_assignment_op): Split out from ...
	(expand_assignment): ... here.  Use handled_component_p to gate
	get_inner_reference code.  Simplify MEM handling.  Special case
	CONCAT destinations.

	* expmed.c (store_bit_field): Use simplify_gen_subreg instead
	of gen_rtx_SUBREG directly.

2004-12-01  David Edelsohn  <edelsohn@gnu.org>
	    Nathan Sidwell  <nathan@codesourcery.com>

	PR target/17107
	* config/rs6000/rs6000.md (sge): Enable for non-TARGET_POWER.
	(sgt): Same.
	(sle): Same.
	(slt): Same.

2004-12-01  Nathan Sidwell  <nathan@codesourcery.com>

	PR middle-end/18667
	* params.c (set_param_value): Add range check.
	* params.def: Add min and max values. Reformat long strings.
	* params.h (struct param_info): Add min and max fields.
	(enum compiler_param): Adjust DEFPARAM.
	* toplev.c (lang_independent_params): Likewise.

2004-12-01  Alan Modra  <amodra@bigpond.net.au>

	PR target/12817
	* config/rs6000/rs6000.c (rs6000_emit_prologue): Use r0 for vrsave.

2004-12-01  Joseph S. Myers  <joseph@codesourcery.com>

	* doc/standards.texi: Update for C99 TC2.

2004-11-30  Jeff Law  <law@redhat.com>

	* sbitmap.c (sbitmap_any_common_bits): New function.
	* sbitmap.h (sbitmap_any_common_bits): Prototype.
	* modulo-sched.c (sms_schedule_by_order): Use sbitmap_any_common_bits
	No longer allocate/free "psp", "pss" sbitmaps.
	* tree-ssa-alias.c (compute_flow_insensitive_aliasing): Similarly for
	the "res" sbitmap.
	(group_aliases): Similarly.

2004-11-30  Nathan Sidwell  <nathan@codesourcery.com>

	* tree-vectorizer.c (vect_analyze_data_refs): Reformat and avoid
	uninitialized variable.

2004-11-30  Eric Christopher  <echristo@redhat.com>

	* fold-const.c (fold_widened_comparison): Make sure that we're
	passing an INTEGER_TYPE to int_fits_type_p.
	(fold): Clean up comment.

2004-11-30  Zack Weinberg  <zack@codesourcery.com>

	* mklibgcc.in: Correct calculation of libgcc_s_soname and
	libunwind_soname.  Use $out, not $outS, in commands for
	no-shared-library case.  Move EXTRA_MULTILIB_PARTS rules above
	library build rules, make $libunwind_so and $libgcc_s_so
	depend on them in the normal fashion, and filter those objects
	out of @shlib_objs@.

2004-11-30  Janis Johnson  <janis187@us.ibm.com>

	* config/rs6000/altivec.h (vec_step_help): Support const vector types.

2004-11-30  Andrew Pinski  <pinskia@physics.uc.edu>

	PR tree-opt/18298
	* tree-optimize.c (init_tree_optimization_passes): Add a may_alias
	pass right after fold builtins.

2004-11-30  Andreas Krebbel  <krebbel1@de.ibm.com>

	* config/s390/s390-modes.def: Added cc modes documentation.
	* config/s390/s390.c: (s390_tm_ccmode, s390_select_ccmode,
	s390_expand_addcc): Added cc mode comments.
	* config/s390/s390.md: Removed old cc mode documentation.

2004-11-30  Mark Dettinger  <dettinge@de.ibm.com>

	* config/s390/s390.c (struct processor_costs): New data type.
	(s390_cost, z900_cost, z990_cost): New global variables.
	(override_options): Initialize s390_cost.
	(s390_rtx_costs): Reimplement.

2004-11-29  Daniel Berlin  <dberlin@dberlin.org>

	Fix PR tree-optimization/18673

	* tree-ssa-pre.c: Remove splay-tree.h include.
	(bitmap_value_replace_in_set): Fix to add if it does not exist.
	(find_or_generate_expression): Remove now-wrong condition.
	(create_expression_by_pieces): Fix condition and comment reason
	for it.
	(insert_aux): Fix condition and comment reasons for it.
	Factor insertion code from here.
	(insert_into_preds_of_block): To here.  Fix conditions in factored
	function and comment reasons for them.

2004-11-30  Ira Rosen  <irar@il.ibm.com>

	PR tree-opt/18607
	* tree-vectorizer.c (vect_analyze_data_refs): Use temporary
	variable for data_reference when looking for memtag.

2004-11-30  Jakub Jelinek  <jakub@redhat.com>

	* c-opts.c (check_deps_environment_vars): If spec != NULL, set
	deps_seen.

2004-11-30  Dorit Naishlos  <dorit@il.ibm.com>

	* tree-vectorizer.c (vect_gen_niters_for_prolog_loop): Use
	tree_low_cst instead of TREE_INT_CST_LOW.

2004-11-30  Dorit Naishlos  <dorit@il.ibm.com>

	PR target/18173
	* tree-vectorizer.c (vect_can_force_dr_alignment_p): Return false for
	decls that are assembled before vectorization takes place.
	(vect_compute_data_ref_alignment): Set DECL_USER_ALIGN to 1.

2004-11-30  Ulrich Weigand  <uweigand@de.ibm.com>

	* passes.c (rest_of_handle_old_regalloc): Delete unreachable blocks
	if local_alloc modified jumps.

2004-11-30  Alan Modra  <amodra@bigpond.net.au>

	* varasm.c (default_encode_section_info): Don't set SYMBOL_FLAG_SMALL
	on TLS symbols.
	* config/rs6000/rs6000.c (rs6000_elf_in_small_data_p): Remove TLS
	check.

2004-11-30  Zack Weinberg  <zack@codesourcery.com>

	* gthr-gnat.c, gthr-gnat.h, gthr.h, libgcc2.h, unwind-dw2-fde.h
	* unwind.h: Surround all visibility pragmas with #ifndef HIDE_EXPORTS.

	* mklibgcc.in: Drastic restructure for comprehensibility.
	Remove the old hidden-directive hack.
	Eliminate support for .txt files in LIB2ADD etc (never used).
	Eliminate support for assembly source files in LIB2ADDEH* and
	LIBUNWIND (also never used).
	Build up dependency lists for libraries incrementally.
	If we have SHLIB_LINK, compile each file twice, once for the
	static and once for the shared library; also probe for
	-fvisibility=hidden in the generated libgcc.mk.  If found,
	pass that and -DHIDE_EXPORTS to the compilation of every C
	source file going into the static library.  If found, generate
	hidden-directive lists for every assembly source file going
	into the static library, but incorporate them with -include
	instead of ld -r.
	Write comments into generated libgcc.mk to facilitate debugging.
	* Makefile.in: Pass ASM_HIDDEN_OP to mklibgcc.
	* config/t-slibgcc-darwin: Define ASM_HIDDEN_OP.

	* config/darwin.h (REAL_LIBGCC_SPEC): Put -lgcc back in
	-Zdynamiclib case.

2004-11-29  Richard Henderson  <rth@redhat.com>

	* expr.c (get_inner_reference): Handle REAL/IMAGPART_EXPR.
	(handled_component_p): Likewise.
	* alias.c (can_address_p): Reformat and simplify.  Handle
	REAL/IMAGPART_EXPR.  Do not disable addressability based on
	alias set zero.
	* fold-const.c (build_fold_addr_expr_with_type): Remove duplicate
	check for REAL/IMAGPART_EXPR.
	* gimplify.c (gimplify_compound_lval): Likewise.
	* tree-cfg.c (verify_expr): Likewise.
	* tree-gimple.c (is_gimple_addressable, get_base_address): Likewise.
	* tree-nested.c (build_addr, convert_nonlocal_reference): Likewise.
	(convert_local_reference): Likewise.
	* tree-ssa-loop-ivopts.c (prepare_decl_rtl): Likewise.

2004-11-30  Alan Modra  <amodra@bigpond.net.au>

	* expr.c (emit_group_load_1): Don't die on const_int orig_src.

2004-11-29  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	PR pch/14940
	* config/pa/pa-host.c, config/pa/x-hpux, config/pa/x-linux: New files.
	* config.host (hppa*-*-hpux*, hppa*-*-linux): Define out_host_hook_obj
	and host_xmake_file using new host configuration files.

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

	* reg-stack.c (change_stack): Improve algorithm used to pop regs
	off the stack to maximize ffreep usage and reduce fxch count.

2004-11-30  James A. Morrison  <phython@gcc.gnu.org>

	PR middle-end/18596
	* c-decl.c (grokdeclarator): Reset DECL_INTIAL to error_mark_node
	on errors.

2004-11-30  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* expr.c (expand_expr_real_1, case NOP_EXPR): Properly handle
	REDUCE_BIT_FIELD by applying it to result, not input, of conversion.

2004-11-30  Ben Elliston  <bje@au.ibm.com>

	* Makefile.in (REGS_H): Depend on $(BASIC_BLOCK_H).

2004-11-29  Andrew Pinski  <pinskia@physics.uc.edu>

	PR c/18479
	* c-common.c (handle_visibility_attribute): When the type decl
	is really a identifier node, warn about being ignored and return.

2004-11-29  Richard Henderson  <rth@redhat.com>

	* tree-cfg.c (tree_node_can_be_shared): Fix typo'd error_mark_node.

2004-11-29  Steven Bosscher  <stevenb@suse.de>

	* cfgcleanup.c (outgoing_edges_match, try_crossjump_to_edge):
	Remove CASE_DROPS_THROUGH checks, it is never defined.
	* cfglyout.c (fixup_reorder_chain): Likewise.
	* cfgrtl.c (rtl_verify_flow_info): Likewise.
	* stmt.c (expand_case): Likewise.
	* cfgbuild.c (make_edges): Likewise.  Also remove force_fallthru,
	it is now always 0.
	* system.h (CASE_DROPS_THROUGH): Poison.
	* doc/md.texi (casesi): Remove documentation of CASE_DROPS_THROUGH.
	* doc/tm.texi (casesi): Remove documentation of CASE_DROPS_THROUGH.

	* config/v850/v850.h: Remove commented out CASE_DROPS_THROUGH.

2004-11-29  Andrew Pinski  <pinskia@physics.uc.edu>

	PR middle-end/18725
	* tree-cfg.c (tree_node_can_be_shared): Error_mark_node can be
	shared always.

2004-11-29  Diego Novillo  <dnovillo@redhat.com>

	PR tree-optimization/18712
	* tree-into-ssa.c (insert_phi_nodes_for): Pass argument
	WORK_STACK by reference.
	Call VEC_safe_push instead of VEC_quick_push.
	Update all users.

2004-11-29  Daniel Jacobowitz  <dan@codesourcery.com>

	PR c/7544
	* Makefile.in (c-lang.o): Update dependencies.
	* c-lang.c: Include "c-pragma.h".
	(finish_file): Call maybe_apply_pending_pragma_weaks.
	* c-pragma.c (maybe_apply_pending_pragma_weaks): New function.
	* c-pragma.h (maybe_apply_pending_pragma_weaks): New prototype.

2004-11-29  Richard Henderson  <rth@redhat.com>

	PR target/17224
	* config/ia64/predicates.md (sdata_symbolic_operand): Deny offsets
	outside the referenced object.

2004-11-29  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-if-conv.c (replace_phi_with_cond_modify_expr): Use
	EDGE_PRED instead of PHI_ARG_EDGE.
	* tree-ssa-live.c: Likewise.
	* tree-ssa-loop-manip.c: Likewise.
	* tree-ssa.c: Likewise.

	* cfgrtl.c (cfg_layout_redirect_edge_and_branch): Speed up by
	simplifying edge manipulation.

	* cfgrtl.c (rtl_tidy_fallthru_edge): Speed up by using
	EDGE_COUNT.

	* tree-cfg.c (tree_redirect_edge_and_branch): Call find_edge
	only when needed.

	* cfg.c (flow_obstack): Remove.
	(flow_firstobj): Likewise.
	(init_flow): Remove all uses of flow_obstack.

2004-11-29  Alan Modra  <amodra@bigpond.net.au>

	* varasm.c (default_elf_select_section_1): Only pass DECL_P decl
	to named_section.

2004-11-29  Nathan Sidwell  <nathan@codesourcery.com>

	* opts.c (decode_options): Do not set max-inline-insns-rtl.
	(common_handle_option): Likewise.
	* params.def (PARAM_MAX_INLINE_INSNS_RTL): Remove.
	* params.h (MAX_INLINE_INSNS_RTL): Remove.
	* doc/invoke.texi (max-inline-insns-rtl): Remove.

2004-11-29  Alan Modra  <amodra@bigpond.net.au>

	PR target/9571
	* varasm.c (default_elf_select_section_1): Pass decl to named_section.

2004-11-28  Andrew Pinski  <pinskia@physics.uc.edu>

	PR middle-end/18164
	* gimplify.c (gimplify_asm_expr): If the length of an output operand
	is zero, do not process it, just let it go through.

2004-11-28  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
	    Diego Novillo  <dnovillo@redhat.com>

	PR/18662, also backported from tree-cleanup-branch.
	* tree-ssa-ccp.c (substitute_and_fold): If replaced anything,
	always call maybe_clean_eh_stmt and modify_stmt.

2004-11-28  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	PR/18664
	* tree-ssa-operands.c (build_ssa_operands, case MODIFY_EXPR):
	Ignore a VIEW_CONVERT_EXPR on LHS when deciding if must or may def.
	* tree-ssa-ccp.c (visit_assignment): If LHS is a VIEW_CONVERT_EXPR,
	add an inverse VIEW_CONVERT_EXPR to const_val.

	PR/18657
	* tree-nested.c (check_for_nested_with_variably_modified): New.
	(create_nesting_tree): Call it.

	* tree-ssa-alias.c (compute_points_to_and_addr_escapes): Remove
	special code for assigning to non-pointer.
	(is_escape_site): If RHS is a conversion between pointer and integer
	types,	this is an escape site.

	* gcse.c (insert_store): Error if try to insert store on abnormal edge.
	(store_motion): Don't move store if any edge we'd want to move it
	to is abnormal.

	* expr.c (expand_expr_real_1, case ARRAY_REF): Properly fold with
	non-zero lower bound.

	* expr.c (categorize_ctor_elements_1, case STRING_CST): New case.

2004-11-28  Matt Kraai  <kraai@alumni.cmu.edu>

	PR diagnostic/17594
	* opts.c (find_opt): Require that the input match a switch exactly
	or that the switch take a joined option to be interpreted as a
	match for another language.

2004-11-28  Andrew Pinski  <pinskia@physics.uc.edu>

	* timevar.def (TV_TREE_REDPHI): New timevar.
	* tree-ssa.c (pass_redundant_phi): Use TV_TREE_REDPHI for the tv id.

2004-11-28  Nathanael Nerode  <neroden@gcc.gnu.org>

	PR preprocessor/17651
	* c-opts.c (sanitize_cpp_opts): Make flag_no_output imply
	flag_no_line_commands.
	* c-ppoutput.c (pp_file_change): Remove now-redundant check of
	flag_no_output.

2004-11-28  Theodore A. Roth  <troth@openavr.org>

	* config/avr/avr.c (avr_handle_fndecl_attribute): Generate a
	warning if the function name does not begin with "__vector" and the
	function has either the 'signal' or 'interrupt' attribute.

2004-11-28  Theodore A. Roth  <troth@openavr.org>

	* config/avr/avr.c (avr_mcu_types): Add entries for atmega48,
	atmega88, atmega168, attiny13, attiny2313, at90can128, atmega165,
	atmega325, atmega3250, atmega645 and atmega6450.
	* config/avr/avr.h (LINK_SPEC): Ditto.
	(LIB_SPEC): Ditto.
	(LIBGCC_SPEC): Ditto.
	(CRT_BINUTILS_SPECS): Ditto.
	* config/avr/t-avr (MULTILIB_MATCHES): Ditto.

2004-11-28  Nathanael Nerode  <neroden@gcc.gnu.org>

	PR preprocessor/17610
	* testsuite/gcc.dg/cpp/empty-include.c: New testcase.

2004-11-28  Jeff Law  <law@redhat.com>

	* tree-ssa-alias.c (count_calls_and_maybe_create_global_var): New.
	(pass_maybe_create_global_var): New.
	* tree-pass.h (pass_maybe_create_global_var): Declare.
	* tree-optimize.c (init_tree_optimization_passes): Link in
	pass_maybe_create_global_var.

2004-11-28  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* tree-inline.c (inline_forbidden_p_1, case RECORD_TYPE): Add comment.

2004-11-28  Ulrich Weigand  <uweigand@de.ibm.com>

	PR rtl-optimization/18420
	* simplify-rtx.c (simplify_gen_subreg): Revert 2004-10-28 change.

2004-11-28  Steven Bosscher  <stevenb@suse.de>
	    John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* config/vax/vax.h (CASE_DROPS_THROUGH): Don't define.
	* config/vax/vax.md (casesi): Emit a test-and-branch to make sure
	that the case is in range, to make sure the casesi insn is always
	in range and never falls through.
	(casesi1): Add comment to explain why casesi never falls through.
	Remove the unnamed special case casesi pattern.

2004-11-28  Hans-Peter Nilsson  <hp@bitrange.com>

	PR target/18331
	* config/mmix/mmix.md ("*movdicc_real_reversible"): Rename from
	"*movdicc_real".  Only match reversible comparisons.
	("*movdicc_real_nonreversible"): New pattern, split from
	"*movdicc_real".  Match only nonreversible comparisons.  Exclude
	reversed alternatives.
	("*movdfcc_real_reversible", "*movdfcc_real_nonreversible"):
	Similar.

2004-11-27  Richard Henderson  <rth@redhat.com>

	* config/ia64/ia64.md: Move all define_predicate's ...
	* config/ia64/predicates.md: ... here.  New file.

2004-11-27  Per Bothner  <per@bothner.com>

	PR bootstrap/18142
	Re-applied following, with two modifications: add a URL for the
	fixed cctools; only exit if $build = $target.

	2004-10-18  Kelley Cook  <kcook@gcc.gnu.org>
	* configure.ac (powerpc-*-darwin*): Require assembler to support
	.machine directive.
	* configure: Regenerate.

2004-11-28  David Edelsohn  <edelsohn@gnu.org>

	PR target/16800
	* config/rs6000/rs6000.c (rs6000_rtx_costs): Improve accuracy of
	EQ, GTU, and LTU costs.  Add costs for GT, LT, and UNORDERED.
	Distinguish between SImode and DImode CONST_INT.

2004-11-28  Andreas Fischer <a_fisch@gmx.de>
	    Alan Modra  <amodra@bigpond.net.au>

	PR target/16343
	* config/rs6000/rs6000.c (rs6000_elf_in_small_data_p): Disallow
	functions, strings and thread-local vars.

2004-11-28  Alan Modra  <amodra@bigpond.net.au>

	* config/rs6000/rs6000.h (WORLD_SAVE_P): Define.
	* config/rs6000/darwin.h (WORLD_SAVE_P): Define.
	* config/rs6000/rs6000.c (compute_save_world_info): Use WORLD_SAVE_P
	to allow non-darwin ABIs to optimize away code.
	(rs6000_emit_prologue, rs6000_emit_epilogue): Likewise.

2004-11-27  Kazu Hirata  <kazu@cs.umass.edu>

	* tree.c (operand_equal_for_phi_arg_p): New.
	* tree.h: Add a prototype for operand_equal_for_phi_arg_p.
	* tree-cfg.c, tree-ssa-dom.c, tree-ssa-phiopt.c, tree-ssa.c:
	Replace operand_equal_p with operand_for_phi_arg_p
	appropriately.

	* bb-reorder.c (find_traces_1_round): Speed up by using
	EDGE_COUNT instead of FOR_EACH_EDGE.

	* fold-const.c, config/i386/linux64.h: Fix comment typos.

2004-11-27  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	PR pch/14940
	* config/host-linux.c (TRY_EMPTY_VM_SPACE): Revert 2004-11-22 change.

2004-11-27  Kazu Hirata  <kazu@cs.umass.edu>

	* config/i386/linux.h: Fix a comment typo.
	* doc/extend.texi: Fix a typo.

2004-11-27  Jeff Law  <law@redhat.com>

	* tree-cfg.c (cleanup_tree_cfg): Also return true if blocks
	are merged.

2004-11-27  Jakub Jelinek  <jakub@redhat.com>

	* config/i386/linux64.h (REG_NAME): Define.

2004-11-27  Jakub Jelinek  <jakub@redhat.com>

	* fold-const.c (extract_muldiv_1) <case ABS_EXPR>: If ctype is
	unsigned and type signed, build ABS_EXPR with signed_type (ctype)
	and only afterwards convert to ctype.

2004-11-27  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips-protos.h (function_arg_boundary): Declare.
	* config/mips/mips.h (PARM_BOUNDARY): Simplify definition.
	(STACK_BOUNDARY, MIPS_STACK_ALIGN): Likewise.
	(FUNCTION_ARG_BOUNDARY): Use new function_arg_boundary function.
	* config/mips/mips.c (function_arg_boundary): New function.
	Impose a maximum alignment of STACK_BOUNDARY.

2004-11-27  Jakub Jelinek  <jakub@redhat.com>

	PR rtl-optimization/17825
	* combine.c (subst): Ignore STRICT_LOW_PART no matter if REG_P (new)
	or not.

2004-11-27  Alan Modra  <amodra@bigpond.net.au>

	PR target/12769
	* config/rs6000/rs6000.c (init_cumulative_args): Set call_cookie
	from rs6000_default_long_calls for libcalls.

2004-11-26  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* expmed.c (extract_bit_field): When extracting from non-integer mode,
	force a SUBREG into a register because we may be taking a further
	SUBREG of it.

2004-11-27  Di-an Jan  <dianj@freeshell.org>

	* doc/contrib.texi (Tim Josling): Remove nesting quotation marks.

2004-11-26  Robert Millan  <robertmh@gnu.org>

	Changes for k*bsd-gnu support.
	* config/i386/linux.h: Define REG_NAME to allow overriding of
	register names in sc structure.
	* config/i386/linux-unwind.h: Refer to sc->REG_NAME(reg) instead
	of sc->reg.
	* config.gcc: Detect x86_64-k*bsd-gnu systems.

2004-11-26  Jeff Law  <law@redhat.com>

	* tree-ssa.c (verify_flow_sensitive_alias_info): Don't
	retrieve annotations or pointer info before it's necessary.
	Reorder tests for early continue of the loop.  Manually CSE
	SSA_NAME_VAR.

2004-11-26  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* target.h (struct gcc_target): New field 'dwarf_handle_frame_unspec'.
	* target_def.h (TARGET_DWARF_HANDLE_FRAME_UNSPEC): Define to 0.
	(TARGET_INITIALIZER): Add TARGET_DWARF_HANDLE_FRAME_UNSPEC.
	* dwarf2out.c (dwarf2out_frame_debug_expr): Allow REG->REG move
	to a fixed reg if the source is the Return Address register.
	Implement new Rule 15.
	* doc/tm.texi (Frame Layout): Document TARGET_DWARF_HANDLE_FRAME_UNSPEC.
	* config/sparc/sparc.c (TARGET_DWARF_HANDLE_FRAME_UNSPEC): Define to
	sparc_dwarf_handle_frame_unspec.
	(gen_save_register_window): New function.
	(emit_stack_pointer_increment): Rename into gen_stack_pointer_inc.
	(emit_stack_pointer_decrement): Rename into gen_stack_pointer_dec.
	(expand_prologue): Adjust calls to emit_stack_pointer_{in,de}crement.
	Set RTX_FRAME_RELATED_P on the appropriate insns and members of insns.
	(sparc_asm_function_prologue): Do not emit call frame debugging info.
	(emit_and_preserve): Adjust calls to emit_stack_pointer_{in,de}crement.
	(sparc_expand_epilogue): Likewise.
	(sparc_dwarf_handle_frame_unspec): New function.
	* config/sparc/sparc.md (save_register_window): Remove.
	(save_register_windowdi): Rewrite modelled on the callframe debug info.
	(save_register_windowsi): Likewise.

2004-11-26  Alexandre Oliva  <aoliva@redhat.com>

	* config/frv/frv-protos.h: Guard ifcvt functions declarations with
	BB_HEAD, not BLOCK_HEAD.

2004-11-26  Alexandre Oliva  <aoliva@redhat.com>

	* config/frv/frv.c (frv_ifcvt_modify_insn): Don't leave alone
	scratch insns that set a register live at the join point.

2004-11-26  Kazu Hirata  <kazu@cs.umass.edu>

	* cse.c, tree-ssa-operands.c: Fix comment typos.

	* tree-cfg.c (tree_split_edge): Speed up by using find_edge.

2004-11-26  James A. Morrison  <phython@gcc.gnu.org>

	PR target/18510
	* doc/extend.texi (SPARC VIS Built-in Functions): New section.

2004-11-26  Kazu Hirata  <kazu@cs.umass.edu>

	* cfgrtl.c (try_redirect_by_replacing_jump): Speed up the
	check that tests if all edges go to the same destination.

	* bitmap.c (bitmap_find_bit): Speed up by traversing from
	head->first if that seems profitable.

2004-11-25  Jeff Law  <law@redhat.com>

	* timevar.def (TV_TREE_LOOP_INIT, TV_TREE_LOOP_FINI): New timevars.
	* tree-ssa-loop.c (pass_loop_init): Use TV_TREE_LOOP_INIT.
	(pass_loop_done): Use TV_TREE_LOOP_FINI.

2004-11-26  Alan Modra  <amodra@bigpond.net.au>

	PR rtl-optimization/16356
	* config/rs6000/rs6000.md (floatdisf2_internal2): Rewrite with
	separate output register and one less jump.  Enable for powerpc64.
	(floatdisf2): Adjust for above.

2004-11-25  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/xtensa.h (STARTFILE_SPEC): Add crt0.
	(GCC_DRIVER_HOST_INITIALIZATION): Define.

2004-11-25  Andrew Pinski  <pinskia@physics.uc.edu>

	PR middle-end/17957
	* tree-complex.c (vector_inner_type): New variable moved from
	build_word_mode_vector_type.
	(vector_last_type): Likewise.
	(vector_last_nunits): Likewise.
	(build_word_mode_vector_type): Use the new variables.
	* Makefile.in (tree-complex.o): Add gt-tree-complex.h $(GGC_H).
	(GTFILES): Add tree-complex.c.
	(gt-tree-complex.h): New rule, add it to the rest of the gt-* rules.

2004-11-25  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/xtensa.h (TARGET_CPU_CPP_BUILTINS): Define
	__XTENSA_WINDOWED_ABI__.

2004-11-25  Richard Henderson  <rth@redhat.com>

	* dwarf2out.c (dwarf2out_stack_adjust): Add after_p argument.  Save
	args_size adjustments for calls even with cfa as stack pointer.
	Search calls for stack adjustments after the insn is issued.
	(dwarf2out_frame_debug): Add after_p argument; pass it on.
	* dwarf2out.h (dwarf2out_frame_debug): Update to match.
	* final.c (final_start_function, final_scan_insn): Likewise.

2004-11-25  Richard Henderson  <rth@redhat.com>

	PR c++/6764
	* reload1.c (set_initial_eh_label_offset): New.
	(set_initial_label_offsets): Use it.

2004-11-25  Kaz Kojima  <kkojima@gcc.gnu.org>

	* config/sh/sh.c (sh_output_mi_thunk): Initialize bitmap obstacks
	before calling life_analysis and release them after.

2004-11-25  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-ssa-forwprop.c (substitute_single_use_vars): Remove
	duplicate code.

2004-11-25  Andrew Pinski <pinskia@physics.uc.edu>

	* bitmap.h (BITMAP_XMALLOC): Use BITMAP_ALLOC and not
	BITMAP_OBSTACK_ALLOC.
	(BITMAP_XFREE): Use BITMAP_FREE and not BITMAP_OBSTACK_FREE.

2004-11-25  Andrew Pinski <pinskia@physics.uc.edu>

	parts of PR rtl-opt/18463, rtl-opt/17647
	* cse.c (canon_for_address): New function.
	(find_best_addr): Call canon_for_address before getting the
	address's cost when checking if we should take that address.

2004-11-25  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-phinodes.c (add_phi_arg): Take "tree" instead of
	"tree *" as the first argument.
	* tree-flow.h: Update the prototype of add_phi_arg.
	* lambda-code.c, tree-cfg.c, tree-into-ssa.c,
	tree-ssa-loop-ivopts.c, tree-ssa-loop-manip.c, tree-ssa-pre.c,
	tree-ssa-threadupdate.c, tree-ssa.c, tree-tailcall.c,
	tree-vectorizer.c: Update all call sites of add_phi_arg.

2004-11-25  Nathan Sidwell  <nathan@codesourcery.com>

	* bitmap.c (bitmap_malloc_alloc, bitmap_malloc_free): Remove.
	* bitmap.h (bitmap_malloc_alloc, bitmap_malloc_free): Remove.
	(BITMAP_XMALLOC): Forward to BITMAP_OBSTACK_ALLOC.
	(BITMAP_XFREE): Forward to BITMAP_OBSTACK_FREE.

2004-11-25  Andrew MacLeod  <amacleod@redhat.com>

	PR tree-optimization/18587
	* tree-flow-inline.h (mark_call_clobbered, mark_non_addressable): Flag
	call clobbered caches as invalid.
	* tree-ssa-operands.c (ssa_call_clobbered_cache_valid): New.  Flag
	indicating whether the call clobbered operand cache is valid.
	(ssa_ro_call_cache_valid): New.  Flag indicating whether the
	pure/const call operand cache is valid.
	(clobbered_v_may_defs, clobbered_vuses, ro_call_vuses): New.  Cached
	list of operands for cached call virtual operands.
	(clobbered_aliased_loads, clobbered_aliased_stores,
	ro_call_aliased_load): New.  flags caching whether alias bits are
	to be set in call stmt's.
	(fini_ssa_operands): Remove call operand caches if present.
	(get_expr_operands, get_asm_expr_operands,
	get_indirect_ref_operands): Pass stmt annotation to add_stmt_operand.
	(get_call_expr_operands): Add call clobbered variables first.
	(add_stmt_operand): Take stmt annotation rather than stmt as a param.
	(add_call_clobber_ops, add_call_read_ops): Use the call operand cache
	if it is valid, otherise fill the cache.
	* tree-ssa-operands.h (ssa_clobbered_cache_valid): Declare extern.
	* tree-flow.h (struct var_ann_d): Add in_vuse_list and
	in_v_may_def_list bits.
	* tree-ssa-operands.c (cleanup_v_may_defs): New.  Clear the
	in_list bits for the v_may_def elements and empty the operand
	build array
	(finalize_ssa_vuses): Use cleanup_v_may_defs and remove redundant
	VUSES by checking the in_v_may_def_list bit.
	(append_v_may_def, append_vuse): Use the in_list bit rather than
	scanning the array for duplicates.

2004-11-25  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.c (s390_short_displacement): UNSPEC_GOTNTPOFF
	displacements are not short.

2004-11-25  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.c (legitimize_pic_address): Use s390_load_address
	to load addresses.

2004-11-25  Mark Mitchell  <mark@codesourcery.com>

	PR c++/18001
	* c-common.h (lvalue_use): Move here from c-ctypeck.c.
	(lvalue_or_else): Declare.
	* c-common.c (lvalue_or_else): Move here from c-typeck.c.
	* c-typeck.c (lvalue_use): Remove.
	(lvalue_or_else): Remove.

	PR c++/18556
	* toplev.c (check_global_declarations): Set DECL_IGNORED_P on
	unemitted variables with static storage duration.

2004-11-25  Gerald Pfeifer  <gerald@pfeifer.com>

	* tree-cfg.c (tree_verify_flow_info): Do not terminate error()
	message with \n.

2004-11-25  Nathan Sidwell  <nathan@codesourcery.com>

	* config/rs6000/altivec.md (VIshort): New mode macro.
	(altivec_vaddubs, altivec_vadduhs, altivec_vadduws): Replace
	with ...
	(altivec_vaddu<VI_char>s): ... this.
	(altivec_vaddsbs, altivec_vaddshs, altivec_vaddsws): Replace
	with ...
	(altivec_vadds<VI_char>s): ... this.
	(altivec_vsububs, altivec_vsubuhs, altivec_vsubuws): Replace
	with ...
	(altivec_vsubu<VI_char>s): ... this.
	(altivec_vsubsbs, altivec_vsubshs, altivec_vsubsws): Replace
	with ...
	(altivec_vsubs<VI_char>s): ... this.
	(altivec_vavgub, altivec_vavguh, altivec_vavguw): Replace
	with ...
	(altivec_vavgu<VI_char>): ... this.
	(altivec_vavgsb, altivec_vavgsh, altivec_vavgsw): Replace
	with ...
	(altivec_vavgs<VI_char>): ... this.
	(altivec_vmsumubm, altivec_vmsumuhm): Replace with ...
	(altivec_vmsumu<VI_char>m): ... this.
	(altivec_vmsummbm, altivec_vmsummhm): Replace
	with ...
	(altivec_vmsumm<VI_char>m): ... this.
	(altivec_vandc): Remove.
	(*andc<mode>3): Renamed to ...
	(andc<mode>3): ... here. Swap operand 1 and 2 numbering.
	(altivec_vrlb, altivec_vrlh, altivec_vrlw): Replace
	with ...
	(altivec_vrl<VI_char>): ... this.
	(altivec_vslb, altivec_vslh, altivec_vslw): Replace
	with ...
	(altivec_vsl<VI_char>): ... this.
	(altivec_vsrb, altivec_vsrh, altivec_vsrw): Replace
	with ...
	(altivec_vsr<VI_char>): ... this.
	(altivec_vsrab, altivec_vsrah, altivec_vsraw): Replace
	with ...
	(altivec_vsra<VI_char>): ... this.
	(altivec_vsum4sbs, altivec_vsum4shs): Replace with ...
	(altivec_vsum4s<VI_char>s): ... this.
	(altivec_vperm_4si, altivec_vperm_8hi, altivec_vperm_16qi): Replace
	with ...
	(altivec_vperm_<mode>): ... this.
	(altivec_vsel_4sf): Rename to ...
	(altivec_vsel_v4sf): ... here.
	(altivec_vsel_4si, altivec_vsel_8hi, altivec_vsel_16qi): Replace
	with ...
	(altivec_vsel_<mode>): ... this.
	(altivec_vsldoi_4si, altivec_vsldoi_8hi,
	altivec_vsldoi_16qi): Rename to ...
	(altivec_vsldoi_v4si, altivec_vsldoi_v8hi,
	altivec_vsldoi_v16qi): ... here.
	(altivec_vsldoi_4sf): Rename to ...
	(altivec_vsldoi_v4sf): ... here.
	(altivec_predicate_v4si, altivec_predicate_v8hi,
	altivec_predicate_v16qi): Replace with ...
	(altivec_predicate_<mode>): ... this.
	(altivec_lvebx, altivec_lvehx, altivec_lvewx): Replace
	with ...
	(altivec_lve<VI_char>x): ... this.
	(altivec_stvebx, altivec_stvehx, altivec_stvewx): Replace
	with ...
	(altivec_stve<VI_char>x): ... this.
	(absv16qi2, absv8hi2, absv4si2): Replace
	with ...
	(abs<mode>2): ... this.
	(altivec_abss_v16qi, altivec_abss_v8hi, altivec_abss_v4si): Replace
	with ...
	(altivec_abss_<mode>): ... this.
	(vec_realign_load_v16qi, vec_realign_load_v8hi,
	vec_realign_load_v4si): Replace with ...
	(vec_realign_load_<mode>): ... this.
	* config/rs6000/rs6000.c (bdesc_3arg, bdesc_2arg): Update tweaked
	insn names.
	(rs6000_expand_ternop_builtin): Likewise.

2004-11-25  Andrew Haley  <aph@redhat.com>

	* gcc.c (process_command): Don't supply -v to linker.

2004-11-25  Joseph S. Myers  <joseph@codesourcery.com>

	* config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Use %qs
	instead of `%s' in diagnostic.

2004-11-25  Nathan Sidwell  <nathan@codesourcery.com>

	* basic-block.h (OBSTACK_ALLOC_REG_SET): Adjust.
	(FREE_REG_SET): Adjust.
	* bitmap.c (bitmap_obstack_free): Cope with NULL bitmap.
	* bitmap.h (BITMAP_OBSTACK_ALLOC): Rename to ...
	(BITMAP_ALLOC): ... here.
	(BITMAP_OBSTACK_FREE): Rename to ...
	(BITMAP_FREE): Don't check for NULL bitmap here.
	* tree-ssa-pre.c (value_insert_into_set_bitmap,
	bitmap_set_new): Use new names.

	* bt-load.c (migrate_btr_defs): Remove unneeded NULL check.
	* df.c (df_free): Likewise.
	* ra-build.c (ra_build_free, ra_build_free_all): Likewise.
	* tree-ssa-loop-ivopts.c (set_use_iv_cost): Likewise.

	* basic-block.h (OBSTACK_ALLOC_REG_SET): Rename to ...
	(ALLOC_REG_SET): ... here.
	(FREE_REG_SET): Adjust.
	(XMALLOC_REG_SET, XFREE_REG_SET): Remove.
	* bb-reorder.c (fix_crossing_conditional_branches): Adjust.
	* cfglayout.c (cfg_layout_duplicate_bb): Adjust.
	* cfgrtl.c (rtl_split_block, rtl_split_edge,
	safe_insert_insn_on_edge, cfg_layout_split_edge): Adjust.
	* flow.c (update_life_info, calculate_global_regs_live,
	allocate_bb_life_data, init_propagate_block_info): Adjust.
	* global.c (build_insn_chain): Adjust.
	* ifcvt.c (dead_or_predicable): Adjust.
	* loop-iv.c (simplify_using_initial_values): Adjust.
	* recog.c (peephole2_optimize): Adjust.
	* sched-deps.c (init_deps_global): Adjust.

2004-11-25  Ralf Corsepius <ralf.corsepius@rtems.org>

	* config.gcc (avr-*-rtems*): Fix typo.

2004-11-25  J"orn Rennecke <joern.rennecke@st.com>

	* sh.c (sh_output_mi_thunk): Do not call regset_release_memory.

2004-11-24  Jeff Law  <law@redhat.com>

	* tree-ssa-alias.c (compute_flow_insensitive_aliasing): Reduce
	the number of queries to random elements in the ai->written_vars
	bitmap.

2004-11-24  Roger Sayle  <roger@eyesopen.com>

	* config/i386/i386.c (override_options): Disable x87 fancy math
	intrinsics if -mfpmath= doesn't include 387 (default on x86_64).

2004-11-24  Roger Sayle  <roger@eyesopen.com>

	* configure.ac: Tweak test for HAVE_DECL_LDGETNAME to avoid a
	system header conflict on AIX 5.2.
	* configure: Regenerate.

2004-11-24  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-outof-ssa.c (coalesce_abnormal_edges): Use e->dest_idx
	instead of calling phi_arg_from_edge.

	* tree-phinodes.c (remove_phi_args): Replace phi_arg_from_edge
	with e->dest_idx.

2004-11-24  Ben Elliston  <bje@au.ibm.com>

	* config/i386/i386.h (ASM_OUTPUT_DWARF_ADDR_CONST): Remove.
	* config/i386/i386.c (i386_dwarf_output_addr_const): Likewise.
	* config/i386/i386-protos.h (i386_dwarf_output_addr_const):
	Likewise.

2004-11-24  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* tree-sra.c (sra_walk_modify_expr): Handle RHS first, then LHS.

	* tree-inline.c (copy_body_r): Explicitly copy a constant if the
	type will be remapped.

2004-11-24  Steven Bosscher  <stevenb@suse.de>

	* c-opts.c (c_common_post_options): Don't clear
	flag_inline_functions.
	* dojump.c (clear_pending_stack_adjust): Remove check on
	flag_inline_functions, it's always true.
	* config/alpha/alpha.md (movdi_er_maybe_g): Remove splitter
	that can never trigger.
	* config/c4x/c4x.h (TARGET_CPU_CPP_BUILTINS): Don't look at
	flag_inline_trees, now that flag_inline_functions is never
	cleared.
	* config/pdp11/pdp11.h (OPTIMIZATION_OPTIONS): Don't set
	flag_inline_functions at optimization levels greater than
	or equal to 3.  This is already done by default.

2004-11-24  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-outof-ssa.c (eliminate_build): Use g->e->dest_idx
	instead to find the PHI argument.  Do not take I as an
	argument.
	(eliminate_phi): Adjust the call to eliminate_build.  Do not
	take I as an argument.
	(rewrite_trees): Adjust the call to eliminate_phi.

2004-11-24  Richard Sandiford  <rsandifo@redhat.com>

	* optabs.h (force_expand_binop): Declare.
	* optabs.c (force_expand_binop): Export.
	* stmt.c (shift_return_value): Delete.
	(expand_return): Don't call it.
	* expr.h (shift_return_value): Declare.
	* calls.c (shift_returned_value): Delete in favor of...
	(shift_return_value): ...this new function.  Leave the caller to check
	for non-BLKmode values passed in the msb of a register.  Take said mode
	and a shift direction as argument.  Operate on the hard function value,
	not a pseudo.
	(expand_call): Adjust accordingly.
	* function.c (expand_function_start): If a non-BLKmode return value
	is padded at the last significant end of the return register, use the
	return value's natural mode for the DECL_RESULT, not the mode of the
	padded register.
	(expand_function_end): Shift the same sort of return values left by
	the appropriate amount.

2004-11-24  Matt Austern  <austern@apple.com>

	* recog.c (recog_memoized_1): Remove.
	* recog.h (recog_memoized_1): Remove declaration.
	(recog_memoized): Change from macro to inline function.

2004-11-24  Devang Patel  <dpatel@apple.com>

	PR/18555
	* gcc.h (DEFAULT_WORD_SWITCH_TAKES_ARG): Add isysroot.
	* config/darwin-c.c (darwin_register_frameworks): Use sysroot.

2004-11-24  Devang Patel  <dpatel@apple.com>

	* gcc.c (process_command): Supply -v to linker.

2004-11-24  David Edelsohn  <edelsohn@gnu.org>
	    Paolo Bonzini  <bonzini@gnu.org>

	* config/rs6000/rs6000.c (rs6000_return_in_memory): Allow Altivec
	vector modes without ALTIVEC_ABI.  Use GCC vector instead of
	synthetic vector.
	(rs6000_pass_by_reference): Split conditional into pieces.  Use
	GCC vector instead of synthetic vector.

2004-11-24  Aldy Hernandez  <aldyh@redhat.com>

	* tree.c (recompute_tree_invarant_for_addr_expr): The address of a
	thread-local variable is invariant.

2004-11-24  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* tree-pretty-print.c (dump_generic_node, case POINTER_TYPE):
	Handle TYPE_REF_CAN_ALIAS_ALL.
	(print_declaration): Print array dimensions like dump_generic_node.

	* fold-const.c (operand_equal_p): Remove kludge allowing ARG0 and
	ARG1 to be null; instead define OP_SAME and OP_SAME_NULL and use them.

2004-11-24  Nathan Sidwell  <nathan@codesourcery.com>

	* bitmap.c (INLINE): Do not define.
	(bitmap_elem_to_freelist, bitmap_element_free,
	bitmap_element_allocate, bitmap_clear, bitmap_element_zerop,
	bitmap_element_link, bitmap_find_bit): Use inline keyword/macro.

2004-11-24  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-ssa-dom.c (cprop_into_successor_phis): Remove code to
	find the index of a PHI argument.  Use e->dest_idx instead.
	Replace hint with index.

	* tree-ssa-dom.c (cprop_into_successor_phis): Replace index
	with indx.

2004-11-24  Diego Novillo  <dnovillo@redhat.com>

	* tree-ssa-alias.c (merge_pointed_to_info): Fix comment
	regarding PT_MALLOC.

2004-11-24  Joseph Myers  <joseph@codesourcery.com>

	* config/i386/i386.c (optimization_options): Use
	SUBTARGET_OPTIMIZATION_OPTIONS.
	* config/i386/sol2-10.h (SUBTARGET_OPTIMIZATION_OPTIONS): Define.
	(TARGET_SUBTARGET_DEFAULT): Don't include
	MASK_OMIT_LEAF_FRAME_POINTER.

2004-11-24  Mark Mitchell  <mark@codesourcery.com>

	* config/i386/sol2.h (X86_FILE_START_VERSION_DIRECTIVE):
	Define to false.

2004-11-24  Joseph Myers  <joseph@codesourcery.com>

	* config/i386/t-sol2-10 (MULTILIB_DIRNAMES, MULTILIB_OSDIRNAMES):
	Use amd64 instead of 64.

2004-11-24  Mark Mitchell  <mark@codesourcery.com>
	    Joseph Myers  <joseph@codesourcery.com>

	* crtstuff.c (IN_LIBGCC2): Define it.
	(EH_FRAME_SECTION_CONST): Check EH_TABLES_CAN_BE_READ_ONLY
	instead of HAVE_LD_RO_RW_SECTION_MIXING.
	* defaults.h (EH_TABLES_CAN_BE_READ_ONLY): New macro.
	* dwarf2out.c (named_section_eh_frame_section): Check
	EH_TABLES_CAN_BE_READ_ONLY.
	* except.c (default_exception_section): Likewise.
	* config/i386/sol2.h (EH_TABLES_CAN_BE_READ_ONLY): Define.
	* doc/tm.texi (EH_TABLES_CAN_BE_READ_ONLY): Document.

2004-11-24  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-ssa-pre.c (phi_translate): Use find_edge to find the
	index of a PHI argument.

	* tree-ssa-loop-manip.c (lv_adjust_loop_header_phi): Use
	find_edge to find the index of a PHI argument.

2004-11-24  Steven Bosscher  <stevenb@suse.de>

	* expr.c (expand_expr_real_1): Remove cases for EXIT_BLOCK_EXPR
	and LABELED_BLOCK_EXPR.
	* gimplify.c (gimplify_labeled_block_expr): Remove.
	(gimplify_exit_block_expr): Remove.
	(gimplify_expr): Don't call them.
	* tree-inline.c (copy_body_r): Don't handle EXIT_BLOCK_EXPR
	and LABELED_BLOCK_EXPR.
	(estimate_num_insns_1): Likewise.
	(walk_tree): Likewise.
	* tree-pretty-print.c (dump_generic_node): Don't handle
	EXIT_BLOCK_EXPR and LABELED_BLOCK_EXPR.
	* tree.def (EXIT_BLOCK_EXPR): Moved to java-tree.def.
	(LABELED_BLOCK_EXPR): Likewise.
	* tree.h (LABELED_BLOCK_LABEL): Moved to java-tree.h.
	(LABELED_BLOCK_BODY): Likewise.
	(EXIT_BLOCK_LABELED_BLOCK): Likewise.
	(EXIT_BLOCK_RETURN): Removed.

2004-11-24  Steven Bosscher  <stevenb@suse.de>

	* cfgrtl.c (rtl_delete_block): Fix comment.
	* emit-rtl.c (remove_unnecessary_notes): Die if we see BLOCK_BEG
	or BLOCK_END insn notes.
	* jump.c (squeeze_notes): Likewise.
	* haifa-sched.c (reemit_notes): Don't "re-emit" EH_REGION_BEG and
	EH_REGION_END notes, we never have them to begin with.
	* sched-deps.c (sched_analyze_insn): When updating loop notes,
	verify that we have indeed only recorded loop notes.
	(sched_analyze): Die if we see EH_REGION_BEG or EH_REGION_END notes.
	Only record loop notes.

	* cfgexpand.c (tree_expand_cfg): Fix comment.

	* passes.c (rest_of_compilation): Don't do a second call to
	convert_from_eh_region_ranges from here, it's already called
	from cfgexpand.c.
	* except.c (resolve_fixup_regions): Remove.
	(remove_fixup_regions): Remove.
	(convert_from_eh_region_ranges_1): Remove.
	(convert_from_eh_region_ranges): Remove the case where EH is
	not already lowered at the tree level.  We always lower there.

2004-11-24  Paolo Bonzini  <bonzini@gnu.org>

	PR c++/16882
	* tree.c (make_vector_type): Move qualifiers to the vector type,
	use the inner type's main variant and build a main variant for
	the vector type if necessary.
	(type_hash_eq): Check a vector type's TYPE_VECTOR_SUBPARTS.

2004-11-24  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* target.h (late_rtl_prologue_epilogue): Remove.
	* target-def.h (TARGET_LATE_RTL_PROLOGUE_EPILOGUE): Remove.
	* system.h: Poison TARGET_LATE_RTL_PROLOGUE_EPILOGUE.
	* passes.c (rest_of_handle_prologue_epilogue): Remove and move
	remaining bits to...
	(rest_of_handle_flow2): ...here.
	(rest_of_compilation): Remove call to rest_of_handle_prologue_epilogue.
	* doc/tm.texi (TARGET_LATE_RTL_PROLOGUE_EPILOGUE): Remove.

2004-11-23  Mark Mitchell  <mark@codesourcery.com>

	* hwint.h (HOST_LONG_LONG_FORMAT): New macro.  Use it throughout.
	* config/i386/xm-mingw32.h (HOST_LONG_LONG_FORMAT): Define.
	* doc/hostconfig.texi (HOST_LONG_LONG_FORMAT): Document.

2004-11-24  Daniel Jacobowitz  <dan@codesourcery.com>

	* config/i386/i386.c (override_options): Move
	SUBTARGET_OVERRIDE_OPTIONS before defaulting
	flag_omit_frame_pointer.

2004-11-23  Richard Henderson  <rth@redhat.com>

	* rtl.h (validate_subreg): Declare.
	* emit-rtl.c (validate_subreg): New.
	(gen_rtx_SUBREG): Use it.
	* simplify-rtx.c (simplify_subreg): Likewise.
	(simplify_gen_subreg): Likewise.  Remove duplicate asserts.
	* expr.c (emit_move_insn_1): Tidy complex move code.  Use memory
	fallback whenever gen_realpart/gen_imagpart would not be able to
	create SUBREGs.

2004-11-23  Richard Henderson  <rth@redhat.com>

	* expmed.c (extract_bit_field): Use simplify_gen_subreg instead of
	hard-coding avoiding calls to gen_rtx_SUBREG.  Split complex return
	modes to CONCAT.

2004-11-23  Diego Novillo  <dnovillo@redhat.com>

	PR tree-optimization/18618
	* tree-into-ssa.c (DEF_VEC_MALLOC_P(basic_block)): Declare.
	(insert_phi_nodes_for): Change third argument to VEC(basic_block).
	* tree-ssa-dom.c (avail_exprs_stack): Change type to VEC(tree_on_heap).
	Update all users.
	(stmts_to_rescan): Likewise.
	(const_and_copies_stack): Likewise.
	(nonzero_vars_stack): Likewise.
	(vrp_variables_stack): Likewise.

2004-11-23  Richard Henderson  <rth@redhat.com>

	* cse.c (record_jump_cond_subreg): New.
	(record_jump_cond): Use it instead of gen_lowpart.

2004-11-23  Daniel Jacobowitz  <dan@codesourcery.com>
	    Joseph Myers  <joseph@codesourcery.com>

	* config/sol2-c.c (solaris_register_pragmas): Use
	c_register_pragma_with_expansion.
	* config/sol2.h (HANDLE_PRAGMA_PACK_WITH_EXPANSION): Define.
	* c-pragma.c (c_register_pragma): Update call to
	cpp_register_pragma.
	(c_register_pragma_with_expansion): New function.
	(init_pragma): Honor HANDLE_PRAGMA_PACK_WITH_EXPANSION.
	* c-pragma.h (c_register_pragma_with_expansion): New prototype.
	* doc/extend.texi (Solaris Pragmas): Mention macro expansion for
	#pragma align.
	* doc/tm.texi (c_register_pragma_with_expansion,
	HANDLE_PRAGMA_PACK_WITH_EXPANSION): Document.

2004-11-23  Richard Henderson  <rth@redhat.com>

	* combine.c (gen_lowpart_for_combine): Factor out mode of x as well
	as mode sizes into local temporaries.  Unify failure path.

2004-11-23  Richard Henderson  <rth@redhat.com>

	* emit-rtl.c, rtl.h (subreg_hard_regno): Remove.
	* caller-save.c (mark_set_regs): Use subreg_regno instead.
	* final.c (alter_subreg): Likewise.
	* local-alloc.c (reg_is_born): Likewise.

2004-11-23  Richard Henderson  <rth@redhat.com>

	* simplify-rtx.c (simplify_subreg): Use subreg_regno_offset directly
	instead of using a SUBREG temporary.

2004-11-23  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-cfg.c (tree_forwarder_block_p): Speed up by reordering
	two checks.

2004-11-23  Zack Weinberg  <zack@codesourcery.com>

	* function.h (struct function): Remove calls_longjmp.
	(current_function_calls_longjmp): Delete.
	* tree.h (ECF_LONGJMP): Delete.
	(ECF_SIBCALL, ECF_PURE, ECF_SP_DEPRESSED, ECF_ALWAYS_RETURN)
	(ECF_LIBCALL_BLOCK): Everybody slide down one.
	(ECF_CONST, ECF_NORETURN, ECF_SIBCALL): Clarify comments.
	* builtins.c (expand_builtin_longjmp): Don't set
	current_function_calls_longjmp.
	* calls.c (special_function_p): Mark longjmp and siglongjmp
	with ECF_NORETURN, not ECF_LONGJMP.
	(emit_call_1, expand_call, emit_library_call_value_1):
	Don't check for ECF_LONGJMP.
	* tree-cfg.c (make_exit_edges, is_ctrl_altering_stmt)
	(need_fake_edge_p): Likewise.

	* config/avr/avr.h, config/ip2k/ip2k.h: Don't define NON_SAVING_SETJMP.
	* system.h: Poison NON_SAVING_SETJMP.
	* function.c (use_register_for_decl)
	* gcse.c (compute_hash_table_work, compute_store_table)
	* postreload-gcse.c (record_opr_changes)
	* reload.c (find_equiv_reg)
	* reload1.c (reload)
	* config/i386/i386.c (ix86_can_use_return_insn_p):
	Remove code conditional on NON_SAVING_SETJMP.
	* doc/tm.texi: Delete documentation of NON_SAVING_SETJMP.

	* config/i386/sysv3.h: Delete file.
	* config/i386/i386.c (ix86_svr3_asm_out_constructor): Delete.

2004-11-23  Dorit Naishlos  <dorit@il.ibm.com>

	* tree-vectorizer.c (vect_analyze_operations): Don't vectorize if
	the vectorization factor is greater than the iteration count.
	(vect_gen_niters_for_prolog_loop): No need to calculate min if the
	iteration count is known.

	(vect_build_symbol_bound): Removed. Its functionality moved to
	vect_generate_tmps_on_preheader.
	(vect_generate_tmps_on_preheader): Moved content of
	vect_build_symbol_bound here instead of calling it.  Changed some
	variables names.

	(vect_build_loop_niters): We don't expect a new_bb to be generated -
	use gcc_assert.
	(vect_gen_niters_for_prolog_loop): Likewise.
	(vect_gen_niters_for_prolog_loo): Likewise.

	(slpeel_make_loop_iterate_ntimes): Use buildN instead of build.
	(slpeel_add_loop_guard): Likewise.
	(slpeel_tree_peel_loop_to_edge): Likewise.
	(vect_do_peeling_for_alignment): Likewise.

	(vect_get_first_index): Missing space.

2004-11-23  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.md ("*iordi3"): Mark commutative.
	("*iorsi3_zarch", "*iorsi3_esa"): Likewise.

2004-11-23  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-phinode.c (resize_phi_node): Abort when LEN is strictly
	greater than PHI_ARG_CAPACITY.
	(reserve_phi_args_for_new_edge): Initialize the new PHI
	argument to NULL_TREE.  Increment PHI_NUM_ARGS.
	(add_phi_arg): Add a PHI argument to the slot given by
	E->dest_idx.
	(remove_phi_arg_num): Do not write to PHI_ARG_EDGE.
	* tree-flow-inline (phi_arg_from_edge): Return E->dest_idx.
	* tree-ssa.c (ssa_redirect_edge): Check for a missing PHI
	argument by looking at PHI_ARG_DEF.
	(verify_phi_args): Check for a missing PHI argument.  Remove
	the check for duplicate PHI arguments.
	* tree.h (PHI_ARG_EDGE): Redefine in terms of EDGE_PRED.
	(phi_arg_d): Remove e.

	* tree-cfg.c (tree_try_redirect_by_replacing_jump): Speed up
	by restricting to the case with two outgoing edges.

2004-11-23  Andreas Krebbel  <krebbel1@de.ibm.com>

	* config/s390/s390.c (s390_backchain_string): Removed.
	(s390_return_addr_rtx, s390_back_chain_rtx, s390_frame_info)
	(s390_emit_prologue, s390_va_start, s390_gimplify_va_arg):
	Changed users of TARGET_BACKCHAIN, TARGET_NO_BACKCHAIN and
	TARGET_KERNEL_BACKCHAIN to reflect the new options.
	* config/s390/s390.h (MASK_BACKCHAIN, MASK_PACKED_STACK): New macros.
	(TARGET_KERNEL_BACKCHAIN): Removed.
	(TARGET_BACKCHAIN): Former triple state option change to a target flag.
	(TARGET_PACKED_STACK): New macro.
	(TARGET_SWITCHES): New switches added.
	(TARGET_OPTIONS): "backchain", "no-backchain" and "kernel-backchain"
	removed.
	(DYNAMIC_CHAIN_ADDRESS): Use TARGET_PACKED_STACK.
	* config/s390/s390.md ("allocate_stack", "restore_stack_block")
	("save_stack_nonlocal", "restore_stack_nonlocal"): Modified to reflect
	the change in target switch semantics.
	* config/s390/tpf.h (TARGET_DEFAULT_BACKCHAIN): Removed.
	(TARGET_DEFAULT): MASK_BACKCHAIN added.
	* doc/invoke.texi: Added documentation for the new/changed options.

2004-11-23  Uros Bizjak  <uros@kss-loka.si>

	PR rtl-optimization/18614
	* simplify-rtx.c (simplify_binary_operation): Do not
	simplify inner elements of constant arguments of
	VEC_CONCAT insn.

2004-11-23  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* gthr-solaris.h (__gthread_recursive_mutex_init_function): Use
	0 instead of NULL.

2004-11-23  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-phinode.c (make_phi_node): Use a new variable,
	capacity, to receive the return value of ideal_phi_node_len.

2004-11-23  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* gthr-solaris.h (__gthread_recursive_mutex_t): New type.
	(__GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION): Define to
	__gthread_recursive_mutex_init_function.
	(__gthread_key_create): Properly cast -1.
	(__gthread_recursive_mutex_init_function): New function.
	(__gthread_recursive_mutex_lock): Rewrite.
	(__gthread_recursive_mutex_trylock): Likewise.
	(__gthread_recursive_mutex_unlock): Likewise.

2004-11-23  Ralf Corsepius <ralf.corsepius@rtems.org>

	* config/c4x/t-rtems: New.
	* config.gcc: Reflect having added c4x/t-rtems.

2004-11-23  Dorit Naishlos <dorit@il.ibm.com>

	PR tree-opt/18403
	PR tree-opt/18505
	* tree-vectorizer.c (vect_create_data_ref_ptr): Use
	lang_hooks.types.type_for_size instead of integer_type_node for the
	type of ptr_update.

2004-11-23  Ralf Corsepius <ralf.corsepius@rtems.org>

	* config.gcc (h8300-*-rtems*): Use h8300/t-rtems.

2004-11-23  Ralf Corsepius <ralf.corsepius@rtems.org>

	* config/arm/t-rtems: New.
	* config.gcc: Reflect having added arm/t-rtems.

2004-11-23  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-cfg.c (tree_execute_on_growing_pred): New.
	(tree_cfg_hooks): Add tree_execute_on_growing_pred.
	* tree-flow.h: Add a prototype for
	reserve_phi_args_for_new_edge.
	* tree-phinodes.c (reserve_phi_args_for_new_edge): New.
	(add_phi_arg): Don't resize a PHI array.

2004-11-23  Ralf Corsepius <ralf.corsepius@rtems.org>

	* config.gcc: Add avr-*-rtems*.
	* config/avr/t-rtems: New.
	* config/avr/rtems.h: New.

2004-11-22  Daniel Berlin  <dberlin@dberlin.org>

	* df.c (dataflow_set_a_op_b): Remove reslt parameter, since it's
	always the same as op1.  Use bitmap_ior_into and bitmap_and_into.
	Add comment to function.

2004-11-22  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	PR pch/14940
	* config/host-linux.c (TRY_EMPTY_VM_SPACE): Define for __hppa__.

	PR rtl-optimization/14838
	* emit-rtl.c (get_first_nonnote_insn): Don't assume first insn is a
	note.
	(get_last_nonnote_insn): Don't assume last insn is a note.

2004-11-22  Roger Sayle  <roger@eyesopen.com>

	* fold-const.c (nondestructive_fold_binary_to_constant): Rename
	to fold_binary_to_constant.
	(nondestructive_fold_unary_to_constant): Likewise, rename to
	fold_unary_to_constant.
	(fold_relational_hi_lo): Update call to fold_binary_to_constant.
	* tree.h (nondestructive_fold_binary_to_constant): Update prototype.
	(nondestructive_fold_unary_to_constant): Likewise.
	* tree-ssa-ccp.c (ccp_fold): Update calls to fold_unary_to_constant
	and fold_binary_to_constant.
	* tree-ssa-loop-niter.c (EXEC_BINARY, EXEC_UNARY): Delete macros.
	(inverse, number_of_iterations_cond): Replace uses of EXEC_BINARY
	and EXEC_UNARY with calls to fold_*nary_to_constant.
	* tree-ssa-loop-ivopts.c (EXEC_BINARY, EXEC_UNARY): Delete macros.
	(idx_find_step): Replace uses of EXEC_BINARY with calls to
	fold_binary_to_constant.

2004-11-22  Nick Clifton  <nickc@redhat.com>

	* sbitmap.c (sbitmap_union_of_preds): Remove redundant
	initialisation of 'e'.

2004-11-22  Roger Sayle  <roger@eyesopen.com>

	* config/i386/i386.h (TARGET_USE_FANCY_MATH_387): New macro.
	* config/i386/i386.c (override_options): Set MASK_NO_FANCY_MATH_387
	automatically for targets without TARGET_80387.
	* config/i386/i386.md (sqrtsf2, sqrtsf2_1, sqrtsf2_i387, sqrtdf2,
	sqrtdf2_1, sqrtdf2_i387, *sqrtextendsfdf2, sqrtxf2,
	*sqrtextenddfxf2, *sqrtextendsfxf2, fpremxf4, fmodsf3, fmoddf3,
	fmodxf3, fprem1xf4, dremsf3, dremdf3, dremxf3, *sindf2, *sinsf2,
	*sinextendsfdf2, *sinxf2, *cosdf2, *cossf2, *cosextendsfdf2,
	*cosxf2, sincosdf3, sincossf3, *sincosextendsfdf3, sincosxf3,
	*tandf3_1, tandf2, *tansf3_1, tansf2, *tanxf3_1, tanxf2,
	atan2df3_1, atan2df3, atandf2, atan2sf3_1, atan2sf3, atansf2,
	atan2xf3_1, atan2xf3, atanxf2, asindf2, asinsf2, asinxf2,
	acosdf2, acossf2, acosxf2, fyl2x_xf3, logsf2, logdf2, logxf2,
	log10sf2, log10df2, log10xf2, log2sf2, log2df2, log2xf2,
	fyl2xp1_xf3, log1psf2, log1pdf2, log1pxf2, *fxtractxf3, logbsf2,
	logbdf2, logbxf2, ilogbsi2, *f2xm1xf2, *fscalexf4, expsf2,
	expdf2, expxf2, exp10sf2, exp10df2, exp10xf2, exp2sf2, exp2df2,
	exp2xf2, expm1df2, expm1sf2, expm1xf2, frndintxf2, rintdf2,
	rintsf2, rintxf2, frndintxf2_floor, floordf2, floorsf2,
	floorxf2, frndintxf2_ceil, ceildf2, ceilsf2, ceilxf2,
	frndintxf2_trunc, btruncdf2, btruncsf2, btruncxf2,
	frndintxf2_mask_pm, nearbyintdf2, nearbyintsf2, nearbyintxf2):
	Simplify conditionals using TARGET_USE_FANCY_MATH_387.

2004-11-22  Dale Johannesen  <dalej@apple.com>

	* config/darwin.h (JUMP_TABLES_IN_TEXT_SECTION): Conditionalize
	properly and comment.

2004-11-22  James A. Morrison  <phython@gcc.gnu.org

	* config/sparc/sparc.c: Include insn-codes.h and langhooks.h.
	(sparc_init_builtins): New function.
	(sparc_init_vis_builtins): Create builtin functions for VIS
	instructions.
	(sparc_expand_builtin): Expand builtin functions for VIS instructions.
	(TARGET_INIT_BUILTINS): Define to sparc_init_builtins.
	(TARGET_EXPAND_BUILTIN): Define to sparc_expand_builtin.
	(def_builtin): New macro for creating builtin functions.
	* config/sparc/sparc.md (P): New mode macro for pointer types.
	(UNSPEC_FPACK16, UNSPEC_FPACK32, UNSPEC_FPACKFIX, UNSPEC_FEXPAND,
	UNSPEC_FPMERGE, UNSPEC_MUL16AL, UNSPEC_MUL8UL, UNSPEC_MULDUL,
	UNSPEC_ALIGNDATA, UNSPEC_ALIGNADDR, UNSPEC_PDIST): New constants.
	(fpack16_vis, fpackfix_vis, fpack32_vis, fexpand_vis, fpmerge_vis,
	fmul8x16_vis, fmul8x16au_vis, fmul8x16al_vis, fmul8sux16_vis,
	fmul8ulx16_vis, fmuld8sux16_vis, fmuld8ulx16_vis, pdist_vis,
	faligndata<V64:mode>_vis, alignaddr<P:mode>_vis): New patterns.

2004-11-22  Devang Patel  <dpatel@apple.com>

	* tree-if-conv.c (clean_predicate_lists): Clean all basic blocks.

2004-11-22  Devang Patel  <dpatel@apple.com>

	* tree-if-conv.c (if_convertable_phi_p): Rename to ...
	(if_convertible_phi_p): ... new name.
	(if_convertable_modify_expr_p): Rename to ...
	(if_convertible_modify_expr_p): ... new name.
	(if_convertable_stmt_p): Rename to ...
	(if_convertible_stmt_p): ... new name.
	(if_convertable_bb_p): Rename to ...
	(if_convertible_bb_p): ... new name.
	(if_convertable_loop_p): Rename to ...
	(if_convertible_loop_p): ... new name.

2004-11-22  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR target/18444
	* configure.ac (threading): Accept 'posix95'.
	* configure: Regenerate.
	* config.gcc (i[34567]86-*-solaris2*): On Solaris up to 2.6,
	include sol26.h and default to posix95 threads if have_pthread_h.
	(sparc-*-solaris2*): Likewise.
	* gthr.h: Include gthr-posix95.h if _PTHREADS95 is defined.
	* gthr-posix95.h: New file.
	* config/sol26.h: New file.
	* doc/install.texi (--enable-threads): Document 'posix95'.

2004-11-23  Ben Elliston  <bje@au.ibm.com>

	* pointer-set.h (pointer_set_contains): Remove.
	* pointer-set.c (pointer_set_contains): Likewise.

2004-11-22  Dale Johannesen  <dalej@apple.com>

	* calls.c (expand_call): Do not call preserve_temp_slots.

2004-11-22  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-flow.h: Remove the prototype for remove_phi_arg.
	Add a prototype for remove_phi_args.
	* tree-phinodes.c (remove_phi_arg): Remove.
	(remove_phi_args): New.
	* tree-ssa.c (ssa_remove_edge): Call remove_phi_args instead
	of remove_phi_arg.

	* cfg.c (unchecked_make_edge): Call execute_on_growing_pred
	after making an edge.
	(remove_edge): Call execute_on_shrinking_pred before removing
	an edge.
	(redirect_edge_succ): Call execute_on_growing_pred and
	execute_on_shrinking_pred.
	* cfghooks.c (execute_on_growing_pred): New.
	(execute_on_shrinking_pred): Likewise.
	* cfghooks.h (cfg_hooks): Add execute_on_growing_pred and
	execute_on_shrinking_pred.
	Add prototypes for execute_on_growing_pred and
	execute_on_shrinking_pred.
	* cfgrtl.c (rtl_cfg_hooks): Add NULL hooks to
	execute_on_growing_pred and execute_on_shrinking_pred.
	(cfg_layout_rtl_cfg_hook): Likewise.
	* tree-cfg.c (tree_cfg_hooks): Likewise.

	* tree-cfg.c (tree_execute_on_shrinking_pred): New.
	(tree_cfg_hooks): Use it.
	* tree-ssa.c (ssa_remove_edge): Don't call remove_phi_args.
	(ssa_redirect_edge): Don't call remove_phi_arg_num.

	* tree-phinodes.c (remove_phi_arg_num): Make it static.
	* tree-flow.h: Remove the corresponding prototype.

	* tree-ssa.c (ssa_remove_edge): Remove.
	* tree-flow.h: Remove the corresponding prototype.
	* tree-cfg.c: Replace ssa_remove_edge with remove_edge.
	* basic-block.h: Likewise.
	* tree-if-conv.c: Likewise.
	* tree-ssa-threadupdate.c: Likewise.

2004-11-23  Ben Elliston  <bje@au.ibm.com>

	* doc/cfg.texi (Maintaining the CFG): Use @ftable instead of
	@table to list the BSI methods.  Use individual @findex directives
	instead of one with a comma-separated list of index entries.

2004-11-22  Zdenek Dvorak  <dvorakz@suse.cz>

	PR tree-optimization/18529
	* fold-const.c (fold_to_nonsharp_ineq_using_bound): New function.
	(simple_operand_p): Use STRIP_NOPS.  Consider SSA names simple.
	(fold): Call fold_to_nonsharp_ineq_using_bound.
	* tree-ssa-loop-niter.c (simplify_replace_tree): New function.
	(number_of_iterations_cond): Fold the expressions before futher
	processing.
	(tree_simplify_using_condition): Handle case when cond or expr is
	an EQ_EXPR specially.

2004-11-22 Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa.c (verify_ssa): SSA_OP_ALL_USES should be
	SSA_OP_ALL_USES | SSA_OP_ALL_KILLS for verification purposes.

2004-11-22  David Edelsohn  <edelsohn@gnu.org>
	    Fariborz Jahanian  <fjahanian@apple.com>

	* config/rs6000/rs6000.c (rs6000_return_in_memory): Test
	TARGET_ALTIVEC_ABI.
	(function_arg_boundary): Align 8 to 16 byte vectors like SPE.
	Align 16 byte and larger vectors like Altivec.
	(function_arg_advance): Pass any 16 byte vector like Altivec vector.
	(function_arg): Same.
	(rs6000_pass_by_references): Test TARGET_ALTIVEC_ABI.

2004-11-22  Andrew Pinski  <pinskia@physics.uc.edu>

	PR tree-opt/18572
	* tree-sra.c (scalarize_init): Unshare the rhs before gimplifying
	it.

2004-11-22  Richard Henderson  <rth@redhat.com>

	* function.c (assign_parm_setup_block): Revert 11-13 change to
	forcably re-mode a (possibly BLKmode) hard register.

2004-11-22  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* config/sparc/sparc.c (mem_min_alignment): Check MEM_ALIGN.

2004-11-22  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/power4.md: Remove delay between dispatch and issue
	associated with dispatch group slots 3 and 4.
	* config/rs6000/power5.md: Same.

2004-11-21  Jeff Law  <law@redhat.com>

	* cfg.c (cached_make_edge): Use find_edge rather than an inlined
	variant.
	* cfgbuild.c (make_edges): Likewise.
	* cfghooks.c (can_duplicate_block_p): Likewise.
	* cfgloop.c (loop_latch_edge): Likewise.
	* cfgloopmanip.c (force_single_succ_latches): Likewise.
	* cfgrtl.c (rtl_flow_call_edges_add): Likewise.
	* predict.c (predict_loops, propagate_freq): Likewise.
	* tracer.c (tail_duplicate): Likewise.
	* tree-cfg.c (disband_implicit_edges): Likewise.
	(tree_forwarder_block_p, tree_flow_call_edges_add): Likewise.

2004-11-22  Nick Clifton  <nickc@redhat.com>

	* sbitmap.c (sbitmap_union_of_preds): Remove redundant
	initialisation of 'e'.

2004-11-22  Kazu Hirata  <kazu@cs.umass.edu>

	PR rtl-optimization/18599
	* regrename.c (copyprop_hardreg_forward): Speed up by putting
	BB_VISITED flags on basic blocks as we process them.

2004-11-22  Nathan Sidwell  <nathan@codesourcery.com>

	PR target/18531
	* config/rs6000/altivec.md (VI_char): New mode attribute.
	(addv16qi3, addv8hi3, addv4ai3): Replace with ...
	(add<mode>3): ... this.
	(subv16qi3, subv8hi3, subv4ai3): Replace with ...
	(sub<mode>3): ... this.
	(smaxv16qi3, smaxv8hi3, smaxv4ai3): Replace with ...
	(smax<mode>3): ... this.
	(sminv16qi3, sminv8hi3, sminv4ai3): Replace with ...
	(smin<mode>3): ... this.
	(umaxv16qi3, umaxv8hi3, umaxv4ai3): Replace with ...
	(umax<mode>3): ... this.
	(uminv16qi3, uminv8hi3, uminv4ai3): Replace with ...
	(umin<mode>3): ... this.
	(andv16qi3, andv8hi3, andv4ai3): Replace with ...
	(and<mode>3): ... this.
	(iorv16qi3, iorv8hi3, iorv4ai3): Replace with ...
	(ior<mode>3): ... this.
	(xorv16qi3, xorv8hi3, xorv4ai3): Replace with ...
	(xor<mode>3): ... this.
	(andv16qi3, andv8hi3, andv4ai3): Replace with ...
	(and<mode>3): ... this.
	(iorv16qi3, iorv8hi3, iorv4ai3): Replace with ...
	(ior<mode>3): ... this.
	(altivec_vnor): Replace with ...
	(altivec_nor<mode>): ... this.
	(one_cmplv16qi2, one_cmplv8hi2, one_complv4ai2): Replace with ...
	(one_cmpl<mode>2): ... this.
	(altivec_vandc): New expander.
	(*andc<mode>3): New insn.
	* config/rs6000/rs6000.c (bdesc_2arg): Adjust for new insn names.

2004-11-22  Dorit Naishlos  <dorit@il.ibm.com>

	PR tree-opt/18536
	* tree-vectorizer.c (make_loop_iterate_ntimes): Use type of niters when
	creating iv instead of integer_type.
	(vect_build_loop_niters): Remove redundant code.
	(vect_transform_loop_bound): Removed (duplicates functionality of
	make_loop_iterate_ntimes.
	(vect_gen_niters_for_prolog_loop): Add documentation. Call
	lang_hooks.types.type_for_size to create a type of the required size.
	Use that type instead of integer_type. Remove redundant code.
	(vect_update_niters_after_peeling): Use type of niters instead of
	integer_type.
	(vect_transform_loop): Unify handling of known and unknown loop bound
	cases. Call make_loop_iterate_ntimes instead of
	vect_transform_loop_bound.

2004-11-22  Andrew Pinski  <pinskia@physics.uc.edu>

	PR target/18217
	* config/rs6000/t-darwin (LIB2FUNCS_EXTRA): Move darwin-fallback.c to
	(LIB2ADDEH): Here.

2004-11-22  Dorit Naishlos  <dorit@il.ibm.com>

	PR tree-opt/18544
	* tree-vectorizer.c (vect_analyze_data_refs): Fail if memtag not found.

2004-11-22 Kazuhiro Inaoka <inaoka.kazuhiro@renesas.com>

	* config.gcc: Use t-slibgcc-elf to build libgcc_s.so on
	m32r*linux.
	* config/m32r/t-linux (SHLIB_MAPFILES): Override to use
	m32r/libgcc-glibc.ver.
	* config/m32r/libgcc-glibc.ver: Add New file.

2004-11-22  Nathan Sidwell  <nathan@codesourcery.com>

	* bitmap.h (struct bitmap_obstack): New obstack type.
	(struct bitmap_head_def): Replace using_obstack with obstack
	pointer.
	(bitmap_default_obstack): New.
	(bitmap_initialize): Make inline, does not do allocation.
	(bitmap_release_memory): Remove.
	(bitmap_obstack_initialize, bitmap_obstack_release): Declare.
	(bitmap_obstack_alloc, bitmap_malloc_alloc, bitmap_gc_alloc,
	bitmap_obstack_free, bitmap_malloc_free): Declare.
	(BITMAP_OBSTACK_ALLOC, BITMAP_GGC_ALLOC, BITMAP_XMALLOC): Adjust.
	(BITMAP_FREE): Replace with ...
	(BITMAP_OBSTACK_FREE): ... this.
	(BITMAP_XFREE): Adjust.
	(BITMAP_INIT_ONCE): Remove.
	* bitmap.c (bitmap_obstack, bitmap_obstack_init, bitmap_free: Remove.
	(bitmap_default_obstack): New.
	(bitmap_elem_to_freelist): Adjust.
	(bitmap_element_allocate): Adjust. Break initialization into ...
	(bitmap_obstack_initialize): ... here.
	(bitmap_release_memory): Replace with ...
	(bitmap_obstack_release): ... this.
	(bitmap_obstack_alloc, bitmap_malloc_alloc, bitmap_gc_alloc,
	bitmap_obstack_free, bitmap_malloc_free): New.
	(bitmap_ior_and_compl, bitmap_ior_and_compl_into): Use
	bitmap_initialize.
	(bitmap_initialize): Move to bitmap.h.
	* gengtype.c (open_base_files): Add obstack.h to ifiles.
	* Makefile.in (BASIC_BLOCK_H, REGS_H): Add obstack.h.
	* basic-block.h (INIT_REG_SET): Allocate from reg_obstack.
	(INITIALIZE_REG_SET): Remove.
	(FREE_REG_SET): Use BITMAP_OBSTACK_FREE.
	(INIT_ONCE_REG_SET, MAX_REGNO_REG_SET): Remove.
	(flow_obstack): Do not declare.
	(reg_obstack): Declare.
	* regs.h: Include obstack.h.
	* tree-optimize.c (tree_rest_of_compilation): Initialize and
	release bitmap obstack here.
	* bb-reorder.c: #include regs, not basic-block.
	(fix_crossing_conditional_branches): Allocate regsets from
	reg_obstack.
	* bt-load.c: Do not inlude bitmap.h, sbitmap.h, basic-block.h or
	obstack.h.
	* caller-save.c: Include regs.h earlier.
	* cfg.c: Do not include basic-block.h or obstack.h.
	(reg_obstack): Define.
	* cfganal.c: Include obstack.h
	* cfgcleanyp.c: Do not include basic-block.h. Include regs.h
	earlier.
	* cfglayout.c: Do not include obstack.h.
	(flow_obstack): Remove declaration.
	(cfg_layout_duplicate_bb): Use reg_obstack.
	* cfgloop.c, cfgloopanal.c, cfgloopmanip.c: Include obstack.h.
	* cfgrtl.c (rtl_split_block): Use reg_obstack.
	(force_nonfallthru_and_redirect, rtl_split_edge): Likewise.
	(safe_insert_insn_on_edge): Use OBSTACK_ALLOC_REG_SET, adjust.
	(cfg_layout_split_edge): Use reg_obstack.
	* cse.c: Include regs.h earlier.
	* ddg.c: Do not include basic-block.h.
	* dominance.c: Inlude obstack.h.
	* flow.c (update_life_info): Use OBSTACK_ALLOC_REG_SET, adjust.
	(calculate_global_regs_live): Likewise.
	(allocate_bb_life_data): Use reg_obstack.
	(init_propagate_block_info): Use OBSTACK_ALLOC_REGSET.
	* global.c: Do not include basic-block.h.
	(build_insn_chain): Use OBSTACK_ALLOC_REG_SET, adjust.
	* graph.c: Include obstack.h.
	* haifa-sched.c: Do not include basic-block.h.
	* ifcvt.c: Use OBSTACK_ALLOC_REG_SET, adjust.
	* local-alloc.c: Do not include basic-block.h.
	* loop-init.c, loop-invariant.c: Include obstack.h.
	* loop-iv.c: Likewise.
	(simplify_using_initial_values): Use OBSTACK_ALLOC_REG_SET,
	adjust.
	* loop-unroll.c, loop-unswitch.c: Inlude obstack.h.
	* modulo-sched.c: Do not include basic-block.h.
	* passes.c (rest_of_handle_final): Do not call
	regset_release_memory.
	* ra-debug.c: Include regs.h earlier. Do not include
	basic-block.h.
	* recog.c (peephole2_optimize): Use OBSTACK_ALLOC_REG_SET, adjust.
	* regclass.c (init_reg_sets): Do not call INIT_ONCE_REG_SET.
	(allocate_reg_info): Do not call MAX_REGNO_REG_SET.
	(regset_release_memory): Remove.
	* resource.c: Do not include basic-block.h.
	* rtlanal.c: Do not include basic-block.h.
	* sbitmap.c: Include obstack.h.
	* sched-deps.c: Do not include basic-block.h.
	(reg_pending_sets_head, reg_pending_clobbers_head,
	reg_pending_uses_head): Remove.
	(init_deps_global): Use OBSTACK_ALLOC_REG_SET.
	* sched-ebb.c: Do not include basic-block.h.
	* sched-rgn.c: Likewise.
	* tree-if-conv.c (get_loop_body_in_if_conv_order): Use
	BITMAP_XFREE.
	* tree-outof-ssa.c (perform_edge_inserts): Use BITMAP_XFREE.
	* tree-sra.c (decide_instantiations): Adjust bitmap
	initialization.
	* tree-ssa-dce.c: Include obstack.h.
	* tree-ssa-pre.c (grand_bitmap_obstack): Make a bitmap_obstack.
	(value_insert_into_set_bitmap): Remove useless bitmap_clear.
	(bitmap_set_new): Likewise.
	(init_pre): Initialize bitmap obstack.
	(fini_pre): Release bitmap obstack.
	* tree-ssanames.c (ssa_names_to_rewrite): Make static.
	(marked_for_rewrite_p): ssa_names_to_rewrite is never NULL.
	(mark_for_rewrite, unmark_for_rewrite): Likewise.
	(marked_ssa_names): Likewise.
	(init_ssanames): Use BITMAP_XMALLOC.
	(fini_ssanames): Use BITMAP_XFREE.
	* web.c: Include obstack.h

2004-11-22  Nick Clifton  <nickc@redhat.com>

	* sbitmap.c (sbitmap_union_of_preds): Set 'e' to the next edge
	predecessor in the first for-loop.

2004-11-21  Stan Shebs  <shebs@apple.com>

	* config/rs6000/rs6000.c: (rs6000_darwin64_function_arg): Add
	UNION_TYPE case.
	(function_arg): Move darwin test up, sniff mode first for
	efficiency, test for union type.

2004-11-21  Dale Johannesen  <dalej@apple.com>

	* config/darwin.h (JUMP_TABLES_IN_TEXT_SECTION): Define.

2004-11-21  Jeff Law  <law@redhat.com>

	* tree-ssa.c (verify_use): Fix comment.
	(verify_phi_args): Check that the number of incoming edges matches
	the number of PHI arguments.  Check that each PHI argument is
	either an SSA_NAME or an invariant.  Coalesce tests for PHIs for
	dead or duplicated edges.  Clear e->aux earlier and avoid separate
	loop to clear e->aux and test for missed edges.
	(verify_ssa): Remove first walk over statements.  Move checking
	of PHI args into verify_phi_args.  Move checking of statements
	with aliased stores and V_MAY_DEFS into the remaining loop over
	the statements.  Register defs by walking through the formal
	SSA_NAME table.

2004-11-21  Roger Sayle  <roger@eyesopen.com>

	PR middle-end/18520
	* dojump.c (compare_from_rtx): Clarify mode argument in function
	description.  Correct order of mode/cmp_mode arguments in call to
	simplify_relational_operation.  Check "tem" for COMPARISON_P.

2004-11-21  Paolo Bonzini  <bonzini@gnu.org>
	    David Edelsohn  <edelsohn@gnu.org>

	PR target/17836
	* config/rs6000/rs6000.c (rs6000_return_in_memory): Return
	synthetic vectors in memory.
	(function_arg_boundary): Align large synthetic vectors.
	(rs6000_pass_by_reference): Pass synthetic vectors in memory.

2004-11-21  Jeff Law  <law@redhat.com>

	* cfg.c (update_bb_profile_for_threading): Do not rescale the
	successor probabilities if they are not going to change.  Pull
	division out of loop if we do need to rescale successor probabilities.

	* tree-ssa-threadupdate.c (redirection_data_hash): Use the
	index of the destination block for the hash value rather than
	hashing a pointer.

2004-11-20  Joseph S. Myers  <joseph@codesourcery.com>

	* c-typeck.c (build_array_ref): Don't check for index == 0.  Make
	checks for neither argument being an array or pointer (swapping
	the arguments if necessary), the array argument being a pointer to
	or array of functions and for -Wchar-subscripts warnings upfront.

2004-11-20  Jeff Law  <law@redhat.com>

	* regrename.c (copyprop_hardreg_forward): Only search for a
	previously processed block if the current block only has one
	predecessor.

2004-11-20  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-ssa-threadupdate.c, tree-vectorizer.c: Fix comment
	typos.
	* config/arm/arm.c: Follow spelling conventions.

2004-11-20  Richard Earnshaw  <rearnsha@arm.com>

	* arm.c (arm_override_options): Use arm_ld_sched rather than testing
	a bit in tune_flags.
	(const_double_needs_minipool): Likewise.  Split most of the code out
	into ...
	(arm_const_double_inline_cost): ... new function here.
	* arm-protos.h (arm_const_double_inline_cost): Add prototype.
	* arm.h (EXTRA_CONSTRAINT_STR_ARM): Add D[abc] constraints for double-
	word constants of length 2, 3 and 4 insns respectively.
	(CONSTRAINT_LEN): The 'D' prefix is a 2-letter constraint.
	* arm.md (arm_movdi, movdf_soft_insn): Add alternatives for D[abc]
	constraints.  Set insn lenghts accordingly.

2004-11-19  Jeff Law  <law@redhat.com>

	* tree-ssa-threadupdate.c: Replace REDIRECTION_DATA varray with
	a hash table.  Extensive modifications throughout to support
	that change.
	(struct el): New.
	(struct local_info): New.
	(struct redirection_data): Add new INCOMING_EDGES and DO_NOT_DUPLICATE
	fields.
	(redirection_data): Now a hashtable.
	(redirection_data_hash, redirection_data_eq): New.
	(lookup_redirection_data, create_duplicates): New.
	(create_edge_and_update_destionation_phis): New.
	(fixup_template_block, redirect_edges): New.
	(thread_block): Use hash table traversals instead of loops over
	varray entries or incoming edge vectors.

2004-11-19  Kazu Hirata  <kazu@cs.umass.edu>

	* basic-block.h (edge_def): Add dest_idx.
	* cfg.c (unchecked_make_edge): Initialize dest_idx.
	(remove_edge): Simplify the disconnection of an edge from its
	destination.
	(redirect_edge_succ): Likewise.
	* cfghooks.c (verify_flow_info): Check the consistency of
	dest_idx for each edge.

2004-11-19  Aldy Hernandez  <aldyh@redhat.com>

	* simplify-rtx.c (simplify_ternary_operation): Use
	gen_int_mode.

2004-11-19  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-cfg.c (reinstall_phi_args): New.
	(tree_split_edge): Use it after redirecting an edge.  Don't
	modify PHI_ARG_EDGE.

2004-11-19  Andreas Tobler  <a.tobler@schweiz.ch>

	* tree-vectorizer.c (slpeel_verify_cfg_after_peeling): Define only
	if checking is enabled.

2004-11-19  Joseph S. Myers  <joseph@codesourcery.com>

	* c-decl.c (push_scope): Remove "\n" from end of diagnostic for
	too many nested scopes.

2004-11-19  Dorit Naishlos  <dorit@il.ibm.com>

	PR tree-opt/18181
	* tree-vectorizer.c (slpeel_tree_peel_loop_to_edge): Peeling scheme
	changed to suppoer uses-after-loop and to void creating flow paths
	that shouldn't exist.
	(slpeel_update_phi_nodes_for_guard): Takes additional two arguments.
	Modified to fit the new peeling scheme. Avoid quadratic behavior.
	(slpeel_add_loop_guard): Takes additional argument.
	(slpeel_verify_cfg_after_peeling): New function.
	(vect_update_ivs_after_vectorizer): Takes additional argument. Updated
	documentation. Use 'exit-bb' instead of creating 'new-bb'.
	(rename_variables_in_bb): Don't update phis for BBs out of loop, to fit
	the new peeling scheme.
	(copy_phi_nodes): Function removed. Its functionality moved to
	update_phis_for_duplicate_loop.
	(slpeel_update_phis_for_duplicate_loop): Functionality of copy_phi_nodes
	moved here. Added documentation. Modified to fit the new peeling scheme.
	(slpeel_make_loop_iterate_ntimes): Setting loop->single_exit not not
	needed - done in slpeel_tree_peel_loop_to_edge.
	(slpeel_tree_duplicate_loop_to_edge_cfg): Debug printouts compacted.
	(vect_do_peeling_for_loop_bound): Add documentation. Call
	slpeel_verify_cfg_after_peeling. Call vect_update_ivs_after_vectorizer
	with additional argument.
	(vect_do_peeling_for_alignment): Call slpeel_verify_cfg_after_peeling.

	(vect_finish_stmt_generation): Avoid 80 column oveflow.

2004-11-19  Dorit Naishlos  <dorit@il.ibm.com>

	* tree-vectorizer.c (slpeel_make_loop_iterate_ntimes): Last two
	arguments removed.
	(slpeel_tree_peel_loop_to_edge): Call slpeel_make_loop_iterate_ntimes
	without last two arguments. Update single_exit of loops.
	(vect_update_niters_after_peeling): Removed. Its functionality was
	moved to vect_do_peeling_for_alignment.
	(vect_do_peeling_for_loop_bound): New name for function previously
	called vect_transform_for_unknown_loop_bound.
	(vect_transform_loop_bound): Call slpeel_make_loop_iterate_ntimes
	instead of code that duplicates the same functionality.
	(vect_do_peeling_for_alignment): Functionality of
	vect_update_niters_after_peeling moved here.
	(vect_transform_loop): Unify call to vect_do_peeling_for_loop_bound -
	previously named vect_transform_for_unknown_loop_bound - for both known
	and unknown loop bound cases.

2004-11-19  Dorit Naishlos  <dorit@il.ibm.com>

	* tree-vectorizer.c (slpeel_can_duplicate_loop_p): New name for function
	previously called verify_loop_for_duplication. All conditions compacted
	into one compound condition. Removed debug dumps.
	(vect_analyze_loop_with_symbolic_num_of_iters): Removed. Some of the
	functionality moved to vect_can_advance_ivs_p, and some to
	vect_analyze_loop_form.
	(vect_can_advance_ivs_p): New function. Contains functionality that was
	taken out of vect_analyze_loop_with_symbolic_num_of_iters.
	(slpeel_tree_peel_loop_to_edge): Call slpeel_can_duplicate_loop_p.
	(vect_analyze_operations): Call vect_can_advance_ivs_p and
	slpeel_can_duplicate_loop_p.
	(vect_get_loop_niters): Added documentation.
	(vect_analyze_loop_form): Check the loop entry always - not only in case
	of unknown loop bound. Create preheader and exit bb if necessary. Apply
	a check that used to take place in
	vect_analyze_loop_with_symbolic_num_of_iters.
	(vectorize_loops): Call verify_loop_closed_ssa under ENABLE_CHECKING.
	Remove redundant call to rewrite_into_loop_closed_ssa.
	(vect_compute_data_refs_alignment): Removed obsolete comment.

2004-11-19  Dorit Naishlos  <dorit@il.ibm.com>

	* tree-vectorizer.c (slpeel_tree_peel_loop_to_edge): New name for
	function previously called tree_duplicate_loop_to_edge.
	(slpeel_tree_duplicate_loop_to_edge_cfg): New name for function
	previously called tree_duplicate_loop_to_edge_cfg.
	(slpeel_update_phis_for_duplicate_loop): Prefix 'slpeel' added to
	function name.
	(slpeel_update_phi_nodes_for_guard): Likewise.
	(slpeel_make_loop_iterate_ntimes): Likewise.
	(slpeel_add_loop_guard): Likewise.
	(allocate_new_names, free_new_names): Function declaration moved to top
	of file.
	(rename_use_op, rename_def_op): Likewise.
	(rename_variables_in_bb, rename_variables_in_loop): Likewise.
	(vect_generate_tmps_on_preheader): Function declaration moved.
	(vect_transform_for_unknown_loop_bound): Added missing function
	declaration.

2004-11-19  Andrew Pinski  <pinskia@physics.uc.edu>

	PR tree-opt/18507
	* tree-flow.h (tree_on_heap): Typedef because there is already a VEC(tree).
	Define a VEC(tree_on_heap) for head.
	(register_new_def): Change second argument to be a VEC(tree_on_heap).
	* tree-ssa-dom.c (block_defs_stack): Change to be a VEC(tree_on_heap).
	(tree_ssa_dominator_optimize): Initialize block_defs_stack with
	the VEC(tree_on_heap) function.  Also free it before returning.
	(dom_opt_initialize_block): Use VEC_safe_push instead of VARRAY_PUSH_TREE
	for block_defs_stack.
	(restore_currdefs_to_original_value): Use VEC_length instead of
	VARRAY_ACTIVE_SIZE. VEC_pop instead of VARRAY_TOP_TREE/VARRAY_POP.
	(dom_opt_finalize_block): Use VEC_safe_push instead of VARRAY_PUSH_TREE
	for block_defs_stack.
	* tree-into-ssa.c (block_defs_stack): Change to be a VEC(tree_on_heap).
	(rewrite_initialize_block): Use VEC_safe_push instead of VARRAY_PUSH_TREE
	for block_defs_stack.
	(ssa_register_new_def): Likewise.
	(ssa_rewrite_initialize_block): Likewise.
	(rewrite_finalize_block): Use VEC_length instead of
	VARRAY_ACTIVE_SIZE. VEC_pop instead of VARRAY_TOP_TREE/VARRAY_POP.
	(ssa_rewrite_finalize_block): Likewise.
	(register_new_def): Change second argument to be a VEC(tree_on_heap).
	Use VEC_safe_push instead of VARRAY_PUSH_TREE.
	(rewrite_blocks): Initialize block_defs_stack with
	the VEC(tree_on_heap) function.  Also free it before returning.
	(rewrite_ssa_into_ssa): Likewise.

2004-11-19  Fariborz Jahanian <fjahanian@apple.com>

	* config/darwin.c (machopic_data_defined_p): return 1 for
	MACHOPIC_DEFINED_FUNCTION.

2004-11-19  Jeff Law  <law@redhat.com>

	* tree-ssa.c (verify_ssa): Remove redundant checking of PHI
	arguments.

2004-11-19  Paul Brook  <paul@codesourcery.com>

	PR target/17735
	* varasm.c (default_assemble_integer): Allow pointer-sized values.
	Expand comment.

2004-11-19  Nick Clifton  <nickc@redhat.com>

	* config/stormy16/stormy16.c (combine_bnp): Add code to handle
	zero_extension and lshiftrt insns.
	Replace uses of XEXP(...) with either SET_DEST() or SET_SRC()
	where appropriate.
	* config/stormy16.stormy16.md (bclrx3, bsetx3): New patterns
	to handle bp and bn insn patterns with a zero_extend rtx
	inside them.

2004-11-19  Ian Lance Taylor  <ian@wasabisystems.com>

	* config/arm/arm.md (generic_sched): Make const.

2004-11-19  Kazu Hirata  <kazu@cs.umass.edu>

	* emit-rtl.c (classify_insn): Make it static.
	* rtl.h: Remove the corresponding prototype.

	* integrate.c (has_func_hard_reg_initial_val,
	get_func_hard_reg_initial_val): Make them static.
	* integrate.h: Remove the corresponding prototypes.

2004-11-19  Ben Elliston  <bje@au.ibm.com>

	* dwarf2asm.h (dw2_asm_output_pcel): Stub out with #if 0.
	(dw2_asm_output_delta_sleb128): Likewise.
	* dwarf2asm.c (dw2_asm_output_pcrel): Likewise.
	(dw2_asm_output_delta_sleb128): Likewise.

2004-11-19  Adam Nemet  <anemet@lnxw.com>

	* tree-ssa-alias.c: Fix comment.

2004-11-19  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-outof-ssa.c: Fix a comment typo.

2004-11-19  Ben Elliston  <bje@au.ibm.com>

	* predict.h (predict_insn): Remove extern declaration.
	* predict.c (predict_insn): Make static.

2004-11-19  Alan Modra  <amodra@bigpond.net.au>

	* config/rs6000/rs6000.c (function_arg): Don't return BLKmode regs.

2004-11-18  Nicolas Pitre <nico@cam.org>

	* config/arm/arm.c (const_double_needs_minipool): New function to
	determine if a CONST_DOUBLE should be pushed to the minipool.
	(note_invalid_constants): Use it.

2004-11-18  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (target_float_switch): New variable..
	(arm_override_options): Use TARGET_DEFAULT_FLOAT_ABI and
	target_float_switch.
	* config/arm/arm.h (target_float_switch): Declare.
	(ARM_FLAG_SOFT_FLOAT): Remove.
	(TARGET_SWITCHES): Remove hard-float and soft-float.
	(TARGET_OPTIONS): Add hard-float and soft-float.
	(TARGET_DEFAULT_FLOAT_ABI): Define.
	* config/arm/coff.h (TARGET_DEFAULT_FLOAT_ABI): Define
	(TARGET_DEFAULT): Don't use ARM_FLAG_SOFT_FLOAT.
	* config/arm/elf.h: Don't use ARM_FLAG_SOFT_FLOAT.
	* config/arm/netbsd-elf.h: Ditto.
	* config/arm/netbsd.h: Ditto.
	* config/arm/pe.h: Ditto.
	* config/arm/unknown-elf.h: Ditto.
	* config/arm/wince-pe.h: Ditto.
	* config/arm/linux-elf.h (TARGET_DEFAULT_FLOAT_ABI): Define.
	* config/arm/semi.h (TARGET_DEFAULT_FLOAT_ABI): Define.
	* config/arm/semiaof.h (TARGET_DEFAULT_FLOAT_ABI): Define.

2004-11-18  Nathan Sidwell  <nathan@codesourcery.com>

	* config/rs6000/altivec.md (VI, VF, V): New mode macros.
	(altivec_lvx_4si, altivec_lvx_8hi, altivec_lvx_16qi,
	altivec_lvx_4sf): Rename and replace with ...
	(altivec_lvx_<mode>): ... mode macro version.
	(altivec_stvx_4si, altivec_stvx_8hi, altivec_stvx_16qi,
	altivec_stvx_4sf): Rename and replace with ...
	(altivec_stvx_<mode>): ... mode macro version.
	(movv4si, movv8hi, movv16qi, movv4sf}): Replace with ...
	(mov<mode>): ... mode macro version.
	(*movv4si_internal, *movv8hi_internal1, *movv16qi_internal1,
	*movv4sf_internal1): Replace with ...
	(*mov<mode>_internal): ... mode macro version.
	(get_vrsave_internal, *set_vrsave_internal, *save_world,
	*restore_world): Unquote output statements.
	* config/rs6000/rs6000.c (altivec_expand_ld_builtin,
	altivec_expand_st_builtin): Adjust insn names.

2004-11-18  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/rs6000.c (rs6000_complex_function_value): Revert
	previous change.
	(rs6000_override_options): Likewise.
	(spe_build_register_parallel): Handle complex doubles on e500v2.
	(rs6000_spe_function_arg): Likewise.
	(function_arg): Likewise.
	(rs6000_function_value): Likewise.
	(rs6000_libcall_value): Likewise.

2004-11-18  Andrew Pinski  <pinskia@physics.uc.edu>

	* ifcvt.c (find_if_block): Move the check for the number of edges
	above the loops checking for complex edges.
	Remove the counting of edges as we use EDGE_COUNT now.

2004-11-18  Kazuhiro Inaoka <inaoka.kazuhiro@renesas.comn>

	* config/m32r/linux.h (TARGET_ASM_FILE_END): Set
	TARGET_ASM_FILE_END to file_end_indicate_exec_stack.

2004-11-18  Andreas Schwab  <schwab@suse.de>

	* config/i386/i386.md (define_peephole2): Revert last change.

2004-11-18  Kazuhiro Inaoka <inaoka.kazuhiro@renesas.comn>

	* config/m32r/linux.h (TARGET_ASM_FILE_END): Set
	TARGET_ASM_FILE_END to file_end_indicate_exec_stack.

2004-11-18  Diego Novillo  <dnovillo@redhat.com>

	* tree-ssa-propagate.c (ssa_prop_init): Use FOR_ALL_BB instead
	of FOR_EACH_BB.

2004-11-18  Jon Grimm <jgrimm2@us.ibm.com>

	* Makefile.in (macro_list): Depend on s-macro_list.
	(s-macro_list): New target.

2004-11-18  Nathan Sidwell  <nathan@codesourcery.com>

	PR target/17107
	* fold-const.c (RANGE_TEST_NON_SHORT_CIRCUIT): Rename to ...
	(LOGICAL_OP_NON_SHORT_CIRCUIT): ... here.
	(fold_range_test): Adjust.
	(fold_truthop): Use it.
	* config/rs6000/rs6000.h (RANGE_TEST_NON_SHORT_CIRCUIT): Rename to ...
	(LOGICAL_OP_NON_SHORT_CIRCUIT): ... here.

2004-11-18  Uros Bizjak  <uros@kss-loka.si>

	* configure/i386/i386.md (*fix_trunch_1): Add "&& 1" to
	insn split constraint.
	(define_peephole2): Remove unneeded "&& 1" from peephole2
	constraints.

2004-11-18  Ben Elliston  <bje@au.ibm.com>

	* doc/cfg.texi (Maintaining the CFG): Remove duplicated @item
	element for bsi_prev; use @findex instead.

2004-11-18  Ben Elliston  <bje@au.ibm.com>

	* opts.h (add_input_filename): Remove extern declaration.
	* opts.c (add_input_filename): Make static.

2004-11-17  Mark Mitchell  <mark@codesourcery.com>

	* config/i386/i386.c (i386_solaris_elf_named_section): Mark with
	ATTRIBUTE_UNUSED.

2004-11-17  Zack Weinberg  <zack@codesourcery.com>

	* defaults.h, config/darwin.h: Don't define TARGET_SUPPORTS_HIDDEN.
	* system.h: Poison it.
	* doc/tm.texi: Delete its documentation.

2004-11-18  Daniel Jacobowitz  <dan@codesourcery.com>
	    Mark Mitchell  <mark@codesourcery.com>

	* config/i386/sol2-10.h, config/i386/t-sol2-10: New files.
	* config/i386/i386.c (i386_solaris_elf_named_section): New
	function.
	* config.gcc (i[34567]86-*-solaris2*): Handle Solaris 2.10.
	* config/i386/sol2.h (ASM_PREFERRED_EH_DATA_FORMAT): Handle
	64-bit.
	(ASM_QUAD): Don't undefine for biarch targets.
	* config/i386/t-sol2: Introduce multilib support.

2004-11-18  Ben Elliston  <bje@au.ibm.com>

	* cgraphunit.c: Replace "it's" with "its" and fix a typo.

2004-11-18  Ben Elliston  <bje@au.ibm.com>

	* cgraph.h: Replace "it's" with "its" throughout.

2004-11-18  Ben Elliston  <bje@au.ibm.com>

	* doc/rtl.texi (Flags): Grammar fix.

2004-11-17  Kazu Hirata  <kazu@cs.umass.edu>

	* expmed.c (alg_code): Add alg_unknown.
	(alg_hash_entry): New.
	(NUM_ALG_HASH_ENTRIES): Likewise.
	(alg_hash): Likewise.
	(synth_mult): Cache the result into alg_hash.

2004-11-17  Zack Weinberg  <zack@codesourcery.com>

	* config/rs6000/t-darwin: Augment SHLIB_MAPFILES with
	config/rs6000/libgcc-ppc64.ver.

2004-11-17  Kazu Hirata  <kazu@cs.umass.edu>

	* cfgrtl.c (rtl_verify_flow_info): Don't use INSN_P when
	checking if an unconditional return is followed by a barrier.

	* jump.c (condjump_p): Remove unreachable code.

	* basic-block.h, c-common.h, df.h, expr.h, output.h, rtl.h,
	tree-chrec.h, tree-flow.h, tree-scalar-evolution.h,
	tree-ssa-live.h, tree.h: Remove unused prototypes.

2004-11-17  Jeff Law  <law@redhat.com>

	* tree-cfg.c (edge_to_cases): Renamed from edge_to_case_leader.
	(edge_to_cases_elt): Renamed from edge_to_case_leader.
	(edge_to_cases_hash): Renamed from edge_to_case_leader_hash.
	(edge_to_cases_eq): Renamed from edge_to_case_leader_eq.
	(edge_to_cases_cleanup, recording_case_labels_p): New functions.
	(get_cases_for_edge): New function.
	(start_recording_case_labels, end_recording_case_labels): Similarly.
	(record_switch_edge): Don't muck with the CASE_LABEL.  Instead
	chain equivalent CASE_LABEL_EXPRs together.
	(get_case_leader_for_edge, get_case_leader_for_edge_hash): Kill.
	(make_switch_expr_edges): Do not record edge/cases here.
	(cleanup_tree_cfg): Record cases around the call to thread_jumps.
	(split_critical_edges): Record cases around the edge splitting code.
	(cleanup_dead_labels): Use CASE_LABEL again.
	(tree_redirect_edge_and_branch): If we have a mapping from edge
	to cases, use it to handle redirections.  Else do it the slow way.
	* tree.h (CASE_LEADER_OR_LABEL): Kill.
	(CASE_LABEL): Revert to just looking at the tree's second operand.
	* tree.c (get_case_label): Kill.

2004-11-17  Diego Novillo  <dnovillo@redhat.com>

	PR tree-optimization/18307
	* tree-ssa-alias.c (merge_pointed_to_info): ICE if 'dest' and
	'orig' are the same node.
	(collect_points_to_info_r): Do not call merge_pointed_to_info
	when the PHI argument is identical to the LHS.

2004-11-17  Steven Bosscher  <stevenb@suse.de>

	* tree-ssa-propagate.c (cfg_blocks_add): Assert we're not trying
	to insert the exit or entry block.
	(ssa_prop_init): Use add_control_edge to seed the algorithm.

2004-11-16  Zack Weinberg  <zack@codesourcery.com>

	* mkmap-flat.awk, mkmap-symver.awk: If the last version
	assigned to a symbol was '%exclude', do not emit it anywhere.
	If leading_underscore is true, prefix all symbols from the
	version scripts with a leading underscore before comparing
	them with nm output or emitting them.  Remove support for dot
	symbols.
	* config/t-slibgcc-darwin (SHLIB_LINK): Use mkmap-flat.awk.
	(SHLIB_MAPFILES): Use libgcc-std.ver.
	(SHLIB_MKMAP_OPTS): Enable leading-underscore mode.
	(SHLIB_LINK): Add -Wl,-exported_symbols_list,$(SHLIB_MAP).
	* config/sh/t-linux: Use the normal libgcc-std.ver, plus
	libgcc-excl.ver and libgcc-glibc.ver.

	* config/sh/libgcc-excl.ver: New file.
	* config/sh/libgcc-std.ver, libgcc-darwin.ver: Delete.

2004-11-16  Daniel Berlin  <dberlin@dberlin.org>

	* lambda-code.c (lambda_loopnest_to_gcc_loopnest): Swap
	the test when the edge has the opposite meaning, not when
	the first argument is invariant.

2004-11-16  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/rs6000.c (rs6000_override_options): Split e500v2
	doubles.
	(rs6000_complex_function_value): Handle e500 v2 variant.

2004-11-16  Daniel Berlin  <dberlin@dberlin.org>

	Fix PR tree-optimization/18519

	* tree-optimize (execute_todo): Add case for TODO_cleanup_cfg.
	* tree-pass.h: Add TODO_cleanup_cfg.
	* tree-ssa-ccp.c (pass_ccp): Use TODO_cleanup_cfg.
	(ccp_finalize): Remove call to cleanup_cfg.
	* tree-ssa-dce.c (pass_dce): Use TODO_cleanup_cfg and TODO_dump_func.
	(pass_cd_dce): Ditto.
	(perform_tree_ssa_dce): Remove call to cleanup_cfg,
	dump_function_to_file.
	* tree-ssa-loop-ch.c (copy_loop_headers): Remove call
	to cleanup_cfg.
	(pass_ch): Add TODO_cleanup_cfg.
	* tree-ssa-loop.c (tree_ssa_loop_done): Remove call to
	cleanup_cfg.
	(pass_loop_done): Add TODO_cleanup_cfg.
	* tree-ssa-phiopt.c (pass_phiopt): Ditto.
	(tree_ssa_phiopt): Remove call to cleanup_cfg.

2004-11-16  Devang Patel  <dpatel@apple.com>

	* optabs.c (vector_compare_rtx): Fix COMPARISON_CLASS_P use.

2004-11-16  Kazu Hirata  <kazu@cs.umass.edu>

	* expmed.c, ra-colorize.c: Fix comment typos.

	* doc/tm.texi: Fix typos.

2004-11-16  Daniel Jacobowitz  <dan@codesourcery.com>
	    Mark Mitchell  <mark@codesourcery.com>

	PR target/6123
	* config/sol2.h (TARGET_OS_CPP_BUILTINS): Define __PIC__ and
	__pic__ if PIC.

2004-11-16  Ulrich Weigand  <uweigand@de.ibm.com>

	* regmove.c (regmove_optimize): Use lowpart_subreg instead of
	gen_rtx_SUBREG with incorrect offset to compute SRC_SUBREG.

2004-11-16  Devang Patel  <dpatel@apple.com>

	* tree-if-conv.c (clean_predicate_lists): Update gcc_assert check.

2004-11-16  Eric Christopher  <echristo@redhat.com>

	* config/mips/mips.c: Use rtl _P predicates.
	* config/mips/mips.h: Ditto.
	* config/mips/mips.md: Ditto.

2004-11-16  Fariborz Jahanian <fjahanian@apple.com>

	* config/rs6000/altivec.md (altivec_vandc): Canonicalize
	the pattern.

2004-11-16  Andreas Krebbel  <krebbel1@de.ibm.com>

	* config/s390/s390.c (s390_cc_modes_compatible): New function.
	(TARGET_CC_MODES_COMPATIBLE): Target macro defined.

2004-11-16  Kaz Kojima  <kkojima@gcc.gnu.org>

	PR target/18447
	* config/sh/sh.c (prepare_move_operands): Emit blockage insns
	before and after the insns for getting GOT address in non-PIC
	TLS_MODEL_INITIAL_EXEC tls sequence when the first scheduling
	is enabled.

2004-11-16  Andreas Krebbel  <krebbel1@de.ibm.com>

	* cse.c (struct change_cc_mode_args): New structure.
	(cse_change_cc_mode_insn): New function.
	(cse_change_cc_mode): Use validate_change to perfom changes.
	(cse_change_cc_mode_insns, cse_condition_code_reg):
	Call cse_change_cc_mode_insn.

2004-11-16  Steven Bosscher  <stevenb@suse.de>

	* stack.h: Remove.

2004-11-16  Steven Bosscher  <stevenb@suse.de>

	* config/i386/i386.c (x86_schedule): Fix typo, m_K6 intead of m_K8.

2004-11-15  Dale Johannesen  <dalej@apple.com>

	* tree-flow.h (add_referenced_temp_var): Remove name from prototype.

2004-11-15  Dale Johannesen  <dalej@apple.com>

	* profile.c (compute_branch_probabilities): Prevent
	crash with EH in RTL-based profiling.

2004-11-16  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-cfg.c (verify_expr): Replace TREE_OPERAND with
	COND_EXPR_COND.
	* tree-if-conv.c (tree_if_convert_cond_expr): Likewise.
	* tree-ssa-dom.c (thread_across_edge): Likewise.
	* tree-vectorizer.c (vect_transform_loop_bound): Replace
	TREE_OPERAND with COND_EXPR_COND, COND_EXPR_THEN, or
	COND_EXPR_ELSE.

	* tree-cfg.c (bsi_commit_edge_inserts): Remove an argument.
	(tree_flow_call_edges_add): Update the call to
	bsi_commit_edge_inserts.
	* lambda-code.c (lambda_loopnest_to_gcc_loopnest): Likewise.
	* profile.c (branch_prob): Likewise.
	* tree-mudflap.c (mf_decl_cache_locals): Likewise.
	* tree-sra.c (scalarize_function): Likewise.
	* tree-ssa-loop-im.c (loop_commit_inserts): Likewise.
	* tree-ssa-pre.c (fini_pre): Likewise.
	* tree-flow.h: Update the prototype for
	bsi_commit_edge_inserts.

2004-11-15  Eric Christopher  <echristo@redhat.com>

	* sched-deps.c (set_sched_group_p): Delete.
	(delete_all_dependencies): New function.
	(fixup_sched_groups): Use. New function.
	(sched_analyze_insn): Use.

2004-11-15  Joseph S. Myers  <joseph@codesourcery.com>

	* c-common.c (binary_op_error): Don't allow LROTATE_EXPR,
	RROTATE_EXPR or unknown code.
	* c-typeck.c (build_binary_op): Don't allow RROTATE_EXPR,
	LROTATE_EXPR, MAX_EXPR, MIN_EXPR, UNORDERED_EXPR, ORDERED_EXPR,
	UNLT_EXPR, UNLE_EXPR, UNGT_EXPR, UNGE_EXPR, UNEQ_EXPR, LTGT_EXPR
	or unknown code.

2004-11-15  Joseph S. Myers  <joseph@codesourcery.com>

	PR c/18498
	* c-decl.c (grokdeclarator): Call check_bitfield_type_and_width
	after processing the declarator.

2004-11-15  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/altivec.md ("altivec_vsplth"): Rewrite with
	vec_duplicate.
	(altivec_vspltb): Same.
	(altivec_vspltw): Same.
	(altivec_vspltisb): Same.
	(altivec_vspltish): Same.
	(altivec_vspltisw): Same.
	(altivec_vspltisw_v4sf): Same.
	(define_constants): Remove UNSPEC_VSPLTISB, UNSPEC_VSPLTISW,
	UNSPEC_VSPLTISH.
	Move "End of vector xor's" comment to the right place.

2004-11-15  Steve Ellcey  <sje@cup.hp.com>

	* config/ia64/ia64.md (*movtf_internal): Use destination_operand
	instead of nonimmediate_operand.

2004-11-15  Mark Mitchell <mark@codesourcery.com>

	* config/i386/sol2.h (ASM_OUTPUT_CALL): Use print_operand.
	* config/sparc/sol2.h (ASM_OUTPUT_CALL): Likewise.
	* config/sol2.c (solaris_output_init_fini): Update calls to
	ASM_OUTPUT_CALL.  Include "rtl.h".

2004-11-15  Mark Mitchell <mark@codesourcery.com>

	* config/sol2-c.c (cmn_err_char_table): Add "p".

2004-11-15  Mark Mitchell <mark@codesourcery.com>

	* config/sparc/sol2.h (SUPPORTS_INIT_PRIORITY): Remove.
	* config/sol2.h (SUPPORTS_INIT_PRIORITY): Define here.

2004-11-15  Mark Mitchell <mark@codesourcery.com>

	* config/t-slibgcc-sld (SHLIB_LINK): Make symlinks entirely
	within the multilib directory.

2004-11-15  Nick Clifton  <nickc@redhat.com>

	* config/stormy16/stormy16.h (TARGET_CPU_CPP_BUILTINS): Add
	builtin assert of cpu=xstormy16.

2004-11-15  Nathan Sidwell  <nathan@codesourcery.com>

	* tree-ssa-pre.c (bitmap_print_value_set): Fix uninitialized
	variable.

2004-11-14  Richard Henderson  <rth@redhat.com>

	PR 18480
	* calls.c (struct arg_data): Add parallel_value.
	(precompute_register_parameters): Set it.
	(load_register_parameters): Use it.
	(store_one_arg): Also set it here.

2004-11-14  Zdenek Dvorak  <dvorakz@suse.cz>

	PR tree-optimization/18431
	* fold-const.c (associate_trees): Do not produce x + 0.
	(fold_widened_comparison, fold_sign_changed_comparison): New functions.
	(fold): Use them.
	* tree-ssa-loop-niter.c (upper_bound_in_type, lower_bound_in_type):
	Moved ...
	* tree.c (upper_bound_in_type, lower_bound_in_type): Here.
	* tree.h (upper_bound_in_type, lower_bound_in_type): Declare.

2004-11-14  Eric Botcazou <ebotcazou@libertysurf.fr>

	* doc/rtl.texi (SUBREG): Adjust BYTENUM value in example.

2004-11-14  Kazu Hirata  <kazu@cs.umass.edu>

	* cfgrtl.c, global.c, tree-ssa-copy.c, tree-ssa-loop-ivopts.c,
	value-prof.c: Fix comment typos.

2004-11-14  Stan Shebs  <shebs@apple.com>

	Basic ABI changes for passing structs by value in 64-bit Darwin.
	* config/rs6000/rs6000.c (rs6000_darwin64_abi): New flag.
	(rs6000_override_options): Set it for 64-bit Darwin.
	(rs6000_parse_abi_options): Add testing options to change it.
	(rs6000_return_in_memory): Test whether the type is one
	that can be passed in registers.
	(darwin64_function_arg_advance): New.
	(function_arg_advance): Call it, plus add recursion depth
	argument and test when counting off arguments.
	(rs6000_darwin64_function_arg): New.
	(function_arg): Call it.
	(setup_incoming_varargs): Add argument to function_arg_advance.
	(rs6000_darwin64_function_value): New.
	(rs6000_function_value): Call it.
	* config/rs6000/rs6000.h (FUNCTION_ARG_ADVANCE): Pass depth arg.
	* config/rs6000/rs6000-protos.h: Update decl of
	function_arg_advance.

2004-11-14  Andrew Pinski  <pinskia@physics.uc.edu>

	PR c/17279
	* c-common.c (c_common_nodes_and_builtins): Ask the back-end if we
	support TImode before adding __int128_t and __uint128_t types.

2004-11-14  Dorit Naishlos  <dorit@il.ibm.com>

	PR tree-opt/18400
	* tree-vectorizer.c (make_loop_iterate_ntimes): Set loop->nb_iterations.
	(vect_transform_loop_bound): Set loop->nb_iterations.

2004-11-14  Dorit Naishlos  <dorit@il.ibm.com>
	    Andrew Pinski  <pinskia@physics.uc.edu>

	PR tree-opt/18425
	* tree-vectorize.c (vect_build_loop_niters): Do not insert
	NULL into the instruction stream. Initialize new_bb to NULL.
	(vect_update_ivs_after_vectorizer): Likewise.
	(vect_gen_niters_for_prolog_loop): Likewise.

2004-11-14  Zdenek Dvorak  <dvorakz@suse.cz>

	PR tree-optimization/18431
	* tree-flow.h (stmt_references_memory_p): Declare.
	* tree-ssa-loop-im.c (stmt_cost): Use stmt_references_memory_p.
	* tree-ssa.c (stmt_references_memory_p): New function.

2004-11-14  Andreas Schwab  <schwab@suse.de>

	* Makefile.in (lambda-code.o, tree-loop-linear.o): Depend on
	$(EXPR_H).

2004-11-14  Kazu Hirata  <kazu@cs.umass.edu>

	* c-common.c (walk_stmt_tree): Remove.
	* c-common.h: Remove the corresponding prototype.

	* emit-rtl.c (push_to_full_sequence): Remove.
	* rtl.h: Remove the corresponding prototype.

	* cselib.c, expr.c: Fix comment typos.

2004-11-13  Richard Henderson  <rth@redhat.com>

	* calls.c (precompute_register_parameters): Force all PARALLELs
	into pseudo registers.
	(load_register_parameters): Copy PARALLELs into hard registers.
	* function.c (assign_parm_setup_block): Copy PARALLELS into
	pseudo registers.  Do emit_group_store in conversion_insns.
	* expr.c (emit_group_load_1): Rename from emit_group_load, take
	tmps as an argument.  Move final copy loop ...
	(emit_group_load): ... here.  New function.
	(emit_group_load_into_temps, emit_group_move_into_temps): New.
	* expr.h: Declare them.

2004-11-14  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-cfg.c, tree-if-conv.c, tree-ssa-loop-ivopts.c,
	tree-ssa-loop-manip.c, tree-vectorizer.c: Replace TREE_CHAIN
	with PHI_CHAIN where appropriate.

2004-11-13  Dale Johannesen  <dalej@apple.com>

	* tree-flow.h (bsi_commit_one_edge_insert): Remove name from prototype.
	(tree_block_label): Ditto.
	(flush_pending_stmts): Ditto.
	(insert_edge_copies): Ditto.
	(expr_invariant_in_loop_p): Ditto.
	(TDF_USE_OPS): Parenthesize definition.
	(TDF_USE_VOPS): Ditto.

2004-11-13  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/aix51.h (ASM_CPU_SPEC): Add 970 and G5.
	* config/rs6000/aix52.h (ASM_CPU_SPEC): Same.
	(atoll): Declare.
	* config/rs6000/t-aix52 (BOOT_LDFLAGS): Define.

2004-11-14  Joseph Myers  <joseph@codesourcery.com>

	* config/i386/i386.c (override_options): Move loop to set default
	tuning to correct place.

2004-11-13  Zak Kipling  <zak@transversal.com>

	PR target/18300
	* config/i386/i386.c (classify_argument): Fix infinite loop when
	passing object with 3 or more base classes by value.

2004-11-13  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* doc/md.texi (constraints) <% modifier>: Mention that it is
	useless when the two alternatives are strictly identical.

2004-11-13  Richard Henderson  <rth@redhat.com>

	* expmed.c (extract_split_bit_field): Temporarily disable call to
	extract_force_align_mem_bit_field.

2004-11-13  Kazu Hirata  <kazu@cs.umass.edu>

	* bitmap.c, bitmap.h, expmed.c, tree-cfg.c: Fix comment
	formatting.

	* c-cppbuiltin.c, cgraph.c, domwalk.h, except.c, gimplify.c,
	lambda-code.c, postreload.c, predict.c, tree-sra.c,
	tree-ssa-loop-manip.c, tree.c: Fix comment typos.

2004-11-13  Kelley Cook  <kcook@gcc.gnu.org>

	* doc/install.texi (automake): Correctly document that everything now
	will use automake 1.9.3.

2004-11-13  Hans-Peter Nilsson  <hp@bitrange.com>

	PR target/18347
	* config/mmix/mmix.c (mmix_function_outgoing_value): Handle
	TImode.  Sorry for other non-complex larger-than-64-bit modes.
	* config/mmix/mmix.h (MIN_UNITS_PER_WORD): Do not define.

2004-11-13  Kelley Cook  <kcook@gcc.gnu.org>

	* doc/install.texi (automake): Document that everything now uses 1.9.

2004-11-13  Bernd Schmidt  <bernd.schmidt@analog.com>

	* cse.c (cse_insn): Stores in a libcall sequence can invalidate
	previous loads.

2004-11-13  Kazu Hirata  <kazu@cs.umass.edu>

	* tree.h: Fix comment typos.

2004-11-13  Steven Bosscher  <stevenb@suse.de>

	* cse.c (CHEAP_REGNO): Redefine using REGNO_PTR_FRAME_P and
	HARD_REGISTER_NUM_P.

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

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

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

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

2004-11-13  James A. Morrison  <phython@gcc.gnu.org>
	    Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR target/18230
	* config/sparc/sparc.c (sparc_rtx_costs): Handle the NAND vector
	patterns.
	* config/sparc/sparc.md (V64I): New macro for 64-bit modes.
	(V32I): New macro for 32-bit modes.
	(anddi3, anddi_sp32, anddi_sp64, and_not_di_sp32, and_not_di_sp64,
	iordi3, iordi3_sp32, iordi_sp64, or_not_di_sp32, or_not_di_sp64,
	xordi3, xordi3_sp32, xordi3_sp64, {AND, IOR, XOR} DI splitter,
	xor_not_di_sp32, xordi_not_di_sp64, one_cmpldi2, one_cmpldi_sp32,
	one_cmpldi_sp64): Use V64I instead of DI.
	(andsi3, andsi_sp32, andsi_sp64, and_not_si, iorsi3, or_not_si,
	xorsi3, xor_not_si, one_cmplsi2): Use V32I instead of SI.
	(addv2si3, addv4hi3, addv2hi3): Remove % modifier.
	(nandv64i_vis, nandv32i_vis): New patterns.

2004-11-12  Mike Stump  <mrs@apple.com>

	* Makefile.in: Add html support.
	* java/Make-lang.in: Likewise.
	* fortran/Make-lang.in: Likewise.
	* treelang/Make-lang.in: Likewise.
	* doc/install.texi: Likewise.
	* doc/makefile.texi: Likewise.
	* doc/sourcebuild.texi: Likewise.

2004-11-13  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-ssa-loop-manip.c: Fix a comment typo.

2004-11-12  Mike Stump  <mrs@apple.com>

	* doc/cppinternals.texi (Index): Fix html generation with makeinfo by
	renaming this node to Concept Index.
	* doc/gccint.texi (Index): Likewise.  Also minor formatting tweaks
	to more closely match gcc.texi.

2004-11-12  Jeff Law  <law@redhat.com>

	* tree-cfg.c (hashtab.h): Include.
	(struct edge_to_case_leader_elt): New structure.
	(edge_to_case_leader): New.
	(edge_to_case_leader_hash): New hashtable hasing function.
	(edge_to_case_leader_eq): New hashtable equality function.
	(record_switch_edge): New function.
	(get_case_leader_for_edge, get_case_leader_for_edge): New functions.
	(make_switch_expr_edges): Build the edge-to-case-leader
	hash table.  Tear down the hash table when we're done.
	(cleanup_dead_labels): Use CASE_LEADER_OR_LABEL instead of
	CASE_LABEL.
	(tree_node_can_be_shared): Allow sharing of CASE_LABEL_EXPR nodes.
	(tree_redirect_edge_and_branch, case SWITCH_EXPR): Update
	to use new concept of case leaders to reduce overhead of
	redirecting outgoing edges from switch statements.
	* tree.c (get_case_label): New function.
	* tree.h (CASE_LABEL): Define in terms of get_case_label.
	(CASE_LEADER_OR_LABEL): Define.

2004-11-12  Ziemowit Laski  <zlaski@apple.com>

	* varasm.c (output_addressed_constants): For CONST_DECLs,
	output the initializer if present.

2004-11-12  Ziemowit Laski  <zlaski@apple.com>

	* config/rs6000/darwin.h: Fix confusing typo in comment.

2004-11-12  Devang Patel  <dpatel@apple.com>

	* optabs.c (vector_compare_rtx): Use COMPARISON_CLASS_P.

2004-11-12  Devang Patel  <dpatel@apple.com>

	* tree-if-conv.c (clean_predicate_lists): Use loop header
	and latch directly.

2004-11-12  Richard Henderson  <rth@redhat.com>

	PR 17778
	* config/i386/i386.h (TARGET_96_ROUND_53_LONG_DOUBLE): New.
	* config/i386/freebsd.h (SUBTARGET_OVERRIDE_OPTIONS): Remove.
	(TARGET_96_ROUND_53_LONG_DOUBLE): New.
	* config/i386/i386-modes.def (XF): Use it.

2004-11-11  Geoffrey Keating  <geoffk@apple.com>

	* Makefile.in (macro_list): Use move-if-change to avoid spurious
	rebuilds.

2004-11-12  Mark Mitchell  <mark@codesourcery.com>

	PR c++/18416
	* passes.c (rest_of_decl_compilation): Do not look at DECL_RTL
	when deciding whether to pass a variable to
	cgraph_varpool_finalize_decl or assemble_variable.
	* toplev.c (check_global_declarations): Do not clear DECL_RTL.

2004-11-12  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-vectorizer.c: Fix a comment typo.

2004-11-12  Bernd Schmidt  <bernd.schmidt@analog.com>

	* genconfig.c (walk_insn_part): Look at match_dups inside a label_ref.

2004-11-12  Diego Novillo  <dnovillo@redhat.com>

	* tree-scalar-evolution.c (analyzable_condition): Remove
	superfluous TREE_THIS_VOLATILE checks on SSA_NAMEs.

2004-11-12  Ralf Corsepius  <ralf.corsepius@rtems.org>

	* config/rs6000/t-rtems (MULTILIB_NEW_EXCEPTIONS_ONLY):
	Remove m505/roe multilib variant.

2004-11-12  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* expr.c (emit_group_load) <CONCAT>: Use extract_bit_field
	to load from the stack.

2004-11-12  Richard Henderson  <rth@redhat.com>

	* toplev.c (floor_log2): Rename from floor_log2_wide, use CLZ_HWI.
	(exact_log2): Rename from exact_log2_wide, use CTZ_HWI.
	* toplev.h (FL2T__): Remove.
	(CLZ_HWI): Rename from FL2T_CLZ__.
	(CTZ_HWI): New.
	(floor_log2): Simplify.
	(exact_log2): New.

2004-11-12  Sebastian Pop  <pop@cri.ensmp.fr>

	* tree-data-ref.c (analyze_subscript_affine_affine): Correctly
	compute the first overlapping iterations.

2004-11-12  Sebastian Pop  <pop@cri.ensmp.fr>

	PR middle-end/18005
	* tree-data-ref.c (estimate_niter_from_size_of_data): Ensure
	that arguments of EXACT_DIV_EXPR are INTEGER_CST.

2004-11-12  Steven Bosscher  <stevenb@suse.de>

	PR tree-optimization/18419
	* tree-ssa.c (walk_use_def_chains_1): Make the visited map a
	pointer set instead of a bitmap.
	(walk_use_def_chains): Create, pass and clean up that pointer_set.

	* tree-ssa-alias.c (struct alias_info): Make the ssa_names_visited
	field an sbitmap.
	(init_alias_info): Allocate and zero it here.
	(delete_alias_info): Delete it here.
	(collect_points_to_info_for): Use it.

2004-11-11  Kazu Hirata  <kazu@cs.umass.edu>

	* alias.c (record_alias_subset, addr_side_effect_eval):
	Make them static.
	* alias.h: Remove the prototype for record_alias_subset.
	* expr.h: Remove the commented-out prototype for
	record_alias_subset.
	* rtl.h: Remove the prototype for addr_side_effect_eval.

	* cfglayout.c (choose_inner_scope): Make it static.
	* rtl.h: Remove the corresponding prototype.

	* cfgloopmanip.c (update_single_exits_after_duplication,
	unloop): Make them static.
	* cfgloop.h: Remove the corresponding prototypes.

	* c-typeck.c (c_size_in_bytes, record_maybe_used_decl):
	Make them static.
	* c-tree.h: Remove the corresponding prototypes.

	* explow.c (round_push): Make it static.
	* expr.h: Remove the corresponding prototype.

	* varasm.c (get_named_section_flags, decl_tls_model): Make
	them static.
	* output.h: Remove the prototype for get_named_section_flags.
	* tree.h: Remove the prototype for decl_tls_model.

2004-11-11  Kazu Hirata  <kazu@cs.umass.edu>

	* function.c (expand_function_end): Remove an "if" statement
	that always triggers.
	* stmt.c (expand_null_return_1): Likewise.

2004-11-11  James E. Wilson  <wilson@specifixinc.com>

	* config/ia64/ia64.h (HARD_REGNO_NREGS): Handle XCmode.
	(HARD_REGNO_MODE_OK, MODES_TIEABLE_P, SECONDARY_MEMORY_NEEDED,
	CLASS_MAX_NREGS): Likewise.

2004-11-11  Zdenek Dvorak  <dvorakz@suse.cz>

	PR tree-optimization/17742
	* tree-scalar-evolution.c (follow_ssa_edge_in_rhs): Handle
	MINUS_EXPR correctly.

2004-11-11  Sebastian Pop  <pop@cri.ensmp.fr>

	* tree-scalar-evolution.c (follow_ssa_edge_in_condition_phi):
	Give up as soon as the evolution is known not computable.

2004-11-11  Nathan Sidwell  <nathan@codesourcery.com>

	PR target/16457
	* config/rs6000/rs6000.c (mask64_2_operand): Stub to call
	mask64_1or2_operand.
	(mask64_1or2_operand): Broken out of mask64_2_operand, add flag
	to spot rlwinm opportunities.
	(and64_2_operand): Use mask_1or2_operand.
	* config/rs6000/rs6000.md (anddi3): Use rlwinm when possible.

2004-11-11  Dorit Naishlos  <dorit@il.ibm.com>

	* tree-vectorizer.c (update_phi_nodes_for_guard): Call reverse_phis.
	(vect_update_ivs_after_vectorizer): Update function documentation.
	Avoid quadratic behavior and direct write to PHI_ARG_DEF.

2004-11-11  Kazu Hirata  <kazu@cs.umass.edu>

	* config/arm/arm.c: Fix a comment typo.

2004-11-11  Nathan Sidwell  <nathan@codesourcery.com>

	* bitmap.h (nBITMAP_WORD_BITS): Remove.
	(BITMAP_WORD_BITS): Force unsigned by use of 1u.
	(BITMAP_ELEMENT_WORDS, BITMAP_ELEMENT_ALL_BITS): Remove
	unnecessary casts.
	(bitmap_first_set_bit): Return unsigned, use ctzl.
	(bitmap_last_set_bit): Remove.
	* bitmap.c (bitmap_element_zerop, bitmap_copy): Make iterator
	unsigned.
	(bitmap_first_set_bit): Return unsigned, require non-empty bitmap,
	remove special case code for two word elements.
	(bitmap_last_set_bit): Remove.
	* ra-build.c (livethrough_conflicts_bb): Replace unnecessary use of
	bitmap_first_set_bit with bitmap_empty_p.
	* tree-outof-ssa.c (analyze_edges_for_bb): Likewise.
	* tree-ssa-pre.c (bitmap_print_value): Use simple flag rather than
	bitmap_last_bit_set.

2004-11-11  Nathan Sidwell  <nathan@codesourcery.com>

	PR target/16796
	* config/rs6000/rs6000.md: Add DF & SF reg move peepholes.

	PR target/16458
	* config/rs6000/rs6000.c (rs6000_generate_compare): Generate an
	unsigned equality compare when we know the operands are unsigned.

2004-11-10  Peter S. Mazinger  <ps.m@gmx.net>

	* config/mips/linux.h (LINUX_TARGET_OS_CPP_BUILTINS): Define
	__PIC__ and __pic__ only if TARGET_ABICALLS.
	(SUBTARGET_CPP_SPECS): Don't define or undefine __PIC__ and __pic__.
	(SUBTARGET_ASM_SPECS): Don't pass -non_shared to assembler; pass
	-KPIC only if not -mno-abicalls.

	* config/alpha/linux.h, config/arm/linux-elf.h, config/pa/pa-linux.h
	* config/sparc/linux.h, config/sparc/linux64.h
	(TARGET_OS_CPP_BUILTINS): Define __PIC__ and __pic__ if flag_pic.

	* config/arm/linux-gas.h (CPP_SPEC): Don't define __PIC__ or __pic__.
	* config/pa/pa/linux.h (CPP_SPEC): Likewise.
	* config/sparc/linux.h (CPP_SUBTARGET_SPEC): Likewise.
	* config/sparc/linux64.h (CPP_SUBTARGET_SPEC): Likewise.

2004-11-11  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (arm_compute_save_reg0_reg12_mask): Save PIC
	register if current_function_uses_pic_offset_table is set.

2004-11-10  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.md (define_attr "type"): Add two and three.
	Change multi-instruction sequences to new attribute.
	* config/rs6000/{40x.md,440.md,603.md,6xx.md,
	7450.md,7xx.md,8540.md,mpc.md,power4.md,power5.md,
	rios1.md,rios2.md,rs64.md}: Add descriptions for two and three.

2004-11-10  Daniel Berlin  <dberlin@dberlin.org>

	* tree-data-ref.c (build_classic_dist_vector): If either loop
	is outside of the nest we asked about, the dependence can't
	matter.
	(build_classic_dir_vector): Ditto.

2004-11-10  Zdenek Dvorak  <dvorakz@suse.cz>

	* tree-ssa-loop-ivopts.c (get_address_cost): Add address elements in
	right order.
	(force_var_cost): Determine cost of addition and multiplication more
	precisely.
	(get_computation_cost_at): Add cost for computing address elements to
	the final cost.

	* fold-const.c (fold): Attempt to use ptr_difference_const whenever
	one of the arguments of MINUS_EXPR is an address.
	(split_address_to_core_and_offset): New function.
	(ptr_difference_const): Handle case when one of the operands is a
	pointer.
	* tree-ssa-loop-ivopts.c (determine_base_object): Fold &*addr.
	(ptr_difference_cost): Pass addresses instead of objects to
	ptr_difference_const.

2004-11-10  Nathan Sidwell  <nathan@codesourcery.com>

	* tree.c (tree_check_failed): Emit general error if the list of
	node types is empty.

2004-11-10  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* config/sparc/sparc.c (function_arg_union_value): New 'slotno'
	argument.  When the union is passed in the 6th slot, build a
	PARALLEL with only one element.
	(function_arg): Adjust call to function_arg_union_value.
	(function_value): Likewise.

2004-11-10  Fariborz Jahanian <fjahanian@apple.com>

	PR tree-optimization/17892
	* tree-ssa-dom.c (unsafe_associative_fp_binop): Add test for
	MINUS_EXPR operator.

2004-11-10  James A. Morrison  <phython@gcc.gnu.org>

	PR target/18230
	config/sparc/sparc.md (addsi3, subsi3): Set "fptype" attribute.
	(addv2si, addv4hi, addv2hi, subv2si, subv4hi, subv2hi): New patterns.

2004-11-10  Steven Bosscher  <stevenb@suse.de>

	* basic-block.h (XMALLOC_REG_SET, XFREE_REG_SET): New.
	(struct basic_block_def): Remove local_set and cond_local_set
	fields.  Update comment for global_live_at_start.
	* flow.c (calculate_global_regs_live): Allocate local_sets and
	cond_local_sets here as arrays of bitmaps previously stored in
	bb->local_set and bb->cond_local_set.  Use xmalloc instead of
	obstack allocated bitmaps.

2004-11-09  H.J. Lu  <hongjiu.lu@intel.com>

	PR target/18380
	* config/ia64/unwind-ia64.h (_Unwind_FindTableEntry): Mark it
	hidden.

	* unwind-dw2.c (_Unwind_FindTableEntry): Removed.

2004-11-09  Jeff Law  <law@redhat.com>

	* cfganal.c (flow_dfs_compute_reverse_execute): Accept new
	argument holding last unvisited block.  Start search for
	unvisited blocks at LAST_UNVISITED rather than EXIT_BLOCK.
	(connect_infinite_loops_to_exit): Supply last unvisited block
	to flow_dfs_compute_reverse_execute.

2004-10-22  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/rs6000.md (fix_truncdfsi2): Handle e500
	doubles.
	(floatunssidf2): Same.
	(floatsidf2): Same.
	("extendsfdf2"): New expander.
	(*extendsfdf2_fpr): Rename.
	(*truncdfsf2_fpr): Same.
	(*negdf2_fpr): Same.
	(*absdf2_fpr): Same.
	(*nabsdf2_fpr): Same.
	(*adddf3_fpr): Same.
	(*subdf3_fpr): Same.
	(*muldf3_fpr): Same.
	(*divdf3_fpr): Same.

	* config/rs6000/spe.md ("spe_extendsfdf2"): Remove FIXME comment.
	("spe_fix_truncdfsi2"): Same.
	(spe_floatunssidf2): Same.
	(spe_floatsidf2): Same.

2004-11-09  Joseph S. Myers  <joseph@codesourcery.com>

	PR c/18322
	* c-common.c (fname_decl): Don't use line number of decl in
	diagnostic.

2004-11-09  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390-protos.h (s390_pool_operand): Remove.
	* config/s390/s390.c (s390_pool_operand): Likewise.
	(s390_extra_constraint_str): Handle 'B' constraints.
	* config/s390/s390.h (CONSTRAINT_LEN): Handle 'B' constraints.
	* config/s390/s390.md: Document 'B' constraints.
	("*cmpdi_cct", "*cmpsi_cct"): Use 'B' constraint instead of
	s390_pool_operand to prevent insns with two literal pool
	references.  Make pattern commutative.
	("*cmpdi_ccu", "*cmpsi_ccu", "*cmphi_ccu", "*cmpqi_ccu"): Use
	'B' constraint instead of s390_pool_operand.

2004-11-09  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-cfg.c (create_bb): Remove unnecessary memset.

2004-11-09  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-ssa-threadupdate.c (copy_phis_to_block): Remove.
	(thread_block): Call flush_pending_stmt instead of
	copy_phis_to_block.

2004-11-09  Kazu Hirata  <kazu@cs.umass.edu>

	* loop-iv.c (iv_number_of_iterations): Make it static.
	* cfgloop.h: Remove the corresponding prototype.

2004-11-09  Kazu Hirata  <kazu@cs.umass.edu>

	* function.c (combine_temp_slots, assign_parms,
	expand_pending_sizes): Make them static.
	* tree.h: Remove the corresponding prototypes.

2004-11-09  Kazu Hirata  <kazu@cs.umass.edu>

	* emit-rtl.c (copy_most_rtx): Remove.
	* rtl.h: Remove the corresponding prototype.

2004-11-09  Kazu Hirata  <kazu@cs.umass.edu>

	* cfgloop.c (flow_loops_update): Remove.
	* cfgloop.h: Remove the corresponding prototype.

2004-11-09  Kazu Hirata  <kazu@cs.umass.edu>

	* conflict.c (mark_reg, conflict_graph_compute): Remove.
	* basic-block.h: Remove the prototype for
	conflict_graph_compute.

2004-11-09  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-if-conv.c (add_to_dst_predicate_list): Change the
	second argument to basic_block.
	(tree_if_convert_cond_expr): Update call sites.

2004-11-09  Kazu Hirata  <kazu@cs.umass.edu>

	* fold-const.c (pedantic_non_lvalue): Make it static.
	* tree.h: Remove the corresponding prototype.

2004-11-09  Kazu Hirata  <kazu@cs.umass.edu>

	* optabs.c (prepare_operand): Make it static.
	* optabs.h: Remove the corresponding prototype.

2004-11-09  Kazu Hirata  <kazu@cs.umass.edu>

	* reload1.c (reloads_conflict, gen_reload): Make them static.
	* reload.h: Remove the corresponding prototypes.

2004-11-09  Kazu Hirata  <kazu@cs.umass.edu>

	* reload.c (refers_to_mem_for_reload_p,
	refers_to_regno_for_reload_p): Make them static.
	* reload.h: Remove the corresponding prototypes.

2004-11-09  James A. Morrison  <phython@gcc.gnu.org>
	    Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR target/18230
	* doc/md.texi (SPARC constraints): Document 'Y' constraint.
	* config/sparc/sparc-modes.def: Add vector modes of 4 and 8 bytes.
	* config/sparc/sparc.c (sparc_vector_mode_supported_p): New function.
	(TARGET_VECTOR_MODE_SUPPORTED_P): Set to sparc_vector_mode_supported_p.
	(fp_zero_operand): Accept MODE_VECTOR_INT modes.
	(input_operand): Accept CONST_VECTOR with MODE_VECTOR_INT modes.
	(sparc_cannot_force_const_mem): Return false for CONST_VECTOR.
	(sparc_init_modes): Set sparc_mode_class to SF_MODE or DF_MODE for
	MODE_VECTOR_INT modes.
	(sparc_extra_constraint_check): Add new constraint 'Y'.
	* config/sparc/sparc.h: Define UNITS_PER_SIMD_WORD to 8 for TARGET_VIS.
	* config/sparc/sparc.md (V32): New mode macro for 32-bit modes.
	(V64): New mode macro for 64-bit modes.
	(movsf): Use V32 for mode instead of SF.
	(movsf_insn_vis): Use V32 for mode instead of SF.  Add 'Y' constraint
	alongside 'G' constraint.
	(movdf): Use V64 for mode instead of DF.
	(movdf_insn_v9only_vis, modf_insn_sp64_vis): Use V64 for mode instead
	of DF.  Add 'Y' constraint alongside 'G' constraint.
	(multi-isn and misaligned mems DFmode splitters): Use V64 for mode
	instead of DF.

2004-11-09  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.c (s390_select_ccmode): Return CCAPmode for
	integer NEG and ABS.
	* config/s390/s390.md ("*negdi2_64"): Fix op_type attribute.
	("*negdi2_31"): Reimplement using a splitter.
	("*negdi2_cc", "*negdi2_cconly"): New insns.
	("*negdi2_sign", "*negdi2_sign_cc"): Likewise.
	("*negsi2_cc", "*negsi2_cconly"): Likewise.
	("*negdf2_cc", "*negdf2_cconly"): Likewise.
	("*negsf2_cc", "*negsf2_cconly"): Likewise.
	("*absdi2_cc", "*absdi2_cconly"): New insns.
	("*absdi2_sign", "*absdi2_sign_cc"): Likewise.
	("*abssi2_cc", "*abssi2_cconly"): Likewise.
	("*absdf2_cc", "*absdf2_cconly"): Likewise.
	("*abssf2_cc", "*abssf2_cconly"): Likewise.
	("*negabsdi2_cc", "*negabsdi2_cconly"): New insns.
	("*negabsdi2_sign", "*negabsdi2_sign_cc"): Likewise.
	("*negabssi2_cc", "*negabssi2_cconly"): Likewise.
	("*negabsdf2_cc", "*negabsdf2_cconly"): Likewise.
	("*negabssf2_cc", "*negabssf2_cconly"): Likewise.

2004-11-09  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.c (s390_canonicalize_comparison): Reverse condition
	when eliminating an UNSPEC_CMPINT.
	(s390_secondary_input_reload_class): Fix test for CC register reload.
	(s390_secondary_output_reload_class): Likewise.
	(s390_expand_cmpmem): Swap operands.  Use gen_cmpint.
	* config/s390/s390.md ("*cmpint_si", "*cmpint_di"): Remove.
	("cmpint", "*cmpint_cc", "*cmpint_sign", "*cmpint_sign_cc"): New
	insn patterns with splitters.

2004-11-09  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.c (rs6000_rtx_costs): Add EQ, GTU, and LTU.
	* config/rs6000/rs6000.md (sCC): Split GTU and LTU patterns.

2004-11-09  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-phinodes.c (phi_reverse): New.
	* tree-cfg.c (tree_make_forwarder_block, tree_duplicate_bb):
	Use it.
	* tree-flow.h: Add a prototype for phi_reverse.

2004-11-09  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-ssa-loop-ivopts.c: Fix a comment typo.

2004-11-09  James A. Morrison  <phython@gcc.gnu.org>

	PR pch/14940
	* config/host-linux.c (TRY_EMPTY_VM_SPACE): Add __sparc__
	definitions.

2004-11-09  Joseph S. Myers  <joseph@codesourcery.com>

	* builtins.c, c-common.c, c-decl.c, c-format.c: Say "argument"
	instead of "arg" in diagnostics.

2004-11-09  Joseph S. Myers  <joseph@codesourcery.com>

	* 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.

2004-11-09  Hans-Peter Nilsson  <hp@bitrange.com>

	* gdbinit.in (pbb, pbm): New macros.

2004-11-08 Jeff Law  <law@redhat.com>

	* cfg.c (redirect_edge_succ_nodup): Use find_edge rather than
	implementing it inline.

	* cfganal.c (find_edge): Search pred->succs or succ->preds,
	whichever is shorter.

2004-11-08  Kazu Hirata  <kazu@cs.umass.edu>

	* passes.c (rest_of_handle_jump): Remove dead code.

2004-11-08  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-cfg.c (thread_jumps): Speed up by keeping a pointer to
	the last used element in the worklist.

2004-11-08  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-inline.c (remap_save_expr): Make it static.
	* tree-inline.h: Remove the corresponding prototype.

2004-11-08  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-ssa-loop-niter.c (upper_bound_in_type,
	lower_bound_in_type): Make them static.
	* tree.h: Remove the corresponding prototypes.

2004-11-08  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-ssa-live.c (tpa_init, pop_best_coalesce): Make them
	static.
	* tree-ssa-live.h: Remove the corresponding prototypes.

2004-11-08  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-if-conv.c (tree_if_conversion): Make it static.
	* tree-flow.h: Remove the corresponding prototype.

2004-11-08  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-ssa-operands.c (build_ssa_operands): Make it static.
	* tree-flow.h: Remove the corresponding prototype.

2004-11-08  Andrew Pinski  <pinskia@physics.uc.edu>

	PR tree-opt/18299
	* tree-inline.c (copy_body_r): Change "t = t" to empty
	statement instead of "t".

2004-11-08  Kazu Hirata  <kazu@cs.umass.edu>

	* modulo-sched.c (create_partial_schedule,
	free_partial_schedule, reset_partial_schedule,
	ps_add_node_check_conflicts, rotate_partial_schedule): Make
	them static.

2004-11-08  Richard Henderson  <rth@redhat.com>

	* expmed.c (extract_force_align_mem_bit_field): Correct handling at
	the end of a page.

2004-11-08  Kazu Hirata  <kazu@cs.umass.edu>

	* sched-deps.c (add_insn_mem_dependence): Make it static.
	* sched-int.h: Remove the corresponding prototypes.

2004-11-08  Kazu Hirata  <kazu@cs.umass.edu>

	* flow.c (allocate_bb_life_data): Make it static.
	* basic-block.h: Remove the corresponding prototype.

2004-11-08  Kazu Hirata  <kazu@cs.umass.edu>

	* calls.c (split_complex_values, split_complex_types): Make
	them static.
	* expr.h: Remove the corresponding prototypes.

2004-11-08  Richard Earnshaw  <rearnsha@arm.com>

	* arm.c (arm_handle_notshared_attribute): Wrap declaration and use
	with #if TARGET_DLLIMPORT_DECL_ATTRIBUTES.

2004-11-08  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-if-conv.c (tree_if_convert_cond_expr): Remove two "if"
	statements that always trigger.

2004-11-08  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-cfg.c, tree-if-conv.c, tree-into-ssa.c,
	tree-scalar-evolution.c, tree-ssa-loop-im.c,
	tree-ssa-loop-ivopts.c, tree-ssa-loop-manip.c, tree-ssa.c,
	tree-vectorizer.c: Replace TREE_CHAIN with PHI_CHAIN where
	appropriate.

2004-11-08  Ben Elliston  <bje@au.ibm.com>

	* cgraph.h (cgraph_calls_p): Remove.
	* cgraph.c (cgraph_calls_p): Likewise.

	* varray.h (varray_copy): Remove.
	* varray.c (varray_copy): Likewise.

2004-11-07  Andrew Pinski  <pinskia@physics.uc.edu>

	PR target/18269
	* config/darwin.c (machopic_indirect_data_reference):
	Call gen_macho_high and gen_macho_low instead of
	checking the mode and calling gen_macho_high_di directly.
	* config/rs6000/rs6000.c (rs6000_emit_move): Likewise.
	* config/rs6000/rs6000.md: Move most of TARGET_MACHO expand/insns
	to darwin.md.
	(movdf_low, movsf_low, movsf_low_st, movsi_low, macho_correct_pic,
	load_macho_picbase, macho_low, macho_high): Removed.
	(builtin_setjmp_receiver): Call gen_macho_high and
	gen_macho_low instead of checking the mode and calling
	gen_macho_high_di directly.
	* config/rs6000/darwin.md (load_macho_picbase_di): Use the MD constant.
	(movdf_low_si, movsf_low_si, movsf_low_st_si, movsi_low_st):
	Moved from rs6000.md.
	(macho_high): New expander.
	(macho_high_si): Renamed version of macho_high from rs6000.md.
	(macho_low): New expander.
	(macho_low_si): Renamed version of macho_low from rs6000.md.
	(load_macho_picbase): New expander.
	(load_macho_picbase_si): Renamed version of load_macho_picbase
	from rs6000.md.
	(macho_correct_pic): New expander.
	(macho_correct_pic_si): Renamed version of macho_correct_pic
	from rs6000.md.

2004-11-07  Joseph S. Myers  <joseph@codesourcery.com>

	* c-decl.c (finish_struct): Use complete sentences for diagnostic
	for structures or unions with no members or named members.

2004-11-07  Joseph S. Myers  <joseph@codesourcery.com>

	* c-typeck.c (build_unary_op): Replace unreachable diagnostic for
	taking address of bit-field by assertion.

2004-11-06  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.md (attribute "op_type"): Default to "NN".
	(attribute "atype"): Default to "agen".
	(attribute "length"): Default to 6.
	(define_asm_attibutes): Remove.
	("movti", "*movdi_64", "*movdi_31", "*movsi_zarch", "*movsi_esa",
	"*movhi", "*movqi", "*movdf_64", "*movdf_31", "movsf",
	"*clc", "*mvc", "*nc", "*oc", "*xc", "*xc_zero"):
	Do not set type attribute to "cs" where already default.
	("*cmpint_si", "*cmpint_di", "fix_truncdfsi2_ibm", "floatsidf2_ibm",
	"*negdi2_31"):
	Do not set type attribute to "other" where already default.
	("movti", "*movdi_64", "*movdi_31", "*movdf_31",
	"*strlendi", "*strlensi",
	"*movmem_long_64", "*movmem_long_31",
	"*clrmem_long_64", "*clrmem_long_31",
	"*cmpmem_long_64", "*cmpmem_long_31",
	"*cmpint_si", "*cmpint_di",
	"addti3", "*adddi3_31z", "*adddi3_31",
	"subti3", "*subdi3_31z", "*subdi3_31", "*negdi2_31",
	"*sconddi", "*scondsi", "*sconddi_neg", "*scondsi_neg",
	"fix_truncdfsi2_ibm", "floatsidf2_ibm", "extendsfdf2_ibm",
	"*pool_entry", "pool_align", "pool_section_start",
	"pool_section_end", "main_pool", "reload_base_31", "pool"):
	Do not set op_type attribute to "NN" where already default.
	("*extractqi", "*extracthi", "*zero_extendhisi2_31",
	"*zero_extendqisi2_31", "*zero_extendqihi2_31",
	"fix_truncdfsi2_ibm", "floatsidf2_ibm"):
	Do not set atype attribute to "agen" where already default.
	("*movmem_short", "*clrmem_short", "*cmpmem_short"): Don't set op_type.

2004-11-06  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/t-iris6 (tp-bit.c): Fix target filename.

2004-11-06  Richard Sandiford  <rsandifo@redhat.com>

	PR target/16830
	* config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Don't define the
	R3000 and R4000 macros on IRIX.

2004-11-06  Andreas Schwab  <schwab@suse.de>

	PR target/16286
	* config/rs6000/altivec.h: Replace bool by __bool and pixel by
	__pixel.

2004-11-06  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-ssa-copyrename.c (rename_ssa_copies): Make it static.

2004-11-06  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/2064.md ("z_int", "z_agen"): Ensure the condition
	matches no insns already matched by other reservations.
	* config/s390/2084.md ("x_int", "x_agen"): Ensure the condition
	matches no insns already matched by other reservations.
	("x_ss"): Remove, replace by ...
	("x_cs"): ... this new reservation.  Check type instead of op_type.
	Update bypasses to use x_cs instead of x_ss.
	("x_nn"): Remove, replace by ...
	("x_other"): ... this new reservation.  Check type instead of op_type.
	Add x_other and x_branch to bypasses.
	("x_vs"): New reservation.
	* config/s390/s390.md (attribute "type"): Default according to op_type.
	("*execute"): Set type to "cs".

2004-11-06  Kazu Hirata  <kazu@cs.umass.edu>

	* fold-const.c (non_lvalue): Don't construct NON_LVALUE_EXPR
	if we are in GIMPLE.

2004-11-06  Hans-Peter Nilsson  <hp@bitrange.com>

	PR rtl-optimization/17933
	* rtlanal.c (dead_or_set_regno_p): Break out common code to...
	(covers_regno_p): New function.  Handle SETs of PARALLEL,
	and defer the rest to...
	(covers_regno_no_parallel_p): New function.

2004-11-06  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* config/sparc/sparc.c (function_arg_record_value_1): Skip
	fields with zero length.
	(function_arg_record_value_2): Likewise.
	(function_arg_record_value_3): Use smallest_mode_for_size
	instead of mode_for_size.
	(function_arg_union_value): Return naked register for unions
	with zero length.

2004-11-06  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* config/sparc/sparc.c (scan_record_type): Handle vector types.
	(function_arg_slotno): Handle vector types specially.
	(function_arg_record_value_1): Split fields with vector type and
	BLKmode into their subparts.
	(function_arg_record_value_2): Likewise.  Be prepared to handle
	more than 2 registers per field.
	(function_arg_union_value): Increment regno inside the loop.
	(function_arg_vector_value): New function.
	(function_arg): Use it to split fields with vector type and
	BLKmode into their subparts and build a PARALLEL.  Treat
	other vector types like floats.
	(function_value): Likewise.
	(sparc_pass_by_reference): Handle vector types.
	(sparc_return_in_memory): Likewise.

2004-11-06  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-cfg.c (find_taken_edge_cond_expr): Remove an "if"
	statement that never triggers.

2004-11-06  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/2064.md ("z_o2", "z_o3"): Remove.
	* config/s390/2084.md ("x_o2", "x_o3"): Remove.
	("x_fdivd"): Use also for fsqrtd type.
	("x_fdivs"): Use also for fsqrts type.
	* config/s390/s390.md (attribute "type"): Remove "o2" and "o3" types.
	("fix_truncdfsi2_ieee"): Set type to "ftoi".
	("fix_truncdfsi2_ibm"): Set type to "other".
	("floatdidf2", "floatdisf2"): Do not clobber CC.
	("floatsidf2", "floatsidf2_ieee"): Likewise.
	("floatsisf2", "floatsisf2_ieee"): Likewise.
	("truncdfsf2", "truncdfsf2_ieee"): Only allow "register_operand".
	("truncdfsf2_ibm"): Only allow "nonimmediate_operand".  Use LER
	instead of LRER.
	("extendsfdf2_ibm"): Do not set atype.  Set type to "floads".
	("sqrtdf2"): Set type to "fsqrtd".
	("sqrtsf2"): Set type to "fsqrts".

2004-11-06  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-phinodes.c (remove_all_phi_nodes_for): Speed up using a
	pointer to the last PHI node in the new PHI chain.

2004-11-06  Kaz Kojima  <kkojima@gcc.gnu.org>

	* config/sh/sh.c (prepare_move_operands): Emit a use of r12
	for non-PIC TLS_MODEL_INITIAL_EXEC case.

2004-11-06  Kazu Hirata  <kazu@cs.umass.edu>

	* expmed.c: Fix a comment typo.

2004-11-06  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>

	PR target/18106
	* config/i386/cygming.h
	[HAVE_GAS_WEAK] (ASM_WEAKEN_LABEL): Macro defined.

2004-11-06  Kazu Hirata  <kazu@cs.umass.edu>

	* config/sh/sh4a.md: Fix copyright.

2004-11-06  Kazu Hirata  <kazu@cs.umass.edu>

	* config/rs6000/darwin.md, config/sh/sh4a.md: Replace GNU CC
	with GCC.

2004-11-05  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.md (scc patterns): Replace subfc with subf
	when carry not used.  Suggested by Torbjorn Granlund.

	* config/rs6000/rs6000.c (rs6000_emit_move): Don't force_reg
	operand[1] unnecessarily.  Suggested by Eric Christopher.
	(rs6000_adjust_cost): Increase latency of store to wider load.
	(rs6000_rtx_costs): mulli only allows 16-bit constants.

2004-11-05  Stan Shebs  <shebs@apple.com>

	* config/rs6000/rs6000.c (machopic_output_stub): Output
	ldu instead of lwzu for 64-bit stubs.

2004-11-05  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.c (alpha_expand_unaligned_load): Special case
	size 2 with BWX.
	(alpha_expand_unaligned_store): Likewise.

2004-11-05  Richard Henderson  <rth@redhat.com>

	* expmed.c (extract_force_align_mem_bit_field): New.
	(extract_split_bit_field): Call it.

2004-11-05  Richard Henderson  <rth@redhat.com>

	* 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.

2004-11-05  Joseph S. Myers  <joseph@codesourcery.com>

	* c-typeck.c (output_init_element): Return early if value is
	error_mark_node.

2004-11-05  James E Wilson  <wilson@specifixinc.com>

	* invoke.texi (-fno-guess-branch-probability): Rewrite.

	* config/ia64/ia64.c (rtx_needs_barrier, case UNSPEC_GR_SPILL): Change
	1 to UNSPEC_GR_SPILL.

2004-11-05  Andreas Krebbel  <krebbel1@de.ibm.com>

	* config/s390/s390.c (s390_fixed_condition_code_regs): New function.
	(TARGET_FIXED_CONDITION_CODE_REGS): Macro defined.

2004-11-05  Nathan Sidwell  <nathan@codesourcery.com>

	* bitmap.h (enum bitmap_bits): Remove.
	(bitmap_operation): Remove.
	(bitmap_and, bitmap_and_into, bitmap_and_compl,
	bitmap_and_compl_into, bitmap_ior, bitmap_ior_into, bitmap_xor,
	bitmap_xor_into): Prototype.
	* bitmap.c (bitmap_elt_insert_after, bitmap_elt_clear_from): New.
	(bitmap_operation): Remove.
	(bitmap_and, bitmap_and_into, bitmap_and_compl,
	bitmap_and_compl_into, bitmap_ior, bitmap_ior_into, bitmap_xor,
	bitmap_xor_into): New.
	(bitmap_ior_and_compl, bitmap_ior_and_compl_into): Adjust.

	PR tree-optimization/18307
	* tree-ssa-alias.c (merge_pointed_to_info): Protected against DEST
	and ORIG being the same node.

2004-11-04  Geoffrey Keating  <geoffk@apple.com>

	* Makefile.in (distclean): Don't delete nonexistent fixinc/ directory.
	(install-mkheaders): Install the version built for the
	host, not for the build machine.
	* configure.ac: Always run fixincludes.
	(all_outputs): Remove mkheaders.
	* configure: Regenerate.
	* fixinc.in: Move to fixincludes/.
	* mkfixinc.sh: Likewise.
	* mkheaders.in: Likewise.
	* README-fixinc: Likewise.

2004-11-05  Ramana Radhakrishnan  <ramana.radhakrishnan@codito.com>

	PR target/18263
	* config/arc/lib1funcs.asm (___umulsidi3): Change use of cmp to the
	equivalent on the A4.

2004-11-05  Joseph S. Myers  <joseph@codesourcery.com>

	* doc/c-tree.texi, doc/cfg.texi, doc/contrib.texi, doc/cpp.texi,
	doc/cppopts.texi, doc/extend.texi, doc/fragments.texi,
	doc/frontends.texi, doc/gcov.texi, doc/hostconfig.texi,
	doc/implement-c.texi, doc/install.texi, doc/invoke.texi,
	doc/libgcc.texi, doc/md.texi, doc/passes.texi,
	doc/portability.texi, doc/rtl.texi, doc/sourcebuild.texi,
	doc/standards.texi, doc/tm.texi, doc/tree-ssa.texi,
	doc/trouble.texi: Correct end-of-sentence markup and markup of
	"etc.", "e.g." and "i.e.".  Use @code in various places where
	appropriate.

2004-11-05  Joseph S. Myers  <joseph@codesourcery.com>

	* doc/c-tree.texi, doc/cfg.texi, doc/extend.texi, doc/gty.texi,
	doc/install.texi, doc/invoke.texi, doc/md.texi, doc/passes.texi,
	doc/rtl.texi, doc/tm.texi, doc/tree-ssa.texi: Remove trailing
	whitespace.

2004-11-04  Mark Mitchell  <mark@codesourcery.com>

	* config/arm/arm.c (arm_handle_notshared_attribute): New function.
	* doc/extend.texi: Document "notshared" attribute.

2004-11-04  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-phinodes.c (make_phi_node): Make it static.
	* tree.h: Remove the prototypes for make_phi_node.

2004-11-04  Kazu Hirata  <kazu@cs.umass.edu>

	* stmt.c (expand_asm, expand_asm_operands): Make them static.
	* tree.h: Remove the prototypes for expand_asm and
	expand_asm_operands.

2004-11-04  Kazu Hirata  <kazu@cs.umass.edu>

	* passes.c (rest_of_compilation): Make it static.
	* toplev.h: Remove the prototype for rest_of_compilation.

2004-11-04  Kazu Hirata  <kazu@cs.umass.edu>

	* jump.c (cleanup_barriers): Use delete_insn instead of
	delete_barrier.
	(delete_barrier): Remove.
	* rtl.h: Remove the corresponding prototype.

2004-11-04  Kazu Hirata  <kazu@cs.umass.edu>

	* expr.c (mostly_zero_p): Make it static.
	* tree.h: Remove the prototype for mostly_zeros_p.

2004-11-04  Kazu Hirata  <kazu@cs.umass.edu>

	* cfgrtl.c (force_nonfallthru_and_redirect): Make it static.

2004-11-04  Kazu Hirata  <kazu@cs.umass.edu>

	* builtins.c (expand_builtin_return_addr,
	expand_builtin_longjmp, expand_builtin_trap): Make them static.
	* expr.h: Remove the prototypes for expand_builtin_longjmp and
	expand_builtin_trap.
	* tree.h: Remove the prototype for expand_builtin_return_addr.

2004-11-04  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-cfg.c (find_taken_edge): Reject VAL begin NULL.
	* tree-ssa-ccp.c (visit_cond_stmt): Don't call find_taken_edge
	with VAL being NULL.

2004-11-04  Kazu Hirata  <kazu@cs.umass.edu>

	* cfghooks.c (delete_basic_block): Remove code to truncate
	edge vectors.

2004-11-04  Andrew Pinski  <pinskia@physics.uc.edu>

	* flow.c (init_propagate_block_info): Change the type of i to
	unsigned.

2004-11-04  Ulrich Weigand  <uweigand@de.ibm.com>

	PR tree-optimization/18184
	* c-typeck.c (comptypes): Do not treat pointers of different
	modes or alias-all flags as equivalent.
	* tree-ssa.c (tree_ssa_useless_type_conversion_1): Likewise.

2004-11-04  Joseph S. Myers  <joseph@codesourcery.com>

	* doc/gty.texi, doc/makefile.texi, doc/sourcebuild.texi: Don't
	reference specific C parser files in examples.

2004-11-04  Richard Sandiford  <rsandifo@redhat.com>

	PR target/15342
	* regrename.c (scan_rtx): Treat the destinations of SETs and CLOBBERs
	as OP_INOUT if the instruction is predicated.

2004-11-04  Kazu Hirata  <kazu@cs.umass.edu>

	* bitmap.h: Fix a comment typo.  Follow spelling conventions.
	* tree-vectorizer.c: Fix a comment typo.

2004-11-04  Kazu Hirata  <kazu@cs.umass.edu>

	* sdbout.c (SDB_GENERATE_FAKE): Remove.
	(gen_fake_label): Don't use SDB_GENERATE_FAKE.
	* system.h: Poison SDB_GENERATE_FAKE.
	* doc/tm.texi (SDB_GENERATE_FAKE): Remove.

2004-11-04  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.md ("*addsi3_sign"): Use canonical RTL.

2004-11-04  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR other/18277
	* gthr-posix.h (__gthread_recursive_mutex_init_function): Revert
	2004-10-29 patch

2004-11-04  Nathan Sidwell  <nathan@codesourcery.com>

	* predict.c (propagate_freq): Make bitno unsigned. Move
	npredecessors update out of loop.

	* bitmap.h (bitmap_iterator): Remove word_bit and bit
	fields. Rename others.
	(bmp_iter_common_next_1, bmp_iter_single_next_1,
	bmp_iter_single_init, bmp_iter_end_p, bmp_iter_single_next,
	bmp_iter_and_not_next_1, bmp_iter_and_not_init,
	bmp_iter_and_not_next, bmp_iter_and_next_1, bmp_iter_and_init,
	bmp_iter_and_next): Remove.
	(bmp_iter_set_init, bmp_iter_and_init, bmp_iter_and_compl_init,
	bmp_iter_next, bmp_iter_set, bmp_iter_and, bmp_iter_and_compl):
	New.
	(EXECUTE_IF_SET_IN_BITMAP, EXECUTE_IF_AND_IN_BITMAP,
	EXECUTE_IF_AND_COMPL_IN_BITMAP): Adjust.

	* bitmap.h (bitmap_a_or_b, bitmap_a_and_b): Remove.
	* df.c (dataflow_set_a_op_b): Use bitmap_and, bitmap_ior,
	bitmap_and_into, bitmap_ior_into as appropriate.
	* except.c (remove_eh_handler):	Likewise.
	* global.c (modify_bb_reg_pav, make_accurate_live_analysis): Likewise.
	* tree-dfa.c (mark_new_vars_to_rename): Likewise.
	* tree-ssa-alias.c (merge_pointed_to_info): Likewise.
	* tree-ssa-live.h (live_merge_and_clear): Likewise.
	* tree-ssa-loop-ivopts.c (find_best_candidate, try_add_cand_for):
	Likewise.

	* bitmap.c (bitmap_print): Make bitno unsigned.
	* bt-load.c (clear_btr_from_live_range,
	btr_def_live_range): Likewise.
	* caller-save.c (save_call_clobbered_regs): Likewise.
	* cfganal.c (compute_dominance_frontiers_1): Likewise.
	* cfgcleanup.c (thread_jump): Likewise.
	* cfgrtl.c (safe_insert_insn_on_edge): Likewise.
	* conflict.c (conflict_graph_compute): Likewise.
	* ddg.c (add_deps_for_use): Likewise.
	* df.c (df_refs_update): Likewise.
	* except.c (remove_eh_handler): Likewise.
	* flow.c (verify_local_live_at_start, update_life_info,
	initialize_uninitialized_subregs, propagate_one_insn,
	free_propagate_block_info, propagate_block, find_use_as_address,
	reg_set_to_hard_reg_set): Likewise.
	* gcse.c (clear_modify_mem_tables): Likewise.
	* global.c (global_conflicts, build_insn_chain): Likewise.
	* ifcvt.c (dead_or_predicable): Likewise.
	* local-alloc.c (update_equiv_regs): Likewise.
	* loop.c (load_mems): Likewise.
	* ra-build.c (livethrough_conflicts_bb, conflicts_between_webs):
	Likewise.
	* ra-rewrite.c (reloads_to_loads, rewrite_program2, actual_spill):
	Likewise.
	* reload1.c (order_regs_for_reload, finish_spills): Likewise.
	* sched-deps.c (sched_analyze_insn, free_deps): Likewise.
	* sched-rgn.c (propagate_deps
	* tree-cfg.c (tree_purge_all_dead_eh_edges): Likewise.
	* tree-dfa.c (dump_dfa_stats
	tree-into-ssa.c (compute_global_livein, insert_phi_nodes,
	insert_phi_nodes_for, debug_def_blocks_r, invalidate_name_tags):
	Likewise.
	* tree-outof-ssa.c (coalesce_ssa_name, coalesce_vars,
	free_temp_expr_table, find_replaceable_exprs): Likewise.
	* tree-sra.c (scan_function, scalarize_parms): Likewise.
	* tree-ssa-alias.c (init_alias_info,
	compute_points_to_and_addr_escape,
	compute_flow_sensitive_aliasing, maybe_create_global_var): Likewise.
	* tree-ssa-dce.c (mark_control_dependent_edges_necessary): Likewise.
	* tree-ssa-live.c (new_tree_live_info, live_worklist,
	calculate_live_on_entry, calculate_live_on_exit, compare_pairs,
	sort_coalesce_list, build_tree_conflict_graph, dump_live_info
	tree-ssa-loop-manip.c (add_exit_phis_var): Likewise.
	tree-ssa-operands.c (get_asm_expr_operands, add_call_clobber_ops,
	add_call_read_ops): Likewise.
	* tree-ssa-pre.c (bitmap_print_value_set, insert_aux): Likewise.
	* tree-ssa-live.h (num_var_partitions): Return unsigned.

2004-11-03  Dorit Naishlos  <dorit@il.ibm.com>

	PR tree-optimization/18009
	* tree-vectorizer.h (enum dr_alignment_support): New type.
	(MAX_NUMBER_OF_UNALIGNED_DATA_REFS): Removed.
	(LOOP_UNALIGNED_DR): replaced with LOOP_VINFO_UNALIGNED_DR and holds a
	single data_reference (instead of a varray of references).
	* tree-vectorizer.c (new_loop_vec_info): Likewise.
	(vect_gen_niters_for_prolog_loop): Likewise.
	(vect_update_inits_of_drs): Likewise.

	(vect_update_inits_of_drs): Setting of DR_MISALIGNMENT moved to
	vect_enhance_data_refs_alignment.
	(vect_do_peeling_for_alignment): Likewise.
	(vect_enhance_data_refs_alignment): Decide if and by how much to peel;
	this functionality used to be in vect_analyze_data_refs_alignment.
	Also update DR_MISALIGNMENT due to peeling; this functionality used to
	be in vect_update_inits_of_drs and vect_do_peeling_for_alignment).
	(vect_analyze_data_refs_alignment): Decision on whether and by how much
	to peel moved to vect_enhance_data_refs_alignment. Call
	vect_supportable_dr_alignment.

	(vect_compute_data_ref_alignment): Set STMT_VINFO_VECTYPE.
	(vect_compute_data_refs_alignment): Return bool. Consider return value
	of vect_compute_data_ref_alignment and return true/false accordingly.
	(vect_enhance_data_refs_alignment): Consider return value of
	vect_compute_data_refs_alignment and return true/false accordingly.

	(vect_supportable_dr_alignment): New function.
	(vectorizable_store): Call vect_supportable_dr_alignment.
	(vectorizable_load): Call vect_supportable_dr_alignment. Alignment
	support checks moved from here to vect_supportable_dr_alignment.

	(vect_transform_loop): Avoid 80 columns overflow.

2004-11-03  Andrew Pinski  <pinskia@physics.uc.edu>

	* timevar.c (timevar_enable): Change from
	static.
	(timevar_push): Rename to ...
	(timevar_push_1): this and remove the
	enabled check.
	(timevar_pop): Rename to ...
	(timevar_pop_1): this and remove the
	enabled check.
	* timevar.h (POP_TIMEVAR_AND_RETURN): Use do/while loops.
	(timevar_pop): New macro.
	(timevar_push): New macro.
	(timevar_enable): Declare.

2004-11-03  Andrew Pinski  <pinskia@physics.uc.edu>

	* config/darwin.h (REAL_LIBGCC_SPEC): Define to use shared
	libgcc for shared libraries.

2004-11-03  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390-protos.h (s390_split_access_reg): Add prototype.
	* config/s390/s390.c (s390_split_access_reg): New function.
	(regclass_map): Add access registers.
	(get_thread_pointer): Use access register instead of UNSPEC_TP.
	* config/s390/s390.h (FIRST_PSEUDO_REGISTER): Set to 38.
	(ACCESS_REGNO_P, ACCESS_REG_P): New macros.
	(TP_REGNUM): New define.
	(FIXED_REGISTERS, CALL_USED_REGISTERS, CALL_REALLY_USED_REGISTERS,
	REG_ALLOC_ORDER): Add access registers.
	(HARD_REGNO_NREGS, HARD_REGNO_MODE_OK, CLASS_MAX_NREGS,
	CANNOT_CHANGE_MODE_CLASS): Support access registers.
	(enum reg_class): Add ACCESS_REGS.
	(REG_CLASS_NAMES, REG_CLASS_CONTENTS): Likewise.
	(REG_CLASS_FROM_LETTER): Add 't' constraint.
	(REGISTER_NAMES): Add access registers.
	* config/s390/s390.md (UNSPEC_TP): Remove.
	("*movdi_64"): Add access register alternatives.  Provide splitters
	to split DImode access register <-> GPR moves into SImode moves.
	("*movsi_zarch", "*movsi_esa"): Add access register alternatives.
	("movstrictsi"): Likewise.
	("get_tp_64", "get_tp_31"): Reimplement using access registers.
	("set_tp_64", "set_tp_31"): Likewise.
	("*set_tp"): New insn.

2004-11-03  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-phinodes.c (resize_phi_node): Copy only a portion of
	the PHI node currently in use.

2004-11-03  Andrew Pinski  <pinskia@physics.uc.edu>

	PR tree-opt/18231
	* tree.c (staticp) <case FUNCTION_DECL>: Nested functions are static
	also.

2004-11-03  Andrew MacLeod  <amacleod@redhat.com>

	PR tree-optimization/18270
	* tree-outof-ssa.c (analyze_edges_for_bb): If a block has incoming
	abnormal edges, commit all pending stmts on incoming edges.

2004-11-03  Ulrich Weigand  <uweigand@de.ibm.com>

	* tree-ssa-loop-ivopts.c (get_address_cost): Offset zero does not
	cause extra costs.  Generate canonical RTL.

2004-11-02  Daniel Berlin  <dberlin@dberlin.org>

	* lambda-code.c (lambda_compute_auxillary_space): Update comments.
	(lambda_compute_target_space). Ditto.
	* lambda.h (lambda_trans_matrix): Ditto.
	(lambda_linear_expression): Ditto.
	(lambda_body_vector): Ditto.
	(lambda_loopnest): Ditto.
	* tree-loop-linear.c (gather_interchange_stats): Combine tests,
	update comments, and remove pointless addition of 0.
	(linear_transform_loops): Update comments.

2004-11-03  Sebastian Pop  <pop@cri.ensmp.fr>

	* tree.c (tree_fold_gcd): Use FLOOR_MOD_EXPR instead of
	CEIL_MOD_EXPR.

2004-11-03 Jeff Law  <law@redhat.com>

	* predict.c (struct block_info_def): Kill "tovisit" field.
	(propagate_freq): Accept new "tovisit" parameter.  Change
	read/write access methods for "tovisit" to check the "tovisit"
	bitmap instead of a bit in block_info_def.
	(estimate_loops_at_level): Allocate "tovisit" bitmap.  Pass
	it to propagate_freq.

	* stmt.c (expand_case): Speed up code to detect duplicate case
	label targets and count unique case label targets.

2004-11-03  Kazu Hirata  <kazu@cs.umass.edu>

	* cppdefault.c, cppdefault.h, timevar.h: Update copyright.

2004-11-03  Kazu Hirata  <kazu@cs.umass.edu>

	* bitmap.h, dbxout.c, tree-mudflap.c: Fix comment formatting.

2004-11-03  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-cfg.c (find_taken_edge): Abort if we are given a
	statement that is neither COND_EXPR nor SWITCH_EXPR.

2004-11-02  Zdenek Dvorak  <dvorakz@suse.cz>

	* fold-const.c (fold): Reassociate also (x - mult) + mult and
	(mult - x) + mult.  Cast operands of expression after applying
	distributive law to the correct types.  Apply distributive law
	to a * c - b * c for all non-float types.

2004-11-02  Geoffrey Keating  <geoffk@apple.com>

	* configure.ac: Don't clear STMP_FIXINC or STMP_FIXPROTO just
	because we don't want to run them now; instead, set them to
	stmp-install-fixproto or stmp-install-fixinc.
	* Makefile.in (stmp-install-fixproto): New.
	(stmp-install-fixinc): New.
	* configure: Regenerate.

2004-11-02  Nathan Sidwell  <nathan@codesourcery.com>

	* flow.c (init_propagate_block_info): Use bitmap_empty_p on result
	of bitmap_xor.

2004-11-02  Ziemowit Laski  <zlaski@apple.com>

	* c-lang.c (LANG_HOOKS_TYPES_COMPATIBLE_P): Remove.
	(c_types_compatible_p): Move function definition...
	* c-objc-common.c (c_types_compatible_p): ...here.
	* c-objc-common.h (LANG_HOOKS_TYPES_COMPATIBLE_P): Moved here from
	c-lang.c.

2004-11-02  Steven Bosscher  <stevenb@suse.de>

	* cfgloop.h (struct loop): Update comment.
	* cse.c (cse_main): Remove obsolete comment.

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

2004-11-02  Andrew Pinski  <pinskia@physics.uc.edu>

	PR tree-opt/16808
	* tree-ssa.c (replace_immediate_uses): If we call fold_stmt, make sure
	that the vops get marked for renaming.

2004-11-02  Andreas Krebbel  <krebbel1@de.ibm.com>

	* config/s390/s390.md ("movcc"): Set type attribute.

2004-11-02  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-phinodes.c (add_phi_arg): Add an assertion that the
	edge already exists.

2004-11-02  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-phinodes.c (remove_phi_arg_num): Do not zero the
	element that's being removed.

2004-11-02  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-ssa-threadupdate.c (copy_phis_to_block): Install PHI
	arguments using PENDING_STMT.
	(thread_block): Call copy_phis_to_block after redirecting an
	edge.

2004-11-02  Nathan Sidwell  <nathan@codesourcery.com>

	* bitmap.h (bitmap_and, bitmap_and_into, bitmap_and_compl,
	bitmap_and_compl_into, bitmap_ior, bitmap_iot_into,
	bitmap_ior_compl, bitmap_xor, bitmap_xor_into): Produce void.
	(bitmap_ior_and_compl_into): Produce bool.
	(bitmap_union_of_diff): Rename to ...
	(bitmap_ior_and_compl): ... here. Produce bool.
	* bitmap.c (bitmap_ior_and_compl_into): Return bool. Use
	bitmap_operation directly.
	(bitmap_union_of_diff): Rename to ...
	(bitmap_ior_and_compl): ... here. Return bool, use
	bitmap_operation directly.
	* df.c (df_rd_transfer_function): Use bitmap_ior_and_compl.
	(df_ru_transfer_function, df_lr_transfer_function): Likewise.
	* global.c (modify_bb_reg_pav): Likewise.

	* bitmap.h (bitmap_equal_p): Return bool.
	(bitmap_intersect_p, bitmap_intersect_compl_p): Declare.
	* bitmap.c (bitmap_equal_p): Return bool. Compare directly.
	(bitmap_intersect_p, bitmap_intersect_compl_p): New.
	* flow.c (calculate_global_regs_live): Use bitmap_intersect_p and
	bitmap_intersect_compl_p.
	* ifcvt (dead_or_predicable): Likewise.

2004-11-02  Nathan Sidwell  <nathan@codesourcery.com>

	PR rtl-optimization/17104
	* config/rs6000/rs6000.c (rs6000_emit_move): Don't wrap small
	loads in zero_extend.

2004-11-02  Danny Smith  <dannysmith@users.sourceforge.net>

	PR debug/18242
	* toplev.c (debug_type_names): Remove "dwarf-1".

2004-11-02  Ben Elliston  <bje@au.ibm.com>

	* timevar.h (timevar_get): Remove.
	* timevar.c (timevar_get): Remove unused function.

2004-11-02  Joseph S. Myers  <joseph@codesourcery.com>

	* doc/include/texinfo.tex: Update from Texinfo CVS.

2004-11-02  Ben Elliston  <bje@au.ibm.com>

	* cppdefault.h (cpp_SYSROOT): Remove.
	* cppdefault.c (cpp_SYSROOT): Likewise.

2004-11-01  Andrew MacLeod  <amacleod@redhat.com>

	PR tree-optimization/16447
	* tree-cfg.c (bsi_commit_one_edge_insert): Rename from
	bsi_commit_edge_inserts_1, and make funtion external.  Return new block.
	(bsi_commit_edge_inserts): Use renamed bsi_commit_one_edge_insert.
	* tree-optimize.c (pass_cleanup_cfg_post_optimizing): Enable listing.
	* tree-flow.h (bsi_commit_one_edge_insert): Extern decl.
	* tree-outof-ssa.c (rewrite_trees): Don't commit edges here.
	(same_stmt_list_p): New.  Return TRUE if edge is to be forwarded.
	(identical_copies_p): New.  Return true is two copies are the same.
	(identical_stmt_lists_p): New.  Return true if stmt lists are the same.
	(analyze_edges_for_bb): New.  Determine how best to insert edge stmts
	for a basic block.
	(perform_edge_inserts): New.  Determine what to do with all stmts that
	have been inserted on edges.
	(remove_ssa_form): Analyze and commit edges from here.

2004-11-01  Andrew Pinski  <pinskia@physics.uc.edu>

	PR bootstrap/18232
	* bitmap.h (bmp_iter_end_p): Take a const pointer instead of a struct.
	(EXECUTE_IF_SET_IN_BITMAP): Update call to bmp_iter_end_p.
	(EXECUTE_IF_AND_COMPL_IN_BITMAP): Likewise.
	(EXECUTE_IF_AND_IN_BITMAP): Likewise.

2004-11-01  Joseph S. Myers  <joseph@codesourcery.com>

	PR c/18239
	* c-decl.c (get_parm_info): Allow FUNCTION_DECLs to appear amongst
	parameter declarations.

2004-11-01  Andreas Krebbel  <krebbel1@de.ibm.com>

	* config/s390/s390.c (regclass_map): Put reg 33 (cc) to CC_REGS group.
	(s390_secondary_input_reload_class)
	(s390_secondary_output_reload_class): Use GENERAL_REGS to reload a cc
	register.
	(s390_expand_cmpmem): Enable cmpmem implementation.
	* config/s390/s390.h (reg_class, REG_CLASS_NAMES, REG_CLASS_CONTENTS):
	Added three new classes: CC_REGS, ADDR_CC_REGS, GENERAL_CC_REGS.
	(REG_CLASS_FROM_LETTER): New constraint 'c' added.
	* config/s390/s390.md ("movcc"): New insn pattern.
	* doc/md.texi: Document 'c' constraint for s390.

2004-11-01  Nathan Sidwell  <nathan@codesourcery.com>

	PR c++/18064
	* doc/extend.texi (Deprecated Features): Deprecate G++ covariant
	extension.

2004-10-16  Daniel Berlin  <dberlin@dberlin.org>

	Fix PR tree-optimization/17672
	Fix PR tree-optimization/18168

	* lambda-code.c (lambda_lattice_compute_base): Fix reversed
	assert test.
	(gcc_tree_to_linear_expression): Add extra to existing constant.
	(depth_of_nest): Factor out function used in various places.
	(gcc_loop_to_lambda_loop): Clean up code a little bit. No
	functional changes.
	(find_induction_var_from_exit_cond): Stop guessing, and just
	get the right answer :).
	(gcc_loopnest_to_lambda_loopnest): Remove useless pre-allocation.
	Print out message about result of attempt to create perfect nest.
	(lbv_to_gcc_expression): Add type argument, use it to do math
	and induction variable creation.
	(lle_to_gcc_expression): Ditto.
	(lambda_loopnest_to_gcc_loopnest): Create new iv with same type as
	oldiv. Pass type argument to lle_to_gcc_expression and
	lbv_to_gcc_expression.
	Reset number of iterations after transformation.
	(perfect_nestify): Remove useless pre-allocation, and cleanup
	a small amount.

	* tree-data-ref.c (build_classic_dist_vector): Return false for
	dependences completely outside of the loop nest we asked about.
	(build_classic_dir_vector): Ditto.
	(compute_data_dependences_for_loop): Only add dependence relations
	inside the loop we asked about.

	* tree-loop-linear.c (linear_transform_loops): Use DDR_SIZE_VECT.
	Compute immediate uses.

	* tree-optimize.c: Move linear_transform_loops to before ivcanon.

2004-11-01  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-cfg.c (thread_jumps): Fix a comment typo.

2004-11-01  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-cfg.c (thread_jumps): Fix a comment typo.

2004-10-31  Nicolas Pitre <nico@cam.org>

	* config/arm/ieee754-sf.S (floatdisf): Fix regression with
	values smaller than 2^32.

2004-10-31 Jeff Law  <law@redhat.com>

	* cfgloop.h (struct loop): Remove unused "nodes" field.
	* timevar.def (TV_TREE_LOOP_BOUNDS): New.
	* tree-data-ref.c (find_data_references_in_loop): Use get_loop_body
	instead of calling flow_bb_inside_loop_p for every basic block
	in the function.
	* tree-ssa-loop.c (pass_record_bounds): Use TV_TREE_LOOP_BOUNDS.

2004-10-31  Graham Stott <graham.stott@btinternet.com>

	* config/pa/pa.md: (prefetch_64, prefetch_32): Fix typo.  Use
	INT_5_BITS instead of VAL_5_BITS_P.

2004-10-31  Roger Sayle  <roger@eyesopen.com>

	PR middle-end/14521
	* tree-inline.c (inline_forbidden_p_1): Use %qF instead of '%F'
	for consistent quoting in diagnostic messages.
	(expand_call_inline): Likewise.
	* tree-optimize.c (tree_rest_of_compilation): Likewise.
	* tree-ssa.c (warn_uninitialized_var): Likewise.
	(warn_uninitialized_phi): Likewise.

2004-10-31  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.c (mips_cannot_change_mode_class): Use a stricter
	mode check.

2004-10-31  Kazu Hirata  <kazu@cs.umass.edu>

	* c-common.c: Fix a comment typo.

2004-10-31  Jason Merrill  <jason@redhat.com>

	PR middle-end/17526
	* tree-gimple.c (is_gimple_mem_rhs): Also require a val for
	aggregate types that are not BLKmode.

2004-10-30  Ziemowit Laski  <zlaski@apple.com>

	* c-common.h (objc_lookup_ivar): Add second parameter to
	prototype.
	* c-typeck.c (build_external_ref): After looking up symbol,
	pass it to objc_lookup_ivar() to decide whether it or the
	ivar should be used, rather than deciding the issue locally.
	* stub-objc.c (objc_lookup_ivar): Add an OTHER parameter,
	which is simply returned in the non-ObjC case.

2004-10-30  Danny Smith  <dannysmith@users.sourceforge.net>

	* sdbout.c (sdbout_symbol): Do not output type .def statements
	for builtin types.

2004-10-30  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* c-common.c (catenate_strings): New.
	(c_parse_error): Use it.  Don't over-escape.

2004-10-30  Kaz Kojima  <kkojima@gcc.gnu.org>

	* config/sh/sh.c (calc_live_regs): Declare reg as unsigned and
	modify the for loop expressions for it.  Remove unnecessary casts.
	(sh_expand_prologue): Declare reg as unsigned.
	(sh_gimplify_va_arg_expr): Initinalize lab_over.
	(sh_handle_sp_switch_attribute): Add const qualifier appropriately.

2004-10-30  Geoffrey Keating  <geoffk@apple.com>

	* doc/invoke.texi (Darwin Options): Improve description of
	how the subtype is chosen.

2004-10-30  Roger Sayle  <roger@eyesopen.com>

	PR middle-end/18096
	* config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Check that
	the stack adjustment, "size", is valid for Pmode.  If the stack
	frame is too large, generate a trap insn and issue a warning.

2004-10-30  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-ssa-dom.c: Fix comment typos.

2004-10-30  Kaz Kojima  <kkojima@gcc.gnu.org>

	* config/sh/sh.c (prepare_move_operands): Use operands[0]
	for the output rtl if no_new_pseudos is set.  Remove redundant
	line.

2004-10-30  Joseph S. Myers  <joseph@codesourcery.com>

	PR c/16666
	* c-decl.c (start_function): Don't check for DECL_BUILT_IN when
	determining whether to copy parameter types from a previous
	prototype declaration.

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

	PR rtl-optimization/17581
	* cselib.c (cselib_process_insn): The last instruction of a libcall
	block, with the REG_RETVAL note, should be considered in the libcall.
	* gcse.c (do_local_cprop): Allow constants to be propagated outside
	of libcall blocks.
	(adjust_libcall_notes): Use simplify_replace_rtx instead of
	replace_rtx to avoid creating invalid RTL in REG_RETVAL notes.

2004-10-30  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-phinodes.c (create_phi_node): Don't zero PHI_REWRITTEN.

2004-10-29 Jeff Law  <law@redhat.com>

	* tree-ssa-dom.c (struct edge_info): New structure holding
	edge equivalences and edge redirection information.
	(get_eq_expr_value, record_dominating_conditions): Kill.
	(propagate_to_outgoing_edges): Renamed from cprop_into_phis.
	Call record_edge_info.
	(allocate_edge_info, free_edge_info): New.
	(tree_ssa_dominator_optimize): Use propagate_to_outgoing_edges
	rather than cprop_into_phis.  Free all edge infos before threading
	jumps.
	(thread_across_edge): Allocate new edge info structures as needed
	and store the redirection target into the edge info structure
	instead of the edge's AUX field.
	(dom_opt_initialize_block): Mark unused argument with ATTRIBUTE_UNUSED.
	(record_equivalence_from_incoming_edge): Lose unnecessary argument.
	Revamp code which finds and records equivalences associated with
	edges to use saved data in the edge_info structure.
	(record_equivalencs_from_phis): Similarly.
	(dom_opt_finalize_block): Revamp code which finds and records
	equivalences associated with edges to use saved data in the
	edge_info structure.
	(build_and_record_new_cond): New function.
	(record_conditions): Use build_and_record_new_cond to record
	dominating conditions.
	(record_edge_info): New function.
	(record_range): Tighten test for conditions which create
	useful range records.

2004-10-29  Geoffrey Keating  <geoffk@apple.com>

	* config/i386/darwin.h (ASM_SPEC): Simplify.
	(SUBTARGET_EXTRA_SPECS): Add darwin_subarch spec.
	* config/rs6000/darwin.h (DARWIN_SUBARCH_SPEC): New.
	(SUBTARGET_EXTRA_SPECS): Add darwin_subarch spec.
	* config/darwin.h (LINK_COMMAND_SPEC): Don't pass -arch here.
	(LINK_SPEC): Do pass -arch here.  Handle -force_cpusubtype_ALL
	in all cases.  Pass the right -arch or -arch_only based on -mcpu.
	(ASM_SPEC): Handle -force_cpusubtype_ALL.
	* doc/invoke.texi (Darwin Options): Improve documentation for
	Darwin linker (and libtool) switches.

	* config/rs6000/darwin-fallback.c: Include <mach/thread_status.h>.

2004-10-29  Stan Shebs  <shebs@apple.com>

	* config/rs6000/darwin-tramp.asm: Make more 64-bit-friendly.

2004-10-29  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-phinodes.c (allocate_phi_node): New.
	(make_phi_node, resize_phi_node): Use it.

2004-10-29  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/sysv4.h (TARGET_POWER): Define as 0.
	* config/rs6000/darwin.h (TARGET_POWER): Define as 0.

2004-10-29  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-phinodes.c (make_phi_node, resize_phi_node): Don't zero
	the whole PHI node.
	* tree.h (tree_phi_node): Tell the garbage collector to chase
	num_args arguments.

2004-10-29  Richard Earnshaw  <rearnsha@arm.com>

	* opts.c (decode_options): Lower the crossjump threshold for -Os.

2004-10-29  Diego Novillo  <dnovillo@redhat.com>

	* tree.h (struct tree_ssa_name): Remove field 'equiv'.

2004-10-28  Nathan Sidwell  <nathan@codesourcery.com>

	* bitmap.h (bitmap_empty_p): New.
	(bitmap_and, bitmap_and_into, bitmap_and_compl,
	bitmap_and_compl_into, bitmap_ior, bitmap_ior_into,
	bitmap_ior_compl, bitmap_xor, bitmap_xor_into): New bitmap
	operation macros.
	(bitmap_ior_and_compl): Rename to ...
	(bitmap_ior_and_compl_into): ... here.
	* bitmap.c (bitmap_equal_p): Use bitmap_xor.
	(bitmap_ior_and_compl): Rename to ...
	(bitmap_ior_and_compl_into): ... here. Adjust. Return changed
	flag.
	(bitmap_union_of_diff): Use renamed bitmap functions.
	* basic-block.h (AND_REG_SET, AND_COMPL_REG_SET, IOR_REG_SET,
	XOR_REG_SET, IOR_AND_COMPL_REG_SET): Likewise.
	* cfgrtl.c (safe_insert_insn_on_edge): Likewise.
	* df.c (df_bb_rd_local_compute)
	* flow.c (calculate_global_regs_live,
	init_propagate_block_info): Likewise.
	* ifcvt.c (find_if_case_1, find_if_case_2,
	dead_or_predicable): Likewise.
	* ra-build.c (union_web_part_roots, livethrough_conflicts_bb,
	reset_conflicts, conflicts_between_webs): Likewise.
	* ra-rewrite.c (reloads_to_loads, rewrite_program2,
	detect_web_parts_to_rebuild): Likewise.
	* sched-ebb.c (compute_jump_reg_dependencies): Likewise.
	* tree-int-ssa.c (insert_phi_nodes_for, rewrite_into_ssa): Likewise.
	* tree-sra.c (decide_instantiations): Likewise.
	* tree-ssa-alias.c (create_name_tags,
	merge_pointed_to_info): Likewise.
	* tree-ssa-dom.c (tree_ssa_dominator_optimize): Likewise.
	* tree-ssa-loop-im.c (move_computations): Likewise.
	* tree-ssa-operands.c (get_call_expr_operands): Likewise.
	* tree-ssa-pre.c (fini_pre): Likewise.
	* tree-ssa.c (verify_flow_sensitive_alias_info): Likewise.
	* tree-ssanames.c (any_marked_for_rewrite_p): Likewise.
	* tree-vectorizer.c (vectorize_loops): Likewise.

2004-10-29  Nick Clifton  <nickc@redhat.com>

	config/mn10300/mn10300.h (CONDITIONAL_REGISTER_USAGE): When
	adding the PIC register to the fixed_regs array, also add it
	to the call_used_regs array.

2004-10-29  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* gthr-posix.h (__gthread_recursive_mutex_init_function): Guard
	with #ifdef PTHREAD_MUTEX_RECURSIVE/#endif pairs.

2004-10-28  Daniel Berlin  <dberlin@dberlin.org>

	* tree-into-ssa.c (rewrite_virtual_phi_arguments): New function.
	(rewrite_blocks): Modify argument, and use it to decide which
	function to call.
	(rewrite_def_def_chains): Call rewrite_blocks with true here.
	(rewrite_into_ssa): and call it with false here.

2004-10-29  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-phinodes.c (add_phi_arg): Turn an "if" that always
	triggers into gcc_assert.

2004-10-28  Diego Novillo  <dnovillo@redhat.com>

	PR tree-optimization/16728
	* tree-flow.h (get_ptr_info): Declare.
	* tree-ssa-alias.c (get_ptr_info): Make extern.
	* tree-ssa-copy.c (merge_alias_info): Merge flow-sensitive
	alias information.

2004-10-28  Stan Shebs  <shebs@apple.com>

	* config/rs6000/darwin.h (SUBTARGET_EXTRA_SPECS): Handle -m64.
	* config/rs6000/rs6000.c (rs6000_darwin_file_start): Add ppc64
	case.

2004-10-28  Frank Ch. Eigler  <fche@redhat.com>

	* tree-mudflap.c (mudflap_init): Mark cache-lookup decls to
	prevent their later unnecessary registration.
	(mf_build_check_statement_for): Remove "addr" argument, and
	related "__mf_value" generated code.  Update callers.
	(mf_decl_eligible_p): New function, factored from mx_register_decls.
	(mx_register_decls): Call it.
	(mf_xform_derefs_1): Rewrite COMPONENT_REF and ARRAY_REF cases
	to restore support for complex nested expressions.
	(mudflap_enqueue_decl): Simplify.  Move registration call emission
	out ...
	(mudflap_finish_file): ... to here.
	(mudflap_enqueue_constant): Remove dump code.

2004-10-28  Zack Weinberg  <zack@codesourcery.com>

	PR 18199
	* dbxout.c (dbxout_begin_complex_stabs_noforcetext): New function.
	(DBX_FINISH_STABS): Add (unused by default) SYM parameter.
	(dbxout_finish_complex_stabs): Update to match.
	(dbxout_symbol_location): Call emit_pending_bincls_if_required
	and FORCE_TEXT before DBX_STATIC_BLOCK_START.  Use
	dbxout_begin_complex_stabs_noforcetext.
	* xcoffout.h (DBX_FINISH_STABS): Restore special case for
	N_GSYM, using new SYM parameter.  Correct logic for special
	cases for N_FUN.

	* varasm.c (function_section): If DECL is NULL_TREE, don't try
	to do anything else.  Do not call get_insns if cfun or
	cfun->emit are NULL.

2004-10-28  Adam Nemet  <anemet@lnxw.com>

	PR middle-end/18160
	* c-typeck.c (c_mark_addressable): Issue error if address of a
	register variable is taken.  Use "%qD" to print DECL_NAME.

2004-10-28  Diego Novillo  <dnovillo@redhat.com>

	* opts.c (decode_options): Don't run PRE at -Os.

2004-10-28  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.md (movqicc_internal): Allow exactly one
	zero in the conditional.
	(movhicc_internal, movsicc_internal, movdicc_internal): Likewise.

2004-10-28  Richard Henderson  <rth@redhat.com>

	* cse.c (memory_extend_rtx): Remove.
	(cse_main): Don't set it.
	(cse_insn): Use a local buffer instead.

2004-10-28  Andreas Krebbel  <krebbel1@de.ibm.com>

	* profile.c (branch_prob): Call to init_edge_profiler added.
	* rtl-profile.c (rtl_init_edge_profiler): New function.
	(rtl_gen_edge_profiler): Replaced call to insert_insn_on_edge with
	call to safe_insert_insn_on_edge.
	(rtl_profile_hooks): rtl_init_edge_profiler added.
	* tree-profile.c (tree_init_edge_profiler): New function.
	(tree_profile_hooks): tree_init_edge_profiler added.
	* value-prof.h (profile_hooks) init_edge_profiler prototype added.

2004-10-28  Nick Clifton  <nickc@redhat.com>

	* config/iq2000/iq2000.c (iq2000_expand_epilogue): Use
	emit_jump_insn() to generate the return instruction.

2004-10-28  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-phinodes.c: Remove trailing whitespace.

2004-10-28  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-ssa-loop-ivopts.c: Fix a comment typo.
	* doc/invoke.texi: Fix a typo.

2004-10-28  Kazu Hirata  <kazu@cs.umass.edu>

	* Makefile.in (OBJS-common): Remove duplicates.

2004-10-28  Kazu Hirata  <kazu@cs.umass.edu>

	* lambda-code.c (nestify_update_pending_stmts): Remove.
	(perfect_nestify): Use flush_pending_stmts instead of
	nestify_update_pending_stmts.
	* tree-cfg.c (tree_make_forwarder_block): Use
	flush_pending_stmts.
	* tree-flow.h: Add a prototype for flush_pending_stmts.
	* tree-ssa-loop-manip.c (tree_duplicate_loop_to_header_edge):
	Use flush_pending_stmts.
	(lv_update_pending_stmts): Remove.
	(tree_ssa_loop_version): Use flush_pending_stmts instead of
	lv_update_pending_stmts.
	* tree-ssa.c (flush_pending_stmts): New.

2004-10-28  Ulrich Weigand  <uweigand@de.ibm.com>

	PR target/15286
	* final.c (alter_subreg): Compute correct offset to use with
	paradoxical SUBREGs of memory operands.
	* recog.c (general_operand): Allow paradoxical SUBREGs of
	memory operands after reload.
	* simplify-rtx.c (simplify_gen_subreg): Fail if simplify_subreg
	has failed when passed a hard register.

2004-10-28  Aldy Hernandez  <aldyh@redhat.com>

	* function.c (assign_parm_setup_block): Handle parallels correctly.

2004-10-28  Kaz Kojima  <kkojima@gcc.gnu.org>

	* final.c (shorten_branches): Initialize flags structure.

2004-10-28  Nathan Sidwell  <nathan@codesourcery.com>

	* tree.c (int_cst_node, int_cst_hash_table): New variables.
	(init_ttree): Initialize them.
	(int_cst_hash_hash, int_cst_hash_eq): New hashing functions.
	(build_int_cst_wide): Use hash table for oversized integers.

2004-10-28  Nick Clifton  <nickc@redhat.com>

	* config/m32r/m32r.h (DBX_OUTPUT_SOURCE_LINE): Define
	begin_label.

2004-10-27  Richard Henderson  <rth@redhat.com>

	PR middle-end/18163
	* expr.c (emit_group_load): Don't go force temporary for memory
	or concat source.
	(emit_group_store): Similarly.

2004-10-27  Andrew Pinski  <pinskia@physics.uc.edu>

	PR other/18186
	* common.opt (--param): Fix spelling of parameter.

2004-10-27  Andrew Pinski  <pinskia@physics.uc.edu>

	PR tree-opt/17529
	* tree-cfg.c (remove_useless_stmts_1) <case SWITCH_EXPR>:
	Don't fold statement.
	<case ASM_EXPR>: Fold the statement.

2004-10-28  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-ssa-dce.c (mark_stmt_if_obviously_necessary)
	<COND_EXPR>: Use EDGE_COUNT instead of GOTO_DESTINATION.

2004-10-28  Joseph S. Myers  <jsm@polyomino.org.uk>

	* doc/contrib.texi, doc/cpp.texi, doc/cppopts.texi,
	doc/extend.texi, doc/gcov.texi, doc/install.texi, doc/invoke.texi,
	doc/libgcc.texi, doc/md.texi, doc/passes.texi,
	doc/sourcebuild.texi, doc/tm.texi: Improve Texinfo formatting.

2004-10-28  Joseph S. Myers  <jsm@polyomino.org.uk>

	* doc/c-tree.texi, doc/cpp.texi, doc/implement-c.texi,
	doc/invoke.texi, doc/md.texi, doc/passes.texi, doc/tm.texi: Put
	punctuation outside quotes.

2004-10-27  David Mosberger  <davidm@hpl.hp.com>
	    James E Wilson  <wilson@specifixinc.com>

	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.

2004-10-27  Geoffrey Keating  <geoffk@apple.com>

	* config/rs6000/rs6000.c (rs6000_attribute_table): Add
	SUBTARGET_ATTRIBUTE_TABLE.
	* config/darwin.h (ASM_WEAKEN_DECL): Handle weak_import.
	(SUBTARGET_ATTRIBUTE_TABLE): Define.
	* config/darwin.c (darwin_handle_weak_import_attribute): New.
	(HAVE_DEAD_STRIP): Delete.
	(no_dead_strip): Don't test HAVE_DEAD_STRIP.
	* config/darwin-protos.h (darwin_handle_weak_import_attribute):
	Prototype.

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

	* config/darwin.h (GTHREAD_USE_WEAK): Define.

2004-10-28  Ben Elliston  <bje@au.ibm.com>

	* params.def (PARAM_SRA_MAX_STRUCTURE_SIZE): New.
	(PARAM_SRA_FIELD_STRUCTURE_RATIO): Likewise.
	* params.h (SRA_MAX_STRUCTURE_SIZE): New.
	(SRA_FIELD_STRUCTURE_RATIO): Likewise.
	* tree-sra.c: Include "params.h".
	(decide_block_copy): Use new parameters.
	* doc/invoke.texi (Optimize Options): Document new SRA pass
	parameters sra-max-structure-size and sra-field-structure-ratio.

2004-10-27  Nicolas Pitre <nico@cam.org>

	* config/arm/ieee754-df.S (floatdidf): Fix regression with big values.

2004-10-27  Zdenek Dvorak  <dvorakz@suse.cz>

	PR tree-optimization/18048
	* fold-const.c (try_move_mult_to_index): New function.
	(fold): Use try_move_mult_to_index.
	* tree-ssa-loop-ivopts.c (try_add_cand_for): Prefer common candidates.
	* tree-ssa-loop-niter.c (number_of_iterations_cond): Produce
	an all-ones unsigned constant without extra bits.
	* tree.c (build_low_bits_mask): New function.
	* tree.h (build_low_bits_mask): Declare.

2004-10-27  David Edelsohn  <edelsohn@gnu.org>

	PR target/17956
	* config/rs6000/rs6000.md (maxsf3): Add !flag_trapping_math to
	final condition.
	(minsf3): Same.
	(maxdf3): Same.
	(mindf3): Same.

2004-10-27  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-cfg.c (thread_jumps): Speed up by reordering the two
	conditions for entering basic blocks into worklist.

2004-10-27  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-cfg.c (thread_jumps): Speed up by pretending to have
	ENTRY_BLOCK_PTR in worklist.

2004-10-27  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-ssa-dce.c (mark_stmt_if_obviously_necessary)
	<GOTO_EXPR>: Don't let an explicit GOTO_EXPR slip through.

2004-10-27  Daniel Berlin <dberlin@dberlin.org>

	Fix PR tree-optimization/17133

	* tree-cfg.c (rewrite_to_new_ssa_names_bb): Also rewrite must
	def kill operand.

	* tree-flow-inline.h: V_MUST_DEF_OP became V_MUST_DEF_RESULT.
	(get_v_must_def_result_ptr): Modify for new structure of
	v_must_defs array.
	(get_v_must_def_kill_ptr): New.
	(op_iter_next_use): Add support for the kill that occurs in V_MUST_DEFs.
	(op_iter_next_tree): Ditto. Also V_MAY_DEF_OP became V_MAY_DEF_RESULT.
	(op_iter_next_def): V_MAY_DEF_OP became V_MAY_DEF_RESULT.
	(op_iter_init): Initialize new mustu members.
	(op_iter_next_mustdef): New function.
	(op_iter_init_mustdef): Ditto.

	* tree-flow.h (rewrite_def_def_chains): New function.

	* tree-into-ssa.c (mark_def_sites): Handle mustdefkill operands.
	(ssa_mark_def_sites): Ditto.
	(rewrite_stmt): Ditto.
	(ssa_rewrite_stmt): Ditto.
	(rewrite_blocks): Factor out from rewrite_into_ssa.
	(mark_def_block_sites): Ditto.
	(rewrite_def_def_chains): New function, just rewrites def-def
	chains without phi node insertion.

	* tree-pass.h (TODO_fix_def_def_chains): New todo flag.

	* tree-optimize.c (execute_todo): Handle TODO_fix_def_def_chains.

	* tree-pretty-print.c (dump_vops): Print out MUST_DEF's so that
	they include the rhs now.

	* tree-ssa-ccp.c (visit_assignment): V_MUST_DEF_OP became
	V_MUST_DEF_RESULT.

	* tree-ssa-dce.c (mark_operand_necessary): Add phionly argument.
	Update callers.
	(mark_really_necessary_kill_operand_phis): New function.
	(perform_tree_ssa_dce): Call it.
	(pass_dce): Add TODO_fix_def_def_chains.
	(pass_cd_dce): Ditto.

	* tree-ssa-loop-im.c (determine_max_movement): Look at kills as
	well.
	(rewrite_mem_refs): Ditto.

	* tree-ssa-loop-manip.c (find_uses_to_rename_stmt): Look at kills
	as well.

	* tree-ssa-operands.c (allocate_v_may_def_optype):
	v_may_def_operand_type_t became v_def_use_operand_type_t.
	(allocate_v_must_def_optype) Ditto.
	(finalize_ssa_v_must_defs): Update for new operand type, as well
	as setting the use portion as well.
	(copy_virtual_operands): Copy the kill operand as well.
	(create_ssa_artficial_load_stmt): V_MUST_DEF_OP became
	V_MUST_DEF_RESULT.

	* tree-ssa-operands.h (v_may_def_operand_type): Renamed to
	v_def_use_operand_type.
	(v_must_def_optype_d): Use v_def_use_operand_type.
	(V_MUST_DEF_OP_*): Renamed to V_MUST_DEF_RESULT_*
	(V_MUST_DEF_KILL_*): New macros.
	(struct ssa_operand_iterator_d): Add num_v_mustu and v_mustu_i
	members.
	Rename existing must_i and num_v_must members to mustd_i and
	num_v_mustd.
	(SSA_OP_VMUSTDEFKILL): New flag.
	(SSA_OP_VIRTUAL_KILLS): New flag.
	(SSA_OP_ALL_OPERANDS): Add in SSA_OP_ALL_KILLS.
	(SSA_OP_ALL_KILLS): New flag.
	(FOR_EACH_SSA_MUSTDEF_OPERAND): New macro.

	* tree-ssa.c (verify_ssa): Verify virtual kills as well.

	* tree-vectorizer.c (vect_create_data_ref_ptr): V_MUST_DEF_OP
	became V_MUST_DEF_RESULT.
	(rename_variables_in_bb): Rename kill pointer as well.

	* tree-dfa.c (compute_immediate_uses_for_stmt): Add kills into the
	immediate uses.

2004-10-27  Richard Sandiford  <rsandifo@redhat.com>

	* dbxout.c (dbxout_source_line): Move declaration of begin_label to
	the block that needs it.

2004-10-27  Zack Weinberg  <zack@codesourcery.com>

	* dbxout.c (dbxout_finish_complex_stabs): Mark 'line' variable
	ATTRIBUTE_UNUSED.

2004-10-27  Zack Weinberg  <zack@codesourcery.com>

	* c-lex.c (cb_def_pragma): Clean up code for making location
	palatable to diagnostic.c.

2004-10-27  Steven Bosscher  <stevenb@suse.de>

	PR tree-optimization/17757
	* tree-phinodes.c (remove_phi_arg_num): Don't remove PHIs
	without any PHI arguments left.  Make sure the argument that
	we're supposed to remove exists at all.

2004-10-27  Paul Brook  <paul@codesourcery.com>

	* configure.ac: Don't test for [build] __cxa_atexit when building a
	cross compiler.
	* configure: Regenerate.

2004-10-27  Paul Brook  <paul@codeosurcery.com>

	* configure.ac: Use build_exeext not host_exeext when lookin for
	target tools.
	* configure: Regenerate.

2004-10-27  Andreas Krebbel  <krebbel1@de.ibm.com>

	* config/s390/s390.md ("*subdf3_cc"): Replaced plus by minus.

2004-10-27  Andreas Krebbel  <krebbel1@de.ibm.com>
	    patch originally created by Kelley Cook  <kcook@gcc.gnu.org>

	PR middle-end/14684
	* opts.c (OPT_fprofile_generate): Default to -funroll-loops
	to match -fprofile-use.

2004-10-27  Kazu Hirata  <kazu@cs.umass.edu>

	* config/rs6000/rs6000.c: Fix a comment typo.

2004-10-27  Zack Weinberg  <zack@codesourcery.com>

	* config/m32r/m32r.h (DBX_OUTPUT_SOURCE_LINE): Increment line
	counter.

2004-10-27  Andreas Schwab  <schwab@suse.de>

	* varasm.c (default_stabs_asm_out_destructor): Mark symbol as
	unused.
	(default_stabs_asm_out_constructor): Likewise.

2004-10-26  Geoffrey Keating  <geoffk@apple.com>

	* builtins.c (fold_builtin_unordered_cmp): Always bring both
	operands to the same type.

2004-10-26  James E Wilson  <wilson@specifixinc.com>

	PR target/18010
	* emit-rtl.c (emit_copy_of_insn_after): Copy RTX_FRAME_RELATED_P.

2004-10-26  Zack Weinberg  <zack@codesourcery.com>

	* dbxout.c: Include obstack.h.
	(ASM_STABS_OP): Take XCOFF_DEBUGGING_INFO into account in
	default definition.
	(ASM_STABD_OP, NO_DBX_MAIN_SOURCE_DIRECTORY, DBX_CONTIN_CHAR):
	Default-define here.
	(DBX_CONTIN_LENGTH): Move definition with others.
	(DBX_FINISH_STABS): New target macro.
	(current_sym_code, current_sym_value, current_sym_addr)
	(current_sym_nchars, CHARS, dbxout_continue)
	(print_int_cst_octal, print_octal, print_wide_int)
	(dbxout_prepare_symbol, dbxout_finish_symbol): Delete.
	(stabstr_ob, stabstr_last_contin_point): New variables.
	(NUMBER_FMT_LOOP): New improper macro.
	(dbxout_int, dbxout_stab_value_zero, dbxout_stab_value_label)
	(dbxout_stab_value_label_diff, dbxout_stab_value_internal_label)
	(dbxout_stab_value_internal_label_diff, dbxout_stabd)
	(dbxout_begin_stabn, dbxout_begin_stabn_sline)
	(dbxout_begin_simple_stabs, dbxout_begin_simple_stabs_desc)
	(dbxout_begin_complex_stabs, dbxout_finish_complex_stabs)
	(stabstr_C, stabstr_S, stabstr_I, stabstr_D, stabstr_U, stabstr_O)
	(stabstr_continue, DECL_ACCESSIBILITY_CHAR)
	New functions and/or proper function-like macros.
	(CONTIN): Use stabstr_continue, unconditionally.
	(get_lang_number): Define unconditionally, with ATTRIBUTE_UNUSED.
	(dbxout_init): Initialize stabstr_ob.  Check
	NO_DBX_MAIN_SOURCE_DIRECTORY.  Only write out the Ltext label
	if it was used.  Use the new interfaces.
	(dbxout_source_file): Remove file argument; always write to
	asm_out_file.  Use the new interfaces.
	(dbxout_type_method_1): Remove second argument which is always
	DECL_ASSEMBLER_NAME of the first argument.  Use the new interfaces.
	(dbxout_type_methods): Remove write-only variables.  Use the
	new interfaces.
	(dbxout_parms): Refactor to remove code duplicated in each of
	several successive if-else-if blocks.  Use the new interfaces.
	(dbxout_function_end, emit_bincl_stab, dbxout_end_source_file)
	(dbxout_source_line, dbxout_finish, dbxout_type_index)
	(dbxout_type_fields, dbxout_range_type, dbxout_type, dbxout_type_name)
	(dbxout_class_name_qualifiers, dbxout_symbol, dbxout_symbol_location)
	(dbxout_symbol_name, dbxout_reg_parms, dbxout_args)
	(dbx_output_lbrac, dbx_output_rbrac, dbxout_block):
	Use the new interfaces.
	* Makefile.in (dbxout.o): Update dependencies.

	* defaults.h: Don't define ASM_STABD_OP.
	* output.h: Prototype new dbxout_* interfaces.
	* system.h: Poison DBX_OUTPUT_GCC_MARKER and DBX_FINISH_SYMBOL.
	* varasm.c: Don't define ASM_STABS_OP.
	(default_stabs_asm_out_constructor, default_stabs_asm_out_destructor):
	Use the new dbxout.c interfaces.  Call sorry if neither
	DBX_DEBUGGING_INFO nor XCOFF_DEBUGGING_INFO is defined.

	* xcoffout.h: Don't define ASM_STABS_OP.
	(DBX_FINISH_SYMBOL): Rewrite and rename DBX_FINISH_STABS.
	(DBX_OUTPUT_MAIN_SOURCE_DIRECTORY, DBX_OUTPUT_GCC_MARKER): Delete.
	(NO_DBX_MAIN_SOURCE_DIRECTORY, NO_DBX_GCC_MARKER): Define.
	(DBX_OUTPUT_MAIN_SOURCE_FILE_END): Change bare block to
	do { ... } while (0) idiom.

	* config/alpha/alpha.c (num_source_filenames): Export.
	* config/alpha/alpha.h (num_source_filenames): Declare.
	(DBX_OUTPUT_SOURCE_LINE): Use new interfaces.
	(SDB_OUTPUT_SOURCE_LINE): Add missing newline.
	* config/m32r/m32r.h (DBX_OUTPUT_SOURCE_LINE): Use new interfaces.
	Always use .debugsym.  Update commentary.
	* config/mips/mips.h (DBX_OUTPUT_SOURCE_LINE): Use new interfaces.
	(SDB_OUTPUT_SOURCE_LINE): Add missing newline.
	* config/rs6000/linux64.h (DBX_OUTPUT_SOURCE_LINE, DBX_OUTPUT_BRAC):
	Use new interfaces.
	* config/rs6000/rs6000.c: If TARGET_MACHO, include gstab.h.
	(macho_branch_islands): Use new interfaces.

	* doc/tm.texi: Update.

2004-10-26  Aldy Hernandez  <aldyh@redhat.com>

	* expr.c (emit_group_store): Do not treat floats as BLKmode.
	(emit_group_load): Same.

2004-10-26  Joseph S. Myers  <jsm@polyomino.org.uk>

	* c-parse.in (datadef): Use pedwarn rather than error and warning
	for diagnostic in case of no declaration specifiers.

2004-10-26  Richard Sandiford  <rsandifo@redhat.com>

	PR bootstrap/15747
	* doc/install.texi (mips-sgi-irix5): Document that /bin/sh has been
	reported to hang during bootstrap and that CONFIG_SHELL=/bin/ksh
	can be used to work around this.

2004-10-26  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/rs6000.h (MEMBER_TYPE_FORCES_BLK): Adjust for e500
	doubles.

2004-10-26  Kazu Hirata  <kazu@cs.umass.edu>

	* stmt.c (expand_case): Update a comment.

2004-10-26  Kazu Hirata  <kazu@cs.umass.edu>

	* stmt.c (expand_case): Put an assertion that index_expr is
	never INTEGER_CST.  Don't special case for constant
	index_expr.

2004-10-26  Andrew Pinski  <pinskia@physics.uc.edu>

	PR 18162
	* c-parse.in (designator): Finish with a semi-colon.

2004-10-26  Fariborz Jahanian <fjahanian@apple.com>

	* config/rs6000/rs6000.md (andsi3_internal8): Set CR when splitting
	into rotlsi3.

2004-10-26  Kazu Hirata  <kazu@cs.umass.edu>

	* stmt.c (expand_case): Remove code to handle SWITCH_EXPR with
	a default case only.

2004-10-26  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/rs6000.c (rs6000_hard_regno_nregs): Adjust for
	e500 doubles.
	(spe_build_register_parallel): New.
	(rs6000_spe_function_arg): Handle e500 doubles.
	(function_arg): Same.
	(spe_func_has_64bit_regs_p): Same.
	(rs6000_function_value): Same.
	(rs6000_libcall_value): Same.
	(legitimate_lo_sum_address_p): Return false for e500 doubles.

	* config/rs6000/rs6000.h (LOCAL_ALIGNMENT): Adjust for e500
	doubles.
	(DATA_ALIGNMENT): Same.
	(CANNOT_CHANGE_MODE_CLASS): Same.

2004-10-26  Aldy Hernandez  <aldyh@redhat.com>

	* expr.c (emit_group_load): Handle floats.
	(emit_group_store): Same.

2004-10-26  Nathan Sidwell  <nathan@codesourcery.com>

	* c-lex.c (get_nonpadding_token): Remove.
	(c_lex_with_flags): Push timevar and eat padding here.  Improve
	stray token diagnostic.
	(lex_string): Replace logic with switch statement, eat padding
	token here.

2004-10-26  Geoffrey Keating  <geoffk@apple.com>

	PR 18149
	* config/i386/darwin.h (ASM_SPEC): Undef it before defining.

2004-10-25  Geoffrey Keating  <geoffk@apple.com>

	* config/darwin.h (LINK_SPEC): Default weak_reference_mismatches
	to 'non-weak'.
	(MAKE_DECL_ONE_ONLY): Set DECL_WEAK.
	(ASM_MAKE_LABEL_LINKONCE): Delete.
	(ASM_WEAKEN_DECL): New.
	(ASM_DECLARE_OBJECT_NAME): Look at DECL_WEAK not DECL_ONE_ONLY.
	(ASM_DECLARE_FUNCTION_NAME): Likewise.
	(TEXT_SECTION_ASM_OP): Add a tab.
	(DATA_SECTION_ASM_OP): Likewise.
	(SECTION_FUNCTION): Add a tab.  Use fputs.  Don't call
	data_section on every section change.
	(EXTRA_SECTIONS): Add a bunch of new extra sections.
	(EXTRA_SECTION_FUNCTIONS): Likewise.
	(USE_SELECT_SECTION_FOR_FUNCTIONS): Define.
	(JCR_SECTION_NAME): Define.
	(TARGET_SECTION_TYPE_FLAGS): Don't define.
	* config/darwin.c (darwin_encode_section_info): A symbol is defined
	in this file if it is not weak.
	(textcoal_section): Delete.
	(datacoal_section): Delete.
	(darwin_make_decl_one_only): Delete.
	(machopic_select_section): Handle functions.
	(darwin_asm_named_section): Add a tab.
	(darwin_section_type_flags): Delete.
	(darwin_unique_section): Delete contents.
	(darwin_emit_unwind_label): Add a tab.  Make decls weak if
	DECL_WEAK is set.
	* config/darwin-protos.h (darwin_section_type_flags): Delete.
	(darwin_make_decl_one_only): Delete.
	(text_coal_section): New.
	(text_unlikely_section): New.
	(text_unlikely_coal_section): New.
	(const_coal_section): New.
	(data_coal_section): New.
	(const_data_coal_section): New.
	* varasm.c (function_section): Honour
	USE_SELECT_SECTION_FOR_FUNCTIONS.
	* dwarf2out.c (output_call_frame_info): Look at DECL_WEAK when
	TARGET_USES_WEAK_UNWIND_INFO is in effect.
	* dbxout.c (dbxout_source_file): Don't change sections while
	a function is being output.

2004-10-25  David Ayers  <d.ayers@inode.at>

	* c-common.h: Remove RID_ID.
	* c-parse.in: Remove OBJECTNAME and references to RID_ID.
	(typespec_reserved_attr): Add rule for TYPENAME
	non_empty_protocolrefs.
	(yylexname): Remove special handling of RID_ID.

2004-10-25  James E Wilson  <wilson@specifixinc.com>

	* doc/invoke.texi (-fcrossjumping): Not enabled at -O.

2004-10-25  Joseph S. Myers  <jsm@polyomino.org.uk>

	PR c/16667
	* c-parse.in (array_designator): New.
	(designator): Use it.
	(initelt): Only permit array_designator without '=', not ".foo".

2004-10-25  Kenneth Zadeck <zadeck@naturalbridge.com>
	* Makefile.in: removed ggc for cgraphunit.
	* cgraph.c.dump_cgraph_node: removed static var analysis.
	* cgraph.h: removed static var analysis data structures and calls.
	* cgraphunit.c:
	cgraph_mark_local_and_external_functions:changed name to
		cgraph_mark_local_functions
	(print_order,convert_UIDs_in_bitmap,new_static_vars_info,
	cgraph_reset_static_var_maps,get_global_static_vars_info,
	get_global_statics_not_read,get_global_statics_not_written,searchc,
	cgraph_reduced_inorder,has_proper_scope_for_analysis,check_rhs_var,
	check_lhs_var,get_asm_expr_operands,process_call_for_static_vars,
	scan_for_static_refs,cgraph_characterize_statics_local,
	clear_static_vars_maps,cgraph_propagate_bits,cgraph_characterize_statics):
	removed.
	(cgraph_optimize,init_cgraph): removed calls to static vars analysis
	* tree-dfa.c find_referenced_vars: removed call to static vars
	analysis
	* tree-flow.h static_vars_info: removed
	* tree-ssa-operands.c (add_call_clobber_ops,add_call_read_ops):
	removed calls to static vars analysis.
	get_call_expr_operands: removed callee variable.

2004-10-25  Kazu Hirata  <kazu@cs.umass.edu>

	* cfg.c (unchecked_make_edge, redirect_edge_succ,
	redirect_edge_pred): Use VEC_safe_push instead of
	VEC_safe_insert.
	* cfgrtl.c (force_nonfallthru_and_redirect): Likewise.

2004-10-25  Kazu Hirata  <kazu@cs.umass.edu>

	* cfgloopmanip.c (loopify): Take two more arguments true_edge
	and false_edge.
	* cfgloop.h: Adjust the corresponding prototype.
	* loop-unswitch.c (unswitch_loop): Adjust a call to loopify.
	* tree-ssa-loop-manip.c (tree_ssa_loop_version): Likewise.

2004-10-25  Jakub Jelinek  <jakub@redhat.com>

	* dwarf2out.c (rtl_for_decl_location): Avoid segfault if
	DECL_INCOMING_RTL is NULL.

2004-10-25  Steven Bosscher  <stevenb@suse.de>

	* timevar.def (TV_FIND_REFERENCED_VARS): New.
	* tree-dfa.c (pass_referenced_var): Use it.

2004-10-25  Roger Sayle  <roger@eyesopen.com>
	    John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* cse.c: Change encoding of quantity numbers to avoid undefined
	pointer arithmetic on qty_table.
	(REGNO_QTY_VALID_P): A quantity is now valid if it isn't negative.
	(get_cse_reg_info): Initialize reg_qty to a unique negative value.
	(new_basic_block): Assign "real" quantity numbers from zero.
	(delete_reg_equiv): Do nothing if quantity is invalid.  Reset the
	REG_QTY to its unique negative value.
	(merge_equiv_classes): Calculate need_rehash if quantity is valid.
	(cse_main): Don't include max_reg when determining max_qty.
	(cse_basic_block): Avoid subtracting a large offset from qty_table,
	which causes undefined C99 behaviour.  Only allocate needed memory.

2004-10-25  Kazu Hirata  <kazu@cs.umass.edu>

	* stmt.c (expand_case): Remove an obsolete comment.

2004-10-25  Andrew Pinski  <pinskia@physics.uc.edu>

	PR middle-end/17407
	* c-decl.c (grokdeclarator) <case cdk_array>: Remove the call
	layout_type as it is already done by build_array_type.
	* tree.c (build_array_type): Layout the type even

2004-10-25  Alexandre Oliva  <aoliva@redhat.com>

	* config/frv/linux.h (TARGET_C99_FUNCTIONS): Define to 0.

2004-10-25  Alexandre Oliva  <aoliva@redhat.com>

	* config/frv/frv.md (movdi, movdf): Handle wide-constant splits
	with wider-than-32-bit HOST_WIDE_INTs.

2004-10-25  David Billinghurst <David.Billinghurst@riotinto.com>

	* config/mips/mips.c(mips_output_filename): Remove unused
	array ltext_label_name

2004-10-24  Geoffrey Keating  <geoffk@geoffk.org>

	* config/rs6000/darwin.h (BLOCK_REG_PADDING): Define.

2004-10-25  Ben Elliston  <bje@au.ibm.com>

	* cfgcleanup.c (outgoing_edges_match): Fix typo in dump output.

2004-10-23  Andrew Pinski  <pinskia@physics.uc.edu>

	* predict.c (predict_loops): Call scev_finalize instead of
	scev_reset.

2004-10-24  Kazu Hirata  <kazu@cs.umass.edu>

	* config/dbxcoff.h, config/dbxelf.h, config/libgloss.h,
	config/openbsd.h, config/mips/r3900.h, config/pdp11/pdp11.md,
	config/sh/ushmedia.h, config/sparc/elf.h,
	config/sparc/sp64-elf.h: Update copyright.

2004-10-24  Kazu Hirata  <kazu@cs.umass.edu>

	* stmt.c (expand_case): Handle the default label outside of
	the for loop.  Remove code to handle a missing default label.

2004-10-23  Kazu Hirata  <kazu@cs.umass.edu>

	* dbxout.c (dbxout_function_decl): Don't use
	DBX_OUTPUT_FUNCTION_END.
	* system.h: Poison DBX_OUTPUT_FUNCTION_END.
	* doc/tm.texi (DBX_OUTPUT_FUNCTION_END): Remove.

2004-10-23  Andrew Pinski  <pinskia@physics.uc.edu>

	PR middle-end/17967
	* tree-cfg.c (remove_usless_stmts_cond): Don't Fold statement.

2004-10-23  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-dom.c (record_equality): Use loop depth to determine
	which way to record the equality as well.
	(loop_depth_of_name): New function.

2004-10-23  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR middle-end/17793
	* gimplify.c (gimplify_addr_expr) <VIEW_CONVERT_EXPR>: Look
	through the operand if it is a useless type conversion.

2004-10-23  Ben Elliston  <bje@au.ibm.com>

	* cfg.c (remove_edge): Use VEC_unordered_remove.
	(redirect_edge_succ): Likewise.
	(redirect_edge_pred): Likewise.
	* cfgrtl.c (force_nonfallthru_and_redirect): Likewise.

2004-10-22  Kazu Hirata  <kazu@cs.umass.edu>

	* sbitmap.h (EXECUTE_IF_SET_IN_SBITMAP): Don't access PTR
	beyond its end.

2004-10-22  Eric Christopher  <echristo@redhat.com>

	* config/rs6000/rs6000.c (setup_incoming_varargs): Align DFmode
	saves.

2004-10-22  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/spe.md (spe_extendsfdf2): New.
	(movdf_e500_double): New.
	(spe_truncdfsf2): New.
	(spe_absdf2): New.
	(spe_nabsdf2): New.
	(spe_negdf2): New.
	(sub_adddf3): New.
	(spe_subdf3): New.
	(spe_muldf3): New.
	(spe_floatsidf2): New.
	(spe_floatunssidf2): New.
	(fix_truncdfsi2): New.
	(spe_fixuns_truncdfsi2): New.

	* config/rs6000/rs6000.md (truncdfsf2): Change to expander.
	(fpr_truncdfsf2): New.
	(negdf2): Change to expander.
	(fpr_negdf2): New.
	(fpr_nabsdf2): Name pattern.
	(adddf3): Change to expander.
	(fpr_adddf3): Nem.
	(subdf3): Change to expander.
	(fpr_subdf3): New.
	(muldf3): Change to expander.
	(fpr_muldf3): New.
	(divdf3): Change to expander.
	(fpr_divdf3): New.
	(movdf_softfloat32): Change !TARGET_FPRS to TARGET_E500_SINGLE.
	(cmpdf): Allow for TARGET_E500_DOUBLE.

2004-10-22  Kazu Hirata  <kazu@cs.umass.edu>

	* c-semantics.c (re_push_stmt_list): Remove.
	* c-common.h: Remove the corresponding prototype.

2004-10-22  Kazu Hirata  <kazu@cs.umass.edu>

	* stmt.c (asm_op_is_mem_input): Remove.
	* tree.h: Remove the corresponding prototype.

2004-10-22  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-gimple.c (is_gimple_constructor_elt): Remove.
	* tree-gimple.h: Remove the corresponding prototype.

2004-10-22  Kazu Hirata  <kazu@cs.umass.edu>

	* varasm.c (get_pool_mode_for_function, get_pool_offset):
	Remove.
	* rtl.h: Remove the corresponding prototypes.

2004-10-22  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-cfg.c (thread_jumps_from_bb): Speed up by extracting
	edge information when we commit ourselves to threading a
	particular jump.

2004-10-22  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-cfg.c (thread_jumps): Speed up by putting basic blocks
	into worklist instead of their indexes.

2004-10-22  Kazu Hirata  <kazu@cs.umass.edu>

	* alias.c, basic-block.h, cgraphunit.c, combine.c, domwalk.h,
	final.c, gengtype.c, genpreds.c, ggc-page.c, insn-notes.def,
	lambda-code.c, loop-unroll.c, modulo-sched.c, pointer-set.c,
	pretty-print.c, ra-colorize.c, sbitmap.c, tree-complex.c,
	tree-data-ref.c, tree-dfa.c, tree-inline.c, tree-into-ssa.c,
	tree-scalar-evolution.c, tree-ssa-dom.c,
	tree-ssa-loop-manip.c, tree-ssa-loop-niter.c,
	tree-ssa-phiopt.c, tree-ssa-pre.c, tree-ssa-threadupdate.c,
	tree-vectorizer.c, vec.h: Fix comment formatting.

2004-10-22  Kazu Hirata  <kazu@cs.umass.edu>

	* dwarf.h, gthr-dce.h, gthr-single.h, gthr-solaris.h, gthr.h,
	libfuncs.h, libgcc2.h, stab.def, tsystem.h: Update copyright.

2004-10-22  Kazu Hirata  <kazu@cs.umass.edu>

	* config/ptx4.h, config/mcore/mcore-pe.h,
	config/rs6000/eabi.h, config/vax/elf.h: Update copyright.

2004-10-22  Peter Barada <peter@the-baradas.com>

	* config/m68k/m68k.h (HARD_REGNO_RENAME_OK): New macro.
	* config/m68k/m68k.c (m68k_hard regno_rename_ok): Disallow
	renaming of non-live registers in interrupt functions.
	* config/m68k/m68k-protos.h (m68k_hard_regno_rename_ok): Add prototype.

2004-10-22  Zdenek Dvorak  <dvorakz@suse.cz>

	* tree-ssa-loop-niter.c (inverse): Count in HOST_WIDE_INT if possible.
	Use integer for loop counter.
	(num_ending_zeros): New function.
	(number_of_iterations_cond): Use num_ending_zeros.

2004-10-21  Aldy Hernandez  <aldyh@redhat.com>

	* config.gcc: Add support for --enable-e500_double.

	* config/rs6000/e500-double.h: New file.

	* config/rs6000/rs6000.h: Define TARGET_E500_SINGLE and
	TARGET_E500_DOUBLE.

	* config/rs6000/eabi.h: Define TARGET_E500_SINGLE and
	TARGET_E500_DOUBLE.

	* config/rs6000/linuxspe.h: Same.

	* doc/invoke.texi (Option Summary): Document new options for
	mfloat-gprs.
	(RS/6000 and PowerPC Options): Same.

	* config/rs6000/rs6000.c (rs6000_parse_float_gprs_option): New
	function.
	(rs6000_override_options): Use it.  Use
	SUB3TARGET_OVERRIDE_OPTIONS.
	Add 8548 to processor_target_table.
	(rs6000_legitimate_address): Handle e500 doubles.
	(rs6000_legitimize_address): Same.
	(rs6000_legitimize_reload_address): Same.
	(rs6000_hard_regno_nregs): Same.
	(spe_func_has_64bit_regs_p): Same.
	(emit_frame_save): Same.
	(gen_frame_mem_offset): Same.
	(rs6000_dwarf_register_span): Same.
	(rs6000_generate_compare): Same.
	(easy_fp_constant): Same.
	(legitimate_offset_address_p): Same.

	* config/rs6000/spe.md: (cmdfeq_gpr): New.
	(tstdfeq_gpr): New.
	(cmpdfgt_gpr): New.
	(tstdfgt_gpr): New.
	(tstdfgt_gpr): New.
	(cmpdflt_gpr): New.
	(tstdflt_gpr): New.
	Add new constants.

2004-10-21  Giovanni Bajo  <giovannibajo@gcc.gnu.org>

	* config/arc/lib1funcs.asm (___umulsidi3): Fix typo.

2004-10-21  Zack Weinberg  <zack@codesourcery.com>

	* dbxout.c: Remove unnecessary #undefs.
	(GDB_INV_REF_REGPARM_STABS_LETTER, DBX_MEMPARM_STABS_LETTER)
	(FILE_NAME_JOINER, STABS_GCC_MARKER): Remove; fold sole
	definition into use sites.
	(cwd): Make local to dbxout_init.
	(dbxout_init): Restructure cwd-using logic for clarity.  Use
	IS_DIR_SEPARATOR.
	* xcoffout.h (DBX_OUTPUT_GCC_MARKER): Definition of
	STABS_GCC_MARKER folded in here.
	* system.h: Poison now-unused macros.
	* doc/tm.texi: Remove documentation of now-unused macros.

2004-10-21  Andrew Pinski  <pinskia@physics.uc.edu>

	PR c/17538
	* c-opts.c (push_command_line_include): Use the current file
	name instead of the main one.

2004-10-21  Andrew Pinski  <pinskia@physics.uc.edu>

	PR objc/17923
	* tree.c (staticp): A CONST_DECL has static storage if either
	TREE_STATIC or DECL_EXTERNAL is set.
	* c-decl.c (pushdecl_top_level): Accept CONST_DECLs which can
	have null names.

2004-10-21  Kazu Hirata  <kazu@cs.umass.edu>

	* expr.c (store_expr): Remove dont_store_target.

2004-10-21  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-cfg.c (thread_jumps): Speed up by using a worklist.

2004-10-21  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-cfg.c (thread_jumps): Move a part of it to ...
	(thread_jumps_from_bb): ... here.

2004-10-21  David Edelsohn  <edelsohn@gnu.org>

	* dbxout.c (DBX_FINISH_SYMBOL): Add asm_out_file argument.
	* xcoffout.h (DBX_FINISH_SYMBOL): Change asmfile to (ASMFILE).

2004-10-21  Kazu Hirata  <kazu@cs.umass.edu>

	* expr.c (store_expr): Clean up by renaming want_value to
	call_param_p.

2004-10-21  Kaz Kojima  <kkojima@gcc.gnu.org>

	* config/sh/linux-unwind.h (sh_fallback_frame_state): Don't
	fixup pc here.

2004-10-21  Aldy Hernandez  <aldyh@redhat.com>

	PR 18004.
	* expmed.c (store_bit_field): Pass original 'value' before
	recursing.

2004-10-21  Nicolas Pitre <nico@cam.org>

	* config/arm/ieee754-sf.S: Large speed improvements. Fix NAN handling.
	* config/arm/ieee754-df.S: Ditto.

2004-10-20  Zack Weinberg  <zack@codesourcery.com>

	* dbxout.c (asmfile): Delete.  All uses changed to asm_out_file.
	(DBX_BLOCKS_FUNCTION_RELATIVE, DBX_LINES_FUNCTION_RELATIVE):
	Default to 0.
	(dbxout_source_line): Use DBX_OUTPUT_SOURCE_LINE when defined.
	When it is not, but DBX_LINES_FUNCTION_RELATIVE is true, emit
	an internal label and an N_SLINE .stabn whose value is the
	difference between that label and the function entry label.
	(dbxout_finish): If DBX_OUTPUT_MAIN_SOURCE_FILE_END is not defined,
	but DBX_OUTPUT_NULL_N_SO_AT_MAIN_SOURCE_FILE_END is, emit a
	label and an N_SO stab with an empty string referring to it.
	(dbx_output_lbrac, dbx_output_rbrac): Use if statement instead
	of #ifdef directive to test DBX_BLOCKS_FUNCTION_RELATIVE.
	(dbxout_type_methods, dbxout_symbol): Remove #if 0 block.
	(dbxout_prepare_symbol): Remove #ifdef WINNING_GDB block, this
	macro is never defined.
	* sdbout.c (sdbout_source_line_counter): Delete.
	(PUT_SDB_SRC_FILE): Delete.  Uses replaced with sole definition.
	(sdbout_source_line): Use SDB_OUTPUT_SOURCE_LINE, which takes
	only two arguments.
	* xcoffout.c (ASM_OUTPUT_SOURCE_LINE): Rename ASM_OUTPUT_LINE.

	* config/dbxcoff.h, config/dbxelf.h: Remove unncessary #undefs.
	* config/c4x/c4x.h, config/pa/pa.h: Remove unnecessary macro
	definitions (identical to default).
	* config/darwin.h, config/dbxcoff.h, config/dbxelf.h, config/ptx4.h
	* config/h8300/coff.h, config/pa/som.h, config/sh/elf.h:
	Define DBX_OUTPUT_NULL_N_SO_AT_MAIN_SOURCE_FILE_END, not
	DBX_OUTPUT_MAIN_SOURCE_FILE_END.
	* config/dbxcoff.h, config/dbxelf.h, config/ptx4.h
	* config/mcore/mcore-pe.h, config/pa/som.h, config/sh/elf.h:
	Define DBX_LINES_FUNCTION_RELATIVE, not ASM_OUTPUT_SOURCE_LINE.
	* config/alpha/alpha-protos.h: Don't prototype alpha_output_lineno.
	* config/alpha/alpha.c: Move declaration of num_source_filenames up.
	(alpha_start_function): Use SDB_OUTPUT_SOURCE_LINE.
	(sym_lineno): Delete.
	(alpha_output_filename): Do not emit N_SOL stabs here.  Remove
	now-unused variable.
	(alpha_output_lineno): Delete.
	* config/mips/mips-protos.h: Don't prototype mips_output_lineno.
	* config/mips/mips.c (mips_output_filename): Don't use
	ASM_OUTPUT_FILENAME. Don't emit N_SOL stabs here.
	(mips_output_lineno): Delete.
	(mips_output_function_prologue: Use SDB_OUTPUT_SOURCE_LINE.
	* config/alpha/alpha.h: Define DBX_OUTPUT_SOURCE_LINE and
	SDB_OUTPUT_SOURCE_LINE, not ASM_OUTPUT_SOURCE_LINE.
	* config/mips/mips.h: Likewise.  Don't define ASM_OUTPUT_FILENAME.
	* config/mips/sdb.h: Use SDB_OUTPUT_SOURCE_LINE.
	* config/avr/avr.h: Don't define ASM_OUTPUT_SOURCE_LINE.
	* config/mmix/mmix.h: Likewise.
	* config/mmix/mmix.c (mmix_asm_output_source_line): Delete.
	* config/mmix/mmix-protos.h: Don't prototype it.
	* config/alpha/unicosmk.h: Also #undef PREFERRED_DEBUGGING_TYPE;
	no need to #undef ASM_OUTPUT_SOURCE_LINE.
	* config/arm/aout.h: Remove RISCiX-specific definition of
	DBX_OUTPUT_MAIN_SOURCE_FILENAME.
	* config/m32r/m32r.h: Define DBX_OUTPUT_SOURCE_LINE, not
	ASM_OUTPUT_SOURCE_LINE.
	* config/rs6000/linux64.h (ASM_OUTPUT_SOURCE_LINE): Rename to
	DBX_OUTPUT_SOURCE_LINE.  Don't use current_function_func_begin_label.
	* config/vax/elf.h: No need to define DBX_OUTPUT_FUNCTION_END.

	* doc/tm.texi: Update.

2004-10-20  Richard Henderson  <rth@redhat.com>

	* tree-sra.c (instantiate_element): Copy DECL_IGNORED_P also.

2004-10-20  Kelley Cook  <kcook@gcc.gnu.org>

	* configure.ac: Revert my previous patch.
	* configure: Regenerate.

2004-10-20  Ben Elliston  <bje@au.ibm.com>

	* config/rs6000/rs6000.c
	(rs6000_va_start): Use build_va_arg_indirect_ref.
	(rs6000_gimplify_va_arg): Likewise.

2004-10-20  Bryce McKinlay  <mckinlay@redhat.com>

	PR java/15575
	* configure.ac: Declare AM_LANGINFO_CODESET.
	* aclocal.m4: Define AM_LANGINFO_CODESET.
	* configure, config.in: Rebuilt.

2004-10-20  Kazu Hirata  <kazu@cs.umass.edu>

	* expr.c (store_expr): Remove code that is run when
	want_value & 1 is nonzero.

2004-10-20  Mark Mitchell  <mark@codesourcery.com>

	* gthr-posix.h (__gthread_active_p): Use __extension__ around cast
	from function pointer to void *.

2004-10-20  Kaz Kojima  <kkojima@gcc.gnu.org>

	PR target/18032
	* config/sh/sh.c (sh_expand_epilogue): Emit a blockage insn before
	the frame pointer adjustment when exception handling is enabled.

2004-10-20  Kazu Hirata  <kazu@cs.umass.edu>

	* stor-layout.c: Fix a comment typo.

2004-10-20  Kazu Hirata  <kazu@cs.umass.edu>

	* expr.c (store_field): Remove two arguments value_mode and
	unsignedp.
	(expand_assignment, store_constructor_field,
	expand_expr_real_1): Adjust calls to store_field.

2004-10-18  Ramana Radhakrishnan  <ramana.radhakrishnan@codito.com>

	* config/arc/lib1funcs.asm (___umulsidi3): Correct usage of flags.

	PR target/17317
	* config/arc/arc.h (REGNO_OK_FOR_BASE_P,REGNO_OK_FOR_INDEX_P,
	REG_OK_FOR_BASE, REG_OK_FOR_INDEX): Consider blink(r31) as a valid
	base and index register for loads.

	* config/arc/t-arc: Fix multilib handling.

2004-10-20  Hans-Peter Nilsson  <hp@bitrange.com>

	* cfgrtl.c (rtl_verify_flow_info_1): When checking insns in a bb,
	don't inspect BLOCK_FOR_INSN for barriers.
	* emit-rtl.c (emit_barrier_before): Revert last change.
	(emit_barrier_after, emit_barrier): Ditto.

	* doc/extend.texi (Extended Asm): Warn and provide example
	solution for using a call-clobbered asm register.
	(Local Reg Vars): Similar.  Cross-reference example.

2004-10-19  Andrew Pinski  <pinskia@physics.uc.edu>

	* tree-cfg.c (group_case_labels): Look at the second to last
	case statement for combing with the default case.

2004-10-19  Richard Hendeson  <rth@redhat.com>

	PR 17962
	* stor-layout.c (layout_type): Set TYPE_ALIGN for vectors.

2004-10-19  Richard Hendeson  <rth@redhat.com>

	* builtins.c (expand_builtin_memmove): If fold_builtin_memmove
	succeeds, only expand the result.

2004-10-19  Richard Hendeson  <rth@redhat.com>

	PR middle-end/17885
	* tree.c (recompute_tree_invarant_for_addr_expr): Always poll address
	of INDIRECT_REF.

2004-10-19  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-cfg.c (thread_jumps): Use a do-while loop instead of a
	loop with goto.

2004-10-19  Kazu Hirata  <kazu@cs.umass.edu>

	* expr.c (expand_assignment): Remove the last argument.
	Change the return type to void.
	* expr.h: Update the prototype of expand_assignment.
	* function.c (assign_parm_setup_reg): Update a call to
	expand_assignment.
	* stmt.c (expand_asm_expr): Likewise.

2004-10-19  Kazu Hirata  <kazu@cs.umass.edu>

	* expr.c (expand_expr_real_1) <MODIFY_EXPR>: Remove
	unnecessary assignments to temp.  Return const0_rtx.

2004-10-19  Kaz Kojima  <kkojima@gcc.gnu.org>

	* config/sh/sh.c (sh5_schedule_saves): Fix typo.

2004-10-18  Kelley Cook  <kcook@gcc.gnu.org>

	* configure.ac (powerpc-*-darwin*): Require assembler to support
	.machine directive.
	* configure: Regenerate.

2004-10-18  Kazu Hirata  <kazu@cs.umass.edu>

	* reload1.c (ior_hard_reg_set): Remove.
	(finish_spills): Use IOR_HARD_REG_SET instead of
	ior_hard_reg_set.

2004-10-18  Kazu Hirata  <kazu@cs.umass.edu>

	* sbitmap.h (EXECUTE_IF_SET_IN_SBITMAP): Speed up by shifting
	the currently visited word to right.

2004-10-18  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR middle-end/18045
	* expmed.c (expand_smod_pow2): Handle modes whose size
	is greater than that of HOST_WIDE_INT.

2004-10-18  Ziemowit Laski  <zlaski@apple.com>

	* c-parse.in (reservedwords): Add OBJC_TYPE_QUAL as alternative.

2004-10-18  Eric Botcazou  <ebotcazou@libertysurf.fr>
	    Roger Sayle  <roger@eyesopen.com>

	PR middle-end/17813
	* dojump.c (discard_pending_stack_adjust): New function.
	(clear_pending_stack_adjust): Call it.
	* expr.h (discard_pending_stack_adjust): Declare it.
	* explow.c (emit_stack_save): Emit pending stack adjustments
	before saving the stack pointer.
	(emit_stack_restore): Discard pending stack adjustments before
	restoring the stack pointer.

2004-10-18  Richard Henderson  <rth@redhat.com>

	* c-common.c (handle_mode_attribute): Allow scalar->vector
	type changes yet.

2004-10-18  Kazu Hirata  <kazu@cs.umass.edu>

	* expr.c (expand_expr_real_1) [MODIFY_EXPR]: Don't request a
	value to expand_assignment.

2004-10-18  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-cfg.c (cleanup_tree_cfg): Don't iterate on
	thread_jumps.
	(thread_jumps): Iterate until no new forwarder block arises.

2004-10-18  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-cfg.c (tree_forwarder_block_p): Don't set forwardable.
	(thread_jumps): Use forwardable as cache of
	tree_forwarder_block_p throughout the function.

2004-10-18  Andreas Krebbel  <krebbel1@de.ibm.com>

	* cfg.c (dump_flow_info): Remove redundant dump of reg life info.

2004-10-18  Andrew Pinski  <pinskia@physics.uc.edu>

	PR middle-end/15014
	PR middle-end/16973
	* tree-cfg.c (remove_bb): If we have a label expression in the
	basic block and the label we have taken the address, move the
	label expression to the basic block which is previous in the
	linked list.
	(tree_verify_flow_info): Fix printing out the label name of the
	problematic label expression.

2004-10-18  Pat Haugen  <pthaugen@us.ibm.com>

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

2004-10-18  Diego Novillo  <dnovillo@redhat.com>

	* tree-cfg.c (bsi_for_stmt): Rename from stmt_for_bsi.
	Update all callers.
	* tree-ssa.c (replace_immediate_uses): Call bsi_for_stmt.
	Don't call fold_stmt more than once, use bsi_replace.

2004-10-18  Diego Novillo  <dnovillo@redhat.com>

	PR tree-optimization/17656
	* tree-ssa.c (replace_immediate_uses): When replacing a
	constant, if the call to fold_stmt produced a different
	statement, get an appropriate statement pointer by scanning
	STMT's basic block.

2004-10-18  Richard Henderson  <rth@redhat.com>

	* pointer-set.c (hash1): Don't use libm functions in fallback case.

2004-10-18  H.J. Lu  <hongjiu.lu@intel.com>

	PR bootstrap/17684
	* Makefile.in (clean): Remove libgcc_s$(SHLIB_EXT).1.stage?.
	(stage1-start): Remove and copy libunwind.a and
	libunwind*$(SHLIB_EXT) instead of libunwind*.
	(stage2-start): Likewise.
	(stage3-start): Likewise.
	(stage4-start): Likewise.
	(stageprofile-start): Likewise.
	(stagefeedback-start): Likewise.

	* config/alpha/t-osf4 (SHLIB_LINK): Use a temporary file for
	the shared library to be created and don't remove the existing
	shared library.
	* config/arm/t-netbsd (SHLIB_LINK): Likewise.
	* config/i386/t-nwld (SHLIB_LINK): Likewise.
	* config/mips/t-slibgcc-irix (SHLIB_LINK): Likewise.
	* config/pa/t-hpux-shlib (SHLIB_LINK): Likewise.
	* config/sh/t-linux (SHLIB_LINK): Likewise.
	* config/t-libunwind-elf (SHLIBUNWIND_LINK): Likewise.
	* config/t-slibgcc-darwin (SHLIB_LINK): Likewise.
	* config/t-slibgcc-elf-ver (SHLIB_LINK): Likewise.
	* config/t-slibgcc-sld (SHLIB_LINK): Likewise.

	* mklibgcc.in (libgcc-stage-start): Also move "*${objext}s"
	files.

2004-10-18  Kazu Hirata  <kazu@cs.umass.edu>

	* basic-block.h (reg_set_iterator): New.
	(EXECUTE_IF_SET_IN_REG_SET): Make it iterator style.
	(EXECUTE_IF_AND_COMPL_IN_REG_SET): Likewise.
	(EXECUTE_IF_AND_IN_REG_SET): Likewise.
	* caller-save.c (save_call_clobbered_regs): Adjust to the new
	style.
	* cfgcleanup.c (thread_jump): Likewise.
	* cfgrtl.c (safe_insert_insn_on_edge): Likewise.
	* conflict.c (conflict_graph_compute): Likewise.
	* flow.c (verify_local_live_at_start, update_life_info,
	initialize_uninitialized_subregs, propagate_one_insn,
	init_propagate_block_info, free_propagate_block_info,
	propagate_block, dump_regset): Likewise.
	* global.c (global_conflicts): Likewise.
	* graph.c (start_bb): Likewise.
	* local-alloc.c (update_equiv_regs): Likewise.
	* loop.c (load_mems): Likewise.
	* reload1.c (compute_use_by_pseudos, order_regs_for_reload,
	find_reg, finish_spills): Likewise.
	* resource.c (mark_target_live_regs): Likewise.
	* sched-deps.c (sched_analyze_insn): Likewise.
	* sched-rgn.c (sched-rgn.c): Likewise.
	* config/frv/frv.c (frv_ifcvt_modify_tests): Likewise.

2004-10-18  Jakub Jelinek  <jakub@redhat.com>

	* config/i386/i386.md (addqi_1_slp): Test for incdec_operand
	operand 1 instead of 2

2004-10-18  Kazu Hirata  <kazu@cs.umass.edu>

	* loop-unroll.c: Fix comment typos.

2004-10-18  Revital Eres  <eres@il.ibm.com>

	* Makefile.in (loop-unroll.o): Add VARRAY_H dependency.
	* loop-unroll.c: Include varray.h.
	(struct var_to_expand, struct opt_info): Rename split_ivs_info to
	opt_info and expand it to support variable expansion.
	(analyze_insns_in_loop): Rename analyze_ivs_to_split and
	expand it to support variable expansion.
	(pt_info_start_duplication): Rename si_info_start_duplication.
	(apply_opt_in_copies): Rename split_ivs_in_copies and add support
	to the variable expansion optimization.
	(free_opt_info): Rename free_si_info.
	(analyze_insn_to_expand_var, referenced_in_one_insn_in_loop_p,
	expand_var_during_unrolling, insert_var_expansion_initialization,
	combine_var_copies_in_loop_exit, release_var_copies,
	get_expansion): New functions.
	(peel_loop_completely, unroll_loop_constant_iterations,
	unroll_loop_runtime_iterations, peel_loop_simple,
	unroll_loop_stupid): Change uses of struct si_info
	to struct opt_info
	and add uses of fvariable-expansion-in-unroller flag.
	* params.def: Add parameter to restrict the number of expansions.
	* params.h: (MAX_VARIABLE_EXPANSIONS): New define to restrict
	the number of expansions.
	* common.opt: (fvariable-expansion-in-unroller): New flag.
	* doc/invoke.texi: (fvariable-expansion-in-unroller): Document.

2004-10-18  Danny Smith  <dannysmith@users.sourceforge.net>

	* config/i386/cygming.h (TARGET_OS_CPP_BUILTINS): Define
	__GXX_MERGED_TYPEINFO_NAMES to 0.

2004-10-17  Hans-Peter Nilsson  <hp@bitrange.com>

	* cfgrtl.c (rtl_verify_flow_info_1): When checking insns in a bb,
	handle barriers in a bb by checking that it points to a NULL bb.
	* emit-rtl.c (emit_barrier_before): Set BLOCK_FOR_INSN to NULL.
	(emit_barrier_after, emit_barrier): Ditto.

2004-10-18  Joseph S. Myers  <jsm@polyomino.org.uk>

	* doc/extend.texi (Attribute Syntax): Clarify details of
	attributes on parameters.

2004-10-17  Zdenek Dvorak  <dvorakz@suse.cz>

	* tree-ssa-loop-ivopts.c (tree_ssa_iv_optimize): Move checking out of
	loop.

2004-10-17  Andrew Pinski  <pinskia@physics.uc.edu>

	Revert:
	2004-10-17  Andrew Pinski  <pinskia@physics.uc.edu>

	* c-typeck.c (default_function_array_conversion): Always create
	&a[0] for array types.
	(build_unary_op): Do not fold &a[x] into a + x.

2004-10-17  Andrew Pinski  <pinskia@physics.uc.edu>

	PR middle-end/17925
	* cfgexpand.c (expand_gimple_cond_expr): Emit line notes for next basic
	block if there is a goto with a locus.

2004-10-17  Kazu Hirata  <kazu@cs.umass.edu>

	* config/elfos.h, config/gofast.h, config/interix.h,
	config/netbsd.h, config/svr3.h, config/vxworks.h,
	config/alpha/alpha-modes.def, config/alpha/alpha-protos.h,
	config/alpha/ev4.md, config/alpha/ev5.md, config/alpha/ev6.md,
	config/alpha/netbsd.h, config/arm/arm-modes.def,
	config/arm/unknown-elf.h, config/c4x/c4x-modes.def,
	config/cris/aout.h, config/frv/frv-modes.def,
	config/i386/beos-elf.h, config/i386/gas.h,
	config/i386/i386-coff.h, config/i386/i386-modes.def,
	config/i386/linux.h, config/i386/linux64.h,
	config/i386/mingw32.h, config/i386/netbsd-elf.h,
	config/i386/netbsd64.h, config/i386/sco5.h,
	config/i386/sol2.h, config/i386/uwin.h, config/i860/i860.md,
	config/ia64/ia64-modes.def, config/ia64/itanium1.md,
	config/ia64/itanium2.md, config/m68k/m68k-modes.def,
	config/mips/mips-modes.def, config/mips/sdb.h,
	config/mips/vr.h, config/mips/vxworks.h,
	config/pa/pa-hpux10.h, config/pa/pa-hpux11.h,
	config/pa/pa32-linux.h, config/rs6000/40x.md,
	config/rs6000/7450.md, config/rs6000/8540.md,
	config/rs6000/linuxspe.h, config/rs6000/power4.md,
	config/rs6000/rs6000-modes.def, config/rs6000/rtems.h,
	config/rs6000/spe.h, config/s390/2064.md, config/s390/linux.h,
	config/s390/s390-modes.def, config/sh/elf.h,
	config/sh/sh-modes.def, config/sh/sh64.h,
	config/sparc/ultra1_2.md, config/sparc/ultra3.md,
	config/stormy16/stormy16.md, config/v850/v850-protos.h,
	config/vax/vax.md: Update copyright.

2004-10-17  Kazu Hirata  <kazu@cs.umass.edu>

	* expr.c (expand_expr_real_1): Remove an obsolete comment.

2004-10-17  Andrew Pinski  <pinskia@physics.uc.edu>

	* c-typeck.c (default_function_array_conversion): Always create
	&a[0] for array types.
	(build_unary_op): Do not fold &a[x] into a + x.

2004-10-17  Jakub Jelinek  <jakub@redhat.com>

	* pointer-set.c (hash1): Use integer part of 2^64 / phi
	instead 2^32 / phi if long is 64-bit.

2004-10-17  Joseph S. Myers  <jsm@polyomino.org.uk>

	* c-common.h (enum rid): Remove RID_PTRBASE, RID_PTREXTENT and
	RID_PTRVALUE.
	* c-parse.in (PTR_VALUE, PTR_BASE, PTR_EXTENT): Remove %token
	declarations.
	(reswords): Remove __ptrbase, __ptrbase__, __ptrextent,
	__ptrextent__, __ptrvalue and __ptrvalue__.
	(rid_to_yy): Remove RID_PTRBASE, RID_PTREXTENT and RID_PTRVALUE
	entries.

2004-10-16  Dale Johannesen  <dalej@apple.com>

	* c-common.c (c_common_get_alias_set): Use GGC for type_hash_table.

2004-10-16  Zdenek Dvorak  <dvorakz@suse.cz>

	PR tree-optimization/17766
	* basic-block.h (enum dom_state): DOM_CONS_OK removed.
	(dom_info_available_p): Declare.
	* cfghooks.c (split_block, make_forwarder_block): Use
	dom_info_available_p.
	* dominance.c (compute_dom_fast_query, calculate_dominance_info,
	free_dominance_info, verify_dominators): Ditto.
	(dom_info_available_p): New function.
	* tree-cfg.c (cleanup_control_expr_graph): Free dominance information.
	(thread_jumps): Use dom_info_available_p.
	* tree-complex.c (expand_complex_div_wide): Ditto.
	* tree-mudflap.c (mf_build_check_statement_for): Ditto.

2004-10-16  Zdenek Dvorak  <dvorakz@suse.cz>

	* tree-ssa-loop-ivopts.c (struct ivopts_data): New field important_candidates.
	(find_best_candidate): Take also important candidates into account.
	(find_optimal_iv_set): Initialize important_candidates bitmap.

2004-10-16  Zdenek Dvorak  <dvorakz@suse.cz>

	PR tree-optimization/17560
	* predict.c (tree_estimate_probability): Mark irreducible
	loops.

2004-10-16  Zdenek Dvorak  <dvorakz@suse.cz>

	PR rtl-optimization/17723
	* cfgcleanup.c (merge_memattrs): Handle case when
	MEM_SIZE == NULL_RTX.

2004-10-15  Andrew Pinski  <pinskia@physics.uc.edu>

	* toplev.c (dump_file_name): Change type to be const.

2004-10-15  Joseph S. Myers  <jsm@polyomino.org.uk>

	* c-typeck.c (build_compound_expr, build_c_cast): Don't try to use
	non_lvalue to stop something being a null pointer constant.

2004-10-15  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/rs6000.h (FUNCTION_ARG_REGNO_P): FPRs are only
	available for TARGET_FPRS.
	(FUNCTION_VALUE_REGNO_P): Same.

2004-10-15  Geoffrey Keating  <geoffk@apple.com>

	* doc/invoke.texi (RS/6000 and PowerPC Options): Document
	-maltivec in same style as other ISA options.

2004-10-15  Jon Grimm <jgrimm2@us.ibm.com>

	* config/host-linux.c (TRY_EMPTY_VM_SPACE): Add __powerpc__
	definition.

2004-10-15  Kazu Hirata  <kazu@cs.umass.edu>

	* bitmap.c, bitmap.h, builtin-attrs.def, cfglayout.h,
	collect2.h, conflict.c, coretypes.h, coverage.h, errors.h,
	gcc.h, gcov-dump.c, gen-protos.c, gencheck.c, gencodes.c,
	genconstants.c, gengenrtl.c, genmodes.c, genpeep.c,
	gensupport.h, graph.h, gthr-gnat.c, gthr-gnat.h, gthr-posix.c,
	gthr-posix.h, hard-reg-set.h, hwint.h, integrate.h, libgcc2.c,
	lists.c, machmode.def, mips-tdump.c, opts.h, params.c,
	predict.def, predict.h, protoize.c, reload.h, resource.h,
	rtl-error.c, sbitmap.c, sbitmap.h, sreal.c, tlink.c,
	tree-dump.h, tree-inline.h, unwind-dw2-fde.c, unwind-dw2.c,
	unwind-sjlj.c, value-prof.h: Update copyright.

2004-10-15  Kazu Hirata  <kazu@cs.umass.edu>

	* pointer-set.c, tree-vectorizer.c: Fix comment typos.

2004-10-15  Diego Novillo  <dnovillo@redhat.com>

	* tree-optimize.c (execute_one_pass): Stop timer right after
	executing the pass.

2004-10-14  Andrew Pinski  <pinskia@physics.uc.edu>

	Revert:
	2004-10-14  Andrew Pinski  <pinskia@physics.uc.edu>
	PR middle-end/17967
	Revert:
		* tree-cfg.c (remove_usless_stmts_cond): Fold statement.
		(remove_useless_stmts_1): Fold trees we know how to fold.

2004-10-14  David Edelsohn  <edelsohn@gnu.org>

	* configure.ac: Add .machine power4 directive when testing for
	mfcr field.
	* configure: Regenerate.

2004-10-14  Geoffrey Keating  <geoffk@apple.com>

	* config/darwin.h (JUMP_TABLES_IN_TEXT_SECTION): Don't define.

2004-10-14  Andrew Pinski  <pinskia@physics.uc.edu>

	* tree-vectorizer.c (vect_transform_loop): Declare vectorization_factor
	always.

2004-10-14  Daniel Jacobowitz  <dan@codesourcery.com>

	* config/rs6000/rs6000.h (REG_CLASS_FROM_LETTER): Return NO_REGS
	for 'f' if !TARGET_FPRS.

2004-10-14  Richard Henderson  <rth@redhat.com>

	PR debug/14492
	* dwarf2out.c (loc_descriptor_from_tree_1): Handle FIX_*_EXPR.

2004-10-14  Richard Henderson  <rth@redhat.com>

	PR c/17023
	* c-decl.c (store_parm_decls_oldstyle): Care for parameter type
	as error_mark_node.
	* c-parse.in (compstmt_primary_start): Check cur_stmt_list non-null
	instaed of current_function_decl non-null.

2004-10-14  Matt Austern  <austern@apple.com>

	* pointer-set.c: New file, special-purpose hash table.
	* pointer-set.h: New file.
	* tree.h (struct pointer_set_t): Declare as opaque type.
	(tree_walk): Last argument is pointer_set_t* now.
	* tree-inline.c (WALK_SUBTREE): Convert from htab to pset.
	(walk_type_fields):
	(walk_tree): Convert from htab_t to pointer_set_t for keeping
	track of which nodes have already been visited.
	(walk_tree_without_duplicates): Convert from htab_t to pointer_set_t.
	* cgraphunit.c (cgraph_create_edges): Likewise.
	(cgraph_characterize_statics_local): Likewise.
	* tree-dfa.c (collect_dfa_stats): Likewise.
	* langhooks-def.h (lhd_tree_inlining_walk_subtrees): Last arg is
	pointer_set_t* now.
	* langhooks.c (lhd_tree_inlining_walk_subtrees): Likewise.
	* langhooks.h (struct lang_hooks_for_tree_inlining): Last arg type
	of walk_subtrees is pointer_set_t* now.
	* Makefile.in (OBJS-common): add pointer-set.o
	(tree-inline.o): Depends on pointer-set.h
	(tree-dfa.o): Likewise
	(cgraphunit.o): Likewise

2004-10-14  Geoffrey Keating  <geoffk@apple.com>

	* config/rs6000/darwin.h (ASM_SPEC): Delete.
	(TARGET_ASM_FILE_START): Define.
	* config/darwin.h (ASM_SPEC): Define.
	* config/rs6000/t-darwin (TARGET_LIBGCC2_CFLAGS): Don't supply
	-mlong-double-128, it's the default.  Update comment about reason
	for force_cpusubtype_ALL.
	* config/rs6000/darwin-vecsave.asm: Supply .machine.
	* config/rs6000/darwin-world.asm: Likewise.
	* config/rs6000/rs6000.c (rs6000_darwin_file_start): New.
	(symbolic_operand): Delete #if 0ed code.

2004-10-14  Andrew Pinski  <pinskia@physics.uc.edu>

	* stmt.c (add_case_node): Make sure that we have integer
	constant before calling tree_int_cst_compare.

2004-10-14  Andrew Pinski  <pinskia@physics.uc.edu>

	PR middle-end/17967
	Revert:
		* tree-cfg.c (remove_usless_stmts_cond): Fold statement.
		(remove_useless_stmts_1): Fold trees we know how to fold.

2004-10-14  Joseph S. Myers  <joseph@codesourcery.com>

	* config/rs6000/eabispe.h (SUBSUBTARGET_OVERRIDE_OPTIONS),
	config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Disallow
	-m64.

2004-10-14  Ulrich Weigand  <uweigand@de.ibm.com>

	* reload.c (find_reloads): When reloading a PLUS with constant
	operand, make sure the constant is pushed to the constant pool
	if required.
	* config/s390/s390.c (s390_secondary_input_reload_class): Remove
	reload bug workaround.
	(s390_expand_plus_operand): Likewise.

2004-10-14  David Edelsohn  <edelsohn@gnu.org>

	* opts.c (common_handle_option): Do not enable
	flag_speculative_prefetching for -fprofile-generate/use.

2004-10-14  Devang Patel  <dpatel@apple.com>

	PR 17635
	* tree-if-conv.c (process_phi_nodes): Process latch block.
	(combine_blocks): Process latch block and update loop structure.

2004-10-14  Olga Golovanevsky  <olga@il.ibm.com>

	* tree-vectorizer.c (vect_generate_tmps_on_preheader):
	(vect_update_ivs_after_vectorizer):
	(vect_transform_for_unknown_loop_bound):
	(tree_duplicate_loop_to_edge):
	(allocate_new_names):
	(rename_use_op):
	(rename_def_op):
	(rename_variables_in_bb):
	(free_new_names):
	(rename_variables_in_loop):
	(copy_phi_nodes):
	(update_phis_for_duplicate_loop):
	(update_phi_nodes_for_guard):
	(make_loop_iterate_ntimes):
	(tree_duplicate_loop_to_edge_cfg):
	(add_loop_guard):
	(vect_analyze_loop_with_symbolic_num_of_iters):
	(verify_loop_for_duplication):
	(vect_gen_niters_for_prolog_loop):
	(vect_update_niters_after_peeling):
	(vect_update_inits_of_dr):
	(vect_update_inits_of_drs):
	(vect_build_loop_niters):
	(vect_do_peeling_for_alignment): New functions.
	(vect_transform_loop): Add unknown and known but indivisible loop
	bound support; add peeling for unalignment support.
	(vect_analyze_loop_form): Support symbolic number of iterations.
	(vect_transform_loop_bound): New input parameter.
	(vect_get_loop_niters): Change input parameter type.
	(new_loop_vec_info): LOOP_VINFO_NITERS is tree now.
	(vectorizable_store): Allow unaligned access.
	(vectorize_loops): Add rewrite_into_loop_closed_ssa.
	(vect_analyze_data_refs_alignment): Allowed one unaligned
	store.
	* tree-vectorizer.h (LOOP_VINFO_NITERS_KNOWN_P): Redefined
	to use tree.
	(LOOP_VINFO_INT_NITERS): New macro.
	(MAX_NUMBER_OF_UNALIGNED_DATA_REFS): New define.
	(do_peeling_for_alignment):
	(unaligned_drs): New members of _loop_vec_info.
	(LOOP_DO_PEELING_FOR_ALIGNMENT): New macro.

2004-10-14  Ranjit Mathew  <rmathew@hotmail.com>

	* tree.h (TREE_STRING_POINTER): Wrap in "const char *".
	(struct tree_string): Remove "const" qualifier for "str".

2004-10-14  Ira Rosen  <irar@il.ibm.com>

	* tree-vectorizer.c (vect_analyze_data_refs): Call
	vect_get_base_and_bit_offset to get memory tag for array ref.
	(vect_create_addr_base_for_vector_ref): Remove redundant checks.

2004-10-14  Richard Earnshaw  <rearnsha@arm.com>

	* configure.ac: Use $LN_S for creating symlinks (not $LN).
	* configure: Regenerate.

2004-10-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* doc/install.texi (*-*-solaris2*): Update with info about kernel
	patches to solve spurious testsuite failures.

2004-10-14  Dorit Naishlos  <dorit@il.bim.com>

	* tree-vectorizer.c (get_vectype_for_scalar_type): Added debug prinouts.
	Added check that vectype is VECTOR_MODE_P, instead of check for BLKmode.
	(vect_analyze_operations): Make sure the vectorization factor > 1. Add
	gcc_assert under ENABLE_CHECKING.
	(vectorizable_operation): Remove check for VECTOR_MODE_P (moved to
	get_vectype_for_scalar_type).

	(vect_get_vec_def_for_operand): Remove redundant variables.
	(vect_transform_loop): Likewise.

2004-10-14  Richard Sandiford  <rsandifo@redhat.com>

	* config/arm/arm.h (CONDITIONAL_REGISTER_USAGE): Make r11 fixed and
	global for -mcaller-super-interworking.
	(CALLER_INTERWORKING_SLOT_SIZE): New macro.
	* config/arm/arm.c (thumb_compute_save_reg_mask): Save r11 if
	CALLER_INTERWORKING_SLOT_SIZE is nonzero and the function does
	not need a frame pointer.
	(arm_get_frame_offsets): Add CALLER_INTERWORKING_SLOT_SIZE bytes to
	the soft frame pointer offset.
	(thumb_expand_prologue): Set up r11 for -mcaller-super-interworking.
	* config/arm/arm.md (*call_reg_thumb, *call_value_reg_thumb): Use
	_interwork_{r7,r11}_call_via_rN if some arguments are passed on
	the stack.  Use frame_pointer_needed to choose between them.
	* config/arm/lib1funcs.asm (_arm_return_{r7,r11}): New functions.
	(interwork_with_frame): New macro.
	(interwork): Add _interwork_{r7,r11}_call_via_rN().

2004-10-14  Ben Elliston  <bje@au.ibm.com>

	PR other/17900
	* diagnostic.c (trim_filename): Fix logic bug in walking backwards
	up the filename looking for a previous directory separator.

2004-10-14  Joseph S. Myers  <jsm@polyomino.org.uk>

	* c-tree.h (enum c_typespec_kind, struct c_typespec,
	parser_xref_tag): New.
	(struct c_declspecs): Add tag_defined_p.  Adjust definition of
	typedef_p.
	(declspecs_add_type): Adjust prototypes.
	* c-parse.in (%union): Add tstype.
	(typespec_nonattr, typespec_attr, typespec_reserved_nonattr,
	typespec_reserved_attr, typespec_nonreserved_nonattr,
	structsp_attr, structsp_nonattr): Change to tstype.  Update
	actions.
	* c-decl.c (build_null_declspecs): Initialize tag_defined_p.
	(declspecs_add_type): Update to take struct c_typespec argument.
	Set tag_defined_p and typedef_p as appropriate.
	(xref_tag): Rename to parser_xref_tag and replace by wrapper.
	Update to return struct c_typespec.
	(shadow_tag_warned): Don't let empty declarations with qualifiers
	or storage class specifiers redeclare a tag if a previous
	declaration is visible.

2004-10-13  Richard Henderson  <rth@redhat.com>

	PR debug/15860
	* dwarf2out.c (rtl_for_decl_location): Apply big-endian correction
	for DECL_INCOMING_RTL.

2004-10-14  Hans-Peter Nilsson  <hp@axis.com>

	PR target/17984
	* config/cris/cris.md (asrandb, asrandw, lsrandb, lsrandw): Apply
	trunc_int_for_mode for constants used in shortened mode.

2004-10-13  Richard Henderson  <rth@redhat.com>

	PR c/17384
	* c-common.c (handle_mode_attribute): Disallow mode changes that
	alter the CODE of the top-level type.

	* crtstuff.c (__FRAME_END__): Remove mode attribute.  Find 32-bit
	integer from internal limits macros.
	* config/i386/mm3dnow.h (__v2sf): Fix base type.

2004-10-13  Richard Henderson  <rth@redhat.com>

	PR debug/13841
	* function.c (instantiate_decl): Recurse for CONCAT.

2004-10-13  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.md (andsi3): Add attribute "compare" for
	andi./andis.
	(anddi3): Same.
	(extzvdi_internal1): Add attribute "compare".
	(extzvdi_internal2): Same.

2004-10-12  Tom Tromey  <tromey@redhat.com>

	* doc/md.texi (Insn Canonicalizations): Removed extraneous quote.

2004-10-13  Dale Johannesen  <dalej@apple.com>

	* doc/extend.texi (Extended Asm): Rewrite asm volatile description.

2004-10-13  Frank Ch. Eigler  <fche@redhat.com>

	* toplev.c (compile_file): Call mudflap_finish_file from here ...
	* c-decl.c (c_write_global_declarations): ... instead of here ...
	* cp/decl.c (cp_finish_file): ... and here.
	* tree-mudflap.c (mudflap_enqueue_decl): Reword a warning message.

2004-10-13  Andrew Pinski  <pinskia@physics.uc.edu>

	* tree-ssa-dom.c (record_range): Free the element if we are not
	going to use it.

2004-10-13  Tom Tromey  <tromey@redhat.com>

	PR java/15578:
	* gcc.c (option_map): Added --extdirs and --encoding.

2004-10-13  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR target/14454
	* config/sparc/sparc.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Set to
	sparc_can_output_mi_thunk.
	(sparc_output_mi_thunk): Simplify handling of delta offset.  Add
	handling of vcall offset.
	(sparc_can_output_mi_thunk): New predicate.
	* doc/tm.texi (TARGET_ASM_OUTPUT_MI_THUNK): Document VCALL_OFFSET.
	(TARGET_ASM_OUTPUT_MI_VCALL_THUNK): Delete.
	(TARGET_ASM_CAN_OUTPUT_MI_THUNK): New target hook.

	* config/sparc/sparc.c (emit_and_preserve): Preserve stack alignment.

	* config/sparc/sparc.md (movdi): Remove redundant test.

2004-10-13  Paolo Bonzini  <bonzini@gnu.org>

	* tree-dump.c (dump_options): Remove TDF_TREE, TDF_RTL,
	TDF_IPA from -fdump-tree-*-all.

2004-10-13  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm-protos.h (arm_load_pic_register): Update prototype.
	* config/arm/arm.c (thumb_find_work_register): Update comments.
	(arm_load_pic_register): Add argument for scratch register.
	(arm_expand_prologue, thumb_expand_prologue): Pass extra argument.
	* config/arm/arm.md (builtin_setjmp_receiver): Ditto.

2004-10-13  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-data-ref.c: Fix comment typos.

2004-10-13  Jakub Jelinek  <jakub@redhat.com>
	    Zdenek Dvorak  <dvorakz@suse.cz>

	PR tree-optimization/17724
	* tree-cfg.c (tree_purge_dead_eh_edges): Free dominance info.

2004-10-13  Dorit Naishlos  <dorit@il.ibm.com>

	* rs6000.c (altivec_builtin_mask_for_load): Made static GTY(()).
	(altivec_builtin_mask_for_store): Likewise.
	(altivec_init_builtins): Use lang_hooks.builtin_function to
	create the decls for builtin_altivec_mask_for_load/store.

2004-10-13  Nick Clifton  <nickc@redhat.com>

	* config/c4x/c4x.c: Remove inclusion of loop.h.

2004-10-12  Ben Elliston  <bje@au.ibm.com>

	* basic-block.h (edge_iterator): Keep the address of VEC(edge) *.
	(ei_container): New; renamed.
	(ei_start, ei_last): New macros.
	(ei_start_1, ei_last_1): Renamed from ei_start.
	(ei_last_1, ei_end_p): Use ei_container() where applicable.
	(ei_one_before_end_p, ei_next, ei_edge): Likewise.
	* gcse.c (remove_reachable_equiv_notes): Use ei_container().

2004-10-11  Sebastian Pop  <pop@cri.ensmp.fr>

	* Makefile.in (tree-ssa-loop-niter.o): Depends on tree-data-ref.h.
	* cfgloop.c (initialize_loops_parallel_p): New.
	(flow_loops_find): Initialize the parallel_p field to true for all
	the loops.
	* tree-ssa-loop-niter.c: Include "tree-data-ref.h".
	(estimate_numbers_of_iterations_loop): Infers the loop bounds from
	the size of the data accessed in the loop.
	(struct nb_iter_bound): Moved...
	* cfgloop.h (struct nb_iter_bound): ... here.
	(estimated_nb_iterations, parallel_p): New fields in struct loop.
	(record_estimate): Declare extern here.
	* tree-chrec.c: Fix comments.
	(nb_vars_in_chrec): New function.
	* tree-chrec.h (nb_vars_in_chrec): Declared here.
	* tree-data-ref.c: Don't include lambda.h, that is already included
	in tree-data-ref.h.
	(tree_fold_divides_p): Don't check for integer_onep.
	(tree_fold_bezout): Removed.
	(gcd): New static duplicated function.
	(int_divides_p, dump_subscript): New.
	(dump_data_dependence_relation): Use dump_subscript.
	(dump_dist_dir_vectors, dump_ddrs, compute_estimated_nb_iterations,
	estimate_niter_from_size_of_data): New.
	(analyze_array_indexes, analyze_array): Call
	estimate_niter_from_size_of_data during	the detection of array
	references.  Pass in a pointer to the statement that contains the
	array reference.
	(all_chrecs_equal_p): New.
	(compute_distance_vector): Renamed compute_subscript_distance.
	Deal with multivariate conflict functions.
	(initialize_data_dependence_relation): Initialize DDR_AFFINE_P,
	DDR_SIZE_VECT, DDR_DIST_VECT, and DDR_DIR_VECT.
	(non_affine_dependence_relation): New.
	(analyze_ziv_subscript, analyze_siv_subscript_cst_affine,
	analyze_siv_subscript, analyze_miv_subscript,
	analyze_overlapping_iterations, subscript_dependence_tester):
	Initialize and return last_conflicts function.
	(initialize_matrix_A, FLOOR, compute_overlap_steps_for_affine_univar,
	compute_overlap_steps_for_affine_1_2): New.
	(analyze_siv_subscript_affine_cst): Removed.
	(analyze_subscript_affine_affine): Disprove dependences based on the
	iteration domains.  Solve the univariate dependence case as before,
	but use lambda_matrix_right_hermite instead of tree_fold_bezout.
	Implement the multivariate case of 2 versus 1 variables.
	(build_classic_dist_vector, build_classic_dir_vector): Implement some
	unhandled cases.
	(find_data_references_in_loop): Compute and initialize
	loop->estimated_nb_iterations and loop->parallel_p.
	(analyze_all_data_dependences): Modify the debug dump order.
	* tree-data-ref.h (SUB_LAST_CONFLICT_IN_A, SUB_LAST_CONFLICT_IN_B,
	subscript->last_conflict_in_a, subscript->last_conflict_in_b): Removed.
	(SUB_LAST_CONFLICT, subscript->last_conflict,
	data_dependence_relation->affine_p, data_dependence_relation->size_vect,
	DDR_AFFINE_P, DDR_SIZE_VECT): New.
	(find_data_references_in_loop, initialize_data_dependence_relation,
	dump_subscript, dump_ddrs, dump_dist_dir_vectors): Declared here.

2004-10-12  Kelley Cook  <kcook@gcc.gnu.org>

	* configure: Regenerate.

2004-10-12  Fariborz Jahanian <fjahanian@apple.com>

	PR 17892
	* tree-ssa-dom.c (unsafe_associative_fp_binop): New function.
	(simplify_rhs_and_lookup_avail_expr): Disallow associativity
	and constant folding of floating point MULT_EXPR/PLUS_EXPR
	expressions.

2004-10-12  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.c (s390_va_start): Use build_va_arg_indirect_ref.
	(s390_gimplify_va_arg): Likewise.

2004-10-12  Daniel Jacobowitz  <dan@debian.org>

	* defaults.h (REGNO_MODE_OK_FOR_BASE_P, REG_MODE_OK_FOR_BASE_P)
	(MODE_BASE_REG_REG_CLASS, REGNO_MODE_OK_FOR_REG_BASE_P)
	(REG_MODE_OK_FOR_REG_BASE_P): Provide default definitions.
	* regclass.c (record_address_regs): Remove ifdef.  Use
	REG_MODE_OK_FOR_REG_BASE_P and MODE_BASE_REG_REG_CLASS.
	* regrename.c (REG_MODE_OK_FOR_BASE_P): Remove unnecessary
	definition.
	(scan_rtx_address, replace_oldest_value_addr): Use
	REG_MODE_OK_FOR_REG_BASE_P and MODE_BASE_REG_REG_CLASS.
	* reload.c (REGNO_MODE_OK_FOR_BASE_P, REG_MODE_OK_FOR_BASE_P): Remove
	unnecessary definitions.
	(find_reloads_address_1): Support REG_MODE_OK_FOR_REG_BASE_P
	and MODE_BASE_REG_REG_CLASS.
	* config/arm/arm.h (MODE_BASE_REG_CLASS): Don't check reload_completed.
	(MODE_BASE_REG_REG_CLASS): Define.
	(REGNO_MODE_OK_FOR_REG_BASE_P): Define.
	(REG_MODE_OK_FOR_REG_BASE_P): Define.
	* doc/tm.texi (Register Classes): Document MODE_BASE_REG_REG_CLASS,
	REG_MODE_OK_FOR_REG_BASE_P, and REGNO_MODE_OK_FOR_REG_BASE_P.

2004-10-12  Daniel Berlin <dberlin@dberlin.org>

	* tree-ssa-alias.c (verify_name_tags): New function.
	(verify_flow_sensitive_alias_info): Remove code that used to check name tags.
	(verify_alias_info): Call verify_name_tags.

2004-10-12  Kazu Hirata  <kazu@cs.umass.edu>

	PR rtl-optimization/17931
	* config/i386/i386.c (ix86_rtx_costs): Handle COMPARE with
	ZERO_EXTRACT in it.

2004-10-12  Richard Earnshaw  <rearnsha@arm.com>

	* arm.c (arm_print_operand): Use output_operand_lossage where possible
	rather than aborting.

2004-10-12  Paul Brook  <paul@coudesourcery.com>

	* config.gcc: Add armv6{k,z,zk}
	* config/arm/arm-cores.def: Add arm1176 and mpcore.
	* config/arm/tune.md: Regenerate.
	* config/arm/arm.c (FL_FOR_ARCH6K, FL_FOR_ARCH6Z, FL_FOR_ARCH6ZK):
	Define.
	(all_architectures): Add armv6k, armv6z, armv6zk.
	* config/arm/lib1funcs.asm: Recognise new arm arcitectures.
	* doc/invoke.texi: Document new arch and cpu values.

2004-10-12  Paul Brook  <paul@coodesourcery.com>

	* config/arm/bpabi.h (SUBTARGET_EXTRA_ASM_SPEC): Change meabi=3 to
	meabi=4.

2004-10-12  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.md (addsi3_cbranch_scratch): Correct constraints.
	Handle negative constants.

2004-10-12  Joseph S. Myers  <jsm@polyomino.org.uk>

	PR c/17301
	* c-typeck.c (convert_arguments): Return error_mark_node if there
	are too few arguments.
	(build_function_call): Handle error_mark_node return from
	convert_arguments.

2004-10-06  Paolo Bonzini  <bonzini@gnu.org>

	* configure.ac (symbolic_link): Replace with $LN_S.
	(Assembler/Linker): Hard link from gas and binutils trees.
	* aclocal.m4 (gcc_AC_PROG_LN_S): Try "cp -p" before cp.
	* configure: Regenerate.

2004-10-12  Paul Brook  <paul@codesourcery.com>

	* configure.ac: Don't look for host assembler when building a canadian
	cross.
	* configure: Regenerate.

2004-10-11  Roger Sayle  <roger@eyesopen.com>

	PR other/17361
	* c-opts.c (permit_fortran_options): Delete/obsolete global variable.
	(c_common_init_options): Remove #ifdef CL_F77 code.  Scan command
	line options for "-lang-asm" and if found allow any of the C-family
	front-end options.
	(c_common_handle_option): Remove last use of permit_fortran_options.

2004-10-11  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.c (print_operand): Support 'S' format flag.
	* config/s390/s390.md ("*tmqi_mem"): Use 'S' format flag.
	("*tstsi", "*tstsi_cconly", "*tstsi_cconly2"): Likewise.
	("*tsthiCCT", "*tsthiCCT_cconly", "*tsthi", "*tsthi_cconly"): Likewise.
	("*tstqiCCT", "*tstqiCCT_cconly", "*tstqi", "*tstqi_cconly"): Likewise.
	("*cmphi_ccu", "*cmpqi_ccu", "*clc"): Likewise
	("movti", "*movdi_31", "*movqi", "*movdf_31", "*mvc"): Likewise.
	("*movstricthi"): Likewise.
	("*load_multiple_di", "*load_multiple_si"): Likewise.
	("*store_multiple_di", "*store_multiple_si"): Likewise.
	("*sethiqisi", "*sethihisi"): Likewise.
	("*sethiqidi_64", "*sethiqidi_31"): Likewise.
	("*andqi3_zarch", "*andqi3_esa", "*nc"): Likewise.
	("*iorqi3_zarch", "*iorqi3_esa", "*oc"): Likewise.
	("*xorqi3", "*xc", "*xc_zero"): Likewise.
	("get_tp_64", "get_tp_31", "set_tp_64", "set_tp_31"): Likewise.

	("*tmhi_full"): Fix incorrect op_type attribute.

	("*adddi3_alc_cc", "*adddi3_alc"): Remove double backslash.
	("*subdi3_slb_cc", "*subdi3_slb"): Likewise.
	("*addsi3_alc_cc", "*addsi3_alc"): Likewise.
	("*subsi3_slb_cc", "*subsi3_slb"): Likewise.

2004-10-11  Andrew Pinski  <pinskia@physics.uc.edu

	PR middle-end/16266
	* function.c (temp_slots_at_level): Fix typo which creates too
	many temp stack slots levels.

2004-10-11  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.c (s390_trampoline_template): Generate shorter
	trampoline code.
	(s390_trampoline_instantiate): Adapt.
	* config/s390/s390.h (TRAMPOLINE_SIZE): Adapt to new code.

2004-10-11  Roger Sayle  <roger@eyesopen.com>

	PR middle-end/17657
	* stmt.c (add_case_node): Add additional type argument.  Declare
	as static to match prototype.  Convert the upper and lower bounds
	to the specified index type.  Optimize away case ranges/values
	that are outside the index type's bounds.  Truncate case ranges
	that span the index type's bounds.
	(expand_case): Avoid unnessary computation and memory allocation
	when index type is error_mark_node.  Pass index_type as required
	by change to add_case_node API.  No need to convert case range
	bounds to index_type, this is now done by add_case_node.

2004-10-11  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390-protos.h (s390_offset_p): Add prototype.
	* config/s390/s390.c (s390_offset_p): New function.
	* config/s390/s390.md ("*cmpdi_cct", "*cmpsi_cct", "*cmpdi_ccu",
	"*cmpsi_ccu", "*cmphi_ccu", "*cmpqi_ccu"): Use splitter to
	transform Q->Q alternatives to *clc pattern.
	("*clc"): Move.
	("movti", "*movdi_64", "*movdi_31", "*movsi_zarch", "*movsi_esa",
	"*movhi", "*movqi", "*movdf_64", "*movdf_31", "movsf"): Use splitter
	to transform Q->Q alternatives to *mvc pattern.
	("*mvc"): Move.  Add peephole to merge adjacent MVCs.
	("*anddi3", "*andsi3_zarch", "*andsi3_esa", "*andhi3_zarch",
	"*andhi3_esa", "*andqi3_zarch", "*andqi3_esa"): Use splitter to
	transform Q->Q alternatives to *nc pattern.
	("*nc"): New insn.  New peephole to merge adjacent NCs.
	("*iordi3", "*iorsi3_zarch", "*iorsi3_esa", "*iorhi3_zarch",
	"*iorhi3_esa", "*iorqi3_zarch", "*iorqi3_esa"): Use splitter to
	transform Q->Q alternatives to *oc pattern.
	("*oc"): New insn.  New peephole to merge adjacent OCs.
	("*xordi3", "*xorsi3", "*xorhi3", "*xorqi3"): Use splitter to
	transform Q->Q alternatives to *xc pattern.
	("*xc"): New insn.  New peephole to merge adjacent XCs.
	("*xc_zero"): Move.  Add peephole to merge adjacent XCs.

2004-10-11  Andrew Pinski  <pinskia@physics.uc.edu>

	* gimplify.c (gimple_push_condition): Make sure that we don't
	have any saved condition cleanup if we were at the top level.

2004-10-11  Richard Sandiford  <rsandifo@redhat.com>

	* config/frv/frv.md (*adddi3_internal): Change name to...
	(adddi3): ...replacing the exisiting define_expand.  Combine
	alternatives.  Fix the range of the constant constraints ('J' instead
	of 'NOP').  Remove bogus operands[2] check.  Use simplify_gen_subreg
	to extract the lower and upper halves of the DImode operands.
	Always use addi3_lower and adddi3_upper, not the subdi3 forms.
	(adddi3_lower): Fix the range of the constant constraints and
	remove the bogus operands[2] check.
	(adddi3_upper): Use gpr_or_int10_operand as the predicate for
	operand 2.  Use addxi to handle constant operands.
	(subdi3_lower, subdi3_upper): Don't handle constant operands.

2004-10-11  Nathan Sidwell  <nathan@codesourcery.com>

	* gengtype-lex.l: Add commented } & ) characters to unconfuse
	editor's paren matching. Allow #define inside a struct.

2004-10-10  Andrew Pinski  <pinskia@physics.uc.edu>

	PR middle-end/17703
	part of PR c++/17657
	* fold-const.c (fold_build_cleanup_point_expr): New function.
	* tree.h (fold_build_cleanup_point_expr): Prototype.

2004-10-10  Eric Christopher  <echristo@redhat.com>

	* dwarf2out.c: Move attribute to subprogram declaration
	instead of subroutine type.

2004-10-10  Kazu Hirata  <kazu@cs.umass.edu>

	* basic-block.h: Remove the prototypes for can_hoist_insn_p,
	hoist_insn_after, and hoist_insn_to_edge.
	* rtl.h: Remove the prototypes for reg_referenced_between_p,
	no_jumps_between_p, and insn_dependent_p.
	* rtlanal.c (no_jumps_between_p, reg_referenced_between_p,
	insn_dependent_p, insn_dependent_p_1, hoist_test_store,
	can_hoist_insn_p, hoist_update_store, hoist_insn_after,
	hoist_insn_to_edge): Remove.

2004-10-10  Joseph S. Myers  <jsm@polyomino.org.uk>

	PR c/17881
	* c-decl.c (grokparms): Don't warn for parameters of incomplete
	type in declarations that are not definitions except for the case
	of parameters of void type.

2004-10-10  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-cfg.c: Fix comment typos.

2004-10-10  Joseph S. Myers  <jsm@polyomino.org.uk>

	PR c/17301
	* builtins.c (expand_builtin_va_start): Check for too few
	arguments to va_start.

2004-10-10  Joseph S. Myers  <jsm@polyomino.org.uk>

	PR c/17189
	* c-decl.c (grokfield): Make diagnostic for bad cases of unnamed
	fields a pedwarn.  Pedwarn here for unnamed structs/unions if
	pedantic.
	* c-parse.in (component_decl): Don't pedwarn here for unnamed
	fields.

2004-10-09  Zdenek Dvorak  <dvorakz@suse.cz>

	PR tree-optimization/17906
	* tree-tailcall.c (tree_optimize_tail_calls_1): Do not attempt to
	copy non-gimple reg arguments.

2004-10-09  Roger Sayle  <roger@eyesopen.com>

	PR rtl-optimization/17853
	* simplify-rtx.c (simplify_relational_operation): Correct comment.
	Reorganize handling of comparison operations with floating point
	results (always return 0.0 even without FLOAT_STORE_FLAG_VALUE).
	Likewise, introduce support for comparison operations with vector
	result types, introducing a new VECTOR_STORE_FLAG_VALUE target macro.

	* doc/rtl.texi: Document new VECTOR_STORE_FLAG_VALUE target macro.
	* doc/tm.texi: Likewise.

2004-10-09  Steven Bosscher  <stevenb@suse.de>

	* regs.h (struct reg_info_def): Remove the last_node_uid and
	changes_mode fields.
	(REGNO_LAST_NOTE_UID): Don't define.
	* regclass.c (reg_scan_mark_refs): Don't set REGNO_LAST_NOTE_UID.
	* regmove.c (copy_src_to_dest): Likewise.

2004-10-09  Roger Sayle  <roger@eyesopen.com>

	PR middle-end/17894
	* fold-const.c (fold_div_compare): When optimizing X/C1 op C2, the
	relational comparison operator op needs to be swapped/reversed when
	C1 is negative.  i.e. X/-10 < 1 becomes X >= -9, not X < -9.

2004-10-08  Andrew Pinski  <pinskia@physics.uc.edu>

	PR tree-opt/17902
	* tree-ssa-phiopt.c (conditional_replacement): Use bsi_after_labels
	instead of bsi_start.
	(value_replacement): Likewise.
	(abs_replacement): Likewise

2004-10-09  Steven Bosscher  <stevenb@suse.de>

	* cfgexpand.c (maybe_dump_rtl_for_tree_stmt): New function.
	(expand_gimple_cond_expr, expand_gimple_tailcall,
	expand_gimple_basic_block): Use it to dump RTL for each stmt.
	(tree_expand_cfg): Announce full RTL function dump.
	* tree-optimize.c (execute_one_pass): Use normal RTL printing,
	not the graph version.
	* tree-pretty-print.c (dump_generic_node): Allow empty statements
	in the arms of a COND_EXPR for lowered nodes.

2004-10-08  Joseph S. Myers  <joseph@codesourcery.com>

	* config/rs6000/spe.h (atosfix16, atosfix32, atosfix64, atoufix16,
	atoufix32, atoufix64, strtosfix16, strtosfix32, strtosfix64,
	strtoufix16, strtoufix32, strtoufix64): Declare.

2004-10-08  Joseph S. Myers  <jsm@polyomino.org.uk>

	* c-lex.c (interpret_float): Give a pedwarn rather than a warning
	for an out-of-range floating point constant.
	* builtins.c (fold_builtin_inf): Give a pedwarn rather than a
	warning if the target format does not support infinities.

2004-10-08  Kazu Hirata  <kazu@cs.umass.edu>

	* emit-rtl.c (last_label_num, base_label_num): Remove.
	(max_label_num): Always return label_num.
	(set_new_last_label_num, restore_emit_status): Remove.
	(init_emit): Don't initialize last_label_num.
	* function.c (pop_function_context_from): Don't call
	restore_emit_status.
	* function.h: Remove the prototype for restore_emit_status.
	* rtl.h: Remove the prototype for set_new_last_label_num.

2004-10-08  Kazu Hirata  <kazu@cs.umass.edu>

	* stmt.c (expand_decl_init): Remove.
	* tree.h: Remove the corresponding prototype.

2004-10-08  Kazu Hirata  <kazu@cs.umass.edu>

	* integrate.c (try_constants, subst_constants, mark_stores):
	Remove.
	* integrate.h: Remove the prototype for try_constants.

2004-10-08  Joseph S. Myers  <jsm@polyomino.org.uk>

	* c-typeck.c (enum impl_conv): Add ic_argpass_nonproto.
	(convert_for_assignment): Handle ic_argpass_nonproto.  Add
	comments about its relevance to errors.
	(c_convert_parm_for_inlining): Use ic_argpass_nonproto.

2004-10-08  Andrew Pinski  <pinskia@physics.uc.edu>

	PR c/16999
	* c-ppoutput.c (cb_ident): Don't quote string as it is already
	quoted.

2004-10-08  Diego Novillo  <dnovillo@redhat.com>

	* tree-ssa-pre.c (init_pre): Use size of ARRAY_REF to allocate
	reference_node_pool.

2004-10-08  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-cfg.c: Fix a comment typo.

2004-10-08  Andreas Krebbel  <krebbel1@de.ibm.com>

	* config/s390/s390.c (s390_register_info): Don't save fprs for
	-msoft-float.
	(s390_conditional_register_usage): Make fprs 'fixed' for -msoft-float.

2004-10-08  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.h (TARGET_DEFAULT_BACKCHAIN): New define.
	(TARGET_DEFAULT): Use symbolic values.
	* config/s390/tpf.h (TARGET_DEFAULT_BACKCHAIN): Redefine.
	(TARGET_DEFAULT): Use symbolic values.
	* config/s390/s390.c (s390_backchain_string): Initialize to
	TARGET_DEFAULT_BACKCHAIN.

2004-10-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtins.c (expand_builtin_mempcpy): Move tree handling code to
	fold_builtin_mempcpy.  Accept a type parameter.  Delete duplicate
	code.
	(expand_builtin_strcat): Accept a type parameter.
	(fold_builtin_mempcpy): Accept a type and endp parameter.

	* builtins.c (expand_builtin_strncpy): Delete duplicate code.
	Accept an `exp' instead of an `arglist'.

2004-10-08  Nathan Sidwell  <nathan@codesourcery.com>

	* tree-tailcall.c (tree_optimize_tail_calls_1): Use fold_convert,
	reverting my 2004-09-07 patch to use build_int_cst.

2004-10-08  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR target/17245
	* config/sparc/sparc.c (input_operand): Remove redundant code
	for handling LO_SUM.
	(legitimate_address_p) <REG+REG>: Do not recheck TARGET_V9.
	<LO_SUM>: If LO_SUM is offsettable, accept it for TFmode on V9.
	Otherwise only accept it for TFmode if quad move insns are available.

2004-10-08  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-cfg.c (tree_forwarder_block_p): Reorder checks so that
	common cases will be caught earlier than others.

2004-10-08  Michael Matz  <matz@suse.de>

	* loop-doloop.c (doloop_optimize): Extend count.

2004-10-08  Kaz Kojima  <kkojima@gcc.gnu.org>

	* config/sh/sh.md (prefetch_media, prefetch_i4): New insns.
	(prefetch): Convert to expander.

2004-10-08  Kaz Kojima  <kkojima@gcc.gnu.org>

	* config/sh/sh.md (tls_global_dynamic): Use MEM pattern for the
	first argument of CALL.
	(tls_local_dynamic): Likewise.

2004-10-08  Joseph S. Myers  <jsm@polyomino.org.uk>

	* c-typeck.c (enum impl_conv): New.
	(convert_for_assignment): Use it.  Take tree for function called
	instead of its name.  Handle ObjC selectors for diagnostics at
	start of function.  Select diagnostic text within the function
	using full sentences for diagnsotics.  Use %qE to name functions
	in diagnostics.
	(convert_arguments, build_modify_expr,
	c_convert_parm_for_inlining, digest_init, c_finish_return): Update
	callers to convert_for_assignment.
	(warn_for_assignment): Remove.

2004-10-08  Nick Clifton  <nickc@redhat.com>

	* config/sh/symbian.c (symbian_possibly_export_base_class):
	Replace use of deleted TYPE_USES_VIRTUAL_BASECLASSES macro with
	TYPE_CONTAINS_VPTR_P.

2004-10-08  Kazuhiro Inaoka  <inaoka.kazuhiro@renesas.com>

	* config/m32r/m32r.h (CONDITIONAL_REGISTER_USAGE): Don't exclude
	fixed registers form all_used_regs. Update call_really_used_regs.
	(CALL_REALLY_USED_REGISTERS): Define.
	* config/m32r/m32r.c (MUST_SAVE_REGISTER): Replace call_used_regs
	with call_really_used_regs.

2004-10-08  Alan Modra  <amodra@bigpond.net.au>

	* config/rs6000/sysv4.h (STARTFILE_LINUX_SPEC): Choose gcrt1.o
	for -profile as well as -p and -pg.

2004-10-07  Andrew Pinski  <pinskia@physics.uc.edu>

	* libgcc2.c (__moddi3): Cast &w to UDWtype*.

2004-10-07  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-cfg.c (tree_block_forwards_to): Remove.
	* tree-flow.h: Remove the corresponding prototype.

2004-10-07  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-flow-inline.h (phi_nodes): Remove an unnecessary check
	for ENTRY_BLOCK_PTR and EXIT_BLOCK_PTR.

2004-10-07  Geoffrey Keating  <geoffk@apple.com>

	Radar 3813796
	* config/rs6000/rs6000.c (rs6000_generate_compare): When
	flag_trapping_math is in effect, don't generate subtract
	instructions.

2004-10-07  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390-protos.h (s390_narrow_logical_operator): Add.
	* config/s390/s390.c (s390_narrow_logical_operator): New function.
	(s390_extra_constraint_str): Add 'A' constraints.
	(s390_const_ok_for_constraint_p): Add 'Nx' constraints.
	* config/s390/s390.h (EXTRA_MEMORY_CONSTRAINT): Add 'A' constraint.
	(CONSTRAINT_LEN): Likewise.
	* config/s390/s390.md ("*anddi3"): Add NI alternative and splitter.
	("*andsi3_zarch", "*andsi3_esa"): Likewise.
	("*andhi3_zarch", "*andhi3_esa"): Likewise.
	("*iordi3"): Add OI alternative and splitter.
	("*iorsi3_zarch", "*iorsi3_esa"): Likewise.
	("*iorhi3_zarch", "*iorhi3_esa"): Likewise.
	("*xordi3"): Add XI alternative and splitter.
	("*xorsi3", "*xorhi3"): Likewise.

2004-10-07  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.c (mips_function_rodata_section): New function.
	(TARGET_ASM_FUNCTION_RODATA_SECTION): Use it.

2004-10-07  Devang Patel  <dpatel@apple.com>

	* rs6000/altivec.md (UNSPEC_VCMPBFP, UNSPEC_VCMPEQUB, UNSPEC_VCMPEQUH,
	UNSPEC_VCMPEQUW, UNSPEC_VCMPGEFP, UNSPEC_VCMPGTUB, UNSPEC_VCMPGTSB,
	UNSPEC_VCMPGTUH, UNSPEC_VCMPGTSH, UNSPEC_VCMPGTUW, UNSPEC_VCMPGTSW,
	UNSPEC_VCMPGTFP, UNSPEC_VSEL4SI, UNSPEC_VSEL4SF, UNSPEC_VSEL8HI,
	UNSPEC_VSEL16QI, UNSPEC_VCOND_V4SI, UNSPEC_VCOND_V4SF, UNSPEC_VCOND_V8HI,
	UNSPEC_VCOND_V16QI, UNSPEC_VCONDU_V4SI, UNSPEC_VCONDU_V8HI,
	UNSPEC_VCONDU_V16QI): New constant defines.
	(vcondv4si, vcondv4sf, vcondv8hi, vcondv16qi, vconduv4si, vconduv8hi,
	vconduv16qi): New patterns.
	* rs6000/rs6000-protos.h (rs6000_emit_vector_cond_expr): New function.
	* rs6000/rs6000.c (rs6000_emit_vector_cond_expr): New function.
	(get_vec_cmp_insn): Same.
	(get_vsel_insn): Same.
	(rs6000_emit_vector_compare): Same.
	(rs6000_emit_vector_select): Same.
	(INSN_NOT_AVAILABLE): New.

2004-10-07  Zdenek Dvorak  <dvorakz@suse.cz>

	PR tree-optimization/17749
	* tree-tailcall.c (find_tail_calls): Check that parameter is
	a gimple_reg.

2004-10-07  Kazu Hirata  <kazu@cs.umass.edu>

	* config/ia64/ia64.c: Fix a comment typo.

2004-10-07  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* doc/install.texi (*-*-solaris2*): Fix marker for URL.

2004-10-07  Giovanni Bajo  <giovannibajo@gcc.gnu.org>

	PR c++/17115
	* tree-inline.c (expand_call_inline): Do not warn for functions
	marked with attribute noinline.

2004-10-07  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR target/17862
	* config/sparc/sparc.c (sparc_output_mi_thunk): Set
	current_function_uses_only_leaf_regs as well as sparc_leaf_function_p.

	* config/sparc/sparc.c (sparc_gimplify_va_arg): Pass 'false' instead
	of 0 as 4th argument to pass_by_reference.
	Call build_va_arg_indirect_ref instead of build_fold_indirect_ref.

2004-10-06  Eric Christopher  <echristo@redhat.com>

	* config/sh/sh.c (sh_dwarf_calling_convention): Fix renesas dwarf
	attribute.

2004-10-07  Richard Sandiford  <rsandifo@redhat.com>

	PR target/17770
	* config/mips/mips.md (mov_<load>l): Remove hazard=none attribute.

2004-10-07  Zdenek Dvorak  <dvorakz@suse.cz>

	PR rtl-optimization/17791
	* loop-doloop.c (doloop_modify): Take number of iterations as
	argument.
	(doloop_optimize): Extend or shorten the number of iterations
	when changing mode of counter register.
	* loop-iv.c (lowpart_subreg): Export.
	* rtl.h (lowpart_subreg): Declare.

2004-10-07  Zdenek Dvorak  <dvorakz@suse.cz>

	PR tree-optimization/17806
	* cfghooks.c (split_edge): Update IRREDUCIBLE_LOOP flags.
	* cfgloopmanip.c (loop_split_edge_with): Updating of IRREDUCIBLE_LOOP
	flags moved to split_edge.

2004-10-07  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR middle-end/17835
	* expmed.c (expand_sdiv_pow2): Force a stack adjustment
	before tentatively building the conditional move sequence.

2004-10-07  Richard Sandiford  <rsandifo@redhat.com>

	PR target/16815
	* function.c (assign_parm_setup_block_p): Tighten BLOCK_REG_PADDING
	check.
	* config/pa/pa.h (BLOCK_REG_PADDING): Define in terms of
	function_arg_padding.

2004-10-07  Richard Sandiford  <rsandifo@redhat.com>

	PR bootstrap/17857
	* Makefile.in (stmp-fixproto): Pass FIX_HEADER=build/... to fixproto.

2004-10-07  Kazu Hirata  <kazu@cs.umass.edu>

	* hooks.c (hook_int_void_1, hook_void_int): Remove.
	* hooks.h: Remove the corresponding prototypes.

2004-10-06  Andrew Pinski  <pinskia@physics.uc.edu>

	PR middle-end/17849
	* tree-nested.c (walk_stmt_info): Add changed field.
	(convert_nonlocal_reference): Set changed to when we
	change a decl to unnested decl.
	<case ADDR_EXPR>: Instead of checking if the immediate part
	of the ADDR_EXPR changed, check the field changed.
	Use recompute_tree_invarant_for_addr_expr instead of unsetting
	TREE_INVARIANT.
	(convert_local_reference): Set changed to when we
	change a decl to unnested decl.
	<case ADDR_EXPR>: Instead of checking if the immediate part
	of the ADDR_EXPR changed, check the field changed.
	Also call recompute_tree_invarant_for_addr_expr on the ADDR_EXPR.

2004-10-06  Kazu Hirata  <kazu@cs.umass.edu>

	* defaults.h (DWARF2_GENERATE_TEXT_SECTION_LABEL): Remove.
	* dwarf2out.c (dwarf2out_init): Remove references to
	DWARF2_GENERATE_TEXT_SECTION_LABEL.
	* system.h: Poison DWARF2_GENERATE_TEXT_SECTION_LABEL.
	* doc/tm.texi (DWARF2_GENERATE_TEXT_SECTION_LABEL): Remove.

2004-10-06  Joseph S. Myers  <jsm@polyomino.org.uk>

	* c-typeck.c (convert_arguments): Take expression for called
	function rather than its name.  Handle ObjC selectors directly
	rather than relying on warn_for_assignment to do so.  Call warning
	directly rather than warn_for_assignment.  Use %qE in diagnostics.
	Say "argument" rather than "arg" in diagnostics.
	(build_function_call): Update call to convert_arguments.

2004-10-06  Andrew Pinski  <pinskia@physics.uc.edu>

	PR debug/17787
	* dbxout.c (dbxout_symbol): Really handle RECORD, UNION, and
	ENUMs specially instead of just saying we do.

2004-10-06  Eric Christopher  <echristo@redhat.com>

	* dwarf2.h: Sync with include/elf/dwarf2.h

2004-10-06  Daniel Berlin  <dberlin@dberlin.org>

	* tree-pretty-print.c (dump_generic_node): Fix printing of BINFO
	and TREE_VEC nodes.

2004-10-06  Daniel Berlin  <dberlin@dberlin.org>

	* lambda-code.c (lambda_loopnest_to_gcc_loopnest): Convert
	to use FOR_EACH_SSA_USE_OPERAND iterator, and propagate_value.

2004-10-06  Daniel Berlin  <dberlin@dberlin.org>

	* lambda-code.c (compute_nest_using_fourier_motzkin): New
	function.
	(lambda_compute_auxillary_space): Split from here.

2004-10-06  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-loop-ivopts.c (expr_invariant_in_loop): Make non-static.
	* tree-flow.h: Add prototype.
	* lambda-code.c (invariant_in_loop_and_outer_loops): Use
	expr_invariant_in_loop.

2004-10-06  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-cfg.c (thread_jumps): Remove a duplicate check for
	EXIT_BLOCK_PTR.

2004-10-06  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390-protos.h (s_imm_operand): Remove.
	(s390_pool_operand): Add prototype.
	* config/s390/s390.c (general_s_operand): Remove.
	(s_imm_operand): Remove.
	(s_operand): Merge contents of general_s_operand.
	(s390_pool_operand): New function.
	* config/s390/s390.h (PREDICATE_CODES): Remove s_imm_operand.
	* config/s390/s390.md ("*cmpdi_cct", "*cmpsi_cct"): New insns.
	("*cmpdi_ccu"): Merge Q->Q alternative.
	("*cmpsi_ccu", "*cmphi_ccu"): Likewise.
	("*cmpqi_ccu"): Merge Q->Q, n->Q, n->S alternatives.
	("*cli"): Remove.
	("*cmpdi_ccu_mem", "*cmpsi_ccu_mem"): Likewise.
	("*cmphi_ccu_mem", "*cmpqi_ccu_mem"): Likewise.
	("*movstricthi"): Use memory_operand instead of s_imm_operand.

2004-10-06  Steve Ellcey  <sje@cup.hp.com>

	* 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.

2004-10-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtins.c (expand_builtin_strcpy): Delete duplicate code.
	Accept an expression instead of an arglist.
	(expand_builtin_stpcpy): Accept an expression instead of an
	arglist.

2004-10-06  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR target/16007
	* doc/install.texi (*-*-solaris2*): Mention potential problem
	with Sun assembler + GNU linker and C++ programs.
	Document status of binutils 2.15 release.

2004-10-06  Jan Hubicka  <jh@suse.cz>

	* cse.c (cse_main): Kill push/pop context.

2004-10-05  Zack Weinberg  <zack@codesourcery.com>

	* pretty-print.c: Include tree.h.
	(pp_base_prepare_to_format): New function, logic from
	text_specifies_location.
	(pp_base_format_text): Use gcc_assert.
	* pretty-print.h (pp_prepare_to_format): New macro.
	(pp_base_prepare_to_format): Prototype.
	* diagnostic.c (text_specifies_location): Delete.
	(bug_report_request): Delete.
	(diagnostic_set_info): Don't call text_specifies_location.
	(diagnostic_action_after_output): Put text from
	bug_report_request inline here.  Use gcc_unreachable.
	(diagnostic_report_current_function): Fix comment.
	(diagnostic_report_diagnostic): Clarify logic for error recursion.
	Call pp_prepare_to_format before diagnostic_starter.
	(trim_filename): Use IS_DIR_SEPARATOR.
	(fatal_error, internal_error): Use gcc_unreachable.
	(error_recursion): Call diagnostic_action_after_output to
	issue the bug_report_request message and exit.
	* Makefile.in (diagnostic.o, pretty-print.o): Update dependencies.

	* c-parse.in: Add list of diagnostic messages to insulate
	translation template from version of yacc/bison used to
	compile the grammar.

2004-10-06  Alan Modra  <amodra@bigpond.net.au>

	PR 16406
	* doc/tm.texi (USE_LD_AS_NEEDED, LINK_EH_SPEC): Document.

2004-10-05  Kazu Hirata  <kazu@cs.umass.edu>

	* basic-block.h: Remove the prototype for
	flow_preorder_transversal_compute.
	* cfganal.c (dfst_node): Remove.
	(flow_preorder_transversal_compute): Likewise.
	* rtl.h: Remove the prototype for get_jump_table_offset.
	* rtlanal.c (get_jump_table_offset): Remove.

2004-10-05  Richard Henderson  <rth@redhat.com>

	PR 17756
	* tree-ssa-operands.c (get_expr_operands): Handle CONST_DECL.

2004-10-05  Kelley Cook  <kcook@gcc.gnu.org>

	PR bootstrap/17817
	* Makefile.in: Stage the build directory too.

2004-10-05  Aldy Hernandez  <aldyh@redhat.com>

	* config/frv/frv.h (LEGITIMIZE_ADDRESS): New.

	* config/frv/frv-protos.h (frv_legitimize_address): Protoize.
	(frv_emit_move): Same.

	* config/frv/frv.c (frv_emit_move): New.
	(frv_legitimize_address): New.

	* config/frv/frv.md ("movsi"): Call frv_emit_move.
	("movqi"): Same.
	("movhi"): Same.
	("movdi"): Same.
	("movsf"): Same.
	("movdf"): Same.

2004-10-05  Joseph S. Myers  <jsm@polyomino.org.uk>

	* c-decl.c (declspecs_add_type): Don't pedwarn for _Complex in
	system headers.

2004-10-05  Joseph S. Myers  <jsm@polyomino.org.uk>

	* c-decl.c (pushdecl): When an extern declaration at block scope
	refers to a visible entity with internal linkage, use the old DECL
	rather than the new one.

2004-10-05  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-cfg.c (cleanup_tree_cfg): Remove extra parentheses in
	comments.

2004-10-05  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-cfg.c (thread_jumps): Remove a duplicate check for
	an infinite loop.

2004-10-05  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-cfg.c (thread_jumps): Iterate with FOR_EACH_BB instead
	of FOR_BB_BETWEEN.  Remove a useless check for unreachable
	blocks.

2004-10-05  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-cfg.c (cleanup_tree_cfg): Don't call
	delete_unreachable_blosk() after thread_jumps().
	(thread_jumps): Always remove basic blocks as they become
	unreachable.

2004-10-05  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-cfg.c (cleanup_tree_cfg): Remove variable
	something_changed.  Simplify the while loop.

2004-10-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtins.c (expand_builtin_memmove): Delete duplicate code
	and accept a tree type for the result.
	(expand_builtin_bcopy): Accept a tree type for the result.
	(fold_builtin_memmove): Accept an arglist and tree type for
	the result.

2004-10-05  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.c (s390_dump_pool): Remove return value.
	Use gen_pool_align, gen_pool_section_start/end instead of
	gen_pool_start/end_31/64.
	* config/s390/s390.md (UNSPECV_POOL_START, UNSPECV_POOL_END): Remove.
	(UNSPECV_POOL_SECTION, UNSPECV_POOL_ALIGN): New constants.
	("pool_start_31", "pool_end_31"): Remove.
	("pool_start_64", "pool_end_64"): Likewise.
	("pool_align", "pool_section_start", "pool_section_end": New insns.

	* config/s390/s390.c (s390_cannot_copy_insn_p): New function.
	(TARGET_CANNOT_COPY_INSN_P): Define.
	(s390_cannot_force_const_mem): Handle UNSPEC_INSN.
	(struct constant_pool): New member 'execute'.
	(s390_add_execute, s390_find_execute): New functions.
	(s390_execute_label, s390_execute_target): Likewise.
	(s390_dump_pool): Output in-pool execute target templates.
	(s390_dump_execute): New function.
	(s390_alloc_pool, s390_free_pool): Handle execute templates.
	(s390_mainpool_start, s390_mainpool_finish): Likewise.
	(s390_chunkify_start, s390_chunkify_finish): Likewise.
	* config/s390/s390.md (UNSPEC_INSN, UNSPEC_EXECUTE): New constants.
	("*execute"): New insn pattern.
	("movmem_short", "*movmem_short"): Use splitters to generate
	explicit execute pattern, remove embedded execute.
	("clrmem_short", "*clrmem_short"): Likewise.
	("cmpmem_short", "*cmpmem_short"): Likewise.

2004-10-05  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa.c (verify_ssa): Verify phi arguments only
	contain renamed names.

2004-10-05  Alan Modra  <amodra@bigpond.net.au>

	* config/rs6000/linux.h: Formatting, whitespace.
	* config/rs6000/linux64.h: Likewise.
	* config/rs6000/rs6000-protos.h: Likewise.
	* config/rs6000/rs6000.c: Likewise.
	(easy_vector_splat_const): Add fall thru comments.
	(output_vec_const_move): Likewise.

2004-10-05  Kelley Cook  <kcook@gcc.gnu.org>

	* Makefile.in: Update -Wno-error exceptions for move to build dir.

2004-10-05  Chao-Ying Fu  <fu@mips.com>
	    Richard Sandiford  <rsandifo@redhat.com>

	* doc/invoke.texi (-mpaired-single): Link to the new description of the
	built-in functions.  Document dependencies.
	(-mips3d): Add link here too.
	* doc/extend.texi (MIPS Paired-Single Support): New section.

2004-10-04  Chao-ying Fu  <fu@mips.com>

	* config/mips/mips.h (UNITS_PER_SIMD_WORD): Define.

2004-10-04  Diego Novillo  <dnovillo@redhat.com>

	* tree-ssa-dom.c (tree_ssa_dominator_optimize):
	Initialize OPT_STATS to 0.

2004-10-04  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-data-ref.c: Fix comment typos.

2004-10-04  Sebastian Pop  <pop@cri.ensmp.fr>

	* tree-data-ref.c (array_base_name_differ_p): Fix comments.  When
	the predicate cannot be computed, don't initialize the result to
	false.

2004-10-01  Eric Christopher  <echristo@redhat.com>

	* dwarf2.h (dwarf_calling_convention): Add GNU prefix to
	locally defined enum.
	* dwarf2out.c (add_calling_convention_attribute): Don't
	emit DW_CC_normal.

2004-10-03  Andrew Pinski  <pinskia@physics.uc.edu>

	PR c/17178, PR c/17820
	* c-decl.c (pop_scope): Do not warn about unused static
	variables as they warned in the middle-end.

2004-10-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtins.c (expand_builtin_memcpy): Delete duplicate code
	and make the first parameter the expression not the arglist.

2004-10-03  Ulrich Weigand  <uweigand@de.ibm.com>

	* expr.c (expand_expr_addr_expr): Only accept Pmode or ptr_mode
	as valid modes to expand address expressions.

2004-10-03  Joseph S. Myers  <jsm@polyomino.org.uk>

	* c-aux-info.c, c-common.c, c-common.h, c-cppbuiltin.c, c-decl.c,
	c-format.c, c-incpath.c, c-lex.c, c-objc-common.c, c-opts.c,
	c-parse.in, c-pch.c, c-ppoutput.c, c-pragma.c, c-typeck.c: Follow
	code formatting conventions.

2004-10-03  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.md (<u>mulsidi3_32bit_r4000): Fix unsigned case.

2004-10-03  Kazu Hirata  <kazu@cs.umass.edu>

	PR tree-optimization/16632
	* fold-const.c (fold) [EQ_EXPR]: When seeing if D & ~C != 0 to
	fold (A & C) == D into 0, fold ~C.  Similarly, for the case
	where | is used instead of &.

2004-10-03  Kazu Hirata  <kazu@cs.umass.edu>

	* ginclude/stddef.h: Fix a comment typo.

2004-10-03  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR target/17443
	* config.gcc (i?86-*-solaris2*): Restore correct logic
	for --enable-threads option.
	(sparc64-*-solaris2*): Likewise.
	(sparc-*-solaris2*): Likewise.

2004-10-03  Alan Modra  <amodra@bigpond.net.au>

	* config/rs6000/linux.h (TARGET_C99_FUNCTIONS): Define.
	(OS_MISSING_POWERPC64): Move, and comment.
	* config/rs6000/linux64.h (TARGET_C99_FUNCTIONS): Define.
	(OS_MISSING_POWERPC64): Move, and comment.

2004-10-02  Ian Lance Taylor  <ian@wasabisystems.com>

	* arm.c (output_call_mem): Add missing \t.

2004-10-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtins.c (expand_builtin_memcmp, expand_builtin_strcmp,
	expand_builtin_strncmp): Delete duplicate code.

2004-10-02  Frank Ch. Eigler  <fche@redhat.com>

	* tree-mudflap.c (mf_build_check_statement_for): Reorganize to
	take check-base and -limit arguments.
	(mf_xform_derefs_1): Reorganize slightly to pass proper base/limit
	check ranges for ARRAY_REF and COMPONENT_REF.
	(execute_mudflap_fnction_ops, ..._decls): Limit unnecessary
	instrumentation.

2004-10-02  Joseph S. Myers  <jsm@polyomino.org.uk>

	* c-objc-common.c (c_tree_printer): Correct description of %E.
	Don't fall through after printing an expression.

2004-10-02  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-cfg.c, config/s390/tpf-unwind.h: Fix comment typos.

2004-10-02  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-cfg.c (cleanup_tree_cfg): Speed up by calling
	delete_unrechable_blocks() only when necessary.

2004-10-02  P.J. Darcy  <darcypj@us.ibm.com>

	* gthr-tpf.h (__gthread_recursive_mutex_t): New type.
	(__GTHREAD_RECURSIVE_MUTEX_INIT): Define.
	(__gthread_recursive_mutex_lock, __gthread_recursive_mutex_trylock,
	__gthread_recursive_mutex_unlock): New functions.

2004-10-02  P.J. Darcy  <darcypj@us.ibm.com>

	* config/s390/t-tpf (LIB2ADDEH): Remove tpf-eh.c.
	* config/s390/tpf-eh.c: Remove file.
	* config/s390/tpf-unwind.h: New file.
	* config/s390/tpf.h (MD_FALLBACK_FRAME_STATE_FOR): Remove.
	(MD_UNWIND_SUPPORT): Define.

2004-10-02  Joseph S. Myers  <jsm@polyomino.org.uk>

	* c-typeck.c (warn_for_assignment): Don't permit argnum == 0.

2004-10-01  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390-protos.h (s390_comparison): Add prototype.
	* config/s390/s390.c (s390_comparison): New function.
	(s390_branch_condition_mask): Return -1 for invalid comparisons.
	(s390_branch_condition_mnemonic): Assert valid comparison.
	* config/s390/s390.h (PREDICATE_CODES): Add s390_comparison.
	* config/s390/s390.md ("*cjump_64", "*cjump_31", "*cjump_long",
	"*icjump_64", "*icjump_31", "*icjump_long", "*trap"): Use
	s390_comparison instead of comparison_operator.

	* config/s390/s390.md (UNSPEC_CMPINT): New constant.
	("cmpmemdi"): Remove.
	("cmpmem_short", "*cmpmem_short"): Use CCUmode instead of CCSmode.
	("cmpmem_long", "*cmpmem_long_64", "*cmpmem_long_31"): Likewise.
	("cmpint_si"): Rename to ...
	("*cmpint_si"): ... this.  Use UNSPEC_CMPINT.
	("cmpint_di", "*cmpint_di"): Likewise.
	* config/s390/s390.c (s390_canonicalize_comparison): Remove
	redundant UNSPEC_CMPINT conversions.
	(s390_expand_cmpmem): Adapt to cmpint pattern changes.

2004-10-01  Kazu Hirata  <kazu@cs.umass.edu>

	* collect2.c (COLLECT_PARSE_FLAG): Remove.
	(main): Remove a reference to COLLECT_PARSE_FLAG
	* system.h: Poison COLLECT_PARSE_FLAG.
	* doc/tm.texi (COLLECT_PARSE_FLAG): Remove.

2004-10-01  Paul Brook  <paul@codesourcery.com>

	* config/arm/crti.asm: Give _init and _fini function type.

2004-10-01  Zdenek Dvorak  <dvorakz@suse.cz>

	* common.opt (ftree-loop-ivcanon): Enable by default.
	* tree-ssa-loop-ivcanon.c (try_unroll_loop_completely):
	Enable complete loop unrolling.
	(canonicalize_induction_variables, tree_unroll_loops_completely):
	Reset scev info.

2004-10-01  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (thumb_compute_saved_rag_mask): Or with bitmask,
	not register number.
	(thumb_find_work_register): Search full register range.

2004-10-01  Andrew Pinski  <pinskia@physics.uc.edu>

	PR tree-opt/17343
	* tree-cfg.c (group_case_labels): Get the label and not
	the case expr for the default case.
	When the label we looking at is the default, decrement the
	new_size.

2004-10-01  Jan Hubicka  <jh@suse.cz>

	* c-decl.c (c_expand_body): Update call tree_rest_of_compilation.
	* cgraphunit.c (cgraph_build_static_cdtor): Likewise.
	* toplev.h (tree_rest_of_compilation): Update prototype.
	* tree-optimize.c (tree_rest_of_compilation): Kill nested_p argument.

2004-10-01  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-cfg.c (cleanup_tree_cfg): Pull a call to
	cleanup_control_flow() out of the while loop.

2004-10-01  Paolo Bonzini  <bonzini@gnu.org>

	* tree-vectorizer.c (vectorizable_operation): Fail unless
	the mode for the vector type is indeed a vector mode.

2004-10-01  Zdenek Dvorak  <dvorakz@suse.cz>

	* tree-chrec.c (chrec_fold_plus_poly_poly, chrec_fold_plus_1,
	chrec_fold_multiply): Use fold_convert or build_int_cst_type instead
	of convert.
	* tree-scalar-evolution.c (compute_overall_effect_of_inner_loop,
	add_to_evolution, set_nb_iterations_in_loop, follow_ssa_edge_in_rhs,
	follow_ssa_edge_in_rhs): Ditto.
	* tree-ssa-loop-ivopts.c (struct iv): Add base_object field.
	(dump_iv): Dump base_object.
	(dump_use, dump_cand): Use dump_iv.
	(determine_base_object): New function.
	(alloc_iv): Initialize base_object field.
	(record_use): Clear the ssa_name field of iv.
	(get_computation_cost_at): Do not use difference of addresses of
	two different objects.
	(may_eliminate_iv): Do not require the loop to have just single exit.
	* tree-ssa-loop-niter.c (zero_p): Do not check for overflows.
	(nonzero_p): New function.
	(inverse, number_of_iterations_cond, simplify_using_outer_evolutions,
	tree_simplify_using_condition, simplify_using_initial_conditions,
	loop_niter_by_eval, find_loop_niter_by_eval,
	estimate_numbers_of_iterations_loop, compare_trees,
	upper_bound_in_type, lower_bound_in_type,
	can_count_iv_in_wider_type_bound): Use buildN instead of build.  Use
	fold_convert or build_int_cst_type instead of convert.  Use (non)zero_p
	instead of integer_(non)zerop.

2004-10-01  Jakub Jelinek  <jakub@redhat.com>

	Revert
	2004-09-29  Jakub Jelinek  <jakub@redhat.com>

	* tree.h (enum tree_index): Add TI_VA_LIST_GPR_COUNTER_FIELD
	and TI_VA_LIST_FPR_COUNTER_FIELD.
	(va_list_gpr_counter_field, va_list_fpr_counter_field): Define.
	* tree-pass.h (pass_stdarg): Add.
	* tree-optimize.c (init_tree_optimization_passes): Add pass_stdarg.
	* tree-stdarg.c: New file.
	* Makefile.in (OBJS-common): Add tree-stdarg.o.
	(tree-stdarg.o): Add dependencies.
	* function.h (struct function): Add va_list_gpr_size and
	va_list_fpr_size fields.
	* function.c (allocate_struct_function): Initialize them.

	* config/i386/i386.c (ix86_build_builtin_va_list): Initialize
	va_list_{g,f}pr_counter_field.
	(ix86_setup_incoming_varargs): Don't do anything if reg_save
	area will not be used.  Only save registers that tree-stdarg.c
	detected they need saving.
	(ix86_va_start): Don't set up fields that won't be used.

	* config/rs6000/rs6000.c (rs6000_build_builtin_va_list): Initialize
	va_list_{g,f}pr_counter_field.
	(setup_incoming_varargs): Don't do anything if reg_save
	area will not be used.  Only save registers that tree-stdarg.c
	detected they need saving.
	(rs6000_va_start): Don't set up fields that won't be used.

2004-09-30  Eric Christopher  <echristo@redhat.com>

	* dwarf2.h (dwarf_calling_convention): Add enum for renesas
	sh abi.
	* dwarf2out.c (add_calling_convention_attribute): New function.
	(gen_subroutine_type_die): Use.
	* target-def.h (TARGET_DWARF_CALLING_CONVENTION): New hook.
	* target.h (gcc_target): Add dwarf_calling_convention.
	* hooks.c (hook_int_tree_0): New function.
	* hooks.h: Prototype.
	* config/sh/sh.c: Include dwarf2.h.
	(sh_dwarf_calling_convention): New function.
	(TARGET_DWARF_CALLING_CONVENTION): Use.
	* doc/tm.texi (TARGET_DWARF_CALLING_CONVENTION): Document.

2004-09-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtins.c (expand_builtin_strstr, expand_builtin_strchr,
	expand_builtin_strrchr, expand_builtin_strpbrk,
	expand_builtin_strncat, expand_builtin_strspn,
	expand_builtin_strcspn, expand_builtin_fputs): Eliminate duplicate
	code.

2004-09-30  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390-protos.h (s390_expand_logical_operator): Add
	prototype.
	(s390_logical_operator_ok_p): Likewise.
	* config/s390/s390.c (s390_expand_logical_operator): New function.
	(s390_logical_operator_ok_p): Likewise.
	* config/s390/s390.md ("anddi3"): New expander.
	("*anddi3"): Rename from old anddi3 pattern, add Q->Q alternative.
	("*anddi3_ss", "*anddi3_ss_inv"): Remove.
	("andsi3"): Use s390_expand_logical_operator.
	("*andsi3_esa", "*andsi3_zarch"): Add Q->Q alternative.
	("*andsi3_ss", "*andsi3_ss_inv"): Remove.
	("andhi3"): New expander.
	("*andhi3_zarch", "*andhi3_esa"): New patterns.
	("andhi3", "*andhi3_ni", "*andhi3_ss", "*andhi3_ss_inv"): Remove.
	("andqi3"): New expander.
	("*andqi3_zarch", "*andqi3_esa"): New patterns.
	("andqi3", "*andqi3_ni", "*andqi3_ss", "*andqi3_ss_inv"): Remove.
	("iordi3"): New expander.
	("*iordi3"): Rename from old iordi3 pattern, add Q->Q alternative.
	("*iordi3_ss", "*iordi3_ss_inv"): Remove.
	("iorsi3"): Use s390_expand_logical_operator.
	("*iorsi3_esa", "*iorsi3_zarch"): Add Q->Q alternative.
	("*iorsi3_ss", "*iorsi3_ss_inv"): Remove.
	("iorhi3"): New expiorer.
	("*iorhi3_zarch", "*iorhi3_esa"): New patterns.
	("iorhi3", "*iorhi3_ni", "*iorhi3_ss", "*iorhi3_ss_inv"): Remove.
	("iorqi3"): New expiorer.
	("*iorqi3_zarch", "*iorqi3_esa"): New patterns.
	("iorqi3", "*iorqi3_ni", "*iorqi3_ss", "*iorqi3_ss_inv"): Remove.
	("xordi3"): New expander.
	("*xordi3"): Rename from old xordi3 pattern, add Q->Q alternative.
	("*xordi3_ss", "*xordi3_ss_inv"): Remove.
	("xorsi3"): New expander.
	("*xorsi3"): Rename from old xorsi3 pattern, add Q->Q alternative.
	("*xorsi3_ss", "*xorsi3_ss_inv"): Remove.
	("xorhi3"): New expander.
	("*xorqi3"): Rename from old xorhi3 pattern, add Q->Q alternative.
	("*xorhi3_ss", "*xorhi3_ss_inv"): Remove.
	("xorqi3"): New expander.
	("*xorqi3"): Rename from old xorqi3 pattern, add Q->Q alternative.
	("*xorqi3_ss", "*xorqi3_ss_inv"): Remove.

2004-09-30  Roger Sayle  <roger@eyesopen.com>

	* combine.c (force_to_mode) <NE_EXPR>: Only convert the expression
	(AND (NE FOO 0) CONST) into (AND FOO CONST) if FOO has the same
	machine mode as the result.

2004-09-30  Ben Elliston  <bje@au.ibm.com>

	PR bootstrap/17761
	* lcm.c (optimize_mode_switching): Update to use EDGE_SUCC and
	FOR_EACH_EDGE macros.

2004-09-30  Joseph S. Myers  <jsm@polyomino.org.uk>

	* c-tree.h (readonly_error): Remove.
	* c-typeck (enum lvalue_use): New.
	(lvalue_or_else, readonly_error): Use it.  All callers changed.
	(readonly_error): Make static.

2004-09-30  Jan Hubicka  <jh@suse.cz>

	PR debug/13974
	* cfgrtl.c (try_redirect_by_replacing_jump,
	force_nonfallthru_and_redirect, commit_one_edge_insertion,
	cfg_layout_merge_blocks): Do not attach any line number information
	to newly inserted instructions.
	* emit-rtl.c (emit_insn*_before, emit_insn*_after): Rename to
	emit_insn_*_noloc.
	(emit_*insn_before, emit_insn*_after): New.
	(emit_*insn_before_setloc, emit_*insn_after_setloc): Do not overwrite
	existing locators.
	* rtl.h (emit_*insn_before_noloc, emit_*insn_after_noloc): Declare.
	(emit_*insn_before_sameloc, emit_*insn_after_sameloc): Kill.

2004-09-30  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390-protos.h (s390_arg_frame_offset): Remove.
	(s390_return_address_offset): Remove.
	(s390_can_eliminate): Add prototype.
	(s390_initial_elimination_offset): Add prototype.
	* config/s390/s390.h (CAN_ELIMINATE): Call s390_can_eliminate.
	(INITIAL_ELIMINATION_OFFSET): Call s390_initial_elimination_offset.
	* config/s390/s390.c (s390_arg_frame_offset): Remove.
	(s390_return_address_offset): Remove.
	(s390_can_eliminate, s390_initial_elimination_offset): New functions.
	(struct machine_function): New member split_branches_pending_p.
	(s390_mainpool_start): Allow nonexistant pool insn for empty pool.
	(s390_mainpool_finish): Likewise.  Clear base_reg if pool empty.
	(s390_optimize_prologue): Remove base_used argument.  Call
	s390_update_frame_layout instead of s390_register_info.  Handle
	prologue/epilogue insns that touch only RETURN_REGNUM.
	(s390_reorg): Remove base_used.  Clear split_branches_pending_p.
	(s390_register_info): Remove base_used and return_addr_used
	arguments, compute special register usage inline.  Return live
	register data to caller.
	(s390_frame_info): Remove arguments, do not call s390_register_info.
	(s390_init_frame_layout): New function.
	(s390_update_frame_layout): Likewise.
	(s390_emit_prologue): Call s390_update_frame_layout; some code
	move to there.  Do not emit pool placeholder insn if unnecessary.

2004-09-30  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.c (legitimate_reload_constant_p): Remove
	floating point constant workaround.
	(s390_secondary_input_reload_class): Handle PLUS reloads
	with too-large constant.
	(s390_expand_plus_operand): Likewise.
	* config/s390/s390.md ("movdi"): Do not call force_const_mem.
	("movsi"): Likewise.  Also, remove workaround for non-general
	operands.
	("movdf"): Do not call force_const_mem.
	("movsf"): Likewise.  Merge expander with *movsf insn.
	("*movsf"): Remove, merge with movsf expander.

2004-09-30  Paul Brook  <paul@codesourcery.com>

	* config/arm/symbian.h (STARTFILE_SPEC): Remove crt*.o.
	(ENDFILE_SPEC): Define.
	* config/arm/t-symbian.h (EXTRA_MULTILIB_PARTS): Set.

2004-09-30  Richard Henderson  <rth@redhat.com>

	* config/alpha/qrnnd.asm: Mark for noexecstack.

2004-09-30  Kazu Hirata  <kazu@cs.umass.edu>

	* protoize.c, tree-cfg.c: Fix comment typos.

2004-09-30  Joseph S. Myers  <jsm@polyomino.org.uk>

	PR c/17730
	* c-typeck.c (lvalue_or_else): Pass msgid directly to error.

2004-09-30  Diego Novillo  <dnovillo@redhat.com>

	* tree-ssa-alias.c (collect_points_to_info_r): Move analysis of
	expressions...
	(add_pointed_to_expr): ... here.
	Call add_pointed_to_expr for variables with DECL_INITIAL set.
	* tree-dfa.c (add_referenced_var): Scan DECL_INITIAL of any
	pointer variable, if set.

2004-09-30  Kazu Hirata  <kazu@cs.umass.edu>

	* config/sh/sh.c: Follow spelling conventions.

2004-09-29  Richard Henderson  <rth@redhat.com>

	* unwind-dw2.c (_Unwind_GetGR): Honor DWARF_ZERO_REG.
	* doc/tm.texi (DWARF_ZERO_REG): New.

	* config/alpha/alpha.c (alpha_sa_mask, alpha_expand_prologue,
	alpha_expand_epilogue): Revert 2003-09-30 change to store zero.
	* config/alpha/alpha.h (DWARF_ZERO_REG): New.

2004-09-29  Ulrich Weigand  <uweigand@de.ibm.com>

	* builtins.c (expand_builtin_strlen): Do not call emit_move_insn
	with a PLUS as source operand.
	(expand_movstr): Likewise.
	(expand_builtin_stpcpy): Likewise.

2004-09-29  Richard Henderson  <rth@redhat.com>

	PR 17739
	* tree-gimple.c (is_gimple_reg): Reject hard registers.
	(is_gimple_asm_val): New.
	* tree-gimple.h (is_gimple_asm_val): Declare.
	* gimplify.c (gimplify_asm_expr): Use it.
	* tree-pretty-print.c (print_declaration): Dump hard regs.
	* tree-outof-ssa.c (check_replaceable): Don't check for hard regs.
	* tree-ssa-copyrename.c (copy_rename_partition_coalesce): Likewise.
	* tree-ssa-pre.c (is_undefined_value): Likewise.
	* tree-ssa-copy.c (may_propagate_copy): Likewise.
	(may_propagate_copy_into_asm): Protect DECL_HARD_REGISTER.
	* tree-ssa.c (warn_uninit): Likewise.
	* tree.h (DECL_HARD_REGISTER): Check for VAR_DECL.

2004-09-29  Fariborz Jahanian <fjahanian@apple.com>

	* c-decl.c (merge_decls): Use comptype when comparing
	types to decide on DECL_SIZE save of olddecl.

2004-09-29  Daniel Berlin  <dberlin@dberlin.org>

	* tree.h (INDIRECT_REF_P): New macro.
	* alias.c (get_alias_set): Use it
	(nonoverlapping_memrefs_p): Ditto.
	* emit-rtl.c (mem_expr_equal_p): Ditto.
	(set_mem_attributes_minus_bitpos): Ditto.
	(is_gimple_addressable): Ditto.
	(get_base_address): Ditto.
	* tree-ssa-alias.c (find_ptr_derefernece): Ditto.
	* tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Ditto.
	* tree-ssa-dom.c (record_equivalences_from_stmt): Ditto.
	* tree-ssa-loop-im.c (is_call_clobbered_ref): Ditto.
	* tree-ssa-loop-ivopts.c (find_interesting_uses_address): Ditto.
	(add_address_candidates): Ditto.
	(rewrite_address_base): Ditto.

2004-09-30  Ben Elliston  <bje@au.ibm.com>

	* tree-flow.h (struct bb_ann_d): Remove num_preds member.
	* tree-into-ssa.c (rewrite_into_ssa): Don't set it.
	(rewrite_ssa_into_ssa): Likewise.
	* tree-phinodes.c (create_phi_node): Access the number of
	predecessor edges using EDGE_COUNT() and not num_preds.

2004-09-29  Joseph S. Myers  <jsm@polyomino.org.uk>

	PR c/7425
	* c-decl.c (merge_decls): Merge TREE_DEPRECATED.

2004-09-29  Eric Christopher  <echristo@redhat.com>

	* fold-const.c (tree_swap_operands_p): Remove duplicated code.

2004-09-29  Hans-Peter Nilsson  <hp@axis.com>

	* config/cris/cris.md (moverside, movemside): With MEM, make sure
	the address is (plus reg mem).

2004-09-29  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/linux64.h (PROCESSOR_DEFAULT): Define.

2004-09-29  Nathan Sidwell  <nathan@codesourcery.com>

	* tree.c (make_node_stat): Fix uninitialized warning.  Replace
	cascaded if ... else if with a switch.

2004-09-29  Aaron W. LaFramboise  <aaronavay62@aaronwl.com>

	* read-rtl.c (apply_macro_to_string): Replace index with strchr.

2004-09-29  Jakub Jelinek  <jakub@redhat.com>

	* tree.h (enum tree_index): Add TI_VA_LIST_GPR_COUNTER_FIELD
	and TI_VA_LIST_FPR_COUNTER_FIELD.
	(va_list_gpr_counter_field, va_list_fpr_counter_field): Define.
	* tree-pass.h (pass_stdarg): Add.
	* tree-optimize.c (init_tree_optimization_passes): Add pass_stdarg.
	* tree-stdarg.c: New file.
	* Makefile.in (OBJS-common): Add tree-stdarg.o.
	(tree-stdarg.o): Add dependencies.
	* function.h (struct function): Add va_list_gpr_size and
	va_list_fpr_size fields.
	* function.c (allocate_struct_function): Initialize them.

	* config/i386/i386.c (ix86_build_builtin_va_list): Initialize
	va_list_{g,f}pr_counter_field.
	(ix86_setup_incoming_varargs): Don't do anything if reg_save
	area will not be used.  Only save registers that tree-stdarg.c
	detected they need saving.
	(ix86_va_start): Don't set up fields that won't be used.

	* config/rs6000/rs6000.c (rs6000_build_builtin_va_list): Initialize
	va_list_{g,f}pr_counter_field.
	(setup_incoming_varargs): Don't do anything if reg_save
	area will not be used.  Only save registers that tree-stdarg.c
	detected they need saving.
	(rs6000_va_start): Don't set up fields that won't be used.

2004-09-29  Jakub Jelinek  <jakub@redhat.com>

	* builtins.def (BUILT_IN_FPUTC, BUILT_IN_FPUTC_UNLOCKED,
	BUILT_IN_FPUTS, BUILT_IN_FPUTS_UNLOCKED, BUILT_IN_FWRITE,
	BUILT_IN_FWRITE_UNLOCKED, BUILT_IN_PUTCHAR, BUILT_IN_PUTCHAR_UNLOCKED,
	BUILT_IN_PUTS, BUILT_IN_PUTS_UNLOCKED): Remove nothrow attribute.
	* builtin-attrs.def (ATTR_NONNULL_1, ATTR_NONNULL_2, ATTR_NONNULL_1_2,
	ATTR_NONNULL_1_4): New.

2004-09-29  Jakub Jelinek  <jakub@redhat.com>

	PR tree-optimization/17697
	* tree-ssa-ccp.c (execute_fold_all_builtins): Update eh and cleanup
	cfg if needed.

2004-09-28  Per Bothner  <per@bothner.com>

	* profile.c (branch_prob): Pass correct value to output_location,
	even when USE_MAPPED_LOCATION.  Fixes bug from 09-11.

2004-09-28  Richard Henderson  <rth@redhat.com>

	PR 15089
	* tree-ssa-copy.c (may_propagate_copy_into_asm): New.
	* tree-flow.h (may_propagate_copy_into_asm): Declare.
	* tree-ssa-ccp.c (replace_uses_in): Use it.
	* tree-ssa-dom.c (cprop_operand): Likewise.

2004-09-28 Jeff Law  <law@redhat.com>

	* tree-ssa-threadupdate.c (create_block_for_threading): Request
	that no outgoing edges be left in the duplicate block.  Do no
	update information on outgoing edges or PHI nodes in target
	blocks here.
	(remove_ctrl_stmt_and_useless_edges): Renamed from
	remove_last_stmt_and_useless_edges.  Handle case where the
	block is empty or has no control statements.  Do not update edge
	flags here.
	(thread_block): Create a template block rather than copying the
	original block every time.  Create outgoing edges from the
	duplicate blocks and update PHIs at the target of the outgoing
	edges here.  Fix edge flags for the original block if necessary.
	* cfghooks (duplicate_block): No longer assert that the original
	block has incoming edges.

2004-09-29  Hans-Peter Nilsson  <hp@bitrange.com>

	* doc/extend.texi (Extended Asm): Add blurb about using Explicit
	Reg Vars to enforce register allocation with general constraints.
	(Explicit Reg Vars): Clarify relation to asm statements.
	(Local Reg Vars): Similar.

2004-09-28  Ulrich Weigand  <uweigand@de.ibm.com>

	* sched-rgn.c (haifa_edge, edge_table, NEXT_IN, NEXT_OUT, FROM_BLOCK,
	TO_BLOCK, nr_edges, in_edges, out_edges, IN_EDGES, OUT_EDGES,
	build_control_flow, new_edge): Remove.
	(schedule_insns): Remove edge_table/in_edges/out_edges cleanup.
	(bitlst, bitlst_table_last, bitlst_table): Remove.
	(bblst): Store basic_block pointer instead of block index.
	(bblst_table): Likewise.
	(edgelst): Store edge pointer instead of edge index.
	(edgelst_table, edgelst_last): New variables.
	(extract_bitlst): Rename to ...
	(extract_edgelst): ... this.  Return edge pointers, not indices.
	(split_edges): Update call.
	(rgn_edges): Store edge pointers instead of indices.
	(edge_to_bit): Remove.
	(EDGE_TO_BIT): Store per-region edge index in edge->aux.
	(SET_EDGE_TO_BIT): New macro.
	(is_cfg_nonregular): Check for simple cases of unreachable blocks.
	(find_rgns): Remove edge_list parameter.  Traverse standard CFG
	data structures instead of haifa_edge et al.  Use edge pointers
	instead of edge indices everywhere.
	(compute_dom_prob_ps): Use standard CFG data structures.  Account
	for exit edges.
	(compute_trg_info): Likewise.
	(propagate_deps): Likewise.
	(debug_candidate): Account for bblst data structure change.
	(check_live_1, update_live_1, is_pfree): Likewise.
	(IS_REACHABLE): Use standard CFG data structures.
	(init_ready_list): Update bblst_table/edgelst_table allocation.
	(schedule_region): Update alloc/cleanup code to data structure
	changes.  Use edge->aux to store per-region edge index.
	(init_regions): No longer call build_control_flow.  Do not
	create edge list any more.

2004-09-28  Ulrich Weigand  <uweigand@de.ibm.com>

	* cse.c (cse_insn): Avoid creating direct non-local jumps.
	* combine.c (can_combine_p): Likewise.
	* local-alloc. (update_equiv_regs): Likewise.

2004-09-28  Richard Henderson  <rth@redhat.com>

	PR 17531
	* expr.c (expand_expr_addr_expr_1): Only assemble_external for decls.
	Don't check VOIDmode here.  Force PLUS operands to common type.
	(expand_expr_addr_expr): Do VOIDmode check earlier.  Force use of
	Pmode if given a non pointer type.

2004-09-28  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	PR 17531
	* optabs.c (expand_binop): Force constants to the correct mode.

2004-09-28  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.c (s390_adjust_cost): Remove.
	(TARGET_SCHED_ADJUST_COST): Do not redefine.
	(s390_adjust_priority): Handle TYPE_STM like TYPE_STORE.
	* config/s390/s390.md ("main_pool"): Use "larl" type
	attribute if TARGET_CPU_ZARCH.

2004-09-28  Jakub Jelinek  <jakub@redhat.com>

	* config/ia64/ia64.c (ia64_expand_prologue): Declare ei
	variable.

2004-09-28  Diego Novillo  <dnovillo@redhat.com>

	* tree-ssa-loop.c (pass_record_bounds): Do not assign a
	name to the pass.

2004-09-28  Steven Bosscher  <stevenb@suse.de>

	* common.opt (flag_gcse_sm): Disable by default.
	(flag_gcse_las): Likewise.
	(flag_web): Likewise.  Create from this file.
	* flags.h: Remove flag_web declaration.
	* toplev.c (flag_web): Likewise.
	(process_options): Never set flag_web.

2004-09-28  Steven Bosscher  <stevenb@suse.de>

	* Makefile.in (tree-ssa-propagate.o): Depend on vec.h.
	* tree-ssa-propagate.c: Include vec.h.
	(interesting_ssa_edges, varying_ssa_edges): Make these VECs
	instead of varrays.
	(cfg_blocks_add): Assert the block is not already in the worklist.
	Update uses of interesting_ssa_edges and varying_ssa_edges.
	(process_ssa_edge_worklist, ssa_prop_init, ssa_prop_fini,
	ssa_propagate): Likewise.

2004-09-28  Joseph S. Myers  <jsm@polyomino.org.uk>

	PR c/16409
	* c-decl.c (start_decl): Check for initializing incomplete array
	of VLAs.
	(build_compound_literal): Check for TYPE being error_mark_node.
	* c-parse.in (primary): Check for VLA compound literals.

2004-09-28  Diego Novillo  <dnovillo@redhat.com>

	* tree-ssa-live.c (calculate_live_on_entry): Fix warnings
	with --disable-checking.

2004-09-28  Devang Patel  <dpatel@apple.com>

	* tree-pretty-print.c (dump_generic_node): Print vector types.

2004-09-28  Nick Clifton  <nickc@redhat.com>

	* config/sh/sh.h (INIT_CUMULATIVE_ARGS): Replace with an
	invocation of the function sh_init_cumulative_args.
	(INIT_CUMULATIVE_LIBCALL_ARGS): Likewise.
	(INIT_CUMULATIVE_INCOMING_ARGS): Delete.
	* config/sh/sh-protos.h: Prototype sh_init_cumulative_args.
	* config/sh/sh.c (sh_init_cumulative_args): New function based
	on the contents of the old INIT_CUMULATIVE_ARGS macro but with a
	heuristic added to determine the setting of force_mem when a
	library function is being called.

2004-09-28  Diego Novillo  <dnovillo@redhat.com>

	* tree-ssa-loop-im.c (single_reachable_address) <PHI_NODE>:
	Skip constant arguments.

2004-09-28  Diego Novillo  <dnovillo@redhat.com>

	* tree-ssa-alias.c (create_name_tags): If PTR points to a
	volatile type, mark the tag volatile.
	(get_tmt_for): If TAG_TYPE is a volatile type, mark the tag
	volatile.

2004-09-28  Andrew Pinski  <pinskia@physics.uc.edu>

	* tree.def (vec_cond_expr): Fix. Change 'e'
	to tcc_expression.

2004-09-28  Kazu Hirata  <kazu@cs.umass.edu>

	* basic-block.h: Fix a comment typo.

2004-09-28  Kazu Hirata  <kazu@cs.umass.edu>

	* optabs.c, optabs.h: Fix comment typos.

2004-09-28  Eric Botcazou  <ebotcazou@act-europe.fr>

	* config/sparc/sparc.md (call_address_struct_value_sp32):
	Properly mask the immediate field of the 'unimp' instruction.
	(call_symbolic_struct_value_sp32): Likewise.

2004-09-28  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.

2004-09-28  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR target/16532
	* config/sparc/sparc.c (struct machine_function): New field
	'leaf_function_p' and 'prologue_data_valid_p'.
	(sparc_leaf_function_p, sparc_prologue_data_valid_p): New macro
	to conveniently access the above fields.
	(TARGET_LATE_RTL_PROLOGUE_EPILOGUE): Delete.
	(eligible_for_return_delay): Use 'sparc_leaf_function_p' instead
	of the generic flavor 'current_function_uses_only_leaf_regs'.
	(eligible_for_sibcall_delay): Likewise.
	(sparc_expand_prologue): Compute 'sparc_leaf_function_p' and set
	'sparc_prologue_data_valid_p'.  Use 'sparc_leaf_function_p'.
	(sparc_asm_function_prologue): Add sanity check for the assumption
	made in 'sparc_expand_prologue'.  Use 'sparc_leaf_function_p'.
	(sparc_can_use_return_insn_p): New function.
	(sparc_expand_epilogue): Use 'sparc_leaf_function_p'.
	(output_restore): Likewise.
	(output_sibcall): Likewise.
	(sparc_output_mi_thunk): Likewise.
	* config/sparc/sparc-protos.h (sparc_can_use_return_insn_p): Declare.
	* config/sparc/sparc.md (return): New expander.

	* config/sparc/sparc.h (INITIAL_ELIMINATION_OFFSET): Minor tweak.

2004-09-27  Mark Mitchell  <mark@codesourcery.com>

	PR c++/17642
	* stor-layout.c (layout_decl): Use fold_convert, not convert.
	(bit_from_pos): Likewise.
	(byte_from_pos): Likewise.
	(pos_from_bit): Likewise.
	(normalize_offset): Likewise.
	(place_field): Likewise.
	(finalize_type_size): Likewise.
	(layout_type): Likewise.
	* tree.c (build_index_type): Likewise.

2004-09-27  Devang Patel  <dpatel@apple.com>

	* expr.c (expand_expr_real_1): Handle VEC_COND_EXPR.
	* genopinit.c (optabs): New entry for vcond_gen_code and
	vcondu_gen_code.
	* optabs.c (vcond_gen_code, vcondu_gen_code): New optabs.
	(get_rtx_code): New function.
	(vector_compare_rtx): New function.
	(init_optabs): Initialize vcond_gen_code and vcondu_gen_code.
	(expand_vec_cond_expr_p): New function.
	(expand_vec_cond_expr): New function.
	(get_vcond_icode): New function.
	* optabs.h (expand_vec_cond_expr, expand_vec_cond_expr_p): New externs.
	(vcond_gen_code, vcondu_gen_code): Same.

2004-09-27  Kelley Cook  <kcook@gcc.gnu.org>

	* Makefile.in (STAGESTUFF): Split into ...
	(STAGECOPYSTUFF, STAGEMOVESTUFF): ... these.
	(mostlyclean): Update.
	(stage1-start, stage2-start, stage3-start, stage4-start,
	stageprofile-start, stagefeedback-start): Copy the STAGECOPYSTUFF.
	Move the STAGEMOVESTUFF.

2004-09-27  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* system.h (getpagesize): Return 'int' instead of 'long'.

2004-09-27  Michael Matz <matz@suse.de>

	PR bootstrap/17698
	PR bootstrap/17702
	* bitmap.h (bmp_iter_single_init, bmp_iter_and_not_init,
	bmp_iter_and_init): Shift by bit_in_word.

2004-09-27  Kelley Cook  <kcook@gcc.gnu.org>

	* aclocal.m4: Quote m4_includes. Include ../config/gcc-lib-path.m4.
	* configure.ac: Don't sinclude it here.
	* configure: Regenerate.

2004-09-27  Dorit Naishlos  <dorit@il.ibm.com>

	* config/rs6000/rs6000.c (rs6000_legitimate_address, print_operand):
	Handle AND pattern

2004-09-27  Joseph S. Myers  <jsm@polyomino.org.uk>

	PR c/13804
	* c-typeck.c (build_component_ref): Name type involved in
	diagnostic for structure or union without a member of the given
	name.

2004-09-27  DJ Delorie  <dj@redhat.com>

	* config/stormy16/stormy16.c (xstormy16_asm_output_aligned_common):
	.comm alignment is bytes, not bits.

2004-09-27  Devang Patel  <dpatel@apple.com>

	* tree-pretty-print.c (dump_generic_node): Print VEC_COND_EXPR.
	(print_call_name): Do not print VEC_COND_EXPR.

2004-09-27  Devang Patel  <dpatel@apple.com>

	* tree-pretty-print.c (dump_generic_node): Print VEC_COND_EXPR.

2004-09-27  Jan Hubicka  <jh@suse.cz>

	* i386.c (athlon_cost, k8_cost): Set BRANCH_COST to 5.

2004-09-27  Kazu Hirata  <kazu@cs.umass.edu>

	* bitmap.h: Fix a comment typo.

2004-09-27  Aaron W. LaFramboise <aaronraolete36@aaronwl.com>

	* libgcc2.c (getpagesize): Change type of return value to int.

2004-09-26  Matt Austern  <austern@apple.com>

	* ggc-page.c (GGC_QUIRE_SIZE): Bump up from 16 to 256 if we're
	using mmap.

2004-09-26  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* bitmap.h (EXECUTE_IF_SET_IN_BITMAP, EXECUTE_IF_AND_COMPL_IN_BITMAP,
	EXECUTE_IF_AND_IN_BITMAP): Changed to iterator style.
	(bitmap_iterator): New type.
	(bmp_iter_common_next_1, bmp_iter_single_next_1, bmp_iter_single_init,
	bmp_iter_end_p, bmp_iter_single_next, bmp_iter_and_not_next_1,
	bmp_iter_and_not_init, bmp_iter_and_not_next, bmp_iter_and_next_1,
	bmp_iter_and_init, bmp_iter_and_next): New functions.
	* basic-block.h (EXECUTE_IF_SET_IN_REG_SET,
	EXECUTE_IF_AND_COMPL_IN_REG_SET, EXECUTE_IF_AND_IN_REG_SET): Changed to
	use iterator-style EXECUTE_IF_IN_BITMAP macros.
	* bitmap.c (bitmap_print): Ditto.
	* bt-load.c (clear_btr_from_live_range, add_btr_to_live_range,
	btr_def_live_range): Ditto.
	* cfganal.c (compute_dominance_frontiers_1) Ditto.
	* cgraphunit.c (convert_UIDs_in_bitmap, cgraph_characterize_statics):
	Ditto.
	* ddg.c (build_inter_loop_deps): Ditto.
	* df.c (FOR_EACH_BB_IN_BITMAP, df_bb_reg_info_compute, df_refs_update):
	Ditto.
	* except.c (remove_eh_handler): Ditto.
	* flow.c (reg_set_to_hard_reg_set): Ditto.
	* gcse.c (clear_modify_mem_tables): Ditto.
	* global.c (build_insn_chain): Ditto.
	* ifcvt.c (dead_or_predicable): Ditto.
	* loop-invariant.c (get_inv_cost, set_move_mark, move_invariant_reg):
	Ditto.
	* ra-build.c (livethrough_conflicts_bb, conflicts_between_webs): Ditto.
	* ra-rewrite.c (reloads_to_loads, rewrite_program2,
	detect_web_parts_to_rebuild, delete_useless_defs, actual_spill): Ditto.
	* tree-cfg.c (allocate_ssa_names, tree_duplicate_sese_region,
	tree_purge_all_dead_eh_edges): Ditto.
	* tree-into-ssa.c (compute_global_livein, insert_phi_nodes,
	insert_phi_nodes_for, debug_def_blocks_r, invalidate_name_tags,
	rewrite_ssa_into_ssa): Ditto.
	* tree-outof-ssa.c (find_replaceable_exprs): Ditto.
	* tree-sra.c (scan_function, decide_instantiations, scalarize_parms):
	Ditto.
	* tree-ssa-alias.c (init_alias_info, compute_points_to_and_addr_escape,
	compute_flow_sensitive_aliasing, maybe_create_global_var,
	dump_points_to_info_for): Ditto.
	* tree-ssa-dce.c (EXECUTE_IF_CONTROL_DEPENDENT): Ditto.
	* tree-ssa-dse.c (dse_finalize_block): Ditto.
	* tree-ssa-live.c (live_worklist, calculate_live_on_entry,
	calculate_live_on_exit, build_tree_conflict_graph, dump_live_info):
	Ditto.
	* tree-ssa-loop-ivopts.c (find_induction_variables,
	find_interesting_uses, add_old_ivs_candidates, alloc_use_cost_map,
	determine_use_iv_costs, determine_set_costs, find_best_candidate,
	set_cost_up_to, create_new_ivs, remove_unused_ivs, free_loop_data):
	Ditto.
	* tree-ssa-loop-manip.c (add_exit_phis_var, add_exit_phis): Ditto.
	* tree-ssa-operands.c (get_asm_expr_operands, add_call_clobber_ops,
	add_call_read_ops): Ditto.
	* tree-ssa-pre.c (bitmap_print_value_set, insert_aux): Ditto.

2004-09-26  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* pa.c (print_operand): Use non-trapping completers for UNLE, UNLT,
	UNGE, UNGT, UNEQ, UNORDERED and ORDERED comparisons.

2004-09-26  Ulrich Weigand  <uweigand@de.ibm.com>

	* builtins.c (expand_builtin_memcmp): Adjust MEM_SIZE to
	reflect size of memory regions being compared.

2004-09-26  Ulrich Weigand  <uweigand@de.ibm.com>

	* builtins.c (get_memory_rtx): Set mem attributes for non-ADDR_EXPR
	expressions.  Always clear MEM_SIZE and alias set.

2004-09-26  Roger Sayle  <roger@eyesopen.com>
	    Giovanni Bajo  <giovannibajo@gcc.gnu.org>

	PR middle-end/17112
	* stor-layout.c (compute_record_mode): For records with a single
	field, only use the field's mode if its size matches what we'd
	have choosen for the record ourselves.  This forces the use of
	BLKmode for packed records that don't completely fill a mode.

2004-09-26  Roger Sayle  <roger@eyesopen.com>

	PR middle-end/17151
	* combine.c (force_to_mode): Remove dubious early return test that
	inhibits further optimization.

2004-09-26  Kazu Hirata  <kazu@cs.umass.edu>

	* profile.c: Fix a comment typo.

2004-09-26  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	PR bootstrap/17591
	* tree-ssa-loop-im.c (for_each_index): Call callback for component_refs
	with varying offset.
	* tree-ssa-loop-ivopts.c (abnormal_ssa_name_p): New function.
	(idx_contains_abnormal_ssa_name_p): Scan step and lower bound for
	ARRAY_REFS.
	(expr_invariant_in_loop_p): New function.
	(idx_find_step): Handle step and lower bound for ARRAY_REFs.  Handle
	component_ref_field_offset for COMPONENT_REFs.  Do not allow
	ALIGN_INDIRECT_REFs and MISALIGNED_INDIRECT_REFs.
	(add_address_candidates): Do not handle ALIGN_INDIRECT_REFs and
	MISALIGNED_INDIRECT_REFs.
	(idx_remove_ssa_names): Handle step and lower bound for ARRAY_REFs.
	(rewrite_address_base): Do not handle ALIGN_INDIRECT_REFs and
	MISALIGNED_INDIRECT_REFs.

2004-09-26  Joseph S. Myers  <jsm@polyomino.org.uk>

	PR c/11459
	* gcc.c (cpp_options, cc1_options): Preserve relative order of
	-std and -ansi options.

2004-09-26  Jan Hubicka  <jh@suse.cz>

	* dwarf2out.c (dwarf2out_finish): Set parent to comp_unit_die
	for nested functions whose proper parent has not been output.

	* profile.c (compute_branch_probabilities): Use REG_BR_PROB notes
	when re-constructing profile previously invalidated by loop.

2004-09-25  Dale Johannesen  <dalej@apple.com>

	* tree-gimple.c: Move GIMPLE definition...
	* doc/tree-ssa.texi: here.

2004-09-25  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-vectorizer.c: Fix a comment typo.

2004-09-25  Kazu Hirata  <kazu@cs.umass.edu>

	* c-typeck.c, defaults.h, dwarf.h, dwarf2out.c, fold-const.c,
	gthr-dce.h, gthr-posix.h, gthr-solaris.h, gthr-win32.h,
	lambda-code.c, lambda-mat.c, libgcc2.c, stmt.c,
	tree-ssa-pre.c, tree-vn.c, tree.h: Fix comment formatting.

2004-09-25  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-ssa-loop-unswitch.c: Fix a comment typo.

2004-09-25  Kazu Hirata  <kazu@cs.umass.edu>

	* doc/passes.texi: Fix a typo.

2004-09-25  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-optimize.c (init_tree_optimization_passes): Add
	pass_record_bounds.
	* tree-pass.h (pass_record_bounds): Declare.
	* tree-ssa-loop.c (tree_ssa_loop_bounds, pass_record_bounds):
	New pass.

2004-09-25  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	PR tree-optimization/17474
	* tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Determine
	offset of the field correctly when DECL_FIELD_BIT_OFFSET != 0.

2004-09-25  Jan Hubicka  <jh@suse.cz>

	* predict.c (counts_to_freqs): Make global.
	* predict.h (counts_to_freqa): Declare.
	* profile.c (compute_branch_probabilities): Compute frequencies
	* tree-profile.c (do_tree_profiling): Refine conditional on when
	tree profiling pass is needed.

	* passes.c (rest_of_handle_cfg): Disable const/pure function
	detection when doing tree based profiling.

	* tree-inline.c (expand_call_inline): Fix incorrectly reversed
	conditional.

2004-09-25  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.h (struct mips_args): Clarify comments.
	* config/mips/mips.c (struct mips_arg_info): Likewise.
	(mips_arg_info): Don't allow fpr_p to affect the register or
	stack alignment.  Remove o64 silliness.
	(function_arg): Deal with the o32 float,float case specially.

2004-09-25  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.md (loadx, storex): Define for V2SF.

2004-09-25  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390-protos.h (s390_back_chain_rtx): Add prototype.
	* config/s390/s390.c (s390_back_chain_rtx): New function.
	* config/s390/s390.md ("allocate_stack"): Use s390_back_chain_rtx.
	Call anti_adjust_stack.
	("restore_stack_block"): Use s390_back_chain_rtx.  Enable pattern
	only if compiling with back chain.
	("save_stack_nonlocal", "restore_stack_nonlocal"): Save/restore
	back chain only if back chain enabled.  Use s390_back_chain_rtx.

2004-09-25  Joseph S. Myers  <jsm@polyomino.org.uk>

	* doc/trouble.texi: Remove obsolete information.  Update
	information on how to regenerate fixincluded headers.

2004-09-25  Joseph S. Myers  <jsm@polyomino.org.uk>

	PR c/12951
	* doc/invoke.texi: Document that
	-Wno-error-implicit-function-declaration is not accepted.

2004-09-24  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.h (UNITS_PER_SIMD_WORD): New.
	* config/alpha/alpha.c (alpha_vector_mode_supported_p): Don't depend
	on TARGET_MAX.
	(alpha_expand_mov): Allow unaligned vectors.
	(alpha_expand_unaligned_store): Use CONST0_RTX.
	(TARGET_VECTORIZE_MISALIGNED_MEM_OK): New.

2004-09-24 Jeff Law  <law@redhat.com>

	* tree-ssa-dom.c (dom_opt_finalize_block): Fix violation of strict
	aliasing rules.
	(simplify_cond_and_lookup_avail_expr): Likewise.

2004-09-24  Joseph S. Myers  <jsm@polyomino.org.uk>

	PR c/12802
	* doc/extend.texi (Unnamed Fields): Remove "." from end of long
	title.  Document interaction with -fms-extensions.
	* doc/invoke.texi (-fms-extensions): Refer to Unnamed Fields
	section.

2004-09-24  Joseph S. Myers  <jsm@polyomino.org.uk>

	PR c/12713
	* doc/extend.texi: Document interaction of attribute noreturn and
	longjmp.

2004-09-24  Richard Henderson  <rth@redhat.com>

	PR rtl-opt/17503
	* regclass.c (subregs_of_mode): Turn into an htab.  Make static.
	(som_hash, som_eq): New.
	(init_subregs_of_mode, record_subregs_of_mode): New.
	(cannot_change_mode_set_regs): Rewrite for htab implementation.
	(invalid_mode_change_p): Likewise.
	* combine.c (gen_lowpart_for_combine): Use record_subregs_of_mode.
	* flow.c (mark_used_regs): Likewise.
	(life_analysis): Use init_subregs_of_mode.
	* regs.h (subregs_of_mode): Remove.
	* rtl.h (init_subregs_of_mode, record_subregs_of_mode): Declare.

2004-09-24  Andrew Pinski  <pinskia@physics.uc.edu>

	* tree-ssa-phiopt.c (conditional_replacement): Use the correct
	type with the copy of the conditional.

2004-09-24  Andrew Pinski  <pinskia@physics.uc.edu>

	PR tree-opt/16954
	* tree-ssa-copyrename.c (copy_rename_partition_coalesce):
	Prevent renaming if the aliasing sets of the type which the
	pointer points to are different.

2004-09-24  Joseph S. Myers  <jsm@polyomino.org.uk>

	PR c/17188
	* c-decl.c (diagnose_mismatched_decls): Check for duplicate
	declarations of enumerators.
	(start_struct): Check TYPE_SIZE rather than TYPE_FIELDS to check
	for redefinition.  Check for nested redefinition.
	(finish_struct): Don't check for nested redefinition.
	(start_enum): Check for nested redefinition.

2004-09-24  Devang Patel  <dpatel@apple.com>

	* tree-if-conv.c (tree_if_convert_cond_expr0: Create temp. variable
	only when necesssary.
	(combine_blocks): Combine loop header and exit block.

2004-09-24  Paolo Bonzini  <bonzini@gnu.org>

	* hooks.c (hook_tree_tree_bool_null): New.
	* hooks.h (hook_tree_tree_bool_null): Declare it.
	* target-def.c (TARGET_FOLD_BUILTIN): Point to it.
	* targhooks.c (default_fold_builtin): Remove.
	* targhooks.h (default_fold_builtin): Remove.

2004-09-24  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	PR rtl-optimization/17625
	* loop-doloop.c (doloop_modify): Unshare rtl before emitting it.

2004-09-24  Andrew Pinski  <pinskia@physics.uc.edu>

	PR tree-opt/17624
	* tree-ssa-forwprop.c (record_single_argument_cond_exprs):
	Reject if any of the operands occur in an abnormal PHI.

2004-09-24  Andreas Schwab  <schwab@suse.de>

	* tree-ssa-dom.c (record_range): Fix violation of strict aliasing
	rules.

2004-09-24  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* config.gcc (sparc64-*-solaris2*): Include sparc/sol2-gas.h
	if the GNU assembler is used.
	(sparc-*-solaris2*): Likewise.
	* dbxout.c (NO_DBX_BNSYM_ENSYM): Default to zero.
	(dbxout_function_end): Protect N_ENSYM with it.
	(dbxout_begin_prologue): Protect N_BNSYM with it.
	* doc/tm.texi (NO_DBX_BNSYM_ENSYM): Document it.
	* config/sparc/sol2.h (NO_DBX_BNSYM_ENSYM): Define to 1.
	* config/sparc/sol2-gas.h: New file.

2004-09-23  H.J. Lu  <hongjiu.lu@intel.com>

	PR bootstrap/17369
	* Makefile.in (@set_gcc_lib_path@): Added.

	* configure.ac: Include ../config/gcc-lib-path.m4. Use
	TL_AC_GNU_MAKE_GCC_LIB_PATH.
	* configure: Regenerated.

2004-09-24  Joseph S. Myers  <jsm@polyomino.org.uk>

	PR c/6980
	* c-typeck.c (build_c_cast): Improve wording of
	-Wbad-function-cast diagnostic.

2004-09-23  Hans-Peter Nilsson  <hp@axis.com>

	PR target/17626
	* config/cris/cris.md (moverside, movemside): Rename variable
	"reg" to "otherop".  To generate canonical RTX, check that otherop
	isn't constant instead of checking that operand 1 is a register.

2004-09-23  Jakub Jelinek  <jakub@redhat.com>

	* tree-ssa-propagate.c (set_rhs): Fail if EXPR is COMPOUND_EXPR.

2004-09-23  Diego Novillo  <dnovillo@redhat.com>
	    Jakub Jelinek  <jakub@redhat.com>

	* tree-flow.h (find_new_referenced_vars): Add prototype.
	* tree-sra.c (find_new_referenced_vars_1, find_new_referenced_vars):
	Move to...
	* tree-dfa.c (find_new_referenced_vars_1, find_new_referenced_vars):
	... here.
	(mark_new_vars_to_rename): Walk through all operands.
	* tree-ssa-ccp.c (convert_to_gimple_builtin): New function.
	(execute_fold_all_builtins): Use it.
	(pass_fold_builtins): Add TODO_rename_vars to todo_flags_finish.

2004-09-23  P.J. Darcy  <darcypj@us.ibm.com>

	* gthr-tpf.h: New file.
	* config.gcc (s390x-ibm-tpf*): Add thread_file='tpf'.
	* gthr.h: Use gthr-tpf.h on TPF OS.

2004-09-23 Jeff Law  <law@redhat.com>

	* tree-ssa-ccp.c (get_default_value): Use SSA_NAME_VALUE rather
	than SSA_NAME_EQUIV and SET_SSA_NAME_EQUIV.
	(substitute_and_fold): Likewise.
	* tree-ssa-dom.c (tree_ssa_dominator_optimize): Remove everything
	except invariants from SSA_NAME_VALUE.
	(thread_across_edge): Use SSA_NAME_VALUE rather than SSA_NAME_EQUIV
	and SET_SSA_NAME_EQUIV.
	(restore_vars_to_original_value, record_const_or_copy): Likewise.
	(record_equivalences_from_phis, record_const_or_copy_1): Likewise.
	(record_equality, cprop_into_successor_phis): Likewise.
	(record_equivalences_from_stmt, cprop_operand): Likewise.
	(lookup_avail_expr): Likewise.
	* tree-ssa-pre.c (fini_pre): Remove everything except invariants
	from SSA_NAME_VALUE.
	* tree.h (SSA_NAME_EQUIV, SET_SSA_NAME_EQUIV): Kill.
	(struct tree_ssa_name): Kill EQUIV field.  Remove GGC skip
	annotation from the VALUE_HANDLE field.

2004-09-21 Fariborz Jahanian <fjahanian@apple.com>

	PR c++/13989
	PR c++/9844
	* tree.c (reconstruct_complex_type): Remove extra "this".
	* config/rs6000/rs6000.c (rs6000_handle_altivec_attribute):
	Add V4SFmode to case statement.

2004-09-23  Joseph S. Myers  <jsm@polyomino.org.uk>

	PR c/16833
	* doc/extend.texi, doc/invoke.texi: Document interaction of
	-fno-builtin with format checks.  Note that built-in functions
	have effects beyond generating code that avoids calls to those
	functions.

2004-09-23  Frank Ch. Eigler <fche@redhat.com>

	PR tree-optimization/17533
	* dominance.c (verify_dominators): Tolerate even more incorrect
	dominance data during error message printing.
	* tree-mudflap.c (mf_build_check_statement_for): Build basic blocks
	and edges more correctly.

2004-09-23  Dorit Naishlos <dorit@il.ibm.com>

	* tree.def (ALIGN_INDIRECT_REF, MISALIGNED_INDIRECT_REF):
	New tree-codes.
	* tree.h (REF_ORIGINAL): Consider ALIGN_INDIRECT_REF and
	MISALIGNED_INDIRECT_REF.
	* alias.c (get_alias_set, nonoverlapping_memrefs_p): Likewise.
	* emit-rtl.c (mem_expr_equal_p, set_mem_attributes_minus_bitpos):
	Likewise.
	* expr.c (safe_from_p, expand_expr_real_1, rewrite_address_base)
	(find_interesting_uses_address): Likewise.
	* fold-const.c (non_lvalue, operand_equal_p): Likewise.
	(build_fold_addr_expr_with_type): Likewise.
	* gimplify.c (gimplify_addr_expr, gimplify_expr): Likewise.
	* print-rtl.c (print_mem_expr): Likewise.
	* tree-dump.c (dequeue_and_dump): Likewise.
	* tree-eh.c (tree_could_trap_p): Likewise.
	* tree-gimple.c (is_gimple_addressable, get_base_address): Likewise.
	* tree-pretty-print.c (op_prio, op_symbol, dump_generic_node): Likewise.
	* tree-ssa-alias.c (find_ptr_dereference, ptr_is_dereferenced_by):
	Likewise.
	* tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
	* tree-ssa-dom.c (record_equivalences_from_stmt): Likewise.
	* tree-ssa-loop-im.c (for_each_index, is_call_clobbered_ref): Likewise.
	* tree-ssa-loop-ivopts.c (find_interesting_uses_address): Likewise.
	(add_address_candidates, rewrite_address_base): Likewise.
	* tree-ssa-operands.c (get_expr_operands, get_indirect_ref_operands):
	Likewise.
	* tree.c (staticp, build1_stat): Likewise.

	* tree.def (REALIGN_LOAD_EXPR, REALIGN_STORE_EXPR): New tree-codes.
	* tree-pretty-print.c (dump_generic_node): Consider REALIGN_LOAD_EXPR.
	* tree-ssa-operands.c (get_expr_operands): Likewise.
	* expr.c (expand_expr_real_1): Likewise.

	* optabs.h (vec_realign_store_optab, vec_realign_load_optab): New
	optabs.
	(OTI_vec_realign_store, OTI_vec_realign_load): New optab_index values
	for the new optabs.
	(expand_ternary_op): New function.
	* genopinit.c (optabs): Handle the new optabs.
	* optabs.c (optab_for_tree_code): Add cases for the new tree-codes.
	(init_optabs): Initialize vec_realign_load_optab.
	(expand_ternary_op): New functions.

	* target-def.h (TARGET_VECTORIZE): New member for struct gcc_target.
	(TARGET_VECTORIZE_MISALIGNED_MEM_OK): New member for targetm.vectorize.
	(TARGET_VECTORIZE_BUILTIN_MASK_FOR_LOAD): Likewise.
	(TARGET_VECTORIZE_BUILTIN_MASK_FOR_STORE): Likewise.
	* target.h (struct vectorize): New member for struct gcc_target.
	(misaligned_mem_ok): New member for targetm.vectorize.
	(builtin_mask_for_load): Likewise.
	(builtin_mask_for_store): Likewise.
	* targethooks.c (default_vect_misaligned_mem_ok): New function.
	* targethooks.h (default_vect_misaligned_mem_ok): New function.

	* config/rs6000/altivec.md (build_vector_mask_for_load): New
	define_expand.
	(vec_realign_load_v4si, vec_realign_load_v4sf, vec_realign_load_v8hi)
	(vec_realign_load_v16qi): New define_insn.
	* config/rs6000/rs6000.h (ALTIVEC_BUILTIN_MASK_FOR_LOAD):
	(ALTIVEC_BUILTIN_MASK_FOR_STORE): New target builtins.
	* config/rs6000/rs6000.c (altivec_builtin_mask_for_load):
	(altivec_builtin_mask_for_store): New variables.
	(rs6000_builtin_mask_for_load): New function. Implements
	TARGET_VECTORIZE_BUILTIN_MASK_FOR_LOAD.
	(rs6000_builtin_mask_for_store): New function. Implements
	TARGET_VECTORIZE_BUILTIN_MASK_FOR_STORE.
	(rs6000_expand_builtin): Expand the target builtins
	builtin_mask_for_load and builtin_mask_for_store.
	(altivec_init_builtins): Initialize the new target builtins.
	* config/i386/i386.c (ix86_misaligned_mem_ok): New function.
	Implements the target hook TARGET_VECTORIZE_MISALIGNED_MEM_OK.

	* tree-vectorizer.c (vect_create_data_ref): Renamed to
	vect_create_data_ref_ptr. Returns a pointer instead of an array-ref.
	(vect_create_addr_base_for_vector_ref): Additional argument (offset).
	(vectorizable_store): Call vect_create_data_ref_ptr with additional
	arguments, and create an indirect_ref with its return value data_ref.
	Check aligned_access_p.
	(vectorizable_load): Handle misaligned loads, using software-pipelined
	scheme with REALIGN_LOAD_EXPR and ALIGN_INDIRECT_REF if
	vec_realign_load_optab is supported, or using a scheme without
	software-pipelining with MISALIGNED_INDIRECT_REF if the target hook
	misaligned_mem_ok is supported.

	(vect_finish_stmt_generation): Typo.
	(vect_enhance_data_refs_alignment): Rename loop_vinfo to loop_info.
	(vect_analyze_data_refs_alignment): Don't fail vectorization in the
	presence of misaligned loads.
	(vect_analyze_data_ref_access): Add check for constant init.
	(vect_get_symbl_and_dr): Remove duplicate line.
	* tree-vectorizer.h (DR_MISALIGNMENT): Add comment.

2004-09-23  Kazu Hirata  <kazu@cs.umass.edu>

	* builtins.c: Fix a comment typo.

2004-09-23  Jan Hubicka  <jh@suse.cz>

	* profile.c (branch_prob): Do not verify flow info in the middle of the
	pass.

2004-09-23  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* cfgloop.h (update_single_exits_after_duplication): Declare.
	(loopify, split_loop_bb): Declaration changed.
	* cfgloopmanip.c (split_loop_bb): Take void * as an argument instead
	of rtx.
	(loopify): Added redirect_all_edges argument.
	(update_single_exits_after_duplication): Export.
	* loop-unswitch.c (unswitch_loop): Changed due to loopify change.
	* tree-flow.h (tree_duplicate_loop_to_header_edge,
	tree_ssa_loop_version): Declare.
	* tree-ssa-loop-manip.c (copy_phi_node_args, rename_variables,
	set_phi_def_stmts, tree_duplicate_loop_to_header_edge,
	lv_adjust_loop_header_phi, lv_adjust_loop_entry_edge,
	lv_update_pending_stmts, tree_ssa_loop_version): New functions.

	* tree-ssa-loop-unswitch.c: New file.
	* Makefile.in (tree-ssa-loop-unswitch.o): Add.
	* timevar.def (TV_TREE_LOOP_UNSWITCH): New timevar.
	* tree-flow.h (tree_ssa_unswitch_loops): Declare.
	* tree-optimize.c (init_tree_optimization_passes): Add pass_unswitch.
	* tree-pass.h (pass_unswitch): Declare.
	* tree-ssa-loop.c (tree_ssa_loop_unswitch,
	gate_tree_ssa_loop_unswitch, pass_unswitch): New pass.
	* doc/passes.texi: Documen tree level loop unswitching.

2004-09-23  Kazu Hirata  <kazu@cs.umass.edu>

	* cfgexpand.c, config/s390/tpf-eh.c: Fix comment typos.

2004-09-22  Eric Christopher  <echristo@redhat.com>

	* builtins.c (simplify_builtin_va_start): Remove.
	(simplify_builtin): Ditto.
	(fold_builtin_strchr): Ditto.
	(simplify_builtin_*): Rename remainders to fold_builtin_*.
	(expand_builtin): Fix up for above changes.
	(fold_builtin_1): Add new folders. Change for above.
	(expand_builtin_va_start): Call fold_builtin_next_arg.
	* gimplify.c (gimplify_call_expr): Fix calls to simplify_builtin.
	* tree.h: Remove prototype for simplify_builtin.

2004-09-23  Jan Hubicka  <jh@suse.cz>

	PR debug/17389
	* dwarf2out.c (dwarf2out_finish): Deal with nested functions
	of fully inlined functions.
	* tree-inline.c (inline_forbidden_p_1): Nested functions can be
	inlined.

	* cfgexpand.c (add_reg_br_prob_note): New function.
	(expand_gimple_cond_expr): Use it.
	(tree_expand_cfg): No longer kill the profile.
	* cfgrt.c (rtl_verify_flow_info_1): Check profile consistency
	only if it is present.
	* passes.c (rest_of_handle_loop_optimize): Kill the profile.
	* predict.c (combine_predictions_for_insn): Set the probabilities
	based on REG_BR_PROB note if present.
	* predict.c (branch_prob): Profile is read only with
	flag_branch_probabilities.

2004-09-22  Kelley Cook  <kcook@gcc.gnu.org>

	* aclocal.m4: Add in gettext's m4 includes.
	(AC_ICONV, AC_LCMESSAGES, GCC_PATH_PROG): Remove.
	* configure.ac: Add in check for iconv.h
	* configure: Regenerate.

2004-09-22  Kelley Cook  <kcook@gcc.gnu.org>

	* aclocal.m4: Update for rename of gettext-sister.m4.

2004-09-22  Daniel Berlin <dberlin@dberlin.org>

	Fix PR tree-optimization/17587
	* tree-ssa-pre.c (fini_pre): Commit edge inserts here.
	(insert_aux): Instead of here.

2004-09-22  Diego Novillo  <dnovillo@redhat.com>

	PR tree-optimization/16721
	* tree-dfa.c (dump_variable): Show TREE_THIS_VOLATILE.
	* tree-ssa-alias.c (create_memory_tag): Move setting of
	TREE_THIS_VOLATILE ...
	(get_tmt_for): ... here.

2004-09-22  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* config/sparc/sparc.md (cmove splitter): Fix formatting.
	(conditional_trap expander): Reject inappropriate CCmodes.
	(conditional trap insn): Use V9 syntax if possible.

2004-09-22  Joseph S. Myers  <jsm@polyomino.org.uk>

	PR c/16566
	* c-typeck.c (build_component_ref): Don't special-case
	COMPOUND_EXPR.

2004-09-22  Frank Ch. Eigler  <fche@redhat.com>

	* dominance.c (verify_dominators): Don't SEGV if recount_dominator
	returns NULL.

2004-09-22  Kazu Hirata  <kazu@cs.umass.edu>

	* doc/c-tree.texi (TRUTH_NOT_EXPR, TRUTH_ANDIF_EXPR,
	TRUTH_ORIF_EXPR, TRUTH_AND_EXPR, TRUTH_OR_EXPR,
	TRUTH_XOR_EXPR): Mention the restriction on types.

2004-09-22  Matt Austern  <austern@apple.com>

	* config/darwin.c (darwin_make_decl_one_only):
	Allow coalesced symbol to appear in static archive's table of contents

2004-09-22  Kazu Hirata  <kazu@cs.umass.edu>

	PR tree-optimization/17512
	* convert.c (convert_to_integer): Don't handle TRUTH_*_EXPR as
	special cases.

2004-09-22  David Edelsohn  <edelsohn@gnu.org>

	* dbxout.c (get_lang_number): Do not define if
	DBX_OUTPUT_MAIN_SOURCE_DIRECTORY is defined.

2004-09-22  Ralf Corsepius  <corsepiu@faw.uni-ulm.de>

	PR target/15583
	* config/rs6000/rtems.h (TARGET_OS_CPP_BUILTINS): Add
	builtin_define ("__USE_INIT_FINI__").

2004-09-22  P.J. Darcy  <darcypj@us.ibm.com>

	* config/s390/s390-protos.h (s390_emit_tpf_eh_return): Add prototype.
	* config/s390/s390.c (s390_emit_tpf_eh_return): New function.
	* config/s390/s390.h (TARGET_TPF): New macro.
	* config/s390/s390.md ("eh_return"): New expander.
	* config/s390/t-tpf (LIB2ADDEH): Use unwind-dw2-fde.c rather than
	unwind-dw2-fde-glibc.c.  Add config/s390/tpf-eh.c.
	(LIB2ADDEHDEP): Remove unwind-dw2-fde.c.
	* config/s390/tpf.h (TARGET_TPF): Define to 1.
	(STACK_POINTER_OFFSET): Increase to 448.
	(TARGET_DEFAULT): Set -mtpf-trace on as default.
	(TPF_LOC_DIFF_OFFSET): New macro.
	(ASM_PREFERRED_EH_DATA_FORMAT): Redefine to always use absolute
	encoding.
	(__isPATrange): Add prototype.
	(MD_FALLBACK_FRAME_STATE_FOR): Define.
	* config/s390/tpf-eh.c: New file.

2004-09-22  Diego Novillo  <dnovillo@redhat.com>

	* fold-const.c (fold): Avoid non INTEGER_TYPEs when widening
	operands in an integer comparison.
	* tree-cfg.c (find_taken_edge): Call fold() to determine
	whether the predicate is known.

2004-09-22  Kelley Cook  <kcook@gcc.gnu.org>

	* aclocal.m4: Import AM_PROG_CC_C_O and AM_AUX_DIR_EXPAND.
	* configure.ac: Call AM_PROG_CC_C_O instead of AC_PROG_CC_C_O.
	Create build and doc directories along with the language directories.
	Don't create doc directory separately.
	* configure: Regenerate.
	* Makefile.in: Create all object and executables files built
	with the build compiler in a build/ directory.
	(genobjnames): Add missing build objects.
	(STAGESTUFF): Don't stage the gen* programs.
	(ggc-none.o): Define dependencies for the target compiler.
	(build-print-rtl.o): Rename to build/print-rtl.o.
	(build-errors.o): Rename to build/errors.o.
	(build-varray.o): Rename to build/varray.o.
	(maintainerclean): Delete the contents of the build directory.
	($(genobjs): %.o): Explicitly use -o.
	(build/insn-conditions.o): Delete specfic rule to use generic rule.
	(build/gengtype-lex.o): Likewise.
	(build/gengtype-yacc.o): Likewise.
	(build/gcov-iov.o): Likewise.

2004-09-22  Nathan Sidwell  <nathan@codesourcery.com>

	* vec.h (VEC_space): Return true if there _is_ space.
	(VEC_reserve): Adjust.

2004-09-22  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.c (mips_function_value): For o32, o64, n32 and n64,
	use FPRs for scalar, complex and vector types only.

2004-09-21 Jeff Law  <law@redhat.com>

	* tree-ssa-dom.c (opt_stats): Move so that it lives just after
	the opt_stats_d structure.
	(vrp_data): Change from a varray into a hash table.
	(vrp_hash_elt): New structure for elements in the vrp hash table.
	(vrp_hash, vrp_eq):New functions for hashing and testing equality
	in the vrp hash table.
	(tree_ssa_dominator_optimize): Initialize VRP_DATA.  Reorganize
	initialization slightly to make it easier to read.  No longer need
	to grow/clear the varray.  Instead empty and delete the hash table.
	(dom_opt_finalize_block): Update due to change of VRP_DATA from
	a varray to a hash table.
	(simplify_cond_and_loop_avail_expr, record_range): Similarly.

	* tree-ssa-ccp.c (get_default_value): If we have a constant
	value recorded for an SSA_NAME, then use that constant as
	the initial lattice value.
	(substitute_and_fold): Transfer equivalences discovered into
	SSA_NAME_EQUIV.

	* tree.h (SSA_NAME_EQUIV): Add comments.
	(SET_SSA_NAME_EQUIV): Similarly.

2004-09-21  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/linux64.h (PROCESSOR_DEFAULT64): Default to POWER4.

	* config/rs6000/rs6000.c (rs6000_adjust_cost): dep_insn is used.

2004-09-21  Mark Mitchell  <mark@codesourcery.com>

	* c-decl.c (implicityl_declare): Call maybe_apply_renaming_pragma.
	(finish_decl): Likewise.

2004-09-21  Devang Patel  <dpatel@apple.com>

	* tree.def (VEC_COND_EXPR): New tree node.
	* tree-ssa-operands.c (get_expr_operands): Handle VEC_COND_EXPR.

2004-09-21  Stan Shebs  <shebs@apple.com>

	* config/rs6000/darwin-tramp.asm: Add __ppc64__ case.
	* config/rs6000/darwin-world.asm: Likewise.

2004-09-21  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa.c (verify_def): Use print_generic_stmt,
	not debug_generic_stmt.
	(verify_use): Ditto.
	(verify_phi_args): Ditto.
	(verify_ssa): Ditto.

2004-09-21  Paul Brook  <paul@codesourcery.com>

	* varasm.c (default_assemble_integer): Return false for values wider
	than the target word size.  Works around GAS bug.

2004-09-21  Zack Weinberg  <zack@codesourcery.com>

	* reg-notes.def (REG_DEP_TRUE): New entry, place first so it
	gets value 0.
	* print-rtl.c (print_rtx): Print the name of a REG_NOTE even
	if it has value 0.

2004-09-21  Daniel Berlin <dberlin@dberlin.org>

	* c-typeck.c (build_function_call): Give name of object
	we are attempting to call in error message.
	* c-objc-common.c (c_tree_printer): Call pp_expression,
	not return false, for 'E' case.

2004-09-21  Steven Bosscher  <stevenb@suse.de>

	PR rtl-optimization/17482
	* postreload-gcse.c (reg_avail_info, oprs_unchanged_p,
	load_killed_in_block_p): Clarify comments.
	(record_last_reg_set_info): Make static inline.
	(mark_call, mark_set, mark_clobber, mark_oprs_set): Remove.
	(record_opr_changes): New function to replace the above.
	(compute_hash_table): Clarify comments.  Use record_opr_changes.
	(reg_set_between_after_reload_p): Clean up.
	(reg_used_between_after_reload_p): Likewise.
	(eliminate_partially_redundant_load): Clarify comments.

2004-09-21  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR rtl-optimization/17266
	* regmove.c (optimize_reg_copy_3): Make a new SUBREG for each insn.

2004-09-21  Uros Bizjak  <uros@kss-loka.si>

	PR rtl-optimization/14851
	* rtlanal.c (commutative_operand_precedence): Calculate
	precedence of stripped constant.

2004-09-20 Jeff Law  <law@redhat.com>
	   Jan Hubicka  <jh@suse.cz>

	* tree-ssanames.c (make_ssa_name): No longer need to clear, then
	initialize key elements here.
	(release_ssa_name): Zero the released SSA_NAME here.
	* tree.h (SSA_NAME_EQUIV, SET_SSA_NAME_EQUIV): New macros.
	(struct tree_ssa_name): Add new "equiv" field.
	* tree-ssa-dom.c (const_and_copies): Kill the global varray.
	(tree_ssa_dominator_optimize): No longer allocate, resize or
	clear CONST_AND_COPIES.
	(get_value_for, set_value_for): Kill.
	(thread_across_edge): Get/set the equivalency using
	SSA_NAME_EQUIV and SET_SSA_NAME_EQUIV.
	(restore_vars_to_original_value): Likewise.
	(record_equivalences_from_phis): Likewise.
	(record_dominating_conditions): Likewise.
	(record_const_or_copy, record_equality): Likewise.
	(lookup_avail_expr): Likewise.
	(record_equivalences_from_stmt, cprop_operand): Likewise.
	(cprop_into_successor_phis): No longer need to pass around
	CONST_AND_COPIES.  Callers updated. Get equivalences via
	SSA_NAME_EQUIV.
	(cprop_into_phis): Likewise.

2004-09-20  Matt Austern <austern@apple.com>
	    Zack Weinberg  <zack@codesourcery.com>

	* c-common.c (fix_string_type): Build the unqualified array
	type unconditionally, then use c_build_qualified_type to get
	the proper const-qualified variant, and set its
	TYPE_MAIN_VARIANT to refer to the unqualified type.
	* c-lex.c (c_lex_return_raw_string): New global.
	(c_lex_with_flags): Honor it.
	* c-pragma.h: Declare it.

2004-09-20  Daniel Berlin  <dberlin@dberlin.org>

	* Makefile.in: Fix flags.h dependencies to be $(FLAGS_H).

2004-09-21  Jan Hubicka  <jh@suse.cz>

	PR middle-end/17126
	* tree-optimize.c (update_inlined_to_pointers): Fix the recursion.
	(tree_rest_of_compilation): Cleanup.

2004-09-20  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.c (s390_select_rtx_section): Remove.
	(TARGET_ASM_SELECT_RTX_SECTION): Do not redefine.

2004-09-20  Kaz Kojima  <kkojima@gcc.gnu.org>

	* config/sh/sh.c (sh_expand_prologue): Add a REG_FRAME_RELATED_EXPR
	note to pretend a direct save from the original register when an
	intermediate register is used for the save.

2004-09-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* tsystem.h (alloca): Provide a default definition.

	Revert:
	2001-08-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
	    * unwind-dw2.c: Call __builtin_alloca, not alloca.

2004-09-20  Andrew Pinski  <pinskia@physics.uc.edu>

	PR tree-opt/17558
	* tree-ssa-copy.c (may_propagate_copy): Only allow if the
	aliasing sets are the same rather than just conflicting.

2004-09-20  Jan Hubicka  <jh@suse.cz>

	PR middle-end/16460

	* cgraph.c (cgraph_unnest_node): New function.
	(c_finalize): Rename to ....
	(c_warn_unused_result_recursivly): ... this one; do only the warning
	(finish_function): Finalize the toplevel function; do not lower nested tree.
	* cgraph.h (cgraph_unnest_node): Declare.
	* cgraphunit.c (decide_is_function_needed): Do not use cgraph
	nestedness datastructure.
	* cse.c (cse_insn): Do not cprop nonlocal LABEL_REFs.
	* reload1.c (set_label_offsets): Fix call of set_label_offsets.
	* tree-nested.c (finlize_nesting_tree_1): Use un-nesting code.

2004-09-20  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.c (some_small_symbolic_operand_int): Rename
	from some_small_symbolic_operand_1; export.
	(some_small_symbolic_operand): Remove.
	* config/alpha/alpha.md (some_small_symbolic_operand splitter): Remove
	extra C check.
	* config/alpha/predicates.md (some_small_symbolic_operand): New.

2004-09-20  Jan Hubicka  <jh@suse.cz>

	* predict.c (return_prediction): New function.
	(apply_return_prediction): Likewise.
	(tree_bb_level_predictions): Likewise.
	(tree_estimate_probability): Add noreturn exit edges; call
	bb_level_predictions; fix logic of return heuristics.
	(predict_paths_leading_to): Rescuesce from old CVS version of
	process_note_prediction function.
	* predict.def (PRED_TREE_EARLY_RETURN): New predictor.

2004-09-20  Andreas Krebbel  <krebbel1@de.ibm.com>

	* config/s390/s390.c (s390_frame_info): Added alignment statement for
	floating point register area on stack.

2004-09-20  Jakub Jelinek  <jakub@redhat.com>

	* predict.c (expr_expected_value): Use *_CLASS_P macros.

2004-09-20  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-pre.c (compute_antic_aux): Use malloc'd worklist, to avoid
	generating useless garbage.

2004-09-20  Paolo Bonzini  <bonzini@gnu.org>

	* builtins.c (fold_builtin): Call the new omonymous
	target hook for machine-dependent built-ins.
	* target-def.h (TARGET_FOLD_BUILTIN): New.
	* target.h (struct gcc_target): Add the fold_builtin hook.
	* targhooks.c (default_fold_builtin): New.
	* targhooks.h (default_fold_builtin): Declare it.

2004-09-20  Kazu Hirata  <kazu@cs.umass.edu>

	* cfg.c, tree-ssa-threadupdate.c, tree-vectorizer.c: Fix
	comment typos.

2004-09-20  Richard Sandiford  <rsandifo@redhat.com>

	PR target/17565
	* config/mips/mips.md (define_asm_attributes): Set can_delay to no.

2004-09-20  Jan Hubicka  <jh@suse.cz>

	* predict.c (estimate_probability): Remove unnecesary code.

2004-09-19  Ira Rosen  <irar@il.ibm.com>

	* tree-vectorizer.h (stmt_vec_info): Add vect_dr_base field.
	(STMT_VINFO_VECT_DR_BASE): Declare.
	(VECT_SMODULO): Declare.
	* tree-vectorizer.c (vect_compute_array_ref_alignment): New function.
	(vect_compute_array_base_alignment): New function.
	(vect_analyze_data_ref_access): Check array indices. Remove one
	dimensional arrays restriction.
	(vect_get_ptr_offset): New function.
	(vect_get_symbl_and_dr): New function.
	(vect_get_base_and_bit_offset): Support additional data refs. Renamed
	(former name vect_get_base_decl_and_bit_offset).
	(vect_create_index_for_array_ref): Removed.
	(vect_create_index_for_vector_ref): New function.
	(vect_create_addr_base_for_vector_ref): New function.
	(vect_create_data_ref): Handle additional data refs. Call
	vect_create_index_for_vector_ref and vect_create_addr_base_for_vector_ref.
	(vect_compute_data_ref_alignment): Support the changes. Call
	vect_get_base_and_bit_offset.
	(vect_analyze_data_refs): Call vect_get_symbl_and_dr. Support additional
	data refs. Store vect_dr_base.
	(vect_analyze_data_ref_accesses): Support nonconstant init.
	(new_stmt_vec_info): Initialize vect_dr_base field.
	(vect_is_simple_iv_evolution): Call initial_condition_in_loop_num.
	(get_vectype_for_scalar_type): Check for BLKmode.
	* tree-chrec.h (initial_condition_in_loop_num): Declare.
	* tree-chrec.c (initial_condition_in_loop_num): New function.
	(chrec_component_in_loop_num): New function.
	(evolution_part_in_loop_num): Call chrec_component_in_loop_num.
	* tree-data-ref.c (analyze_array_indexes): Change parameter (access_fns)
	to be pointer to varray_type.

2004-09-19  Jan Hubicka  <jh@suse.cz>

	* basic-block.h (update_bb_profile_after_threading): Declare.
	* cfg.c (update_bb_profile_after_threading): Break out from ...
	* cfgcleanup.c (try_forward_edges): ... here; use it.
	* tree-ssa-dom.c (thread_across_edge): Use it.
	* tree-ssa-threadupdate.c (create_block_for_threading): Zero out
	profile of the new BB.

2004-09-19  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-pre.c (insert_into_set): Don't put
	is_gimple_min_invariant values into the set.

2004-09-19  Andreas Jaeger  <aj@suse.de>

	* tree-ssa-dom.c (restore_nonzero_vars_to_original_value): Fix
	prototype.

2004-09-18  Kazu Hirata  <kazu@cs.umass.edu>

	* config/cris/cris.h: Preserve the original spelling in a
	quote.

2004-09-18 Jeff Law  <law@redhat.com>

	* tree-ssa-dom.c (nonzero_vars_stack, vrp_variables_stack): New
	global varrays to replace the block local varrays.
	(struct dom_walk_block_data): Remove, no longer used.
	(get_eq_expr_value): No longer need to pass around pointers to local
	varrays.  Callers updated.  Unused markers added to unused parameters.
	(record_range, record_equivalences_from_stmt): Likewise.
	(record_equivalences_from_incoming_edge): Likewise.
	(record_var_is_nonzero): Likewise.  Update now that we have a
	single global varray of SSA_NAMEs that need restoring.
	(dom_opt_initialize_block_local_data): Kill, no longer used.
	(tree_ssa_dominator_optimize): Initialize new global varrays.
	Update callbacks in dominator walker structure.
	(dom_opt_initialize_block): Add markers to NONZERO_VAR_STACK and
	VRP_VARIABLES_STACK.
	(restore_nonzero_vars_to_original_value): Update now that we have
	a single global varray of SSA_NAMEs that need restoring.
	(dom_opt_finalize_block): Similarly for VRP_VARIABLES_STACK.
	Remove unused variables.
	(optimize_stmt): Remove unused variable.

2004-09-18  Jan Hubicka  <jh@suse.cz>

	* tree-cfg.c (thread_jumps): Fix updating of the profile.

	* tree-optimize.c (tree_rest_of_compilation): Kill forgotten
	verify_cgraph call.

2004-09-18  Kazu Hirata  <kazu@cs.umass.edu>

	* alias.c, crtstuff.c, dbxout.c, domwalk.c, domwalk.h, gcc.c,
	gcse.c, global.c, lambda-code.c, loop.c, mips-tdump.c,
	optabs.h, predict.c, reg-stack.c, regclass.c, sched-rgn.c,
	tree-optimize.c, tree-ssa-dom.c, tree-ssa-forwprop.c,
	tree-ssa-operands.c, tree-ssa-phiopt.c,
	tree-ssa-threadupdate.c: Fix comment typos.

2004-09-18  Kazu Hirata  <kazu@cs.umass.edu>

	* config/darwin-c.c, config/arc/arc.c, config/arc/arc.md,
	config/arm/README-interworking, config/arm/arm-cores.def,
	config/arm/arm.c, config/arm/arm.h, config/arm/pe.c,
	config/arm/vfp.md, config/c4x/c4x.c, config/c4x/c4x.h,
	config/cris/cris.c, config/cris/cris.h, config/fr30/fr30.c,
	config/fr30/fr30.h, config/fr30/fr30.md, config/frv/frv.c,
	config/frv/frv.md, config/i386/winnt.c,
	config/ia64/unwind-ia64.c, config/iq2000/iq2000.c,
	config/iq2000/iq2000.h, config/m68hc11/m68hc11.c,
	config/m68hc11/m68hc11.md, config/m68k/m68k.c,
	config/mcore/mcore.c, config/mips/mips.h,
	config/mn10300/mn10300.md, config/pa/pa.c,
	config/pa/pa64-regs.h, config/pdp11/pdp11.c,
	config/rs6000/rs6000.c, config/sh/symbian.c,
	config/sparc/sparc.h: Fix comment typos.  Follow spelling
	conventions.

2004-09-18  Joseph S. Myers  <jsm@polyomino.org.uk>

	PR c/17424
	* c-typeck.c (c_expr_sizeof_expr): Check for error_mark_node.

2004-09-18  Diego Novillo  <dnovillo@redhat.com>

	* tree-ssa-alias.c (setup_pointers_and_addressables): Don't
	remove TREE_ADDRESSABLE from RESULT_DECL.

2004-09-18  Diego Novillo  <dnovillo@redhat.com>

	* tree-ssa-alias.c (dump_alias_info): Ignore NULL SSA_NAMEs.

2004-09-18  Jan Hubicka  <jh@suse.cz>

	* tree-into-ssa.c (rewrite_ssa_into_ssa): Expect ssa_name to return
	NULL.
	* tree-ssa-alias.c (init_alias_info): Likewise.
	* tree-ssa.c (verify_flow_sensitive_alias_info): Likewise.
	(verify_ssa): Likewise.
	* tree-ssanames.c (make_ssa_name): Clear out ssa_names arrays.

2004-09-18  Jan Hubicka  <jh@suse.cz>

	* i386.c (legitimize_pic_address): Fix splitting of PLUS with
	huge offset.

2004-09-18  Kaz Kojima  <kkojima@gcc.gnu.org>

	* config/sh/linux.h (ASM_PREFERRED_EH_DATA_FORMAT): Remove.
	* config/sh/sh.h (ASM_PREFERRED_EH_DATA_FORMAT): Use
	DW_EH_PE_sdata* for data.
	(ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX): Likewise.

2004-09-17  Geoffrey Keating  <geoffk@apple.com>

	* tree-inline.c (copy_tree_r): Don't duplicate constants, they're
	shared anyway.

	PR pch/13361
	* c-typeck.c (constructor_asmspec): Delete.
	(struct initializer_stack): Delete field 'asmspec'.
	(start_init): Delete saving of asmspec.
	(finish_init): Don't update constructor_asmspec.
	* dwarf2out.c (rtl_for_decl_location): Duplicate string from tree.
	* stmt.c (expand_asm): Duplicate strings from tree.
	(expand_asm_operands): Likewise.
	* tree.c (tree_size): Update computation of size of STRING_CST.
	(make_node): Don't make STRING_CST nodes.
	(build_string): Allocate string with tree node.
	(tree_code_size): Clean up assertions, don't allow requests
	for "the size of a STRING_CST".
	* tree.def (STRING_CST): Update comment.
	* tree.h (TREE_STRING_POINTER): Adjust for change to STRING_CST.
	(tree_string): Place contents of string in tree node.
	* config/sh/sh.c (sh_handle_sp_switch_attribute): Duplicate string
	from tree.

2004-09-17  Zack Weinberg  <zack@codesourcery.com>

	* Makefile.in (c-parse.o): Depend on $(C_PRAGMA_H).
	* objc/Make-lang.in (objc/objc-parse.o): Likewise.

2004-09-17  Jones Desougi  <jones@ingate.com>

	* configure.ac: Replace AC_COMPILE_CHECK_SIZEOF with AC_CHECK_SIZEOF.
	* configure, config.in: Regenerate.

2004-09-17  Zack Weinberg  <zack@codesourcery.com>

	* tree.c, tree.h (tree_class_strings): Make array const.
	Reindent per coding convention.  Move asterisk to proper place
	per coding convention.

2004-09-18  Andreas Schwab  <schwab@suse.de>

	* Makefile.in (gimple-low.o): Depend on $(EXPR_H).
	(tree-vectorizer.o): Likewise.
	(targhooks.o): Likewise.

2004-09-17  Jeffrey D. Oldham  <oldham@codesourcery.com>
	    Zack Weinberg  <zack@codesourcery.com>

	* alias.c (find_base_decl): Remove unreachable case '3' block.
	* expr.c (safe_from_p): Abort if passed a type.
	* tree-gimple.c (recalculate_side_effects): Abort if passed
	anything other than an expression.
	* tree-ssa-pre.c (phi_translate): Return expr immediately if
	is_gimple_min_invariant is true for it.  Reorder cases for clarity.
	Abort on un-handled tree classes.
	(valid_in_set): Likewise.
	* tree.c (tree_code_class_strings): New static data.

	* tree.h (enum tree_code_class): New.
	(tree_code_class_strings): Declare.
	(TREE_CODE_CLASS_STRING, EXCEPTIONAL_CLASS_P, CONSTANT_CLASS_P)
	(REFERENCE_CLASS_P, COMPARISON_CLASS_P, UNARY_CLASS_P, BINARY_CLASS_P)
	(STATEMENT_CLASS_P, EXPRESSION_CLASS_P, IS_TYPE_OR_DECL_P): New macros.
	(TYPE_P, DECL_P, IS_NON_TYPE_CODE_CLASS, IS_EXPR_CODE_CLASS)
	(checking macros, EXPR_LOCATION, SET_EXPR_LOCATION, EXPR_LOCUS): Update.

	* tree.def, c-common.def, objc/objc-tree.def: Use
	tree_code_class enumeration constants instead of code letters.

	* alias.c, builtins.c, c-common.c, c-format.c, c-lang.c, c-pragma.c
	* c-typeck.c, cgraphunit.c, convert.c, dbxout.c, dwarf2out.c
	* emit-rtl.c expr.c, fold-const.c, gimplify.c, lambda-code.c
	* langhooks.c, langhooks.h, predict.c, print-tree.c, reload1.c, stmt.c
	* tree-browser.c, tree-cfg.c, tree-chrec.c, tree-complex.c, tree-dfa.c
	* tree-dump.c, tree-eh.c, tree-gimple.c, tree-inline.c, tree-nested.c
	* tree-outof-ssa.c, tree-pretty-print.c, tree-sra.c, tree-ssa-ccp.c
	* tree-ssa-dce.c, tree-ssa-dom.c, tree-ssa-forwprop.c, tree-ssa-live.c
	* tree-ssa-loop-im.c, tree-ssa-loop-ivopts.c, tree-ssa-operands.c
	* tree-ssa-phiopt.c, tree-ssa-pre.c, tree-ssa-propagate.c
	* tree-ssa.c, tree-ssanames.c, tree-tailcall.c, tree.c, varasm.c
	* config/sol2-c.c, config/arm/arm.c, config/i386/winnt.c
	* config/pa/pa.c, config/pa/pa.h, config/sh/sh.c, objc/objc-lang.c
	Update to match.

	* LANGUAGES: Add note about change.

2004-09-17  Diego Novillo  <dnovillo@redhat.com>

	PR tree-optimization/17319
	* tree-ssa-alias.c (compute_points_to_and_addr_escape): Also
	examine pointers on the LHS of an assignment.
	(collect_points_to_info_r): Handle RETURN_EXPR.

2004-09-17 Jeff Law  <law@redhat.com>

	* tree-ssa-dom.c (const_and_copies_stack): New.
	(dom_walk_block_data): Remove const_and_copies field.
	(record_const_or_copy): No longer need to pass in varray_type *.
	Use CONST_AND_COPIES_STACK rather than passed in block local stack.
	Callers updated.
	(record_equality): Similarly.
	(restore_vars_to_original_value): Similarly.  Revamp to use new
	single global stack rather than per-block stacks.
	(tree_ssa_dominator_optimize): Initialize the CONST_AND_COPIES_STACK.
	(thread_across_edge): Remove now unused parameters.
	(dom_opt_initialize_block_local_data): No longer test the block
	local CONST_AND_COPIES.
	(dom_opt_initialize_block): Push a marker on CONST_AND_COPIES_STACK.

2004-09-17  Jan Hubicka  <jh@suse.cz>

	PR tree-optimization/17509
	* tree-optimize.c (update_inlined_to_pointers): New function.
	(tree_rest_of_compilation): Use it.

2004-09-17  Devang Patel  <dpatel@apple.com>

	* dbxout.c (get_lang_number): New.
	(dbxout_init): Include lang number in N_SO  stab.
	* dbxout.h (N_SO_AS, N_SO_C, N_SO_ANSI_C, N_SO_CC, N_SO_FORTRAN,
	N_SO_PASCAL, N_SO_FORTRAN90, N_SO_OBJC, N_SO_OBJCPLUS): New #define.

2004-09-17  Diego Novillo  <dnovillo@redhat.com>

	PR tree-optimization/17273
	* tree-ssa.c (replace_immediate_uses): Call fold_stmt if the
	replacement is a constant.

2004-09-17  Joseph S. Myers  <jsm@polyomino.org.uk>

	* c-tree.h (enum c_typespec_keyword): New.
	(struct c_declspecs): Adjust description of "type".  Remove
	specbits, explicit_int_p and explicit_char_p.  Rename
	typedef_signed_p to explicit_signed_p.  Add default_int_p, long_p,
	short_p, signed_p, unsigned_p and complex_p.
	(finish_declspecs): New.
	* c-parse.in (datadef, datadecl, setspecs, decl, component_decl,
	typename): Call finish_declspecs.
	* c-decl.c (finish_declspecs): New.
	(declspecs_add_type): Check for combinations which cannot occur in
	valid specifier lists.  Update comments.
	(shadow_tag_warned): Remove checks done in finish_declspecs.
	Don't report useless type name if type defaulted to int.
	(grokdeclarator): Remove checks and actions done in
	finish_declspecs.  Don't allow for type being NULL.  Update for
	datastructures changes.  Initialize decl_attr.
	(build_null_declspecs, quals_from_declspecs): Update for
	datastructures changes.

2004-09-17  Sylvain Pion  <Sylvain.Pion@sophia.inria.fr>

	* doc/extend.texi: Fix duplicated word.

2004-09-17  Toon Moene  <toon@moene.indiv.nluug.nl>

	* doc/invoke.texi: Remove stray explanation on
	-freduce-all-givs and -fmove-all-movables.

2004-09-17  James Morrison  <phython@gcc.gnu.org>

	* doc/cfg.texi: Use @smallexample.
	* doc/md.texi: Likewise.
	* doc/tree-ssa.texi: Likewise.
	* doc/extend.texi: Likewise.  Use @r{} in comments.
	* doc/trouble.texi: Use @r{} in comments.

2004-09-17  Hans-Peter Nilsson  <hp@bitrange.com>

	* configure.ac (gcc_cv_gld_version): Handle whitespace before
	"VERSION=".
	* aclocal.m4 (_gcc_COMPUTE_GAS_VERSION): Ditto.
	* configure: Regenerate.

2004-09-17  J"orn Rennecke <joern.rennecke@superh.com>

	* sh.c (sh_gimplify_va_arg_expr): Don't call pass_by_reference.
	(sh_pass_by_reference): Work around std_gimplify_va_arg_expr bug.
	* t-sh (MULTILIB_CPUS): s/ML_m/ML_sh/g .
	* t-sh64 (MULTILIB_CPU_DIRS): Likewise.  Match dashes and trailing
	slashes in substitutions.
	(MULTILIB_DIRNAMES): Remove defunct removal of /media32.

2004-09-17  Kazu Hirata  <kazu@cs.umass.edu>

	* basic-block.h, c-decl.c, c-parse.in, cgraphunit.c, ddg.c,
	gimplify.c, lambda-code.c, optabs.c, predict.c,
	tree-scalar-evolution.c, tree-sra.c, tree-ssa-loop-ch.c,
	tree-ssa.c, vec.h: Fix comment typos.  Follow spelling
	conventions.

2004-09-17  Kazu Hirata  <kazu@cs.umass.edu>

	* doc/compat.texi, doc/cpp.texi, doc/cppopts.texi,
	doc/extend.texi, doc/install.texi, doc/invoke.texi,
	doc/sourcebuild.texi, doc/tm.texi, doc/tree-ssa.texi,
	doc/trouble.texi: Use @option around options.

2004-09-17  Richard Sandiford  <rsandifo@redhat.com>

	* Makefile.in (gen-protos.o): Depend on errors.h.

2004-09-17  Steven Bosscher  <stevenb@suse.de>

	PR tree-optimization/17513
	* cfgexpand.c (construct_init_block): Clear EDGE_EXECUTABLE
	for successors of the entry block.

2004-09-17  Uros Bizjak  <uros@kss-loka.si>

	PR rtl-optimization/15187
	* ifcvt.c (noce_try_cmove_arith): Exit early if total
	insn_rtx_cost of both branches > BRANCH_COST

2004-09-16  Diego Novillo  <dnovillo@redhat.com>

	PR tree-optimization/17528
	* tree-ssa-alias.c (compute_flow_insensitive_aliasing): Do not
	erase the may-alias set for a tag when merging it with
	another.

2004-09-16  Kaz Kojima  <kkojima@gcc.gnu.org>

	* config/sh/sh.md (call): Extend 32-bit addresses to DImode
	for 32-bit TARGET_SHMEDIA.
	(call_value): Likewise.

2004-09-16  Diego Novillo  <dnovillo@redhat.com>

	* tree-ssa-operands.c (add_call_clobber_ops): Make read-only
	test apply only to TREE_STATIC and DECL_EXTERNAL.

2004-09-16  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* Makefile.in (tree-cfg.o): Add CFGLAYOUT_H dependency.
	* basic-block.h (get_dominated_by_region): Declare.
	* dominance.c (get_dominated_by_region): New function.
	* tree-cfg.c: Include cfglayout.h.
	(tree_duplicate_bb): Duplicate also phi nodes.
	(struct ssa_name_map_entry): New type.
	(add_phi_args_after_copy_bb, add_phi_args_after_copy,
	ssa_name_map_entry_hash, ssa_name_map_entry_eq,
	allocate_ssa_names, rewrite_to_new_ssa_names_def,
	rewrite_to_new_ssa_names_use, rewrite_to_new_ssa_names_bb,
	rewrite_to_new_ssa_names, tree_duplicate_sese_region): New functions.
	* tree-flow.h (tree_duplicate_sese_region, add_phi_args_after_copy_bb,
	add_phi_args_after_copy, rewrite_to_new_ssa_names_bb,
	rewrite_to_new_ssa_names, allocate_ssa_names,
	rewrite_into_loop_closed_ssa, verify_loop_closed_ssa): Declare.
	* tree-ssa-loop-ch.c (duplicate_blocks): Removed.
	(copy_loop_headers): Use tree_duplicate_sese_region.

2004-09-16  Frank Ch. Eigler  <fche@redhat.com>

	* profile.c (branch_prob): Restore support for USE_MAPPED_LOCATION.

2004-09-16 Jeff Law  <law@redhat.com>

	* tree-into-ssa.c (block_defs_stack): New toplevel varray.
	(rewrite_block_data): Remove, no longer used.
	(rewrite_initialize_block_local_data): Remove, no longer used.
	(rewrite_initialize_block): Mark parameters as unused as needed.
	Change references to the block local block_defs to be block_defs_stack.
	Push a marker onto the block_defs_stack.
	(ssa_rewrite_initialize_block): Similarly.
	(rewrite_stmt, ssa_rewrite_stmt): Similarly.
	(ssa_register_new_def): No longer needs varray argument.  Use
	block_defs_stack instead.  No longer handle possibly null block_defs
	varray.  Reverse order of items we push on the stack to make it
	easier to identify our marker.
	(register_new_def): No longer handle possibly null block_defs
	varray.
	(rewrite_finalize_block): Revamp to look for markers in the global
	block_defs_stack varray rather than wiping a block local varray.
	Mark arguments as unused as needed.
	(ssa_rewrite_finalize_block): Similarly.
	(rewrite_into_ssa): Update initialization of dom walker structure
	to reflect that we don't need block local data anymore.  Initialize
	the block_defs_stack varray.
	(rewrite_ssa_into_ssa): Similarly.
	* tree-ssa-dom.c (block_defs_stack): New toplevel varray.
	(struct dom_walk_data): Kill block_defs field.
	(tree_ssa_dominator_optimize): Initialize block_defs_stack.
	(thread_across_edge): Use the global block_defs_stack instead of
	the old block_defs varray.
	(dom_opt_initialize_block_local_data): Update now that we don't have
	block_defs field to check anymore.
	(dom_opt_initialize_block): Push a marker onto block_defs_stack.
	(restore_currdefs_to_original_value): Use the new block_defs_stack
	instead of a block local varray.
	(dom_opt_finalize_block): Similarly.
	(record_equivalencs_from_phis): Similarly.
	(optimize_stmt, register_definitions_for_stmt): Similarly.

2004-09-16  Andrew MacLeod  <amacleod@redhat.com>

	PR tree-optimization/17517
	* tree-ssa-copyrename.c (copy_rename_partition_coalesce): Don't
	coalesce same-root variables without checking for abnormal PHI usage.

2004-09-16  Daniel Berlin  <dberlin@dberlin.org>

	* cfgloop.h (duplicate_loop): Add prototype.
	* cfgloopmanip.c (duplicate_loop): Make non-static.
	* lambda-code.c (perfect_nestify): Factor out test whether
	we can handle this loop into separate function.
	Call it.
	(can_convert_to_perfect_nest): New function.
	(replace_uses_of_x_with_y): Add modify_stmt call.
	* tree-loop-linear.c (linear_transform_loops): Call
	rewrite_into_loop_closed_ssa and free_df.

2004-09-16  Daniel Berlin  <dberlin@dberlin.org>

	* lambda-code.c (invariant_in_loop): is_gimple_min_invariant is
	loop invariant as well.
	(perfect_nestify): new function.
	(gcc_loop_to_lambda_loop): New parameters to track lower bounds,
	upper bounds, and steps.
	Set outerinductionvar properly.
	(gcc_loopnest_to_lambda_loopnest): Add loops and need_perfect
	parameters.
	Return NULL if we need a perfect loop and can't make one.
	(lambda_loopnest_to_gcc_loopnest): Correct algorithm.
	(not_interesting_stmt): New function.
	(phi_loop_edge_uses_def): Ditto.
	(stmt_uses_phi_result): Ditto.
	(stmt_is_bumper_for_loop): Ditto.
	(perfect_nest_p): Ditto.
	(nestify_update_pending_stmts): Ditto.
	(replace_uses_of_x_with_y): Ditto.
	(stmt_uses_op): Ditto.
	(perfect_nestify): Ditto.
	* lambda-mat.c (lambda_matrix_id_p): New function.
	* lambda-trans.c (lambda_trans_matrix_id_p): Ditto.
	* lambda.h: Update prototypes.
	* tree-loop-linear (linear_transform_loop): Use new
	perfect_nest_p. Detect and ignore identity transform.
	* tree-ssa-loop.c (pass_linear_transform): Use TODO_write_loop_closed.

2004-09-16  Sebastian Pop  <pop@cri.ensmp.fr>

	* tree-loop-linear.c (gather_interchange_stats): Add more comments.
	Gather also strides of accessed data.  Pass in the data references
	array.
	(try_interchange_loops): Add a new heuristic for handling the temporal
	locality.  Pass in the data references array.
	(linear_transform_loops): Pass the data references array to
	try_interchange_loops.

2004-09-16  Kazu Hirata  <kazu@cs.umass.edu>

	* doc/invoke.texi: Fix typos.  Follow spelling conventions.

2004-09-16  Nathan Sidwell  <nathan@codesourcery.com>

	* doc/c-tree.texi (Classes): Remove index entries for
	TREE_VIA_{PUBLIC,PROTECTED,PRIVATE}.

2004-09-16  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* fold-const.c (fold): Fold difference of addresses.
	(ptr_difference_const): Moved from tree-ssa-loop-ivopts, based on
	get_inner_reference.
	* tree-ssa-loop-ivopts.c (peel_address): Removed.
	(ptr_difference_const): Moved to fold-const.c.
	(split_address_cost): Use get_inner_reference instead of peel_address.
	(ptr_difference_cost): Change type of diff to HOST_WIDE_INT.
	* tree.h (ptr_difference_const): Export.

	* tree-ssa-loop-ivopts.c (dump_iv, dump_use, dump_cand): Add induction
	variable type to the dump.  Fix indentation.
	(idx_find_step): Handle nonconstant array_ref_element_size and
	array_ref_low_bound.
	(idx_record_use): Handle array_ref_element_size and
	array_ref_low_bound.
	(find_interesting_uses_stmt): Handle memory = nontrivial_expression
	statements correctly.
	(get_computation_at, iv_value): Do not unshare expressions here.
	(rewrite_use_outer): Unshare the expression before it is emitted
	to code.
	* tree-ssa-loop-niter.c (unsigned_type_for, signed_type_for):
	Moved to tree.c.
	* tree.c (unsigned_type_for, signed_type_for): Moved from
	tree-ssa-loop-niter.c.  Use langhooks.
	* tree.h (signed_type_for): Export.

2004-09-16  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.c (rs6000_xcoff_asm_named_section): Update
	prototype.

2004-09-15  Andrew Pinski  <pinskia@physics.uc.edu>

	PR target/11572
	* c-incpath.h (target_c_incpath_s): Add extra_pre_includes.
	Add two parameters to extra_includes.
	(C_INCPATH_INIT): Remove.
	* c-incpath.c (register_include_chains): Call extra_pre_includes
	before adding the standard include directory.
	Update call to extra_includes.
	(!defined TARGET_EXTRA_INCLUDES): Update
	hook_void_charptr_charptr_int and add !define
	TARGET_EXTRA_PRE_INCLUDES.
	(!define TARGET_EXTRA_INCLUDES): Define as
	hook_void_charptr_charptr_int.
	(!define TARGET_EXTRA_PRE_INCLUDES): Likewise.
	(target_c_incpath): Always declare.
	* fixinclude.c (defined TARGET_EXTRA_INCLUDES): Declare a
	empty function.
	(define TARGET_EXTRA_PRE_INCLUDES): Likewise.
	* config/darwin.h: (darwin_register_frameworks): Update for
	the two new parameters.
	(darwin_register_objc_includes): Add prototype.
	(TARGET_EXTRA_PRE_INCLUDES): Define.
	* config/darwin-c.c (darwin_register_objc_includes): New function.
	(darwin_register_frameworks): Update for the two new parameters.
	(target_c_incpath): Remove.
	* config/t-darwin (darwin-c.o): Add $(PREPROCESSOR_DEFINES) to
	the compile line.
	* doc/tm.texi (TARGET_EXTRA_INCLUDES): Document the two new
	parameters.
	(TARGET_EXTRA_PRE_INCLUDES): Document.

	* gcc.c (spec_function): Add replace-outfile.
	(replace_outfile_spec_function): New function.
	* config/darwin.h (LINK_SPEC): Add replace
	-lobjc with -lobjc-gnu if -fgnu-runtime is
	supplied.
	* invoke.texi (replace-outfile): Document.

2004-09-13  Jan Hubicka  <jh@suse.cz>

	* predict.c (expr_expected_value, strip_builtin_expect): New function.
	(tree_predict_by_opcode): Use it.
	(tree_estimate_probability): Add, for now disabled,
	strip_builtin_expect call.

2004-09-15  James E Wilson  <wilson@specifixinc.com>

	PR target/17455
	* config/ia64/ia64.c (ia64_function_ok_for_sibcall): Return false
	if current_function_decl is a sibcall.

2004-09-15  Mark Mitchell  <mark@codesourcery.com>

	* varasm.c (default_function_rdodata_section): Make sure to pass
	along a decl for a link-once section.

2004-09-15  Richard Henderson  <rth@redhat.com>

	* tree-ssa-operands.c (add_call_clobber_ops): Fix unused variable
	warning with code disable.  Fix formatting.

2004-09-15  Steven Bosscher  <stevenb@suse.de>

	* Makefile.in (tree-ssa-dom.o): Depend on tree-ssa-propagate.h.
	* tree-ssa-dom.c (cprop_into_stmt): Recompute TREE_INVARIANT
	after propagating into an ADDR_EXPR.

2004-09-15  Andrew Pinski  <apinski@apple.com>

	PR rtl-opt/17427
	* gcse.c (process_insert_insn): insn_invalid_p has side effects.
	Move it out of gcc_assert.

2004-09-15  Joseph S. Myers  <jsm@polyomino.org.uk>

	* attribs.c, builtins.c, c-format.c, c-pch.c, coverage.c,
	except.c, fold-const.c, function.c, langhooks.c, params.c,
	reload.c, reload1.c, stmt.c, stor-layout.c, toplev.c, tree-cfg.c,
	tree-dump.c, tree-mudflap.c, tree.c, varasm.c: Use %<, %> and %q
	for quoting in diagnostics going through pretty-print.c.  Use ''
	for quoting in other diagnostic text.
	* langhooks.c: Include intl.h.  Mark text locating diagnostics for
	translation.
	* Makefile.in (langhooks.o): Update dependencies.
	* pretty-print.h (pp_printf): Mark as accepting GCC diagnostic
	formats.

2004-09-15  Mark Mitchell  <mark@codesourcery.com>

	* configure.ac: Check for COMDAT support.  Robustify check for
	SHF_MERGE support.
	* configure: Regenerated.
	* config.in: Likewise.
	* langhooks-def.h (lhd_comdat_group): New function.
	(LANG_HOOKS_COMDAT_GROUP): New macro.
	(LANG_HOOKS_DECLS): Use it.
	* langhooks.c (lhd_comdat_group): Define.
	* langhooks.h (lang_hooks_for_decls): Add comdat_group.
	* output.h (named_section_flags): Make it a macro.
	(named_section_real): New function.
	(default_no_named_section): Add decl parameter.
	(default_elf_asm_named_section): Likewise.
	(default_coff_asm_named_section): Likewise.
	(default_pe_asm_named_section): Likewise.
	* target.h (gcc_target): Adjust type of named_section.
	* varasm.c (named_section_flags): Rename to named_section_real.
	Add decl parameter.
	(default_no_named_section): Add decl parameter.
	(default_elf_asm_named_section): Use COMDAT, if available.  Deal
	with the case that ASM_COMMENT_START is "@".
	(default_coff_asm_named_section): Add decl parameter.
	(default_pe_asm_named_section): Likewise.
	* config/alpha/alpha.c (vms_asm_named_section): Add decl
	parameter.
	(unicosmk_asm_named_section): Likewise.
	* config/arm/arm.c (arm_elf_asm_named_section): Remove.
	* config/arm/elf.h (TARGET_ASM_NAMED_SECTION): Likewise.
	* config/c4x/c4x.c (c4x_asm_named_section): Add decl parameter.
	* config/cris/cris-protos.h (cris_target_asm_named_section):
	Likewise.
	* config/cris/cris.c (cris_target_asm_named_section):
	Likewise.
	* config/darwin/darwin-protos.h (darwin_asm_named_section):
	Likewise.
	* config/darwin/darwin.c (darwin_asm_named_section): Likewise.
	* config/h8300/h8300.c (h8300_asm_named_section): Likewise.
	* config/i386/i386-protos.h (i386_pe_asm_named_section):
	Likewise.
	* config/i386/winnt.c (i386_pe_asm_named_section): Likewise.
	* config/m68k/m68k.c (m68k_coff_asm_named_section): Likewise.
	* config/mcore/mcore.c (mcore_asm_named_section): Likewise.
	* config/rs6000/rs6000.c (rs6000_xcoff_asm_named_section):
	Likewise.
	* config/sparc/sparc.c (sparce_elf_asm_named_section): Likewise.
	* cp/cp-lang.h (LANG_HOOKS_COMDAT_GROUP): Define.
	* cp/cp-tree.h (cxx_comdat_group): Declare.
	* cp/decl.c (cxx_comdat_group): New function.

2004-09-15  Jan Hubicka  <jh@suse.cz>

	* tree-ssa.c (verify_flow_sensitive_alias_info): Do not walk dead nodes.
	* tree-tailcall.c (eliminate_tail_call): Release SSA name.

	* tree-cfg.c (remove_bb): Release SSA defs.

2004-09-15  Kazu Hirata  <kazu@cs.umass.edu>

	* doc/tm.texi: Follow spelling conventions.

2004-09-15  Kazu Hirata  <kazu@cs.umass.edu>

	* tree-ssa-dom.c: Fix comment typos.

2004-09-15  Alan Modra  <amodra@bigpond.net.au>

	* config/rs6000/linux-unwind.h (struct gcc_pt_regs): Extend to
	include ccr.
	(ppc_fallback_frame_state): Save location of CR.

2004-09-15  Jakub Jelinek  <jakub@redhat.com>

	* expr.c (string_constant): Handle also read-only variables
	initialized to string literals.

	* builtins.c (expand_builtin_memmove): Optimize memmove (x, y, 1)
	into memcpy (x, y, 1) if memcpy can be expanded inline.

2004-09-15  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	PR tree-optimization/17468
	* tree-ssa.c (verify_use, verify_phi_args, verify_ssa): Verify that
	definition inside a block precede uses.
	* tree-tailcall.c (adjust_return_value): Emit statements in the
	correct order.

2004-09-15  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.h (POINTERS_EXTEND_UNSIGNED): Delete.

2004-09-15  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* doc/install.texi (sparc-sun-solaris2*): Properly format warning.

2004-09-14 Jeff Law  <law@redhat.com>

	* tree-ssa-dom.c (avail_exprs_stack): New global varray.
	(struct dom_walk_block_data): Remove avail_exprs member.
	(tree_ssa_dominator_optimize): Initialize avail_exprs_stack.
	(lookup_avail_expr): No longer need to pass in address of
	the block local available exprs stack.  All callers changed.
	(simplify_cond_and_lookup_avail_expr): Similarly.
	(simplify_switch_and_lookup_avail_expr): Similarly.
	(get_eq_expr_value, record_cond): Likewise.
	(record_dominating_conditions): Likewise.
	(update_rhs_and_lookup_avail_expr): Likewise.
	(record_equivalences_from_stmt): Likewise.
	(dom_opt_initialize_block_local_data): No longer test state of
	block local avail_exprs.
	(dom_opt_initialize_block): Mark unwind point in the global
	avail_expr stack.
	(remove_expressions_from_table): Update to unwind to the
	most recent unwind marker in the global avail_expr stack.
	All callers changed.
	(dom_opt_finalize_block): Mark unwind point in the global
	avail_expr stack as needed.
	(record_cond): Push elements into the global avail_exprs stack.

	* tree-dfa.c (free_df_for_stmt): No longer static.
	(free_df): Update comments.
	* tree-flow.h (free_df_for_stmt): Prototype.
	* tree-ssa-dse.c (dse_optimize_stmt): Call free_df_for_stmt.  Also
	call release_defs.

2004-09-14  Diego Novillo  <dnovillo@redhat.com>

	PR tree-optimization/17252
	* tree-ssa-alias.c (may_alias_p): Don't assume that a
	pointer may not point to itself when using relaxed
	aliasing rules.

2004-09-14  Richard Henderson  <rth@redhat.com>

	PR middle-end/17397
	* gimplify.c (gimplify_addr_expr): Don't inadvertently change types
	while folding <ADDR_EXPR <INDIRECT_REF X>>.

2004-09-14  Andrew Pinski  <apinski@apple.com>

	* tree-ssa-copy.c (may_propagate_copy): Don't check the aliasing
	sets of the pointers but the aliasing sets of what they point to.

2004-09-14  Roger Sayle  <roger@eyesopen.com>

	PR rtl-optimization/9771
	* regclass.c (CALL_REALLY_USED_REGNO_P): New macro to eliminate
	conditional compilation in init_reg_sets_1.
	(init_reg_sets_1): Let global_regs[i] take priority over the frame
	(but not stack) pointer exceptions to regs_invalidated_by_call.
	(globalize_reg): Globalizing a fixed register may need to update
	regs_invalidated_by_call.

2004-09-14  Diego Novillo  <dnovillo@redhat.com>

	PR tree-optimization/15262
	* tree-dfa.c (dump_variable): Also print the type of the
	variable.
	* tree-ssa-alias.c (compute_flow_insensitive_aliasing): If two
	memory tags are of conflicting alias sets but have no aliased
	symbols in common, add one tag to the alias set of the other.
	(setup_pointers_and_addressables): Remove hack to deal with
	programs with no aliased symbols.
	(may_alias_p): Don't special case aggregate types.

2004-09-14  Joseph S. Myers  <jsm@polyomino.org.uk>

	PR c/15498
	* doc/invoke.texi (Environment Variables): Correct example locale.

2004-09-14  Jan Hubicka  <jh@suse.cz>

	* cfg.c (expunge_block): Revert previous change adding ggc_free call.

2004-09-14  Mark Mitchell  <mark@codesourcery.com>

	* config.gcc: Do not build a shared libgcc for arm-none-eabi.

2004-09-14  Joseph S. Myers  <jsm@polyomino.org.uk>

	* c-tree.h (struct c_declspecs): Add const_p, volatile_p and
	restrict_p.
	(struct c_declarator): Change u.array.quals and pointer_quals to
	int.  Add u.array.attrs.
	(quals_from_declspecs): New.
	* c-decl.c (quals_from_declspecs): New.
	(shadow_tag_warned): Give more specific message for useless type
	qualifiers.
	(build_array_declarator, set_array_declarator_inner,
	grokdeclarator, make_pointer_declarator, build_null_declspecs,
	declspecs_add_qual): Update for changed structures.

2004-09-14  Jeff Law  <law@redhat.com>

	* tree-ssa-dom.c (stmts_to_rescan): Move from a block-local
	to a global varray.
	(tree_ssa_dominator_optimize): Allocate stmts_to_rescan.
	(dom_opt_initialize_block_local_data): No longer test state
	of stmts_to_rescan.
	(dom_opt_finalize_block): Update due to change in scope of
	stmts_to_rescan.
	(optimize_stmt): Similarly.

2004-09-14  Kazu Hirata  <kazu@cs.umass.edu>

	* cgraph.h, cgraphunit.c, fold-const.c, lambda-mat.c,
	lambda.h, profile.c, tree-optimize.c, tree-sra.c, vec.h: Fix
	comment typos.  Follow spelling conventions.

2004-09-14  Kazu Hirata  <kazu@cs.umass.edu>

	* config/darwin-c.c, config/alpha/alpha.c, config/i386/i386.c,
	config/i386/predicates.md, config/sparc/sparc.c: Follow
	spelling conventions.

2004-09-14  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>
	    Steven Bosscher  <stevenb@suse.de>

	* Makefile.in (loop-unroll.o): Add HASHTAB_H and RECOG_H dependency.
	* basic-block.h (struct reorder_block_def): Add copy_number field.
	* cfgloop.h (biv_p): Declare.
	* cfgloopmanip.c (duplicate_loop_to_header_edge): Set copy_number.
	* common.opt (fsplit-ivs-in-unroller): New flag.
	* loop-iv.c (biv_p): New function.
	* loop-unroll.c: Include hashtab.h and recog.h.
	(struct iv_to_split, struct split_ivs_info): New types.
	(analyze_ivs_to_split, si_info_start_duplication, split_ivs_in_copies,
	free_si_info, si_info_hash, si_info_eq, analyze_iv_to_split_insn,
	determine_split_iv_delta, get_ivts_expr, allocate_basic_variable,
	insert_base_initialization, split_iv): New functions.
	(peel_loop_completely, unroll_loop_constant_iterations,
	unroll_loop_runtime_iterations, peel_loop_simple, unroll_loop_stupid):
	Use them.
	* doc/invoke.texi (-fsplit-ivs-in-unroller): Document.

2004-09-14  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-cfg.c (thread_jumps): Update dominators correctly in
	case destination of threaded edge dominates its source.

2004-09-14  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

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

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

2004-09-14  Nathan Sidwell  <nathan@codesourcery.com>

	* Makefile.in (STAGE1_CHECKING): New variable.
	(stage1_build): Use it.
	* tree-ssa.c (verify_ssa): Preserve state of dominance
	information.

2004-09-14  Uros Bizjak  <uros@kss-loka.si>

	* config/i386/i386.c (output_fp_compare): Add generation
	of ftst instruction.
	* config/i386/i386.md (*cmpfp_0_sf, cmpfp_0_df, cmpfp_0_xf):
	Use output_fp_compare () function.
	(cmpfp_i, *cmpfp_i_sse, *cmpfp_i_sse_only): Fix insn constraint.
	(fix_truncdi_memory): Remove operands[5] copy.

2004-09-14  Kazu Hirata  <kazu@cs.umass.edu>

	* config/m32r/m32r.md, config/m68k/m68kelf.h,
	config/mcore/mcore.md, config/rs6000/linux64.h,
	config/rs6000/rs6000.c, config/sparc/sparc.c: Fix comment
	typos.

2004-09-13  James E Wilson  <wilson@specifixinc.com>

	* Makefile.in (GEN_PROTOS_OBJS): Add $(BUILD_ERRORS).
	* gen-protos.c: Include errors.h.
	(progname): Delete.

2004-09-14  Jan Hubicka  <jh@suse.cz>

	* Makefile.in (predict.o): Depend on tree-scalar-evolution.h
	* predict.c: Include tree-scalar-evolution.h and cfgloop.h
	(predict_loops): Use number_of_iterations_exit to predict
	number of iterations on trees.

2004-09-13  Dale Johannesen  <dalej@apple.com>

	PR 17408
	PR 17409
	* c-decl.c (start_decl): Repair TREE_STATIC for initialized
	objects declared extern.

2004-09-14  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (arm_expand_prologue): Make args_to_push a
	HOST_WIDE_INT.

2004-09-13  Daniel Jacobowitz  <dan@debian.org>

	* fold-const.c (fold_checksum_tree): Ignore TYPE_CACHED_VALUES.
	Only use TYPE_BINFO for aggregates.

2004-09-13  Daniel Jacobowitz  <dan@debian.org>

	* expmed.c (synth_mult): Initialize latency.  Check cost before
	checking ops count.

2004-09-13  Kenneth Zadeck  <Kenneth.Zadeck@NaturalBridge.com>

	* tree-ssa-operands.c (get_call_expr_operands): Added parm to
	add_call_clobber_ops and add_call_read_ops.
	(add_call_clobber_ops, add_call_read_ops): Added code to reduce
	the number of vdefs and vuses inserted based on analysis of global
	variables across calls.
	* tree-dfa.c (find_referenced_vars): Needed to reset static
	var maps before each function is compiled.
	* cgraphunit.c:
	(static_vars_to_consider_by_tree,static_vars_to_consider_by_uid,
	static_vars_info,functions_to_static_vars_info,module_statics_escape,
	all_module_statics,searchc_env,dfs_info): New fields to support
	analysis of static global variables.
	(print_order, convert_UIDs_in_bitmap, new_static_vars_info,
	cgraph_reset_static_var_maps, get_global_static_vars_info,
	get_global_statics_not_read, get_global_statics_not_written,
	searchc, cgraph_reduced_inorder, has_proper_scope_for_analysis,
	check_rhs_var, check_lhs_var, get_asm_expr_operands,
	process_call_for_static_vars, scan_for_static_refs,
	cgraph_characterize_statics_local, cgraph_get_static_name_by_uid,
	clear_static_vars_maps, cgraph_propagate_bits,
	cgraph_characterize_statics): New. Functions to support analysis
	of static global variables.
	(cgraph_mark_local_and_external_functions): Renamed from:
	(cgraph_mark_local_functions)
	(cgraph_expand_all_functions): Remove call to
	cgraph_mark_local_and_external_functions.
	(cgraph_optimize): Added driver to analyze static variables whose
	scope is within the compilation unit.
	* cgraph.h (struct cgraph_local_info, GTY): Added
	statics_read, statics_written, local, calls_read_all,
	calls_write_all, for_functions_valid.  (struct cgraph_node):
	Added next_cycle.
	* cgraph.c (dump_cgraph_node): Added print routines for new fields.
	* makefile.in: macroized cgraph.h, added cgraphunit.c to the ggc
	list.

2004-09-13  Joseph S. Myers  <jsm@polyomino.org.uk>

	* c-decl.c (grokdeclarator): Correct comments about where storage
	class specifiers are rejected by grammar and add corresponding
	asserts.  Diagnose typedefs and parameters declared inline.
	Change warning for inline main to a pedwarn.  Only diagnose inline
	main if hosted.
	(declspecs_add_scspec): Allow duplicate "inline".

2004-09-13  Steve Ellcey  <sje@cup.hp.com>

	* config/ia64/ia64.c (ia64_scalar_mode_supported_p): New.
	(TARGET_SCALAR_MODE_SUPPORTED_P): New.

2004-09-13  Richard Henderson  <rth@redhat.com>

	PR 17436
	* tree.h (TYPE_CONTAINS_PLACEHOLDER_INTERNAL): New.
	(tree_type): Replace spare with contains_placeholder_bits.
	(type_contains_placeholder_1): Rename from type_contains_placeholder_p,
	make static.  Remove seen_types list.
	(type_contains_placeholder_p): New.

2004-09-13  James E Wilson  <wilson@specifixinc.com>

	* config/mips/mips.c (CODE_FOR_mips_sqrt_ps): New.
	(sb1_bdesc, bdesc_map, bdesc_arrays): New.
	(mips_expand_builtin): Add SB-1 support.  Use bdesc_map and
	bdesc_arrays instead of mips_bdesc.
	(mips_init_builtins): Likewise.
	* config/mips/mips.h (TARGET_SB1): New.
	(HAVE_SQRT_P): Delete.
	* config/mips/mips.md (divide_condition): Support V2SF.
	(sqrt_condition, recip_condition): New.
	(div<mode>3): Use ANYF instead of SCALARF.
	(*div<mode>3): Use ANYF instead of SCALARF.  Use UNITMODE instead of
	MODE.
	(*recip<mode>3, *rsqrt<mode>a, *rsqrt<mode>b): Use recip_condition
	instead of ISA_HAS_FP4.  Use ANYF instead of SCALARF.  Use UNITMODE
	instead of MODE.
	(sqrt<mode>2): Use sqrt_condition instead of HAVE_SQRT_P.  Use ANYF
	instead of SCALARF.  Use UNITMODE instead of MODE.

2004-09-13  Zack Weinberg  <zack@codesourcery.com>

	* config.in: Regenerate after removal of libbanshee.

2004-09-13  Andrew MacLeod  <amacleod@redhat.com>

	PR tree-optimization/17400
	* tree-ssa-copyrename.c (copy_rename_partition_coalesce): Don't
	coalesce partitions when one occurs in an abnormal PHI.

2004-09-13  Andrew Pinski  <apinski@apple.com>

	* config/rs6000/darwin.h (ASM_OUTPUT_COMMON): Change variable size's
	name to _new_size.

2004-09-13  Richard Henderson  <rth@redhat.com>

	PR inline-asm/6806
	* cselib.c (cselib_invalidate_rtx): Export.  Remove unused args.
	(cselib_invalidate_rtx_note_stores): New.
	(cselib_record_sets, cselib_process_insn): Update to match.
	* cselib.h (cselib_invalidate_rtx): Declare.
	* postreload.c (reload_cse_simplify): Invalidate asm clobbers.

2004-09-13  Richard Henderson  <rth@redhat.com>

	PR tree-opt/10528
	* tree-inline.c (copy_body_r): Recompute bits for ADDR_EXPR,
	after copying its argument.

2004-09-13  Joseph S. Myers  <jsm@polyomino.org.uk>

	* c-common.c, c-decl.c, c-lex.c, c-objc-common.c, c-opts.c,
	c-parse.in, c-pragma.c, c-typeck.c: Use %q, %< and %> for quoting
	in diagnostics.  Use %' for English apostrophes.
	* c-tree.h (ATTRIBUTE_GCC_CDIAG): Define.
	(pedwarn_c90, pedwarn_c99): Use it.
	* c-decl.c (lookup_label): Quote label name in diagnostic.
	* c-parse.in (yyprint): Use ' instead of ` for left quote.
	* c-typeck.c (warn_for_assignment): Likewise.

2004-09-13  Jan Hubicka  <jh@suse.cz>

	* i386.c (x86_schedule): New global variable.
	(override_options): Disable scheduling when not supported.
	* i386.h (x86_schedule): Declare.
	(TARGET_SCHEDULE): New macro.

2004-09-12  Richard Henderson  <rth@redhat.com>

	PR c++/16254
	* fold-const.c (fold) <case CLEANUP_POINT_EXPR>: Remove.
	* tree.c, tree.h (has_cleanups): Remove.

2004-09-12  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-ssa-loop-manip.c (split_loop_exit_edge): Handle non-ssaname
	arguments of the phi nodes correctly.

2004-09-12  Jan Hubicka  <jh@suse.cz>

	* ggc-common.c (cmp_statistics): Fix sorting.

2004-09-12  David Edelsohn  <edelsohn@gnu.org>

	PR target/16795
	* expmed.c (expand_divmod): If cheap power of 2 divide is
	available, use it for negative constant as well.

2004-09-12  Andrew Pinski  <apinski@apple.com>

	* darwin.h (ASM_OUTPUT_COMMON): Make sure we do not have a
	size of 0.

	* tree-chrec.c (initialize_scalar_evolutions_analyzer): Remove.

2004-09-12  Richard Henderson  <rth@redhat.com>

	* config/i386/i386.c (ix86_split_ashldi): Special case op1 as one
	or minus one.
	(ix86_split_ashrdi, ix86_split_lshrdi): Clean up conditions for
	post-reload, and scratch NULL.
	* config/i386/i386.md (testqi_1): Use FLAGS_REG name.
	(x86_shift_adj_2): Use ix86_expand_clear.
	(ashldi3): Remove CMOVE expansion difference.
	(ashldi3_1): Remove.
	(*ashldi3_1): Rename from *ashldi3_2.  Use reg_or_pm1_operand and
	add constraints for immediates.  New peephole for split-with-temp.
	Run splitter after peep2 pass.
	(ashrdi3, ashrdi3_1, ashrdi3_2): Similarly.
	(lshrdi3, lshrdi3_1, lshrdi3_2): Similarly.
	(setcc_2): Rename with *.
	* config/i386/predicates.md (reg_or_pm1_operand): New.
	(ashldi_input_operand): New.

2004-09-12  Richard Henderson  <rth@redhat.com

	* print-rtl.c (print_decl_name): New.
	(print_mem_expr): Use it.

2004-09-12  Richard Henderson  <rth@redhat.com

	PR 17186, part deux
	* except.c (sjlj_emit_function_exit): Fix logic locating
	sjlj_exit_after in final block.

2004-09-12  Toon Moene  <toon@moene.indiv.nluug.nl>

	* common.opt: Remove flags -fmove-all-movables and
	-freduce-all-givs.
	* loop-invariant.c (find_invariants_to_move):
	Remove all uses of flag_move_all_movables.
	* loop.c (move_movables): Remove all uses of
	flag_move_all_movables.
	(strength_reduce): Remove all uses of
	flag_reduce_all_givs.
	* doc/invoke.texi: Remove documentation of flags
	-fremove-all-movables and -freduce-all-givs.

2004-09-11  Roger Sayle  <roger@eyesopen.com>

	PR middle-end/17411
	* tree-sra.c (generate_element_zero): Revert recent build_int_cst
	change. elt->type may be a floating point type, so use fold_convert.

2004-09-11  Geoffrey Keating  <geoffk@apple.com>

	* config/darwin.c (machopic_validate_stub_or_non_lazy_ptr): Mark
	the thing referenced as used, not the stub itself.

2004-09-11  Joseph S. Myers  <jsm@polyomino.org.uk>

	* c-tree.h (enum c_storage_class): New.
	(struct c_declspecs): Add storage_class, inline_p and thread_p.
	* c-decl.c (shadow_tag_warned): Give errors for "inline" in empty
	declarations and "auto" or "register" in file scope empty
	declarations.  Give more specific warnings for other cases of
	storage class specifiers in empty declarations.
	(grokdeclarator): Update for new structures.  Don't check for
	multiple storage classes.  Diagnose file-scope "register" if
	pedantic.
	(build_null_declspecs): Update.
	(declspecs_add_scspec): Update.  Diagnose multiple storage class
	specifiers and invalid uses of "__thread".

2004-09-11  Zack Weinberg  <zack@codesourcery.com>

	* tree.c (tree_code_size): New function, bulk of code from tree_size.
	(tree_size, make_node): Use it.
	* tree-ssa-pre.c (init_pre): Use it.
	* tree.h: Prototype it.

2004-09-11  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-cfg.c (set_bb_for_stmt): Use PHI_BB.
	* tree-dfa.c (compute_immediate_uses, add_immediate_use,
	redirect_immediate_use): Use PHI_DF.
	* tree-flow-inline.h (stmt_ann): Abort on phi nodes.
	(bb_for_stmt): Use PHI_BB.
	(get_immediate_uses): Use PHI_DF.
	* tree-ssa-dse.c (max_stmt_uid): New variable.
	(get_stmt_uid): New function.
	(dse_optimize_stmt, dse_record_phis, tree_ssa_dse): Do not use phi
	node annotations.
	* tree-ssa-loop-im.c (LIM_DATA): Do not use phi statement annotations.
	(max_uid): Renamed to max_stmt_uid.
	(get_stmt_uid): New function.
	(maybe_queue_var, single_reachable_address, determine_lsm): Do not use
	phi node annotations.
	* tree-ssa.c (replace_immediate_uses): Do not use phi node annotations.
	* tree.h (PHI_BB, PHI_DF): New accessor functions.
	(struct tree_phi_node): Add bb and df fields.

2004-09-11  Richard Henderson  <rth@redhat.com>

	PR middle-end/17416
	* cfgexpand.c (expand_used_vars_for_block): Fix off-by-one bug
	in conflict loop.

2004-09-11  Jan Hubicka  <jh@suse.cz>

	* i386.h (MODE_NEEDED): Calls need UNINITIALIZED mode; add comment.
	(EMIT_MODE_SET): UNINITIALIZED mode needs no set.
	* i386.md (i387_cw): Add 'uninitialized' mode.

	* profile.c (BB_TO_GCOV_INDEX): move more to the front.
	(output_location): Break out from ....
	(branch_prob): ... here; handle gcov output on trees.
	* toplev.c (process_options): No longer be sorry about coverage for
	trees.

2004-09-11  Steven Bosscher  <stevenb@suse.de>

	PR c++/17412
	* fold-const.c (fold): Do not try to fold the operand of a
	CLEANUP_POINT_EXPR if that operand does itself not have any
	operands.

	PR middle-end/17417
	* langhooks.c (lhd_decl_printable_name): Make sure that this
	function is called with is a decl node that has an identifier.
	* tree-pretty-print.c (dump_function_name): New function to
	wrap PRINT_FUNCTION_NAME and dump_decl_name.
	(print_call_name): Use it.

2004-09-11  Mohan Embar  <gnustuff@thisiscool.com>

	* ggc-none.c: Include "bconfig.h" if -DGENERATOR_FILE,
	"config.h" if not.

2004-09-11  Jakub Jelinek  <jakub@redhat.com>

	* tree-ssa-alias.c (collect_points_to_info_r): Handle
	pointing to PTR + OFFSET as PTR, not as pointing to PTR or pointing
	to OFFSET.

2004-09-11  Richard Henderson  <rth@redhat.com>

	* expr.c (expand_expr_addr_expr_1) Rename from expand_expr_addr_expr.
	(expand_expr_addr_expr): New function.  Take ADDR_EXPR instead of the
	operand of the ADDR_EXPR.
	(expand_expr_real_1): Update to match.

2004-09-11  David Edelsohn  <edelsohn@gnu.org>

	PR target/17277
	* config/rs6000/aix.h (MD_FROB_UPDATE_CONTEXT): Use __64BIT__ to
	choose 64-bit version.

2004-09-11  Richard Henderson  <rth@redhat.com>

	PR c/17396
	* c-typeck.c (build_unary_op): Add legacy offsetof hack.

2004-09-11  Kazu Hirata  <kazu@cs.umass.edu>

	* doc/cfg.texi, doc/hostconfig.texi, doc/install.texi,
	doc/invoke.texi, doc/md.texi, doc/tm.texi, doc/tree-ssa.texi:
	Insert @: after i.e. or e.g.

2004-09-10  Geoffrey Keating  <geoffk@apple.com>

	* tree-pretty-print.c (dump_decl_name): Print unnamed decls as
	D.xxx rather than <Dxxx>.

2004-09-10  Adam Nemet  <anemet@lnxw.com>

	* configure.ac (AC_MSG_CHECKING(what linker to use)):
	in_tree_ld_is_elf should be true for LynxOS.
	* configure: Regenerate.

2004-09-10  Adam Nemet  <anemet@lnxw.com>

	* Makefile.in (all.cross): Add srcextra.

2004-09-10  Roger Sayle  <roger@eyesopen.com>

	PR middle-end/17024
	* fold-const.c (fold_cond_expr_with_comparison): Handle unordered
	floating point comparison operators.  Change aborts to gcc_asserts.

2004-09-10  Geoffrey Keating  <geoffk@apple.com>

	* final.c (output_asm_insn): Correct problem with -fverbose-asm.

2004-09-10  James E Wilson  <wilson@specifixinc.com>

	* Makefile.in (LIBGCC_DEPS): Delete duplicate stmp-int-hdrs reference.
	(stmp-fixproto): Change stmp-int-headers to stmp-int-hdrs in comment.

	* convert.c (convert_to_vector): Replace recursive call with
	error_mark_node.

	* emit-rtl.c (gen_const_vector): Renamed from gen_const_vector_0.
	Add integer argument named constant.  Use const_tiny_rtx instead of
	CONST0_RTX.
	(gen_rtx_CONST_VECTOR): Rewrite to handle checks for both CONST0_RTX
	and CONST1_RTX.
	(init_emit_once): Fix users of gen_const_vector.  Set CONST1_RTX for
	vector types.
	* expr.c (const_vector_from_tree): Call gen_rtx_CONST_VECTOR instead
	of gen_rtx_raw_CONST_VECTOR.

2004-09-10  Eric Christopher  <echristo@redhat.com>

	PR c/16046
	* c-parse.in (attribute): Add NULL_TREE for error case
	for error recovery.

2004-09-10  Zack Weinberg  <zack@codesourcery.com>

	* c-common.h (struct c_fileinfo): Comment moved here from cp-tree.h.
	(extract_interface_info): Delete prototype.
	* c-decl.c (extract_interface_info): Delete stub.
	* c-lex.c (get_fileinfo): Initialize file_info_tree here, if
	it's not already been done ...
	(init_c_lex): ... not here.
	(fe_file_change): Don't call extract_interface_info.

2004-09-11  Joseph S. Myers  <jsm@polyomino.org.uk>

	* c-tree.h (struct c_declspecs): Remove typedef_decl.  Add
	typedef_p and typedef_signed_p.
	* c-decl.c (shadow_tag_warned): Check typedef_p, not typedef_decl.
	(grokdeclarator): Don't use typedef_decl for warn_deprecated_use.
	Check typedef_p and typedef_signed_p, not typedef_decl.
	(grokfield): Check typedef_p, not typedef_decl.
	(build_null_declspecs): Initialize typedef_p and typedef_signed_p,
	not typedef_decl.
	(declspecs_add_type): Set typedef_p and typedef_signed_p, not
	typedef_decl.

2004-09-10  Kazu Hirata  <kazu@cs.umass.edu>

	* doc/tm.texi, doc/tree-ssa.texi: Fix typos.

2004-09-10  Geoffrey Keating  <geoffk@apple.com>

	* gimplify.c (create_tmp_var_raw): Don't name otherwise-nameless
	temporary variables.

	* dbxout.c (dbxout_block): Update for
	current_function_func_begin_label a string.
	* dwarf2out.c (dwarf2out_begin_prologue): Likewise.
	* except.c (dw2_output_call_site_table): Likewise.
	* toplev.c (current_function_func_begin_label): Likewise.
	* tree.h (current_function_func_begin_label): Likewise.
	* config/rs6000/linux64.h (DBX_OUTPUT_BRAC): Likewise.

	* final.c (output_asm_insn): Use strtoul instead of atoi, save a
	loop.

	* config/darwin.c: Include target.h.
	(struct machopic_indirection): Make ptr_name a string.
	(machopic_indirection_hash): Update for ptr_name a string.
	(machopic_indirection_eq): Likewise.
	(machopic_indirection_name): Likewise.
	(machopic_output_indirection): Likewise.
	(machopic_validate_stub_or_non_lazy_ptr): Update for ptr_name a
	string.  Don't expect stub names to be in the identifier hash table.
	Do call strip_name_encoding before looking up entry in ID hash table.
	* config/t-darwin (darwin.o): Add target.h to dependencies.

	* config/rs6000/rs6000.c (print_operand): Use fputs instead
	of fprintf for register names.

	* output.h (unlikely_section_label): Delete declaration.
	(unlikely_text_section_name): Likewise.
	* varasm.c (unlikely_section_label_printed): Make static.
	(unlikely_section_label): Likewise.
	(unlikely_text_section_name): Likewise.
	(assemble_start_function): Use reconcat.

	* rtl.def (REG): Add comment to describe third field.

2004-09-10  Andrew Pinski  <apinski@apple.com>

	* config/darwin.c (machopic_mcount_stub_name): Call
	machopic_indirection_name instead of making the string
	ourselves.

2004-09-10  Diego Novillo  <dnovillo@redhat.com>

	Revert

	2004-09-08  Jie Zhang  <zhangjie@magima.com.cn>

	    * tree-ssa-alias.c (compute_flow_insensitive_aliasing): If type
	    memory tag is call clobbered, so are its aliases.
	    (group_aliases): When two memory tags being grouped, if one is
	    call clobbered, so are the other and its aliases.
	    (add_may_alias): Remove call-clobbering stuff.
	    (replace_may_alias): Likewise.
	    (merge_pointed_to_info): Merge pt_global_mem

2004-09-10  Kazu Hirata  <kazu@cs.umass.edu>

	* bb-reorder.c, c-common.c, c-incpath.c, c-typeck.c,
	genrecog.c, lambda-code.c, mips-tdump.c, mips-tfile.c,
	passes.c, tree-data-ref.c, tree-data-ref.h, tree-mudflap.c,
	tree-scalar-evolution.c, tree-ssa-copyrename.c,
	tree-ssa-live.c, tree-ssa-live.h: Fix comment typos.

2004-09-10  Richard Sandiford  <rsandifo@redhat.com>

	* config/frv/frv.md (UNSPEC_MASACCS, UNSPEC_MDASACCS): New constants.
	(maddaccs, msubaccs, *maddacc): Turn operand 0 into a single ACC/ACCG
	pair.  Remove match_dup from inputs.  Remove masaccs handling.
	(mdaddaccs, mdsubaccs, *mdaddacc): Likewise a dual ACC/ACCG pair.
	(masaccs, mdasaccs): Turn into define_insns.

2004-09-10  Richard Sandiford  <rsandifo@redhat.com>

	* tree-tailcall.c (process_assignment): Only do accumulator transforms
	for floating-point types if flag_unsafe_math_optimizations.

2004-09-10  Kazu Hirata  <kazu@cs.umass.edu>

	* config/darwin.c, config/alpha/alpha.h, config/arm/arm.c,
	config/arm/arm.h, config/arm/arm.md, config/arm/bpabi.h,
	config/arm/predicates.md, config/frv/frv.c, config/frv/frv.md,
	config/h8300/h8300.md, config/i386/gmm_malloc.h,
	config/ia64/ia64.md, config/ip2k/libgcc.S,
	config/mips/mips-ps-3d.md, config/mips/mips.c,
	config/rs6000/rs6000.c, config/s390/s390.c,
	config/sh/symbian.c: Fix comment typos.

2004-09-10  Andreas Krebbel  <krebbel1@de.ibm.com>

	* config/s390/s390.c (s390_emit_prologue): Added missing
	"{}" brackets.

2004-09-10  Kazu Hirata  <kazu@cs.umass.edu>

	* doc/extend.texi, doc/invoke.texi, doc/passes.texi: Fix
	typos.  Follow spelling conventions.

2004-09-10  Joseph S. Myers  <jsm@polyomino.org.uk>

	* toplev.c (warn_deprecated_use): Correct logic for saying "type"
	in diagnostic.  Don't dereference NULL TYPE_NAME.

2004-09-10  Kazu Hirata  <kazu@cs.umass.edu>

	* c-common.c, c-pch.c, defaults.h, lambda-code.c, passes.c,
	tree-data-ref.c, tree-flow.h, tree-ssa-operands.c,
	tree-ssa-threadupdate.c, tree-vectorizer.c, tree-vectorizer.h,
	value-prof.c: Fix comment typos.  Follow spelling conventions.

2004-09-10  Jan Hubicka  <jh@suse.cz>

	* tree-ssa-dce.c (remove_dead_stmt): Update profile.
	* tree-split_edge.c (tree_split_edge): Likewise.
	(thread_jumps): Likewise.

2004-09-10  Kazu Hirata  <kazu@cs.umass.edu>

	* cgraphunit.c, predict.c, tree-ssa-loop-ivopts.c: Fix comment
	typos.

2004-09-10  Paolo Bonzini  <bonzini@gnu.org>

	* cgraph.h (cgraph_dump_file): Do not declare.
	* cgraphunit.c (cgraph_dump_file): Declare as static.
	(init_cgraph): New.
	* toplev.c (cgraph_dump_file): Do not declare.
	(compile_file): Call init_cgraph.
	* tree-dump.c (dump_files): Add IPA dump file, remove
	XML dump of call graph.
	(get_dump_file_name): Support IPA dump file naming scheme.
	* tree.h (enum tree_dump_index): Add IPA dump file, remove
	XML dump of call graph.
	* doc/invoke.texi (Debugging Options): Document the new options.

2004-09-10  Richard Sandiford  <rsandifo@redhat.com>

	* doc/extend.texi: Document the FR-V built-in functions.

2004-09-09  James E Wilson  <wilson@specifixinc.com>

	* doc/sourcebuild.texi: Delete libbanshee reference.

2004-09-10  Kelley Cook  <kcook@gcc.gnu.org>

	* Makefile.in (s-gtype): Add $(build_exeext) to gengtype command.

2004-09-09  James E Wilson  <wilson@specifixinc.com>

	* c-typeck.c (convert_for_assignment): Check that rhs has VECTOR_TYPE
	before calling vector_types_convertible_p.
	(digest_init): Check that inside_init has VECTOR_TYPE before calling
	vector_types_convertible_p.  Don't give another error if
	convert_for_assignment returns error_mark_node.

2004-09-09  Roger Sayle  <roger@eyesopen.com>

	PR middle-end/17055
	* fold-const.c (build_zero_vector): New function to construct a
	vector (either floating point or integer) of zeros.
	(fold_convert): Internally, enable conversions of integer zero
	to arbitrary vector types, using the new build_zero_vector.

2004-09-09  Roger Sayle  <roger@eyesopen.com>

	* config/i386/i386.c (ix86_expand_ashlsi3_const): New function to
	expand a left shift by an immediate constant as either an ashl or
	a sequence of additions.
	(ix86_split_ashldi): Use new ix86_expand_ashlsi3_const function
	instead of calling gen_ashlsi3 with a constant directly.

2004-09-09  Roger Sayle  <roger@eyesopen.com>

	* config/i386/i386.c (ix86_split_long_move): When optimizing for
	size, and the low and high parts of a DImode constant are equal,
	copy one register to another instead of loading the same immediate
	value twice.

2004-09-09  Richard Henderson  <rth@redhat.com>

	PR middle-end/17367
	* function.c (assign_parm_setup_block): Only put PARALLELs into
	a register if use_register_for_decl.

2004-09-09  Eric Christopher  <echristo@redhat.com>

	* ra-colorize.c (reset_lists): Move variable declaration inside
	ENABLE_CHECKING to avoid unused variable warnings when
	not --enable-checking.
	(check_colors): Ditto.

2004-09-09  Mike Stump  <mrs@apple.com>

	* version.c (version_string): Bump to 4.0.0.
	* doc/include/gcc-common.texi (version-GCC): Likewise.

2004-09-10  Jakub Jelinek  <jakub@redhat.com>

	* doc/extend.texi (nothrow attribute): The attribute is not
	implemented in 3.2 and earlier.

2004-09-09  Steve Ellcey  <sje@cup.hp.com>

	* genrecog.c (compute_predicate_codes): Use op0_codes
	instead of codes.

2004-09-09  Ulrich Weigand  <uweigand@de.ibm.com>

	* ra-colorize.c (hardregset_to_string): Adapt to HARD_REG_SET
	implementation changes.

2004-09-09  Ulrich Weigand  <uweigand@de.ibm.com>

	* combine.c (try_combine): When swapping i2 and i3, newi2pat may be
	a PARALLEL instead of a SET due to added clobbers.

2004-09-09  Ulrich Weigand  <uweigand@de.ibm.com>

	* reload.c (find_reloads_address): Pass correct operand to
	maybe_memory_address_p.

2004-09-09  Daniel Berlin  <dberlin@dberlin.org>

	* Makefile.in: Remove libbanshee, tree-alias-*.
	Remove tree-alias-common.h dependencies.
	* common.opt: Remove -ftree-points-to.
	* configure.ac: Remove libbanshee.
	* flags.h: Remove pta_type, flag_tree_points_to.
	* gengtype.c (open_base_files): Remove tree-alias-type.h.
	* opts.c (OPT_ftree_points_to): Remove.
	* toplev.c: Remove tree-alias-common.h, flag_tree_points_to.
	* tree-dfa.c: Remove tree-alias-common.h
	* tree-into-ssa.c: Ditto.
	* tree-outof-ssa.c: Ditto.
	* tree-ssa-copyrename.c: Ditto.
	* tree-ssa-live.c: Ditto.
	* tree-optimize.c: Ditto.
	* tree-ssa.c: Ditto.
	Remove pass_build_pta, pass_del_pta.
	* tree-pass.h: Ditto.
	* tree-ssa-alias.c: Remove tree-alias-common.h.
	(struct alias_stats_d):	Remove pta_queries, pta_resolved.
	(pass_may_alias): Remove PROP_pta requirement.
	(may_alias_p): Remove pta_queries, pta_resolved, use of andersens.
	(get_tmt_for): Ditto.
	(dump_alias_stats): Ditto.
	* doc/passes.texi: Remove blurb about points-to analysis.
	* fortran/Make-lang.in: Remove tree-alias-*.o.

2004-09-09  Richard Sandiford  <rsandifo@redhat.com>

	* genattrtab.c (write_insn_cases): New function, split out from
	write_attr_case.  Correctly handle define_peepholes when printing
	the instruction name.
	(write_attr_case, write_const_num_delay_slots): Use write_insn_cases.

2004-09-09  Hans-Peter Nilsson  <hp@axis.com>

	PR target/17377
	* config/cris/cris-protos.h (cris_return_address_on_stack): Declare.
	* config/cris/cris.c (cris_return_address_on_stack): New function.
	* config/cris/cris.md ("return"): For location of return address,
	also check cris_return_address_on_stack.

2004-09-09  Diego Novillo  <dnovillo@redhat.com>

	* tree-outof-ssa.c (coalesce_abnormal_edges): Fix typo in
	calling phi_ssa_name_p.

2004-09-09  Richard Henderson  <rth@redhat.com>

	PR c/17322
	* c-typeck.c (valid_compound_expr_initializer): Use only
	initializer_constant_valid_p, and not TREE_CONSTANT.
	(digest_init): Likewise.
	(output_init_element): Likewise.

2004-09-09  Giovanni Bajo  <giovannibajo@gcc.gnu.org>

	* ra-build.c (copy_insn_p, remember_move, defuse_overlap_p_1,
	live_out_1, prune_hardregs_for_mode, init_one_web_common,
	reinit_one_web, add_subweb, add_subweb_2, init_web_parts,
	record_conflict, compare_and_free_webs, init_webs_defs_uses,
	parts_to_webs_1, parts_to_webs, reset_conflicts,
	check_conflict_numbers, remember_web_was_spilled, handle_asm_insn,
	ra_build_free): Use gcc_assert and gcc_unreachable instead of abort.
	* ra-colorize.c (push_list, put_web, reset_lists, put_web_at_end,
	put_move, remove_move, combine, select_spill, colorize_one_web,
	try_recolor_web, insert_coalesced_conflicts, check_colors,
	break_precolored_alias, restore_conflicts_from_coalesce,
	sort_and_combine_web_pairs, check_uncoalesced_moves): Likewise.
	* ra-rewrite.c (spill_coalescing, slots_overlap_p, emit_loads,
	reloads_to_loads, rewrite_program2, emit_colors): Likewise.
	* ra.c (first_hard_reg, create_insn_info, find_subweb, init_ra,
	check_df): Likewise.
	* real.c (do_add, do_multiply, do_divide, do_compare, do_fix_trunc,
	real_arithmetic, real_compare, real_exponent, real_ldexp,
	real_identical, real_to_integer, real_to_integer2, real_to_decimal,
	real_to_hexadecimal, real_from_integer, ten_to_ptwo, ten_to_mptwo,
	real_digit, real_nan, real_maxval, round_for_format, real_convert,
	real_to_target, real_from_target, real_hash, encode_ieee_single,
	encode_ieee_double, encode_ieee_extended, encode_ieee_quad,
	encode_vax_f, encode_vax_d, encode_vax_g, encode_i370_single,
	encode_i370_double, encode_c4x_single, encode_c4x_extended): Likewise.
	* recog.c (validate_change, validate_replace_rtx_1, asm_operand_ok,
	extract_insn, peep2_next_insn, peep2_reg_dead_p,
	peep2_find_free_register, peephole2_optimize, store_data_bypass_p,
	if_test_bypass_p): Likewise.
	* reg-stack.c (record_label_references, get_asm_operand_n_inputs,
	stack_result, remove_regno_note, get_hard_regnum, emit_pop_insn,
	emit_swap_insn, swap_to_top, move_for_stack_reg,
	subst_stack_regs_pat, subst_asm_stack_regs, change_stack,
	compensate_edge, convert_regs_1): Likewise.
	* regclass.c (init_reg_sets, init_reg_sets_1,
	memory_move_secondary_cost): Likewise.
	* regrename.c (note_sets, clear_dead_regs, scan_rtx_reg, scan_rtx):
	Likewise.
	* reload.c (push_secondary_reload, find_valid_class, push_reload,
	operands_match_p, decompose, immune_p, find_reloads,
	find_reloads_toplev, find_reloads_address_1, subst_reloads,
	copy_replacements, refers_to_regno_for_reload_p,
	reg_overlap_mentioned_for_reload_p): Likewise.
	* reload1.c (compute_use_by_pseudos, replace_pseudos_in, reload,
	count_pseudo, find_reg, eliminate_regs, eliminate_regs_in_insn,
	verify_initial_elim_offsets, finish_spills, clear_reload_reg_in_use,
	reload_reg_free_p, reload_reg_reaches_end_p, reloads_conflict,
	choose_reload_regs, merge_assigned_reloads, emit_input_reload_insns,
	do_output_reload, fixup_abnormal_edges): Likewise.
	* reorg.c (stop_search_p, emit_delay_sequence, get_jump_flags,
	fill_slots_from_thread, relax_delay_slots): Likewise.
	* resource.c (mark_referenced_resources, mark_set_resources):
	Likewise.
	* rtl.c (copy_rtx, rtx_equal_p): Likewise.
	* rtlanal.c (insn_dependent_p, reg_overlap_mentioned_p,
	dead_or_set_p, find_reg_fusage, remove_note, replace_rtx,
	subreg_lsb_1, subreg_regno_offset, subreg_offset_representable_p,
	find_first_parameter_load, can_hoist_insn_p, hoist_update_store,
	hoist_insn_after, hoist_insn_to_edge, nonzero_bits1): Likewise.
	* rtlhooks.c (gen_lowpart_general): Likewise.
	* sbitmap.c (sbitmap_difference): Likewise.
	* sched-deps.c (add_dependence, sched_analyze_1, sched_analyze_2,
	sched_analyze, add_forward_dependence): Likewise.
	* sched-ebb.c (fix_basic_block_boundaries, schedule_ebb): Likewise.
	* sched-rgn.c (debug_regions, compute_trg_info, schedule_region,
	schedule_insns): Likewise.
	* sched-vis.c (print_pattern): Likewise.
	* sdbout.c (sdbout_symbol, sdbout_toplevel_data): Likewise.
	* simplify-rtx.c (simplify_unary_operation, simplify_binary_operation,
	simplify_const_relational_operation, simplify_ternary_operation,
	simplify_immed_subreg, simplify_subreg, simplify_gen_subreg):
	Likewise.
	* sreal.c (copy, sreal_sub, sreal_div): Likewise.
	* stmt.c (force_label_rtx, expand_goto, expand_asm_operands,
	resolve_operand_name_1, expand_return, expand_decl,
	expand_anon_union_decl, emit_case_bit_tests, expand_case): Likewise.
	* stor-layout.c (put_pending_size, smallest_mode_for_size,
	int_mode_for_mode, layout_decl, finish_builtin_struct, layout_type,
	set_sizetype, get_mode_bounds): Likewise.

2004-09-09  Zack Weinberg  <zack@codesourcery.com>

	* defaults.h (MULTIPLE_SYMBOL_SPACES): Provide default.
	* config/arm/pecoff.h, config/i386/beos-elf.h
	* config/i386/cygming.h, config/i386/i386-interix.h:
	Define MULTIPLE_SYMBOL_SPACES to 1, not nothing.  Remove
	comment cloned from manual.
	* doc/tm.texi: Update description of MULTIPLE_SYMBOL_SPACES.

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.

2004-09-09  Nathan Sidwell  <nathan@codesourcery.com>

	* cgraphunit.c (cgraph_mark_functions_to_output): Renable node
	dumping for development builds.
	* emit-rtl.c (verify_rtx_sharing): Give verbose failure for
	development builds only.
	* genattrtab.c (write_eligible_delay): Fix typo in previous
	commit.
	* tree.c (iterative_hash_expr): Replace gcc_unreachable with
	gcc_assert.

2004-09-09  Nathan Sidwell  <nathan@codesourcery.com>

	* gcse.c (INSN_CUID, insert_set_in_table, find_avail_set,
	cprop_insn, do_local_cprop, local_cprop_pass, find_bypass_set,
	process_insert_insn, insert_insn_end_bb, pre_insert_copy_insn,
	hoist_code, extract_mentioned_regs_helper, compute_store_table,
	insert_store): Use gcc_assert and gcc_unreachable.
	* ggc-common.c (ggc_splay_alloc, ggc_splay_dont_free,
	gt_pch_note_object, gt_pch_note_reorder, relocate_ptrs,
	ggc_record_overhead): Likewise.
	* ggc-page.c (alloc_page, free_page, ggc_set_mark, ggc_marked_p,
	init_ggc, ggc_push_context, ggc_recalculate_in_use_p,
	ggc_pop_context, clear_marks, validate_free_objects,
	ggc_pch_read): Likewise.
	* ggc-zone.c (ggc_allocated_p, free_chunk, ggc_set_mark,
	ggc_marked_p, ggc_get_size, init_ggc, destroy_ggc_zone,
	ggc_push_context, check_cookies, ggc_collect,
	ggc_print_statistics): Likewise.
	* gimple-low.c (lower_function_body, lower_stmt,
	lower_bind_expr): Likewise.
	* gimplify.c (gimple_tree_eq, push_gimplify_context,
	pop_gimplify_context, gimple_pop_condition, create_tmp_var,
	declare_tmp_vars, gimple_add_tmp_var, annotate_all_with_locus,
	mostly_copy_tree_r, gimplify_return_expr, gimplify_switch_expr,
	gimplify_case_label_expr, gimplify_exit_block_expr,
	canonicalize_component_ref, gimplify_compound_lval,
	gimplify_self_mod_expr, gimplify_call_expr,
	gimplify_init_ctor_eval, gimplify_init_constructor,
	gimplify_modify_expr, gimplify_save_expr, gimplify_target_expr,
	gimplify_expr, check_pointer_types_r,
	force_gimple_operand): Likewise.
	* global.c (global_alloc, build_insn_chain): Likewise.
	* graph.c (clean_graph_dump_file,
	finish_graph_dump_file): Likewise.
	gcov-io.c (gcov_open): Use GCOV_CHECK.

2004-09-09  Richard Sandiford  <rsandifo@redhat.com>

	* config/frv/frv.c (acc_operand, accg_operand): Use REGNO.

2004-09-09  Jan Hubicka  <jh@suse.cz>

	middle-end/17128
	* tree-inline.c (expand_call_inline): Make overactive sanity check
	happy.

2004-09-09  Jan Hubicka  <jh@suse.cz>

	* tree-ssa-loop-ivopts.c (peel_address): Fix abort on
	VIEW_CONVERT_EXPR.

2004-09-09  Nathan Sidwell  <nathan@codesourcery.com>

	* Makefile.in (gengtype): Use $(BUILD_ERRORS).
	(gengtype.o): Depend on errors.h.
	* genattrtab.c (strcmp_check): Use gcc_assert and gcc_unreachable.
	(attr_rtx_1, attr_printf, attr_copy_rtx, evaluate_eq_attr,
	attr_alt_subset_p, attr_alt_subset_of_compl_p,
	attr_alt_intersection, attr_alt_union, optimize_attrs, gen_insn,
	write_test_expr, write_attr_value, write_eligible_delay,
	make_internal_attr, make_numeric_value): Likewise.
	* genautomata.c (regexp_name, get_str_vect,
	gen_presence_absence_set, automaton_decl_hash,
	automaton_decl_eq_p, insn_decl_hash, insn_decl_eq_p, decl_hash,
	decl_eq_p, process_regexp, loop_in_regexp, check_loops_in_regexps,
	process_regexp_cycles, reserv_sets_cmp, set_unit_reserv,
	test_unit_reserv, it_is_empty_reserv_sets,
	reserv_sets_are_intersected, reserv_sets_shift, reserv_sets_or,
	reserv_sets_and, output_cycle_reservs, get_free_state,
	intersected_state_reservs_p, states_union, remove_arc,
	copy_insn_regexp, transform_1, transform_2, transform_3,
	regexp_transform_func, store_alt_unit_usage,
	check_regexp_units_distribution, process_seq_for_forming_states,
	process_alts_for_forming_states, make_automaton,
	form_arcs_marked_by_insn, create_composed_state,
	set_out_arc_insns_equiv_num, partition_equiv_class,
	process_insn_equiv_class, set_insn_equiv_classes,
	units_to_automata_heuristic_distr, form_regexp,
	longest_path_length, output_dfa_max_issue_rate, add_vect,
	out_state_arcs_num, add_vect_el, output_trans_table,
	output_state_alts_table, output_dead_lock_vect,
	output_max_insn_queue_index_def,
	output_min_insn_conflict_delay_func,
	output_internal_insn_latency_func, output_print_reservation_func,
	output_cpu_unit_reservation_p, output_state_arcs,
	make_insn_alts_attr, make_internal_dfa_insn_code_attr,
	make_default_insn_latency_attr,
	form_important_insn_automata_lists): Likewise.
	* genemit.c (gen_exp, output_add_clobbers,
	output_added_clobbers_hard_reg_p): Likewise.
	* genextract.c (print_path, main): Likewise.
	* genflags.c (gen_macro): Likewise.
	* gengenrtl.c: Include errors.h
	(type_from_format, accessor_from_format): Likewise.
	* gengtype.c (get_file_basename, output_mangled_typename,
	walk_type, write_types_process_field,
	write_types_local_process_field): Likewise.
	* genmodes.c (complete_mode): Likewise.
	* genopinit.c (gen_insn): Likewise.
	* genoutput.c (output_insn_data, check_constraint_len,
	constraint_len): Likewise.
	* genpreds.c (add_mode_tests):Likewise.
	* gen-protos.c (add_hash): Likewise.
	* genrecog.c (find_operand, find_matching_operand,
	validate_pattern, add_to_sequence, maybe_both_true,
	nodes_identical_1, merge_trees, write_switch, write_cond,
	write_action, is_unconditional, make_insn_sequence,
	debug_decision_2): Likewise.
	* gensupport.c (is_predicable, collect_insn_data,
	alter_predicate_for_insn, maybe_eval_c_test): Likewise.

2004-09-09  Jan Hubicka  <jh@suse.cz>

	* basic-block.h (guess_outgoing_edge_probabilities): Declare.
	* cfgbuild.c (compute_outgoing_frequencies): When probability is
	missing, guess it.
	(find_many_sub_basic_blocks): Do update profile only when it is
	present.
	* predict.c (set_even_probabilities): Break out from ...
	(combine_predictions_for_insn): ... here; deal with
	!can_predict_insn_p insns.
	(combine_predictions_for_bb): Use set_even_probabilities.
	(bb_estimate_probability_locally): Break out from ....
	(estimate_probability): ... here.
	(guess_outgoing_edge_probabilities): New entry point.

2004-09-09  Nathan Sidwell  <nathan@codesourcery.com>

	* gcc.c (add_sysrooted_prefix, execute, do_self_spec, do_spec_1,
	handle_braces, process_brace_body, main, used_arg,
	set_multilib_dir, print_multilib_info): Use fatal, not abort.

	* tree-nested.c (create_tmp_var_for): Correct missinverted assert.

	* tree-outof-ssa.c (free_temp_expr_table): Add missed assert.
	* tree-ssa-ccp.c (set_lattice_value): Correct missapplied de
	Morgan's theorem in last checkin.

2004-09-09  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
	    Nathan Sidwell  <nathan@codesourcery.com>

	* targhooks.c (default_unwind_emit, default_scalar_mode_supported_p):
	Use gcc_assert, gcc_unreachable & internal_error instead of abort.
	* timevar.c (timevar_push, timevar_pop, timevar_start,
	timevar_stop): Likewise.
	* toplev.c (default_pch_valid_p): Likewise.
	* tracer.c (tail_duplicate): Likewise.
	* tree-alias-common.c (get_alias_var_decl,
	get_values_from_constructor, create_alias_var, delete_alias_vars,
	empty_points_to_set, same_points_to_set, ptr_may_alias_var):
	Likewise.
	* tree.c (tree_size, make_node_stat, copy_node_stat,
	build_int_cst_wide, integer_all_onesp, list_length, chainon,
	tree_node_structure, type_contains_placeholder_p, substitute_in_expr,
	substitute_placeholder_in_expr, tabilize_reference_1, build0_stat,
	build1_stat, build2_stat, build3_stat, build4_stat, is_attribute_p,
	lookup_attribute, type_hash_canon, host_integerp, iterative_hash_expr,
	build_method_type_directly, decl_type_context, get_callee_fndecl,
	get_set_constructor_bits, build_vector_type_for_mode, int_cst_value,
	tree_fold_gcd): Likewise.
	* tree-cfg.c (create_bb, make_ctrl_stmt_edges, make_exit_edges,
	make_cond_expr_edges, group_case_labels, tree_merge_blocks,
	cleanup_control_expr_graph, find_taken_edge,
	find_taken_edge_switch_expr, phi_alternatives_equal,
	is_ctrl_altering_stmt, disband_implicit_edges, set_bb_for_stmt,
	stmt_for_bsi, tree_find_edge_insert_loc, bsi_insert_on_edge_immediate,
	tree_split_edge, tree_verify_flow_info, thread_jumps,
	tree_redirect_edge_and_branch, tree_flow_call_edges_add): Likewise.
	* tree-chrec.c (chrec_fold_poly_cst, chrec_fold_plus_poly_poly,
	chrec_fold_multiply_poly_poly): Likewise.
	* tree-complex.c (extract_component, expand_complex_division,
	expand_complex_comparison, expand_complex_operations_1,
	build_replicated_const, expand_vector_operations_1): Likewise.
	* tree-data-ref.c (tree_fold_bezout, build_classic_dist_vector,
	build_classic_dir_vector): Likewise.
	* tree-dfa.c (compute_immediate_uses_for_phi,
	compute_immediate_uses_for_stmt, create_var_ann, create_stmt_ann,
	create_tree_ann, collect_dfa_stats, get_virtual_var): Likewise.
	* tree-dump.c (dequeue_and_dump): Likewise.
	* tree-eh.c (record_stmt_eh_region, add_stmt_to_eh_region,
	record_in_finally_tree, replace_goto_queue_1,
	maybe_record_in_goto_queue, verify_norecord_switch_expr,
	do_return_redirection): Likewise.
	* tree-if-conv.c (tree_if_convert_stmt, tree_if_convert_cond_expr,
	add_to_dst_predicate_list, find_phi_replacement_condition,
	replace_phi_with_cond_modify_expr, get_loop_body_in_if_conv_order):
	Likewise.
	* tree-inline.c (remap_decl, remap_type, remap_decls, copy_body_r,
	initialize_inlined_parameters, declare_return_variable,
	estimate_num_insns_1, expand_call_inline, expand_calls_inline,
	optimize_inline_calls, copy_tree_r): Likewise.
	* tree-into-ssa.c (rewrite_initialize_block_local_data, rewrite_stmt,
	ssa_rewrite_stmt, rewrite_into_ssa): Likewise.
	* tree-iterator.c (alloc_stmt_list, tsi_link_before, tsi_link_after,
	tsi_split_statement_list_after, tsi_split_statement_list_before):
	Likewise.
	* tree-mudflap.c (mf_varname_tree): Likewise.
	* tree-nested.c (create_tmp_var_for, lookup_field_for_decl,
	lookup_tramp_for_decl, convert_all_function_calls): Likewise.
	* tree-optimize.c (tree_rest_of_compilation): Likewise.
	* tree-outof-ssa.c (create_temp, eliminate_build, eliminate_phi,
	coalesce_abnormal_edges, coalesce_ssa_name, eliminate_virtual_phis,
	free_temp_expr_table, add_dependance, finish_expr, rewrite_trees):
	Likewise.
	* tree-phinodes.c (resize_phi_node, add_phi_arg,
	remove_all_phi_nodes_for): Likewise.
	* tree-pretty-print.c (op_prio, print_call_name): Likewise.
	* tree-profile.c (tree_gen_interval_profiler, tree_gen_pow2_profiler,
	tree_gen_one_value_profiler, tree_gen_const_delta_profiler): Likewise.
	* tree-sra.c (type_can_instantiate_all_elements, sra_hash_tree,
	sra_elt_eq, sra_walk_expr, instantiate_missing_elements,
	generate_one_element_ref, generate_element_copy,
	generate_element_zero, scalarize_copy, scalarize_init,
	scalarize_ldst): Likewise.
	* tree-ssa-alias.c (delete_alias_info, group_aliases, may_alias_p,
	add_may_alias, add_pointed_to_expr, add_pointed_to_var,
	collect_points_to_info_r, get_tmt_for, get_ptr_info): Likewise.
	* tree-ssa.c (walk_use_def_chains, check_phi_redundancy): Likewise.
	* tree-ssa-ccp.c (dump_lattice_value, get_default_value, get_value,
	set_lattice_value, likely_value, ccp_visit_phi_node, visit_assignment,
	widen_bitfield, ccp_fold_builtin): Likewise.
	* tree-ssa-copy.c (may_propagate_copy, merge_alias_info,
	replace_exp_1, propagate_tree_value): Likewise.
	* tree-ssa-copyrename.c (copy_rename_partition_coalesce): Likewise.
	* tree-ssa-dce.c (set_control_dependence_map_bit,
	find_control_dependence, find_pdom, mark_operand_necessary,
	mark_stmt_if_obviously_necessary,
	mark_control_dependent_edges_necessary, remove_dead_stmt): Likewise.
	* tree-ssa-dom.c (dom_opt_initialize_block_local_data,
	simplify_switch_and_lookup_avail_expr, cprop_into_successor_phis,
	eliminate_redundant_computations, avail_expr_eq): Likewise.
	* tree-ssa-dse.c (fix_stmt_v_may_defs): Likewise.
	* tree-ssa-loop-ch.c (should_duplicate_loop_header_p,
	duplicate_blocks): Likewise.
	* tree-ssa-loop-im.c (for_each_index, set_level,
	is_call_clobbered_ref): Likewise.
	* tree-ssa-loop-ivopts.c (dump_use, divide, stmt_after_ip_normal_pos,
	stmt_after_increment, set_iv, contains_abnormal_ssa_name_p,
	find_interesting_uses_outer_or_nonlin, add_derived_ivs_candidates,
	peel_address, ptr_difference_cost, may_replace_final_value,
	determine_use_iv_cost, rewrite_use_nonlinear_expr, rewrite_use_outer,
	rewrite_use, rewrite_uses): Likewise.
	* tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa,
	check_loop_closed_ssa_use): Likewise.
	* tree-ssanames.c (make_ssa_name): Likewise.
	* tree-ssa-operands.c (finalize_ssa_defs, finalize_ssa_uses,
	finalize_ssa_v_must_defs, finalize_ssa_stmt_operands,
	get_stmt_operands, get_expr_operands, get_asm_expr_operands,
	get_indirect_ref_operands, add_stmt_operand): Likewise.
	* tree-ssa-pre.c (value_exists_in_set_bitmap,
	value_remove_from_set_bitmap, bitmap_insert_into_set, insert_into_set,
	phi_translate, valid_in_set, compute_antic,
	find_or_generate_expression, create_expression_by_pieces, insert_aux,
	create_value_expr_from, eliminate): Likewise.
	* tree-ssa-propagate.c (cfg_blocks_get): Likewise.
	* tree-ssa-threadupdate.c (remove_last_stmt_and_useless_edges):
	Likewise.
	* tree-tailcall.c (independent_of_stmt_p, adjust_return_value,
	eliminate_tail_call): Likewise.
	* tree-vectorizer.c (vect_create_index_for_array_ref,
	vect_align_data_ref, vect_create_data_ref,
	vect_create_destination_var, vect_get_vec_def_for_operand,
	vect_finish_stmt_generation, vect_transform_stmt,
	vect_transform_loop_bound, vect_transform_loop,
	vect_analyze_operations): Likewise.
	* tree-vn.c (vn_compute, set_value_handle, get_value_handle):
	Likewise.
	* tree-flow-inline.h (var_ann, get_var_ann, get_def_from_ptr,
	get_use_op_ptr, immediate_use, phi_ssa_name_p, bsi_start,
	bsi_after_labels, bsi_last): Likewise.
	* tree-ssa-live.c (var_union, change_partition_var,
	create_ssa_var_map, calculate_live_on_entry, root_var_init,
	type_var_init, add_coalesce, sort_coalesce_list, pop_best_coalesce):
	Likewise.
	* tree-ssa-live.h (partition_is_global, live_entry_blocks,
	tpa_find_tree): Likewise.
	(register_ssa_partition_check): Declare.
	(register_ssa_partition): use it.
	* tree-ssa-live.c: Include errors.h.
	(register_ssa_partition_check): New.
	* tree-ssa-operands.c: Include errors.h.
	* Makefile.in (tree-ssa-operands.o): Depend on errors.h.

2004-09-09  Richard Sandiford  <rsandifo@redhat.com>
	    Catherine Moore  <clm@redhat.com>

	* config/frv/frv-protos.h (FRV_CPU_FR550, FRV_CPU_FR450)
	(FRV_CPU_FR405): New processor enums.
	(frv_issue_rate, frv_acc_group): Declare.
	* config/frv/frv.h (CPP_SPEC, CPP_FRV_SPEC, CPP_FR500_SPEC): Delete.
	(CPP_FR400_SPEC, CPP_SIMPLE_SPEC): Delete.
	(MASK_DEFAULT_FR550, MASK_DEFAULT_FR450): New macros.
	(SUBTARGET_EXTRA_SPECS, EXTRA_SPECS, CPP_CPU_DEFAULT_SPEC): Delete.
	(TARGET_CPU_CPP_BUILTINS): Define the macros that were previously
	handled by CPP_SPEC.
	(MASK_LONG_CALLS, TARGET_LONG_CALLS): New macros.
	(MASK_ALIGN_LABELS, TARGET_ALIGN_LABELS): New macros.
	(ACC_MASK): New macro.
	(TARGET_MEDIA_REV2): Include FRV_CPU_{FR405,FR450,FR550}.
	(TARGET_MEDIA_FR450): New macro.
	(TARGET_FR500_FR550_BUILTINS, TARGET_FR405_BUILTINS): New macros.
	(TARGET_SWITCHES): Add -m{no-,}align-labels and -m{no-,}long-calls.
	(LABEL_ALIGN_AFTER_BARRIER): Define.
	(ACC_LAST, ACCG_LAST): Add four new accumulator registers.
	(IACC_FIRST, IACC_LAST): New pair of SPRs.
	(ACCG_FIRST, AP_FIRST, SPR_FIRST, SPR_LAST): Adjust accordingly.
	(FIXED_REGISTERS, CALL_USED_REGISTERS, REG_ALLOC_ORDER)
	(REGISTER_NAMES): Add entries for new registers.
	(REG_CLASS_CONTENTS): Update for new register ranges.
	(EXTRA_CONSTRAINT_FOR_S): Redefine in terms of call_operand.
	(ISSUE_RATE, CLEAR_VLIW_START, SET_VLIW_START): Delete.
	(PACKING_FLAG_USED_P): Delete.
	(FRV_BUILTIN_MQLCLRHS, FRV_BUILTIN_MQLMTHS, FRV_BUILTIN_MQSLLHI)
	(FRV_BUILTIN_MQSRAHI, FRV_BUILTIN_SMUL, FRV_BUILTIN_UMUL)
	(FRV_BUILTIN_PREFETCH0, FRV_BUILTIN_PREFETCH, FRV_BUILTIN_SMASS)
	(FRV_BUILTIN_SMSSS, FRV_BUILTIN_SMU, FRV_BUILTIN_SCUTSS)
	(FRV_BUILTIN_ADDSS, FRV_BUILTIN_SUBSS, FRV_BUILTIN_SLASS)
	(FRV_BUILTIN_IACCread{l,ll}, FRV_BUILTIN_IACCset{ll,l})
	(FRV_BUILTIN_SCAN): New members of frv_builtin_enum.
	(FRV_BUILTIN_FIRST_NONMEDIA): New macro.
	(CPU_UNITS_QUERY): Define to 1.
	* config/frv/frv.c: Include gt-frv.h
	(NUM_NOP_PATTERNS, NTH_UNIT, UNIT_NUMBER, PACKING_FLAG_P): New macros.
	(SET_PACKING_FLAG, CLEAR_PACKING_FLAG, FOR_EACH_REGNO): New macros.
	(frv_insn_group): New enumeration.
	(frv_unit_names, frv_unit_groups, frv_unit_codes): New variables.
	(frv_type_to_unit, frv_nops, frv_num_nops): New variables.
	(REGSTATE_DEAD, REGSTATE_LIVE, REGSTATE_UNUSED, REGSTATE_MASK)
	(REGSTATE_CONDJUMP): Delete.  Shuffle other numbers to cover the
	gap left by REGSTATE_LIVE.
	(regstate_t): New typedef.
	(TARGET_MACHINE_DEPENDENT_REORG): Define.
	(frv_default_flags_for_cpu): Handle FRV_CPU_{FR550,FR450,FR405}.
	(frv_override_options): Check for -mcpu={fr550,fr450,fr405}.
	Initialize frv_unit_codes[] and frv_type_to_unit[].
	(frv_conditional_register_usage): Remove redundant fixing of
	accumulator registers.
	(frv_insn_packing_flag): Update specification.
	(frv_function_prologue): Don't set frv_insn_packing_flag here.
	Zero out frv_nops[].
	(frv_expand_epilogue): Remove comments about the no-longer-present
	SIBCALL_P argument.
	(frv_asm_output_mi_thunk): Check frv_issue_rate() rather than
	PACKING_FLAG_USED_P() when deciding whether to pack instructions.
	(frv_asm_output_opcode, frv_final_prescan_insn): Simplify in light
	of the new meaning of frv_insn_packing_flag.  Emit an mnop.p if
	packing is disabled and if INSN can only issue to M1.
	(call_operand): Check TARGET_LONG_CALLS.
	(acc_operand, even_acc_operand, quad_acc_operand)
	(accg_operand): Simplify.  Don't accept pseudo registers.
	(output_move_single): Handle SPR<-zero moves.
	(frv_issue_rate): Make non-static.  Handle FRV_CPU_{FR550,FR450,FR405}.
	(frv_registers_update, frv_registers_used_p): Delete.
	(frv_registers_set_p): Delete.
	(frv_acc_group_1, frv_acc_group, frv_insn_unit): New functions.
	(frv_issues_to_branch_unit_p): New function.
	(frv_packet): New structure.
	(frv_cond_flags, frv_regstate_conflict_p): New functions.
	(frv_registers_conflict_p_1, frv_registers_conflict_p): New functions.
	(frv_registers_update_1, frv_registers_update): New functions.
	(frv_start_packet, frv_start_packet_block, frv_finish_packet)
	(frv_pack_insn_p, frv_add_insn_to_packet, frv_insert_nop_in_packet)
	(frv_for_each_packet, frv_sort_insn_group_1, frv_compare_insns)
	(frv_sort_insn_group, frv_reorder_packet): New functions.
	(frv_pack_insns): Use frv_reorder_packet.
	(frv_packet_address): New variable.
	(frv_fill_unused_units, frv_align_label, frv_reorg_packet)
	(frv_register_nop, frv_reorg): New functions.
	(bdesc_1arg): Add __SCUTSS.
	(bdesc_2arg): Add __MQLCLRHS, __MQLMTHS, __SMUL, __UMUL, __ADDSS,
	__SUBSS, __SLASS and __SCAN.
	(bdesc_2argimm): Add __MQSLLHI and __MQSRAHI.
	(bdesc_int_void2arg, bdesc_prefetches): New arrays.
	(frv_init_builtins): Register the above builtins.
	(frv_int_to_acc): Use ACC_MASK to check for valid accumulator
	registers.  Turn the referenced accumulators into global registers.
	(frv_read_iacc_argument): New function.
	(frv_expand_int_void2arg, frv_expand_prefetches): New functions.
	(frv_split_iacc_move): New function.
	(frv_expand_builtin): Handle the new builtins.
	* config/frv/frv.md: Replace old schedulers with new order-independent
	ones.  Add schedulers for the FR405, FR450 and FR550.  Describe new
	packing algorithm.
	(cpu): Add fr550, fr450 and fr405.
	(type): Add macc, scan, cut, fnop, fscmp, fdcmp, mnop, mqlimh and
	mqshift.  Replace fmas with fsmadd and fmad with fdmadd.  Delete m7.
	(*muladd[sd]f4, *mulsub[sd]f4): Fix types.
	(*cmp[sd]f_cc_fp): Use new f[sd]cmp types.
	(fnop, mnop): New patterns.
	(UNSPEC_MQLCLRHS, UNSPEC_MQLMTHS, UNSPEC_MQSLLHI, UNSPEC_MQSRAHI):
	New constants.
	(mexpdhw, *cond_exec_mexpdhw): Fix destination operands.
	(mclracca8): Use ACC_MASK to determine the upper set of accumulator
	registers.
	(mqlclrhs, mqlmths, mqsllhi, mqsrahi): New patterns.
	(UNSPEC_SMUL, UNSPEC_UMUL, UNSPEC_SMU, UNSPEC_ADDSS, UNSPEC_SUBSS)
	(UNSPEC_SLASS, UNSPEC_SCAN, UNSPEC_INTSS, UNSPEC_SCUTSS)
	(UNSPEC_PREFETCH0, UNSPEC_PREFETCH, UNSPEC_IACCreadll)
	(UNSPEC_IACCreadl, UNSPEC_IACCsetll, UNSPEC_IACCsetl, UNSPEC_SMASS)
	(UNSPEC_SMSSS, UNSPEC_IMUL, IACC0_REG): New constants.
	(smul, umul, smass, smsss, smu, addss, subss, slass, scan, scutss)
	(frv_prefetch0, frv_prefetch): New patterns.
	* config/frv/t-frv (MULTILIB_OPTIONS): Remove -mcpu=frv and
	-mcpu=simple.  Add -mcpu=fr550.
	(MULTILIB_DIRNAMES): Update accordingly.
	(MULTILIB_MATCHES): Use the fr400 multilibs for -mcpu=fr405 and
	-mcpu=fr450.
	* doc/invoke.texi: Document the new -mcpu={fr550,fr450,fr405},
	-mlong-calls and -malign-labels options for FR-V.

2004-09-09  Joseph S. Myers  <jsm@polyomino.org.uk>

	PR c/8420
	* c-tree.h (struct c_declspecs): New.
	(struct c_declarator, struct c_type_name, struct c_parm): Update
	element types.
	(build_array_declarator, grokfield, shadow_tag, shadow_tag_warned,
	start_function, start_decl, build_c_parm,
	make_pointer_declarator): Update prototypes.
	(build_null_declspecs, declspecs_add_qual, declspecs_add_type,
	declspecs_add_scspec, declspecs_add_attrs): New.
	(split_specs_attrs): Remove.
	* c-parse.in (%union): Add dsptype.
	(declspecs_nosc_nots_nosa_noea, declspecs_nosc_nots_nosa_ea,
	declspecs_nosc_nots_sa_noea, declspecs_nosc_nots_sa_ea,
	declspecs_nosc_ts_nosa_noea, declspecs_nosc_ts_nosa_ea,
	declspecs_nosc_ts_sa_noea, declspecs_nosc_ts_sa_ea,
	declspecs_sc_nots_nosa_noea, declspecs_sc_nots_nosa_ea,
	declspecs_sc_nots_sa_noea, declspecs_sc_nots_sa_ea,
	declspecs_sc_ts_nosa_noea, declspecs_sc_ts_nosa_ea,
	declspecs_sc_ts_sa_noea, declspecs_sc_ts_sa_ea, declspecs_ts,
	declspecs_nots, declspecs_ts_nosa, declspecs_nots_nosa,
	declspecs_nosc_ts, declspecs_nosc_nots, declspecs_nosc, declspecs,
	maybe_type_quals_attrs): Change to dsptype.
	(struct c_declspec_stack): New.
	(current_declspecs, declspec_stack): Change type.
	(PUSH_DECLSPEC_STACK, POP_DECLSPEC_STACK): Update to new
	structures.
	(extdefs): Likewise.
	(setspecs): Likewise.
	(fndef): Use current_declspecs for empty declspecs list.
	(declspecs_nosc_nots_nosa_noea, declspecs_nosc_nots_nosa_ea,
	declspecs_nosc_nots_sa_noea, declspecs_nosc_nots_sa_ea,
	declspecs_nosc_ts_nosa_noea, declspecs_nosc_ts_nosa_ea,
	declspecs_nosc_ts_sa_noea, declspecs_nosc_ts_sa_ea,
	declspecs_sc_nots_nosa_noea, declspecs_sc_nots_nosa_ea,
	declspecs_sc_nots_sa_noea, declspecs_sc_nots_sa_ea,
	declspecs_sc_ts_nosa_noea, declspecs_sc_ts_nosa_ea,
	declspecs_sc_ts_sa_noea, declspecs_sc_ts_sa_ea): Update to new
	structures and helper functions.  Update comments.
	(typespec_nonattr): Correct comment.
	(maybe_type_quals_attrs, typename): Update to new structures.
	* c-decl.c (grokdeclarator, build_array_declarator, grokfield,
	shadow_tag, shadow_tag_warned, start_function, start_decl,
	build_c_parm, make_pointer_declarator,
	set_array_declarator_inner, groktypename): Update to new
	structures.
	(build_null_declspecs, declspecs_add_qual, declspecs_add_type,
	declspecs_add_scspec, declspecs_add_attrs): New.
	(split_specs_attrs): Remove.
	(shadow_tag_warned): Make warning for useless type names a
	pedwarn.  Give hard error for long, short, signed, unsigned or
	_Complex used with struct, union or enum in empty declaration.
	Make found_tag a bool.
	(grokdeclarator): Remove checks now done at parse time.

2004-09-09  Joseph S. Myers  <jsm@polyomino.org.uk>

	* c-tree.h (enum c_declarator_kind, struct c_arg_info, struct
	c_declarator, struct c_type_name, struct c_parm): New.
	(build_array_declarator, set_array_declarator_inner,
	get_parm_info, grokfield, groktypename, grokparm, push_parm_decl,
	start_function, start_decl, build_c_parm, build_attrs_declarator,
	build_function_declarator, make_pointer_declarator, c_cast_expr,
	store_parm_decls_newstyle, c_expr_sizeof_type): Update prototypes.
	(build_id_declarator): New.
	* c-typeck.c (c_cast_expr, c_expr_sizeof_type): Update to new
	structures.
	* c-decl.c (ARG_INFO_PARMS, ARG_INFO_TAGS, ARG_INFO_TYPES,
	ARG_INFO_OTHERS): Remove.
	(build_id_declarator): New.
	(build_array_declarator, set_array_declarator_inner, groktypename,
	start_decl, grokparm, push_parm_decl, grokparms, get_parm_info,
	grokfield, start_function, store_parm_decls_newstyle,
	store_parm_decls_oldstyle, store_parm_decls,
	build_c_parm, build_attrs_declarator, build_function_declarator,
	make_pointer_declarator, grokdeclarator): Update to new
	structures.
	* c-parse.in (%union): Add arginfotype, dtrtype, typenametype and
	parmtype.
	(declarator, notype_declarator, after_type_declarator,
	parm_declarator, parm_declarator_starttypename,
	parm_declarator_nostarttypename, array_declarator, typename,
	absdcl, absdcl1, absdcl1_ea, absdcl1_noea, direct_absdcl1,
	absdcl_maybe_attribute, parm, firstparm, parms, parmlist,
	parmlist_1, parmlist_2, parmlist_or_identifiers,
	parmlist_or_identifiers_1): Use these types.
	(primary, after_type_declarator, parm_declarator_starttypename,
	notype_declarator, component_decl, component_declarator,
	component_notype_declarator, typename, absdcl,
	absdcl_maybe_attribute, absdcl1_ea, direct_absdcl1, parmlist_1,
	parmlist_2, parmlist_or_identifiers_1): Update to new structures.

2004-09-09  Joseph S. Myers  <jsm@polyomino.org.uk>

	* c-tree.h (C_DECL_USED, parser_obstack, in_alignof, in_sizeof,
	in_typeof, record_maybe_used_decl, pop_maybe_used,
	c_expr_sizeof_expr, c_expr_sizeof_type): New.
	* c-decl.c (parser_obstack): New.
	(c_init_decl_processing): Initialize parser_obstack.
	(c_write_global_declarations_1): Check for used but undefined
	static functions.
	* c-parse.in (%union): Add otype.
	(save_obstack_position): New.
	(extdefs): Use it.
	(unary_expr): Update in_sizeof and in_alignof.  Use
	c_expr_sizeof_expr and c_expr_sizeof_type.
	(sizeof): Update in_sizeof.
	(alignof): Update in_alignof.
	(typeof): Update in_typeof.
	(typespec_nonreserved_nonattr): Call pop_maybe_used.
	* c-typeck.c (in_alignof, in_sizeof, in_typeof, struct
	maybe_used_decl, maybe_used_decls, record_maybe_used_decl,
	pop_maybe_used, c_expr_sizeof_expr, c_expr_sizeof_type): New.
	(build_external_ref): Set C_DECL_USED or call
	record_maybe_used_decl if appropriate.
	* toplev.c (check_global_declarations): Check TREE_NO_WARNING.

2004-09-08  Eric Christopher  <echristo@redhat.com>

	* builtins.c: Fix prototype for fold_builtin_atan.

2004-09-08  Eric Christopher  <echristo@redhat.com>

	* builtins.c (fold_builtin_strlen, fold_builtin_sqrt, fold_builtin_cbrt,
	fold_builtin_pow, fold_builtin_sin, fold_builtin_cos, fold_builtin_tan,
	fold_builtin_atan): New functions. Migrate function bodies...
	(fold_builtin_1): ... from here.

2004-09-09  Alan Modra  <amodra@bigpond.net.au>

	* config/rs6000/rs6000.c (rs6000_stack_info): Correct alignment of
	save_size.

2004-09-08  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/power4.md (power4-lmul): du4 feeds iu1.
	* config/rs6000/power5.md (power5-lmul): Same.

2004-09-08  Richard Henderson  <rth@redhat.com>

	PR rtl-opt/17186
	* function.c (expand_function_end): Have fall-off-the-end
	return path jump around return register setup.

2004-09-08  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* config/sparc/sparc.c (sparc_indent_opcode): New variable.
	(output_return): Do not test for the presence of the 'unimp' insn.
	Use 'current_function_uses_only_leaf_regs' and 'final_sequence'
	as predicates instead of custom ones.  Return raw strings when
	possible.
	(output_sibcall): Likewise.  Concatenate strings.
	(output_ubranch): Remove kludge for TurboSPARC.
	(output_cbranch): Remove 'noop' parameter.  Do not output 'nop'.
	(output_v9branch): Likewise.
	(print_operand): Use 'final_sequence' instead of 'dbr_sequence_length'.
	<#>: Set sparc_indent_opcode if the delay slot is filled.
	<(>: Likewise.
	<)>: New operand to emit the displacement from the saved PC on return.
	<@>: Remove.
	* config/sparc/sparc.h (sparc_indent_opcode): Declare it.
	(ASM_OUTPUT_OPCODE): New macro.
	(PRINT_OPERAND_PUNCT_VALID_P): Remove '^' and add ')'.
	* config/sparc/sparc.md (normal_branch, inverted_branch,
	normal_fp_branch, inverted_fp_branch, normal_fpe_branch,
	inverted_fpe_branch): Adjust call to output_cbranch.
	(normal_int_branch_sp64, inverted_int_branch_sp64): Adjust
	call to output_v9branch.
	* config/sparc/sparc-protos.h (output_cbranch): Adjust.
	(output_v9branch): Likewise.

2004-09-08  Devang Patel  <dpatel@apple.com>

	* config/darwin.h  (TARGET_OPTION_TRANSLATE_TABLE): Add -segaddr,
	-segs_read_only_addr and -segs_read_write_addr.
	(WORD_SWITCH_TAKES_ARG): Same.
	(LINK_SPEC): Same.
	* doc/invoke.texi: Document -segaddr, -segs_read_only_addr and
	-segs_read_write_addr.

2004-09-08  Richard Henderson  <rth@redhat.com>

	* function.c (reference_callee_copied): New.
	(assign_parm_setup_reg): Use it.
	* calls.c (initialize_argument_information): Likewise.
	(emit_library_call_value_1): Likewise.
	* function.h (reference_callee_copied): Declare.

	* target.h (struct gcc_target): Add callee_copies.
	* target-def.h (TARGET_CALLEE_COPIES): New.
	(TARGET_PASS_BY_REFERENCE): Update default.
	* expr.h (FUNCTION_ARG_CALLEE_COPIES): Remove.
	* targhooks.c (hook_callee_copies_named): New.
	(hook_bool_CUMULATIVE_ARGS_mode_tree_bool_false): Rename from
	hook_pass_by_reference_false.
	(hook_bool_CUMULATIVE_ARGS_mode_tree_bool_true): New.
	* targhooks.h: Update decls.
	* config/arc/arc.c (TARGET_CALLEE_COPIES): New.
	* config/arc/arc.h (FUNCTION_ARG_CALLEE_COPIES): Remove.
	* config/frv/frv-protos.h (frv_function_arg_callee_copies): Remove.
	* config/frv/frv.c (frv_function_arg_callee_copies): Remove.
	* config/frv/frv.h (FUNCTION_ARG_CALLEE_COPIES): Remove.
	* config/iq2000/iq2000.c (TARGET_CALLEE_COPIES): New.
	* config/iq2000/iq2000.h (FUNCTION_ARG_CALLEE_COPIES): Remove.
	* config/m68hc11/m68hc11.c (TARGET_CALLEE_COPIES): New.
	* config/m68hc11/m68hc11.h (FUNCTION_ARG_CALLEE_COPIES): Remove.
	* config/mips/mips.c (TARGET_CALLEE_COPIES): New.
	(mips_callee_copies): New.
	* config/mips/mips.h (FUNCTION_ARG_CALLEE_COPIES): Remove.
	* config/mmix/mmix.c (TARGET_CALLEE_COPIES): New.
	* config/mmix/mmix.h (FUNCTION_ARG_CALLEE_COPIES): Remove.
	* config/mn10300/mn10300.c (TARGET_CALLEE_COPIES): New.
	* config/mn10300/mn10300.h (FUNCTION_ARG_CALLEE_COPIES): Remove.
	* config/pa/pa.c (TARGET_CALLEE_COPIES): New.
	* config/pa/pa.h (FUNCTION_ARG_CALLEE_COPIES): Remove.
	* config/sh/sh.c (sh_callee_copies): New.
	(TARGET_CALLEE_COPIES): New.
	* config/sh/sh.h (FUNCTION_ARG_CALLEE_COPIES): Remove.
	* config/v850/v850.c (TARGET_CALLEE_COPIES): New.
	* config/v850/v850.h (FUNCTION_ARG_CALLEE_COPIES): Remove.
	* doc/tm.texi (TARGET_CALLEE_COPIES): Replace documentation
	for FUNCTION_ARG_CALLEE_COPIES.
	* doc/rtl.texi (CALL_INSN_FUNCTION_USAGE): Update.

2004-09-08  Devang Patel  <dpatel@apple.com>

	* tree-if-conv.c (find_phi_replacement_condition): Return true
	edge block.
	(replace_phi_with_cond_modify_expr): Select conditional expr args
	based on true edge basic block.

2004-09-08  Jan Hubicka  <jh@suse.cz>

	* tree-ssa-operands.c (add_stmt_operand): Use V_MUST_DEF even for
	variables being alias set.

2004-09-08  Nathan Sidwell  <nathan@codesourcery.com>

	* final.c (shorten_branches, final, get_insn_template,
	output_alternate_entry_point, final_scan_insn, alter_subreg,
	alter_cond, output_operand, asm_fprintf, final_forward_branch_p,
	leaf_renumber_regs_insn): Use gcc_assert and gcc_unreachable.
	* fix-header.c (lookup_std_proto): Likewise.
	* flow.c (first_insn_after_basic_block_note, verify_wide_reg,
	verify_local_live_at_start, update_life_info, mark_reg,
	calculate_global_regs_live, allocate_reg_life_data,
	init_propagate_block_info, mark_set_regs, flush_reg_cond_reg_1,
	ior_reg_cond, not_reg_cond, and_reg_cond, elim_reg_cond,
	attempt_auto_inc, mark_used_reg, mark_used_regs): Likewise.
	* fold-const.c (force_fit_type, div_and_round_double,
	may_negate_without_overflow_p, int_const_binop, const_binop,
	size_binop, size_diffop, fold_convert_const, fold_convert,
	invert_tree_comparison, swap_tree_comparison,
	comparison_to_compcode, compcode_to_comparison, invert_truthvalue,
	range_binop, make_range, fold_cond_expr_with_comparison,
	fold_div_compare, fold, fold_checksum_tree, fold_negate_const,
	fold_abs_const, fold_not_const, fold_relational_const, round_up,
	round_down): Likewise.
	* function.c (find_function_data, assign_stack_temp_for_type,
	instantiate_virtual_regs_lossage, aggregate_value_p,
	assign_parm_find_entry_rtl, assign_parm_setup_block,
	expand_function_start, expand_function_end, keep_stack_depressed,
	handle_epilogue_set, thread_prologue_and_epilogue_insns): Likewise.

2004-09-08  Daniel Berlin  <dberlin@dberlin.org>

	* Makefile.in (tree-loop-linear.o): Added.
	(OBJS-common): Add tree-loop-linear.o
	* common.opt: New flag, ftree-loop-linear.
	* timevar.def: New timevar, TV_TREE_LOOP_LINEAR.
	* tree-flow.h: Add prototype for linear_transform_loops.
	* tree-optimize.c: Add linear transform after vectorization.
	* tree-pass.h: Add struct pass_linear_transform.
	* tree-ssa-loop.c: Add pass_linear_transform.
	* tree-loop-linear.c: New file.
	* lambda-code.c: gcc_assertify.
	(gcc_loop_to_lambda_loop): Handle all exit tests.
	Handle case where we have (invariant >= induction var).
	(find_induction_var_from_exit_cond): Ditto.

2004-09-08  Jie Zhang  <zhangjie@magima.com.cn>

	* tree-ssa-alias.c (compute_flow_insensitive_aliasing): If type
	memory tag is call clobbered, so are its aliases.
	(group_aliases): When two memory tags being grouped, if one is
	call clobbered, so are the other and its aliases.
	(add_may_alias): Remove call-clobbering stuff.
	(replace_may_alias): Likewise.
	(merge_pointed_to_info): Merge pt_global_mem

2004-09-08  Jan Hubicka  <jh@suse.cz>

	* cgraph.c (cgraph_remove_node): Free DECL_INITIAL field of node.
	* cgraphunit.c (verify_cgraph): Don't verify on syntax errors.
	(cgraph_expand_function): Remove stale cgraph edges of currently
	compiled function; fix non-unit-at-a-time code copying function
	node for later reuse.

2004-09-08  Nathan Sidwell  <nathan@codesourcery.com>

	* vec.c (vec_p_reserve, vec_o_reserve): Rename to ...
	(vec_gc_p_reserve, vec_gc_o_reserve): ... here. Clone to
	(vec_heap_p_reserve, vec_heap_o_reserve): ... here, adjust.
	(vec_gc_free, vec_heap_free): New.
	* vec.h (DEF_VEC_GC_P, DEF_VEC_MALLOC_P): New.
	(DEF_VEC_P): Add allocator argument. Adjust.
	(DEF_VEC_GC_O, DEF_VEC_MALLOC_O): New.
	(DEF_VEC_O): Add allocator argument. Adjust.
	(VEC(free)): New.

	* tree.h (tree): Define a GC'd vector.
	* lamba-code.c (lambda_loop): Likewise.
	* value-prof.h (histogram_value): Likewise.

2004-09-08  Nathan Sidwell  <nathan@codesourcery.com>

	* emit-rtl.c (immed_double_const): Use gcc_assert and gcc_unreachable.
	(gen_rtx_SUBREG, gen_reg_rtx, mark_user_reg, subreg_hard_regno,
	gen_lowpart_common, gen_highpart, gen_highpart_mode,
	subreg_highpart_offset, operand_subword, operand_subword_force,
	mem_expr_equal_p, set_mem_attributes_minus_bitpos,
	set_mem_alias_set, change_address_1, verify_rtx_sharing,
	copy_most_rtx, set_first_insn, set_last_insn, prev_cc0_setter,
	try_split, add_insn_after, add_insn_before, remove_insn,
	remove_unnecessary_notes, emit_insn_before, emit_jump_insn_before,
	emit_call_insn_before, emit_insn_after, emit_jump_insn_after,
	emit_call_insn_after, emit_insn, emit_jump_insn, emit_call_insn,
	set_unique_reg_note, emit, push_to_full_sequence, copy_insn_1,
	gen_const_vector_0, emit_copy_of_insn_after): Likewise.
	* et-forest.c (set_prev, set_next, et_check_occ_sanity,
	record_path_before_1, check_path_after_1, check_path_after): Likewise.
	* except.c (gen_eh_region, resolve_one_fixup_region,
	remove_unreachable_regions, convert_from_eh_region_ranges_1,
	add_ehl_entry, duplicate_eh_region_1, build_post_landing_pads,
	connect_post_landing_pads, sjlj_emit_function_exit,
	remove_exception_handler_label, remove_eh_handler,
	reachable_next_level, collect_one_action_chain,
	output_function_exception_table): Likewise.
	* explow.c (trunc_int_for_mode, copy_to_mode_reg,
	optimize_save_area_alloca, allocate_dynamic_stack_space,
	probe_stack_range, hard_function_value): Likewise.
	* expmed.c (mode_for_extraction, store_bit_field,
	store_fixed_bit_field, extract_bit_field, expand_shift,
	expand_mult_const, expand_mult, choose_multiplier,
	expand_mult_highpart, expand_divmod, emit_store_flag,
	do_cmp_and_jump): Likewise.
	* expr.c (convert_move, convert_modes, move_by_pieces,
	move_by_pieces_ninsns, move_by_pieces_1, emit_block_move,
	move_block_from_reg, gen_group_rtx, emit_group_load,
	emit_group_move, emit_group_store, use_reg, use_regs,
	can_store_by_pieces, store_by_pieces, store_by_pieces_1,
	emit_move_insn, emit_move_insn_1, emit_push_insn,
	expand_assignment, store_expr, count_type_elements,
	store_constructor, store_field, safe_from_p, expand_var,
	expand_expr_addr_expr, expand_expr_real_1, do_store_flag): Likewise.

2004-09-08  Nathan Sidwell  <nathan@codesourcery.com>

	* dbxout.c (dbxout_type, dbxout_type_name, dbxout_symbol): Use
	gcc_assert and gcc_unreachable.
	* ddg.c (create_ddg_dependence, add_deps_for_def,
	add_deps_for_use, create_ddg, add_edge_to_ddg): Likewise.
	* df.c (df_ref_unlink, df_ref_record, df_uses_record,
	df_reg_def_chain_create, df_reg_use_chain_create, df_analyze,
	df_insn_delete, df_refs_reg_replace, df_ref_reg_replace,
	df_insns_modify, df_pattern_emit_before, df_bb_reg_live_start_p,
	df_bb_reg_live_end_p, df_bb_regs_lives_compare,
	df_bb_single_def_use_insn_find, dataflow_set_a_op_b,
	dataflow_set_copy, hybrid_search, diagnostic.c,
	diagnostic_build_prefix, diagnostic_count_diagnostic): Likewise.
	* dojump.c (do_jump): Likewise.
	* dominance.c (calc_dfs_tree_nonrec, calc_dfs_tree,
	compute_dom_fast_query, calculate_dominance_info,
	free_dominance_info, get_immediate_dominator,
	set_immediate_dominator, get_dominated_by,
	redirect_immediate_dominators, nearest_common_dominator,
	dominated_by_p, verify_dominators, recount_dominator,
	iterate_fix_dominators, add_to_dominance_info,
	delete_from_dominance_info): Likewise.
	* dwarf2asm.c (size_of_encoded_value, eh_data_format_name,
	dw2_asm_output_delta_uleb128, dw2_asm_output_delta_sleb128,
	dw2_force_const_mem, dw2_asm_output_encoded_addr_rtx): Likewise.
	* dwarf2out.c (expand_builtin_init_dwarf_reg_sizes, reg_save,
	initial_return_save, stack_adjust_offset, dwarf2out_stack_adjust,
	flush_queued_reg_saves, dwarf2out_frame_debug_expr,
	dwarf2out_frame_debug, dw_cfi_oprnd1_desc, output_cfi,
	output_call_frame_info, output_loc_operands, build_cfa_loc,
	decl_ultimate_origin, AT_flag, AT_int, AT_unsigned, AT_string,
	AT_string_form, add_AT_specification, AT_ref, set_AT_ref_external,
	AT_loc, AT_loc_list, AT_addr, AT_lbl, add_child_die,
	splice_child_die, attr_checksum, same_dw_val_p,
	break_out_includes, build_abbrev_table, size_of_die, mark_dies,
	unmark_dies, value_format, output_loc_list, output_die,
	output_pubnames, output_aranges, base_type_die, is_base_type,
	modified_type_die, dbx_reg_number, multiple_reg_loc_descriptor,
	mem_loc_descriptor, loc_descriptor, loc_descriptor_from_tree_1,
	field_byte_offset, add_data_member_location_attribute,
	add_const_value_attribute, rtl_for_decl_location,
	add_location_or_const_value_attribute, add_byte_size_attribute,
	add_bit_offset_attribute, add_bit_size_attribute,
	add_abstract_origin_attribute, pop_decl_scope, scope_die_for,
	decl_start_label, gen_formal_parameter_die,
	gen_type_die_for_member, gen_subprogram_die, gen_label_die,
	gen_typedef_die, gen_type_die, gen_tagged_type_instantiation_die,
	force_decl_die, force_type_die, gen_decl_die,
	dwarf2out_imported_module_or_decl, prune_unused_types_prune,
	dwarf2out_finish): Likewise.

2004-09-08  Andreas Tobler  <toa@pop.agri.ch>

	* Makefile.in (builtins.o): Depend on tree-mudflap.h.
	* builtins.c: Include tree-mudflap.h.

2004-09-08  Uros Bizjak  <uros@kss-loka.si>

	* config/i386/i386.c (ix86_prepare_fp_compare_args): Do not
	force operand 0.0 into register in XFmode. Also do not force
	operand 0.0 into register if !TARGET_CMOVE.
	* config/i386/i386.md (*cmpfp_0): Delete. Remove comment.
	(*cmpfp_0_sf, cmpfp_0_df, cmpfp_0_xf): New patterns to
	implement ftst x87 instruction.
	(*fp_jcc_7): New insn pattern. Change corresponding split
	pattern to handle "general_operand" instead of
	"nonimmediate_operand".

2004-09-08  Ben Elliston  <bje@au.ibm.com>

	* doc/rtl.texi (Insns): Document NOTE_INSN_FUNCTION_BEG.

2004-09-07  Frank Ch. Eigler  <fche@redhat.com>

	* builtins.c (std_gimplify_va_arg_expr): Mark INDIRECT_REF nodes
	generated from standard va_arg expansion.
	* tree-mudflap.c (mx_xform_derefs_1): Omit instrumentation from
	marked nodes.
	(mf_varname_tree, mf_file_function_line_tree): Add some support
	for column numbers if compiled with USE_MAPPED_LOCATION.

2004-09-07  Ziemowit Laski  <zlaski@apple.com>

	* c-decl.c (groktypename_in_parm_context): Remove function.
	* c-tree.h (groktypename_in_parm_context): Remove prototype.

2004-09-07  Ziemowit Laski  <zlaski@apple.com>

	* Makefile.in (c-parse.o): Depend on $(C_COMMON_H).
	* c-parse.in: Include c-common.h instead of objc-act.h.
	(ivar_decl_list, ivar_decls, ivar_decl, ivars, ivar_declarator,
	myparms, myparm): Remove %type declarations.
	(methodtype, optparms, OBJC_TYPE_QUAL, objc_quals, objc_qual,
	objc_typename, objc_try_catch_stmt, optellipsis): Add %type
	declarations.
	(objc_inherit_code, objc_public_flag): Remove.
	(typespec_nonreserved_nonattr): Call
	objc_get_protocol_qualified_type() instead of get_static_reference()
	and get_protocol_reference().
	(stmt_nocomp): Call grokparm() on @catch parameter.
	(objcdef): Move semantic action to objc_finish_implementation().
	(classdef): Move semantic action to objc_start_class_interface(),
	objc_continue_interface(), objc_finish_interface(),
	objc_start_class_implementation(), objc_continue_implementation(),
	objc_start_category_interface() and
	objc_start_category_implementation().
	(protocoldef): Move semantic actions to objc_start_protocol() and
	objc_finish_interface().
	(ivar_decl_list): Remove nonterminal.
	(visibility_spec): Move semantic actions to objc_set_visibility().
	(ivar_decls): Remove assignment to $$.
	(ivar_decl): Rephrase in terms of component_decl; call
	objc_add_instance_variable().
	(ivars, ivar_declarator): Remove nonterminals.
	(opt_semi): New nonterminal.
	(methodtype): Remove semantic actions.
	(methoddef): Move semantic actions to objc_set_method_type(),
	objc_start_method_definition() and objc_finish_method_definition().
	(methodproto): Move semantic actions to objc_set_method_type() and
	objc_add_method_declaration().
	(methoddecl): Use objc_typename instead of typename; move semantic
	actions to objc_build_method_signature().
	(optarglist, myxdecls, mydecl, myparms, myparm): Remove nonterminals.
	(optparmlist): Express in terms of optparms and optellipsis.
	(optparms, optellipsis, objc_qual, objc_quals, objc_typename): New
	nonterminals.
	(keyworddecl): Use objc_typename instead of typename.
	(rid_to_yy): Mark RID_IN, RID_OUT, RID_INOUT, RID_BYCOPY, RID_BYREF
	and RID_ONEWAY as returning OBJC_TYPE_QUAL to yyparse().

2004-09-08  Alan Modra  <amodra@bigpond.net.au>

	* doc/tm.texi (MD_UNWIND_SUPPORT): Document.
	(MD_FALLBACK_FRAME_STATE_FOR): Update.
	* unwind-dw2.c (MD_UNWIND_SUPPORT): #include if defined.
	(uw_frame_state_for): Adjust MD_FALLBACK_FRAME_STATE_FOR invocation.
	(MD_FROB_UPDATE_CONTEXT): Remove default.
	(uw_update_context_1): Instead #ifdef invocation.
	* config/ia64/unwind-ia64.c (MD_UNWIND_SUPPORT): #include if defined.
	(uw_frame_state_for): Adjust MD_FALLBACK_FRAME_STATE_FOR invocation.
	* config/alpha/gnu.h (MD_FALLBACK_FRAME_STATE_FOR): Don't undef.
	(MD_UNWIND_SUPPORT): Undefine this instead.
	* config/i386/gnu.h: Likewise.
	* config/alpha/linux-unwind.h: New file, macro converted to
	function, extracted from..
	* config/alpha/linux.h (MD_FALLBACK_FRAME_STATE_FOR): ..this.
	(MD_UNWIND_SUPPORT): Define.
	* config/alpha/vms-unwind.h, config/alpha/vms.h: Likewise.
	* config/i386/linux-unwind.h, config/i386/linux.h,
	config/i386/linux64.h: Likewise.
	* config/ia64/linux-unwind.h, config/ia64/linux.h: Likewise.
	MD_HANDLE_UNWABI too.
	* config/mips/linux-unwind.h, config/mips/linux.h: Likewise.
	* config/pa/linux-unwind.h, config/pa/pa32-linux.h: Likewise.
	* config/rs6000/darwin-unwind.h, config/rs6000/darwin.h: Likewise.
	* config/s390/linux-unwind.h, config/s390/linux.h: Likewise.
	* config/sparc/linux-unwind.h, config/sparc/linux.h,
	config/sparc/linux64.h: Likewise.
	* config/sh/linux-unwind.h, config/sh/linux.h: Likewise, but merge
	SH_FALLBACK_FRAME_FLOAT_STATE into sh_fallback_frame_state.
	* config/rs6000/linux-unwind.h, config/rs6000/linux.h,
	config/rs6000/linux64.h: Likewise.  Split out get_sigcontext
	function.  Use ARG_POINTER_REGNUM for 32-bit temp reg too.

2004-09-07  Jan Hubicka  <jh@suse.cz>

	* cse.c (fold_rtx): Avoid building of
	(CONST (MINUS (CONST_INT) (SYMBOL_REF)))

	* tree-ssa-pre.c (grand_bitmap_obstack): New.
	(value_insert_into_set_bitmap, bitmap_set_new): Use the obstack.
	(init_pre): Initialize obstack.
	(fini_pre): Free obstack.

2004-09-07  David Daney  <ddaney@avtrex.com>

	* config.gcc: Added support for --with-divide=[breaks|traps] for
	mips targets.
	* config/mips/mips.h (MASK_DIVIDE_BREAKS): New target_flags bit.
	(TARGET_DIVIDE_TRAPS): New macro.
	(TARGET_SWITCHES): Added -mdivide-traps and -mdivide-breaks.
	(OPTION_DEFAULT_SPECS): Added --with-divide= support.
	* config/mips/mips.c (mips_idiv_insns): Generate proper count on
	GENERATE_DIVIDE_TRAPS.
	(mips_output_division): Emit conditional trap if
	GENERATE_DIVIDE_TRAPS is set.
	* doc/install.texi: Document --with-divide.
	* doc/invoke.texi: Document -mdivide-traps and -mdivide-breaks.

2004-09-07  Caroline Tice  <ctice@apple.com>

	* cfgrtl.c (rtl_verify_flow_info_1): Add new edge flag,
	EDGE_CROSSING, to flags test case.

2004-09-07  Jan Hubicka  <jh@suse.cz>

	* tree-ssa-loop-ivopts.c (contains_abnormal_ssa_name_p): Deal with '<'
	class too.

2004-09-07  Nathan Sidwell  <nathan@codesourcery.com>

	* cfganal.c (flow_depth_first_order_compute, dfs_enumerate_from,
	cfgbuild.c, inside_basic_block_p, control_flow_insn_p,
	make_label_edge, make_edges, find_basic_blocks_1): Use gcc_assert
	or gcc_unreachable.
	* cfg.c (clear_edges, initialize_bb_rbi, compact_blocks,
	remove_edge, alloc_aux_for_blocks, free_aux_for_blocks,
	alloc_aux_for_edges, free_aux_for_edges): Likewise.
	* cfgcleanup.c (try_forward_edges,
	merge_blocks_move_predecessor_nojumps,
	merge_blocks_move_successor_nojumps): Likewise.
	* cfgexpand.c (expand_gimple_cond_expr,
	expand_gimple_tailcall): Likewise.
	* cfghooks.c (duplicate_block): Likewise.
	* cfglayout.c (record_effective_endpoints,
	insn_locators_initialize, change_scope, fixup_reorder_chain,
	verify_insn_chain, fixup_fallthru_exit_predecessor,
	duplicate_insn_chain, cfg_layout_finalize): Likewise.
	* cfgloopanal.c (check_irred): Likewise.
	* cfgloop.c (superloop_at_depth, flow_loops_free,
	flow_loop_entry_edges_find, flow_loops_find,
	flow_loop_outside_edge_p, get_loop_body,
	get_loop_body_in_dom_order, get_loop_body_in_bfs_order,
	get_loop_exit_edges, num_loop_branches, cancel_loop,
	verify_loop_structure): Likewise.
	cfgloopmanip.c (find_path, remove_path, loop_delete_branch_edge,
	duplicate_loop_to_header_edge, create_preheader,
	create_loop_notes): Likewise.
	* cfgrtl.c (delete_insn, try_redirect_by_replacing_jump,
	edirect_branch_edge, force_nonfallthru_and_redirect,
	rtl_split_edge, insert_insn_on_edge, commit_one_edge_insertion,
	commit_edge_insertions, commit_edge_insertions_watch_calls,
	purge_dead_edges, cfg_layout_redirect_edge_and_branch,
	cfg_layout_redirect_edge_and_branch_force,
	cfg_layout_merge_blocks, rtl_flow_call_edges_add): Likewise.
	* cgraph.c (cgraph_node, cgraph_create_edge, cgraph_remove_edge,
	cgraph_redirect_edge_callee, cgraph_global_info, cgraph_rtl_info,
	cgraph_varpool_node): Likewise.
	* cgraphunit.c (cgraph_finalize_function,
	cgraph_finalize_compilation_unit, cgraph_mark_functions_to_output,
	cgraph_expand_function, cgraph_remove_unreachable_nodes,
	cgraph_clone_inlined_nodes, cgraph_mark_inline_edge,
	cgraph_mark_inline, cgraph_expand_all_functions,
	cgraph_build_static_cdtor): Likewise.
	* combine.c  (do_SUBST, try_combine, subst, combine_simplify_rtx,
	simplify_logical, distribute_notes, insn_cuid): Likewise.
	* conflict.c (conflict_graph_add, print_conflict): Likewise.
	* coverage.c (rtl_coverage_counter_ref, tree_coverage_counter_ref,
	coverage_checksum_string): Likewise.
	* cse.c (make_new_qty, make_regs_eqv, insert, invalidate,
	hash_rtx, exp_equiv_p, cse_basic_block, count_reg_usage,
	cse_cc_succs, cse_condition_code_reg): Likewise.
	* cselib.c (entry_and_rtx_equal_p, remove_useless_values,
	rtx_equal_for_cselib_p, wrap_constant, cselib_hash_rtx,
	new_cselib_val, cselib_subst_to_values, cselib_invalidate_regno,
	cselib_record_set): Likewise.

2004-09-07  Jan Hubicka  <jh@suse.cz>

	* tree-ssa-loop-ivopts.c (iv_value): Avoid invalid sharing on niter.

2004-09-07  Nathan Sidwell  <nathan@codesourcery.com>

	* builtins.c (fold_builtin_strchr): Use build_int_cst, not
	fold_convert.
	(fold_builtin_strpbrk): Likewise.
	* expr.c (array_ref_low_bound): Likewise.
	* tree-scalar-evolution.c (chrec_is_positive, add_to_evolution_1,
	interpret_rhs_modify_expr, number_of_iterations_in_loop): Likewise.
	* tree-sra.c (generate_element_zero): Likewise.
	* tree-ssa-dom.c (simplify_rhs_and_lookup_avail_expr): Likewise.
	* tree-ssa-loop-ivopts.c (determine_biv_step, idx_find_step,
	add_old_iv_candidates, add_iv_candidates): Likewise.
	* tree-tailcall.c (tree_optimize_tail_calls_1): Likewise.

2004-09-07  Nathan Sidwell  <nathan@codesourcery.com>

	* c-aux-info.c (gen_type): Use gcc_assert or gcc_unreachable.
	* c-common.c (c_type_hash, c_common_nodes_and_builtins,
	c_expand_expr, boolean_increment, nonnull_check_p,
	check_function_arguments_recurse, fold_offsetof_1): Likewise.
	* c-cppbuiltin.c (define__GNUC__, builtin_define_stdint_macros,
	builtin_define_type_max): Likewise.
	* c-decl.c (bind, pop_scope, merge_decls, pushdecl_top_level,
	implicit_decl_warning, builtin_function, build_compound_literal,
	complete_array_type, grokdeclarator, get_parm_info,
	start_function, store_parm_decls_oldstyle,
	c_write_global_declarations): Likewise.
	* c-format.c (get_constant, decode_format_attr,
	maybe_read_dollar_number, get_flag_spec, check_format_arg,
	check_format_types, format_type_warning,
	find_char_info_specifier_index, init_dynamic_asm_fprintf_info,
	init_dynamic_diag_info, handle_format_attribute): Likewise.
	* c-gimplify.c (push_context, pop_context, finish_bc_block):
	* c-lex.c (c_lex_with_flags, lex_string): Likewise.
	* c-objc-common.c (c_tree_printer): Likewise.
	* c-pch.c (pch_init): Likewise.
	* c-pragma.c (maybe_apply_pragma_weak): Likewise.
	* c-pretty-print.c (pp_c_tree_decl_identifier): Likewise.
	* c-typeck.c (c_incomplete_type_error, composite_type,
	common_pointer_type, common_type, same_translation_unit_p,
	tagged_types_tu_compatible_p, finish_init, pop_init_level,
	set_designator, set_nonincremental_init_from_string,
	process_init_element, c_finish_if_stmt): Likewise.
	* caller-save.c (init_caller_save, save_call_clobbered_regs,
	insert_restore, insert_save, insert_one_insn): Likewise.
	* calls.c (emit_call_1, compute_argument_block_size,
	precompute_arguments, expand_call, emit_library_call_value_1,
	store_one_arg): Likewise.

2004-09-07  Nathan Sidwell  <nathan@codesourcery.com>

	* configure.ac (enable-checking): Add release option. Reorganize
	to avoid repetition.
	* configure: Rebuilt.
	* doc/install.texi (enable-checking): Amend documentation.

2004-09-06  H.J. Lu  <hongjiu.lu@intel.com>

	PR bootstrap/17313
	* Makefile.in (specs.ready): Depend on cc1$(exeext).

2004-09-06  James E Wilson  <wilson@specifixinc.com>

	* config/mips/mips.md (movsf_hardfloat, movdf_hardfloat_64bit,
	movdf_hardfloat_32bit): Split fG into two alternatives.
	(movv2sf_hardfloat_64bit): Split fYG into two alternatives.

	* emit-rtl.c (try_split): Check INSN_P before may_trap_p call.

2004-09-06  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* final.c (output_in_slot): Delete.
	(final_scan_insn): Revert 2004-09-03 change.
	(output_asm_insn): Likewise.
	* config/sparc/sparc.c (output_return): Likewise.
	(output_sibcall): Likewise.

2004-09-06  Jan Hubicka  <jh@suse.cz>

	* loop.c (loop_dump_aux): Do not print RTL when not available.
	* tree-ssa-loop-ivopts.c (add_standard_iv_candidates): Do not use
	frontend specific type nodes.
	(produce_memory_decl_rtl): Break out from ...
	(prepare_decl_rtl): ... here.  Handle ADDR_EXPR correctly.
	(get_computation_at): Avoid random tree sharing.
	(tree_ssa_iv_optimize): Verify tree sharing; dump loops.

2004-09-06  Zack Weinberg  <zack@codesourcery.com>

	* Makefile.in (rtl.o, bitmap.o): Correct dependencies, remove
	unnecessary commands.

2004-09-06  Mohan Embar  <gnustuff@thisiscool.com>

	* Makefile.in (rtl.o): Remove -DGENERATOR_FILE.
	(bitmap.o): Likewise.

2004-09-06  Paolo Bonzini  <bonzini@gnu.org>

	Unify the management of RTL and tree-level dump files.

	* cfgexpand.c (tree_expand_cfg): Fix incorrect comment.
	Don't print function name to the dump file, the pass manager
	would do this for us. Add code from the top of
	rest_of_compilation, up to the initial RTL dump.
	* passes.c (rest_of_handle_jump): Call fixup_tail_calls and
	close the DFI_sibling dump file.
	(rest_of_compilation): Don't do that here.  Remove code up to the
	initial RTL dump.
	(init_optimization_passes): Remove.
	(pass_rest_of_compilation): Change pass name to NULL.
	* toplev.c (lang_dependent_init): Do not use an empty dump file prefix.
	Do not call init_optimization_passes.
	* toplev.h (init_optimization_passes): Remove.

	* graph.c (print_rtl_graph_with_bb, clean_graph_dump_file,
	finish_graph_dump_file): Remove SUFFIX parameter.
	* graph.h (print_rtl_graph_with_bb, clean_graph_dump_file,
	finish_graph_dump_file): Likewise.

	* tree-pass.h (struct tree_opt_pass): Add `letter' field.
	* cfgexpand.c (pass_expand): Adjust.
	* gimple-low.c (pass_lower_cf, pass_remove_useless_vars): Adjust.
	* passes.c (pass_rest_of_compilation): Adjust.
	* predict.c (pass_profile): Adjust.
	* tree-alias-common.c (pass_build_pta, pass_del_pta): Adjust.
	* tree-cfg.c (pass_build_cfg, pass_remove_useless_stmts,
	pass_split_crit_edges, pass_warn_function_return): Adjust.
	* tree-complex.c (pass_lower_vector_ssa, pass_pre_expand): Adjust.
	* tree-dfa.c (pass_referenced_vars): Adjust.
	* tree-eh.c (pass_lower_eh): Adjust.
	* tree-if-conv.c (pass_build_ssa): Adjust.
	* tree-into-ssa.c (pass_build_ssa): Adjust.
	* tree-mudflap.c (pass_mudflap_1, pass_mudflap_2): Adjust.
	* tree-nomudflap.c (pass_mudflap_1, pass_mudflap_2): Adjust.
	* tree-nrv.c (pass_nrv): Adjust.
	* tree-optimize.c (pass_gimple, pass_all_optimizations,
	pass_cleanup_cfg_post_optimizing, pass_free_datastructures,
	pass_init_datastructures): Adjust.
	* tree-outof-ssa.c (pass_del_ssa): Adjust.
	* tree-profile.c (pass_tree_profile): Adjust.
	* tree-sra.c (pass_sra): Adjust.
	* tree-ssa-alias.c (pass_may_alias): Adjust.
	* tree-ssa-ccp.c (pass_ccp, pass_fold_builtins): Adjust.
	* tree-ssa-copyrename.c (pass_rename_ssa_copies): Adjust.
	* tree-ssa-dce.c (pass_dce, pass_cd_dce): Adjust.
	* tree-ssa-dom.c (pass_dominator): Adjust.
	* tree-ssa-dse.c (pass_dse): Adjust.
	* tree-ssa-forwprop.c (pass_forwprop): Adjust.
	* tree-ssa-if-conv.c (pass_if_conversion): Adjust.
	* tree-ssa-loop-ch.c (pass_ch): Adjust.
	* tree-ssa-loop.c (pass_loop, pass_loop_init, pass_lim,
	pass_loop_done, pass_complete_unroll, pass_iv_canon,
	pass_iv_optimize, pass_vectorize): Adjust.
	* tree-ssa-phiopt.c (pass_phiopt): Adjust.
	* tree-ssa-pre.c (pass_pre, pass_fre): Adjust.
	* tree-ssa.c (pass_redundant_phi, pass_early_warn_uninitialized,
	pass_late_warn_uninnitialized): Adjust.
	* tree-tailcall.c (pass_tail_recursion, pass_tail_calls): Adjust.

	* Makefile.in (tree-dump.o): Add new dependencies.
	* cgraph.c (cgraph_remove_node): TDF_all -> TDF_tree_all.
	* cgraphunit.c (cgraph_preserve_function_body_p, cgraph_optimize):
	Likewise.
	* toplev.c (dump_file_name): New.
	* tree-dump.c (dump_enable_all): Add LETTER parameter.
	(struct dump_file_info): Add NUM and LETTER fields.
	(dump_files): Adjust and add RTL dump files.
	(dump_register): Add NUM and LETTER fields.
	(get_dump_file_name, dump_initialized_p, enable_rtl_dump_file): New.
	(dump_begin): Use get_dump_file_name.
	(dump_switch_p_1): Adjust call to dump_enable_all.
	* tree-dump.h (dump_register): Adjust prototype.
	* tree-optimize.c (register_one_dump_file): Take dump file index.
	Support flags for RTL dumps.
	(register_dump_files): Fill in NUM field of struct dump_file_info.
	Track properties both when the gate is executed and when it is not.
	(execute_todo): Dump RTL.  Add PROPERTIES parameter.
	(execute_one_pass): Pass properties to execute_todo.  Handle VCG
	dumps of RTL.
	* tree-pass.h (dump_file_name): New.
	* tree.h (TDF_TREE, TDF_RTL, get_dump_file_name, dump_initialized_p):
	New.

	* Makefile.in (passes.o): Add new dependencies.
	* passes.c (struct dump_file_info, enum dump_file_index,
	dump_file_tbl, init_optimization_passes): Remove.
	(open_dump_file, close_dump_file): Use tree-dumping infrastructure.
	(rest_of_handle_new_regalloc, rest_of_handle_old_regalloc): Use
	dump_enabled_p.
	(finish_optimization_passes): Update finish_graph_dump_file loop.
	(enable_rtl_dump_file): Remove.
	* tree-dump.c (dump_files): Adjust and add RTL dump files.
	(enable_rtl_dump_file): Add here.
	* tree.h (enum tree_dump_index): Add RTL dump file indices.
	* doc/invoke.texi (Debugging options): Document new RTL debugging
	options.  Update.

2004-09-05  Kazu Hirata  <kazu@cs.umass.edu>

	* c-common.c, c-decl.c, combine.c, defaults.h, fold-const.c,
	gimplify.c, gthr-nks.h, hooks.c, lambda-code.c, lambda-mat.c,
	stor-layout.c, target.h, tree-cfg.c, tree-chrec.c,
	tree-if-conv.c, tree-inline.c, tree-into-ssa.c,
	tree-mudflap.c, tree-optimize.c, tree-scalar-evolution.c,
	tree-ssa-alias.c, tree-ssa-ccp.c, tree-ssa-dce.c,
	tree-ssa-pre.c, tree-vectorizer.c, tree-vectorizer.h, tree.h,
	vec.h: Fix comment formatting.

2004-09-05  Kazu Hirata  <kazu@cs.umass.edu>

	* c-common.c, cfgexpand.c, cgraphunit.c, defaults.h,
	et-forest.c, expr.c, gimplify.c, global.c, gthr-lynx.h,
	hard-reg-set.h, modulo-sched.c, optabs.c, postreload-gcse.c,
	tree-data-ref.c, tree-flow.h, tree-if-conv.c, tree-inline.c,
	tree-sra.c, tree-ssa-loop-im.c, tree-ssa-loop-ivopts.c,
	tree-ssa-loop-niter.c, tree-ssa-operands.c,
	tree-ssa-operands.h, tree-ssa-propagate.c,
	tree-ssa-propagate.h, tree-ssa-threadupdate.c, value-prof.c,
	vec.c, vec.h: Fix comment typos.  Follow spelling conventions.

2004-09-05  Diego Novillo  <dnovillo@redhat.com>

	* tree-if-conv.c (gate_tree_if_conversion): Enable only if the
	vectorizer is enabled.

2004-09-05  Andreas Jaeger  <aj@suse.de>

	* tree-if-conv.c: Spell check comments and clean up whitespace.

2004-09-05  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-ssa-loop-ivopts.c: New file.
	* Makefile.in (tree-ssa-loop-ivopts.c): Add.
	* cfgloop.h (target_avail_regs, target_res_regs, target_small_cost,
	target_pres_cost, target_spill_cost): Declare.
	* cfgloopanal.c (avail_regs, res_regs, small_cost, pres_cost,
	spill_cost): Renamed to ...
	(target_avail_regs, target_res_regs, target_small_cost,
	target_pres_cost, target_spill_cost): ... and exported.
	(init_set_costs, global_cost_for_size): Work with renamed variables.
	* common.opt (flag_ivopts): New flag.
	* expr.c (expand_expr_real_1): Handle SSA_NAME case.  Handle
	REF_ORIGINAL.
	* gimplify.c (struct gimplify_ctx): Add into_ssa field.
	(internal_get_tmp_var, gimplify_modify_expr, gimplify_expr): Support
	generating SSA form.
	(force_gimple_operand): New function.
	* timevar.def (TV_TREE_LOOP_IVOPTS): New timevar.
	* tree-cfg.c (stmt_bsi): New function.
	* params.def (PARAM_IV_CONSIDER_ALL_CANDIDATES_BOUND,
	PARAM_IV_MAX_CONSIDERED_USES): New.
	* tree-flow.h (stmt_bsi, tree_ssa_iv_optimize, split_loop_exit_edge,
	bsi_insert_on_edge_immediate_loop. standard_iv_increment_position,
	ip_end_pos, ip_normal_pos, force_gimple_operand): Declare.
	* tree-gimple.c (is_gimple_formal_tmp_var): Accept ssa names.
	* tree-nested.c (build_addr): Export.
	* tree-optimize.c (init_tree_optimization_passes): Add
	pass_iv_optimize.
	* tree-pass.h (pass_iv_optimize): Declare.
	* tree-ssa-loop-im.c (for_each_index): Handle REALPART_EXPR and
	IMAGPART_EXPR.
	* tree-ssa-loop-manip.c (create_iv): Force the base to be acceptable
	as a phi node argument.
	(split_loop_exit_edge, bsi_insert_on_edge_immediate_loop,
	ip_end_pos, ip_normal_pos, standard_iv_increment_position): New
	functions.
	* tree-ssa-loop-niter.c (zero_p, unsigned_type_for): Export.
	* tree-ssa-loop.c (tree_ssa_loop_ivopts, gate_tree_ssa_loop_ivopts,
	pass_iv_optimize): New pass.
	* tree-ssa-operands.c (get_indirect_ref_operands): Handle REF_ORIGINAL.
	* tree-ssanames.c (release_ssa_name): Allow calling with var = NULL.
	* tree.c (build_int_cst_type, cst_and_fits_in_hwi): New functions.
	* tree.h (REF_ORIGINAL): New macro.
	(build_int_cst_type, unsigned_type_for, zero_p,
	cst_and_fits_in_hwi, build_addr): Declare.
	* doc/invoke.texi (-fivopts): Document.
	(PARAM_IV_CONSIDER_ALL_CANDIDATES_BOUND,
	PARAM_IV_MAX_CONSIDERED_USES): Document.
	* doc/passes.texi: Document induction variable optimizations pass.

2004-09-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtin-attrs.def (ATTR_NOTHROW_SENTINEL_1): New.
	* builtins.def (BUILT_IN_EXECLE): Set ATTR_NOTHROW_SENTINEL_1.
	* c-common.c (c_common_attribute_table): Accept parameters to
	sentinel attribute.
	(check_function_sentinel, handle_sentinel_attribute): Likewise.
	* doc/extend.texi: Update accordingly.

2004-09-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtin-attrs.def (ATTR_SENTINEL, ATTR_SENTINEL_NOTHROW_LIST):
	New.
	* builtins.def (BUILT_IN_EXECL, BUILT_IN_EXECLP): Add `sentinel'
	attribute.
	* c-common.c (handle_sentinel_attribute, check_function_sentinel):
	New functions.
	(c_common_attribute_table): Add `sentinel' attribute.
	(check_function_arguments): Handle `sentinel' attribute.
	* doc/extend.texi: Document `sentinel' attribute.

2004-09-04  H.J. Lu  <hongjiu.lu@intel.com>

	* configure: Regenerated.

2004-09-04  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* gimplify.c (internal_get_tmp_var): Remove unused var CLASS.

	* tree.c (save_expr): No longer TREE_READONLY.

2004-09-04  Jan Hubicka  <jh@suse.cz>

	* passes.c (rest_of_clean_state): Fix merge conflict made during
	commiting the patch.

2004-09-04  Jan Hubicka  <jh@suse.cz>

	* passes.c (rest_of_clean_state): Decompose the instruction stream.

2004-09-04  Richard Sandiford  <rsandifo@redhat.com>

	* doc/md.texi (shift patterns): New anchor.  Add reference to
	TARGET_SHIFT_TRUNCATION_MASK.
	* doc/tm.texi (TARGET_SHIFT_TRUNCATION_MASK): Document.
	* target.h (shift_truncation_mask): New target hook.
	* targhook.h (default_shift_truncation_mask): Declare.
	* targhook.c (default_shift_truncation_mask): Define.
	* target-def.h (TARGET_SHIFT_TRUNCATION_MASK): Define.
	(TARGET_INITIALIZER): Include it.
	* simplify-rtx.c (simplify_binary_operation): Combine ASHIFT, ASHIFTRT
	and LSHIFTRT cases.  Truncate arg1 if SHIFT_COUNT_TRUNCATED, otherwise
	reject all out-of-range values.  Fix sign-extension code for modes
	whose width is smaller than HOST_BITS_PER_WIDE_INT.
	* optabs.c (simplify_expand_binop, force_expand_binop): New functions.
	(expand_superword_shift, expand_subword_shift): Likewise.
	(expand_doubleword_shift_condmove, expand_doubleword_shift): Likewise.
	(expand_binop): Use them to implement double-word shifts.
	* config/arm/arm.c (arm_shift_truncation_mask): New function.
	(TARGET_SHIFT_TRUNCATION_MASK): Define.

2004-09-04  Jan Hubicka  <jh@suse.cz>

	* tree.c (iterate_hash_expr): Optimize, avoid use of iterative_hash_object.
	(mix): New macro copied from hashtab.c
	(iterative_hash_hashval_t, iterative_hash_pointer,
	iterative_hash_host_wide_int): New functions based on hashtab.c
	implementation.

2004-09-04  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.md (mask): New mode attribute.
	(zero_extendsidi2): Add memory alternative.
	(*zero_extendsidi2_mem): Delete.
	(zero_extend[qh]i[sd]i2): Redefine using :GPR and :SHORT.  Use
	memory_operand in the TARGET_MIPS16 check.
	(*zero_extend[qh]i[sd]i2{,_mips16}): Name previously unnamed patterns.
	Redefine using :GPR and :SHORT.
	(zero_extendqihi2): Use memory_operand in the TARGET_MIPS16 check.

2004-09-04  Uros Bizjak  <uros@kss-loka.si>

	* builtins.c (expand_builtin_mathfn): Handle BUILT_IN_RINT{,F,L}
	using rint_optab.
	(expand_builtin): Expand BUILT_IN_RINT{,F,L} using
	expand_builtin_mathfn.
	* genopinit.c (optabs): Rename trunc_optab to btrunc_optab. Use
	btrunc?f patterns for btrunc_optab. Implement rint_optab using
	rint?f patterns.
	* optabs.c (init_optabs): Initialize rint_optab.
	* optabs.h (enum optab_index): Rename OTI_trunc to OTI_btrunc.
	Add new OTI_rint.
	(btrunc_optab): Rename macro from trunc_optab.
	(rint_optab): Define corresponding macro.

	* reg-stack.c (subst_stack_regs_pat): Handle UNSPEC_FRNDINT_FLOOR,
	UNSPEC_FRNDINT_CEIL, UNSPEC_FRNDINT_TRUNC, UNSPEC_FRNDINT_MASK_PM.

	* config/i386/i386-protos.h (emit_i387_cw_initialization):
	Change prototype. Add new int parameter.
	* config/i386/i386.c (emit_i387_cw_initialization):
	Handle new rounding modes.

	* config/i386/i386.h (enum fp_cw_mode): Delete.
	(MODE_NEEDED): Handle new rounding modes.
	(EMIT_MODE_SET): Change condition to handle new rounding modes.

	* config/i386/i386.md (UNSPEC_FRNDINT_FLOOR, UNSPEC_FRNDINT_CEIL,
	UNSPEC_FRNDINT_TRUNC, UNSPEC_FRNDINT_MASK_PM): New unspecs to
	represent different rounding modes of frndint insn.
	(type): Add frndint type.
	(i387, length, memory): Handle this type.
	(i387_cw): New attribute definition.
	(*fix_truncdi_1, fix_truncdi_nomemory, fix_truncdi_memory,
	*fix_truncsi_1, fix_truncsi_nomemory, fix_truncsi_memory,
	*fix_trunchi_1, fix_trunchi_nomemory, fix_trunchi_memory):
	Add "i387_cw" attribute defined to "trunc".
	(x86_fnstcw_1): Remove comment.
	(*frndintxf2): Rename insn definition to frndintxf2. Move
	insn definition near rint?f2 expanders.
	(rintdf2, rintsf2, rintxf2): New expanders to implement rint,
	rintf and rintl built-ins as inline x87 intrinsics.
	(frndintxf2_floor): New pattern to implement floor rounding
	mode with frndint x87 instruction.
	(floordf2, floorsf2, floorxf2): New expanders to implement floor,
	floorf and floorl built-ins as inline x87 intrinsics.
	(frndintxf2_ceil): New pattern to implement ceil rounding
	mode with frndint x87 instruction.
	(ceildf2, ceilsf2, ceilxf2): New expanders to implement ceil,
	ceilf and ceill built-ins as inline x87 intrinsics.
	(frndintxf2_trunc): New pattern to implement trunc rounding
	mode with frndint x87 instruction.
	(btruncdf2, btruncsf2, btruncxf2): New expanders to implement trunc,
	truncf and truncl built-ins as inline x87 intrinsics.
	(frndintxf2_mask_pm): New pattern to implement rounding
	mode with exceptions with frndint x87 instruction.
	(nearbyintdf2, nearbyintsf2, nearbyintxf2): New expanders to
	implement nearbyint, nearbyintf and nearbyintl built-ins as
	inline x87 intrinsics.

2004-09-04  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.md (SHORT): New mode macro.
	(size): New mode attribute.
	(extend[qh]i[sd]i2): Redefine using :GPR and :SHORT.
	(*extend[qh]i[sd]i2): New define_insn_and_split, combining previous
	*extend[qh]i[sd]i2 and *extend[qh]i[sd]i2_mem patterns.  Use only if
	!ISA_HAS_SEB_SEH.
	(*extend[qh]i[sd]i2_se[bh]): New pattern, combining previous
	*extend[qh]isi2_hw patterns and extending them to di.
	(extendqihi2): Implement as define_insn_and_split that produces
	extendqisi2 after reload.

2004-09-03  Devang Patel  <dpatel@apple.com>

	* Makefile.in (OBJS-common): Add tree-if-conv.o
	(tree-if-conv.o): New rule.
	* cfgloop.c (flow_loop_exit_edges_find): Set EDGE_LOOP_EXIT flag.
	(get_loop_body_in_bfs_order): New.
	* cfgloop.h (get_loop_body_in_bfs_order): New.
	* tree-flow.h (enum move_pos): Move here from ..
	* tree-ssa-loop-im.c (enum move_pos): here.
	(movement_possibility): Make externally visible.
	* tree-optimize.c (init_tree_optimization_passes): New entry for
	if conversion pass.
	* tree-pass.h (pass_if_conversion): New.
	* tree-ssa-operands.c (get_expr_operands): Handle COND_EXPR.
	* tree-if-conv.c: New file.
	* doc/passes.texi: Document tree if-conversion pass.
	* doc/tree-ssa.texi: Same.

2004-09-03  H.J. Lu  <hongjiu.lu@intel.com>

	PR target/14925:
	Makefile.in (LIB2ADDEHSTATIC): New.
	(LIB2ADDEHSHARED): New.
	(LIBUNWIND): New.
	(LIBUNWINDDEP): New.
	(SHLIBUNWIND_LINK): New.
	(SHLIBUNWIND_INSTALL): New.
	(libgcc.mk): Pass LIB2ADDEHSTATIC, LIB2ADDEHSHARED, LIBUNWIND,
	LIBUNWINDDEP, SHLIBUNWIND_LINK and SHLIBUNWIND_INSTALL.
	(clean): Remove libunwind*
	(stage1-start): Remove and copy stage1/libunwind*.
	(stage2-start): Remove and copy stage2/libunwind*.
	(stage3-start): Remove and copy stage3/libunwind*.
	(stage4-start): Remove and copy stage4/libunwind*.
	(stageprofile-start): Remove and copy stageprofile/libunwind*.
	(stagefeedback-start): Remove and copy stagefeedback/libunwind*.

	* config.gcc (ia64*-*-linux*): Always add t-libunwind to
	tmake_file. Add t-libunwind-elf and ia64/t-glibc-libunwind to
	tmake_file if --with-system-libunwind isn't used.

	* config/ia64/t-glibc-libunwind: New file.
	* config/t-libunwind-elf: Likewise.
	* unwind-compat.c: Likewise.
	* unwind-compat.h: Likewise.
	* unwind-dw2-fde-compat.c: Likewise.

	* config/ia64/t-glibc (LIB2ADDEH): Updated.
	* config/ia64/t-hpux (T_CFLAGS): Add -DUSE_LIBUNWIND_EXCEPTIONS.

	* config/ia64/unwind-ia64.c: Include "unwind-compat.h". Define
	aliases if needed.
	* unwind-dw2-fde-glibc.c: Likewise.
	* unwind-dw2.c: Likewise.

	* config/t-libunwind (LIB2ADDEH): Updated.
	(LIB2ADDEHSTATIC): New.
	(T_CFLAGS): Add -DUSE_LIBUNWIND_EXCEPTIONS.
	(TARGET_LIBGCC2_CFLAGS): Set to -DUSE_GAS_SYMVER.

	* configure.ac: Change --enable-libunwind-exceptions to
	--with-system-libunwind. Don't define USE_LIBUNWIND_EXCEPTIONS.
	* configure: Regenerated.
	* config.in: Updated.

	* doc/install.texi (ia64-*-linux): Require libunwind 0.98 or
	above and mention --with-system-libunwind.
	(ia64-*-hpux*): Mention --enable-libunwind-exceptions is
	removed in gcc 3.4.3 and later.

	* gcc.c (init_spec): Add -lunwind to -lgcc_s if
	USE_LIBUNWIND_EXCEPTIONS is defined.

	* mklibgcc.in: Support libunwind.

2004-09-03  H.J. Lu  <hongjiu.lu@intel.com>

	* config/i386/i386.c (x86_branch_hints): Remove m_PENT4 and
	m_NOCONA.

2004-09-03  Richard Henderson  <rth@redhat.com>

	PR middle-end/9997
	* cfgexpand.c (LOCAL_ALIGNMENT): Provide default.
	(STACK_ALIGNMENT_NEEDED, FRAME_GROWS_DOWNWARD): Likewise.
	(struct stack_var, EOC, stack_vars, stack_vars_alloc, stack_vars_num,
	stack_vars_sorted, stack_vars_conflict, stack_vars_conflict_alloc,
	frame_phase, get_decl_align_unit, add_stack_var, triangular_index,
	resize_stack_vars_conflict, add_stack_var_conflict,
	stack_var_conflict_p, add_alias_set_conflicts, stack_var_size_cmp,
	union_stack_vars, partition_stack_vars, dump_stack_var_partition,
	expand_one_stack_var_at, expand_stack_vars, expand_one_stack_var,
	expand_one_static_var, expand_one_hard_reg_var,
	expand_one_register_var, expand_one_error_var, defer_stack_allocation,
	expand_one_var, expand_used_vars_for_block, clear_tree_used): New.
	(expand_used_vars): Rewrite.
	* Makefile.in (cfgexpand.o): Update dependencies.

2004-09-04  Jan Hubicka  <jh@suse.cz>

	* cfg.c (free_edge): Use ggc_free.
	(expunge_block): Use ggc_free.
	* passes.c (rest_of_clean_state): Free after compilation.
	* tree-ssa.c (delete_tree_ssa): Free annotations; call release_defs
	* tree-ssanames.c (release_defs): Ignore non-SSA_NAME arguments.

2004-09-03  James E Wilson  <wilson@specifixinc.com>

	* tree-ssa-alias.c (may_be_aliased): Move TREE_STATIC check after
	DECL_EXTERNAL check.

2004-09-03  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* final.c (output_in_slot): New global variable.
	(final_scan_insn): Add new state '2' to the 'nopeepholes' parameter.
	Pass 2 as 'nopeepholes' to self for insns in a SEQUENCE.  Set
	'output_in_slot' before invoking output_asm_insn.
	(output_asm_insn): Add a space after the tab if 'output_in_slot'
	is set.
	* config/sparc/sparc.c (output_return): Pass 2 as 'nopeepholes' to
	final_scan_insn.
	(output_sibcall): Likewise.

2004-09-03  Jan Hubicka  <jh@suse.cz>

	* tree-ssa-operands.c (fini_ssa_operands): ggc_free unused arrays.
	* tree-ssanames (init_ssanames): Likewise.

2004-09-03  Ziemowit Laski  <zlaski@apple.com>

	* stub-objc.c (objc_is_id, objc_declare_alias, objc_declare_class,
	objc_declare_protocols, objc_start_protocol,
	objc_start_class_interface, objc_start_category_interface,
	objc_continue_interface, objc_finish_interface,
	objc_add_instance_variable, objc_set_visibility, objc_set_method_type,
	objc_start_class_implementation, objc_start_category_implementation,
	objc_continue_implementation, objc_finish_implementation,
	objc_add_method_declaration, objc_start_method_definition,
	objc_finish_method_definition, objc_build_keyword_decl,
	objc_build_method_signature, objc_build_encode_expr,
	objc_build_protocol_expr, objc_build_selector_expr,
	objc_build_message_expr, objc_build_string_object,
	objc_get_class_reference, objc_get_protocol_qualified_type,
	objc_static_init_needed_p, objc_generate_static_init_call): New stubs.

2004-09-03  James E Wilson  <wilson@specifixinc.com>

	* config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Add __mips3d.

	* config/mips/generic.md (generic_frecip_fsqrt_step): New.
	* config/mips/mips-ps-3d.md (mips_rsqrt1_<fmt>): Use frsqrt1 type.
	(mips_rsqrt2_<fmt>): Use frsqrt2 type.
	(mips_recip1_<fmt>): Use frdiv1 type.
	(mips_recip2_<fmt>): Use frdiv2 type.
	* config/mips/mips.md (type): Add frdiv1, frdiv2, frsqrt1, frsqrt2.
	* config/mips/sb1.md (ir_sb1_fpu_2pipes, ir_sb1_fpu_1pipe): Add frdiv1
	and frsqrt1.
	(ir_sb1_fpu_step2_2pipes, ir_sb1_fpu_step2_1pipe): New.

2004-09-03  Daniel Jacobowitz  <dan@debian.org>

	* reload.c (find_reloads): Swap operand_loc pointers for
	find_dummy_reload if we have swapped two operands.

2004-09-03  Hans-Peter Nilsson  <hp@axis.com>

	* config/cris/cris.h (ASM_OUTPUT_CASE_END): Use prev_nonnote_insn
	to get the tablejump-insn before the jump-table label.

2004-09-03  Ziemowit Laski  <zlaski@apple.com>

	* c-common.h (objc_is_id, objc_declare_alias, objc_declare_class,
	objc_declare_protocols, objc_build_message_expr,
	objc_finish_message_expr, objc_build_selector_expr,
	objc_build_protocol_expr, objc_build_encode_expr,
	objc_build_string_object, objc_get_protocol_qualified_type,
	objc_get_class_reference, objc_get_class_ivars,
	objc_start_class_interface, objc_start_category_interface,
	objc_start_protocol, objc_continue_interface, objc_finish_interface,
	objc_start_class_implementation, objc_start_category_implementation,
	objc_continue_implementation, objc_finish_implementation,
	objc_set_visibility, objc_set_method_type, objc_build_method_signature,
	objc_add_method_declaration, objc_start_method_definition,
	objc_finish_method_definition, objc_add_instance_variable,
	objc_build_keyword_decl, objc_build_throw_stmt, objc_begin_try_stmt,
	objc_finish_try_stmt, objc_begin_catch_clause,
	objc_finish_catch_clause, objc_build_finally_clause,
	objc_build_synchronized, objc_static_init_needed_p,
	objc_generate_static_init_call): New prototypes.

2004-09-03  Steve Ellcey  <sje@cup.hp.com>

	* config/ia64/ia64.c (ia64_function_arg): Use PARALLEL even if there
	is only one reg.
	(ia64_function_value): Ditto.

2004-09-03  Jan Beulich  <jbeulich@novell.com>

	* config.gcc: Resurrect NetWare as a target. Handle special case of
	Novell linker to be used (specified through --with-ld=) and threading
	model of either Posix (default) or NKS.
	* config/i386/i386.c (ix86_return_pops_args): Conditionalize popping
	of incoming hidden argument on KEEP_AGGREGATE_RETURN_POINTER.
	* config/i386/i386.h (KEEP_AGGREGATE_RETURN_POINTER): New.
	* config/i386/netware.c, config/i386/netware.h: New.
	* config/i386/nwld.c, config/i386/nwld.h: New.
	* config/i386/netware-crt0.c: New.
	* config/i386/netware-libgcc.c: New.
	* config/i386/netware-libgcc.def: New.
	* config/i386/netware-libgcc.exp: New.
	* config/i386/t-netware, config/i386/t-nwld: New.
	* gthr-nks.h: New.
	* doc/install.texi: Document NKS threading model.

2004-09-03  Jan Beulich  <jbeulich@novell.com>

	PR c/7054
	* defaults.h (TARGET_DEFAULT_PACK_STRUCT): Provide default.
	* tree.h (initial_max_fld_align): Declare
	* stor-layout.c (initial_max_fld_align): Define and initialize.
	(maximum_field_alignment): Initialize to the same value.
	* common.opt: Add -fpack-struct= variant of switch.
	* opts.c: Handle -fpack-struct= variant of switch.
	* c-pragma.c: Change #pragma pack() handling so that it becomes
	compatible to other compilers: accept individual 'push' argument,
	make final pop restore (command line) default, correct interaction
	of push/pop and sole specification of a new alignment (so that the
	sequence #pragma pack(push) - #pragma pack(<n>) becomes identical
	to #pragma pack(push, <n>).
	* doc/extend.texi: New node "Structure-Packing Pragmas" under
	"Pragmas", describing #pragma pack.
	* doc/invoke.texi: Document -fpack-struct=<n> variant of switch.
	* doc/tm.texi: Adjust description for HANDLE_PRAGMA_PACK_PUSH_POP.
	Document new TARGET_DEFAULT_PACK_STRUCT.

2004-09-03  Devang Patel  <dpatel@apple.com>

	* dwarf2out.c (gen_field_die). Equate decl number to die.

2004-09-03  Vladimir Makarov  <vmakarov@redhat.com>

	PR target/15832
	* global.c (modify_reg_pav): New function.
	(make_accurate_live_analysis): Call the new function.  Move pavin
	modification by earlyclobber set into the new function.

2004-09-03  Andreas Schwab  <schwab@suse.de>

	* config/m68k/m68k.c (output_andsi3): Use -1 instead of
	(HOST_WIDE_INT)0xffffffff since CONST_INT value are always sign
	extended.

2004-09-02  Jan Beulich  <jbeulich@novell.com>

	* Makefile.in (LIB2ADDEHDEP): Add unwind.h and unwind-pe.h.
	* mklibgcc.in (libgcc_dep): New, covering general dependencies, but
	not unwind code specific ones.
	(libgcc2_c_dep): Replace general dependencies with use of libgcc_dep.
	Remove unwind code specific dependencies.
	(libgcov_c_dep): Replace general dependencies with use of libgcc_dep.
	Remove gbl-ctors.h.
	Add libgcc_dep to output generated for LIB2ADD, LIB2ADDEH, and
	LIB2ADD_ST. Add LIB2ADDEHDEP to output generated for LIB2ADDEH.
	* tsystem.h: Declare memcpy and memset when inhibit_libc.

2004-09-02  Roman Zippel  <zippel@linux-m68k.org>

	* combine.c (try_combine): Delay modifying of insns which cannot
	be easily undone.

2004-09-02  Daniel Berlin  <dberlin@dberlin.org>

	* common.opt: Rename ivcanon to tree-loop-ivcanon, tree-lim to
	tree-loop-im.
	* tree-ssa-loop.c: Ditto
	* tree-ssa-loop-ivcanon.c: Ditto
	* doc/invoke.texi: Ditto.

2004-09-02  Ziemowit Laski  <zlaski@apple.com>

	* c-decl.c (store_parm_decls_newstyle): Make static.
	(store_parm_decls_from): New function.
	* c-tree.h (store_parm_decls_newstyle): Remove prototype.
	(store_parm_decls_from): New prototype.

2004-09-02  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.c (expand_block_move): Use SImode and
	HImode with STRICT_ALIGNMENT.

2004-09-02  Mark Mitchell  <mark@codesourcery.com>

	* config/arm/bpabi.h (TARGET_BPABI_CPP_BUILTINS): Define.
	(TARGET_OS_CPP_BUILTINS): Likewise.
	* config/arm/symbian.h (TARGET_OS_CPP_BUILTINS): Include
	TARGET_BPABI_CPP_BUILTINS.

2004-09-02  Roman Zippel  <zippel@linux-m68k.org>

	* combine.c (distribute_notes): Don't add REG_LABEL to jump insn.

2004-09-02  Eric Christopher  <echristo@redhat.com>

	* builtins.c (expand_builtin_cabs): Delete.
	(expand_builtin): If unable to fold the values do a normal
	library call for builtin_cab*.
	(fold_builtin_cabs): Depend on optimize and optimize_size.
	* optabs.c (expand_cmplxdiv_straight): Delete.
	(expand_cmplxdiv_wide): Ditto.
	(expand_vector_binop): Ditto.
	(expand_vector_unop): Ditto.
	(expand_complex_abs): Delete.
	(expand_binop): Remove calls to above functions.
	Remove open coding of complex arithmetic.
	(expand_unop): Ditto.
	* optabs.h: Remove prototypes.

2004-09-02  Ziemowit Laski  <zlaski@apple.com>

	* c-decl.c (store_parm_decls_newstyle): Make externally visible.
	* c-tree.h (store_parm_decls_newstyle): New prototype.

2004-09-02  Geoffrey Keating  <geoffk@apple.com>

	* config/rs6000/rs6000.c (expand_block_clear): Use vector
	instructions if available.
	(expand_block_move): Likewise.

2004-09-03  Jan Hubicka  <jh@suse.cz>

	* rtl.def (RANGE_INFO, RANGE_REG, RANGE_VAR, RANGE_LIVE): Kill.

2004-09-02  Mark Mitchell  <mark@codesourcery.com>

	* config/arm/symbian.h (LIB_SPEC): Define to empty.
	* config/arm/t-symbian (SHLIB_LC): Likewise.

2004-09-02  Paul Brook  <paul@codesourcery.com>

	* config/arm/bpabi.c (__aeabi_ul2d, __aeabi_ul2f): Remove.

2004-09-02  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.c (mips_classify_symbol, mips_fetch_insns):
	(mips_restore_gp, mips_set_return_address, mips_expand_prologue)
	(mips16_fp_args, mips_avoid_hazard): Replace abort with gcc_assert.
	(build_mips16_call_stub): Likewise.  Remove daft CALL_INSN checks.
	(mips_issue_rate): Remove unreachable abort.
	(mips_symbolic_constant_p, mips_symbolic_address_p, mips_symbol_insns)
	(mips_output_move, mips_relational_operand_ok_p, mips_arg_info)
	(mips_block_move_straight, print_operand_address, mips_file_start)
	(mips_initial_elimination_offset, mips16_fp_args, dump_constants_1)
	(mips_output_conditional_branch, mips_expand_builtin_direct)
	(mips_expand_builtin_compare): Replace abort with gcc_unreachable.
	* config/mips/mips.md (rotr<mode>3, consttable_float): Replace abort
	with gcc_assert.

2004-09-02  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.md (*lea_high64): Change split condition to
	flow2_completed.  Add a peephole2 to generate a more parallel version.

2004-09-02  Jan Hubicka  <jh@suse.cz>

	* gimplify.c (gimplify_compound_lval): Move "stack" varray out of
	GGC.

	* ggc-page.c: include tree-flow.h.
	(extra_order_size_table): Add stmt_ann_d.
	(STAT_LABEL): Rename from ....
	(LABEL): ... this one.
	* Makefile.in (ggc-page.o): Add dependency.

	* ggc-common.c (ggc_force_collect): New global variable.
	(loc_description): Add fields "freed", "collected"
	(ptr_hash): New static hash
	(ptr_hash_entry): New structure.
	(hash_ptr,eq_ptr,ggc_prune_ptr): New static functions.
	(ggc_record_overhead): Take ptr argument, record it
	(ggc_prune_overhead_list, ggc_free_overhead): New functions.
	(cmp_statistics): Imrove sorting.
	(dump_ggc_loc_statistics): Output newly collected statistics
	* ggc-page.c (ggc_alloc): Update call of ggc_record_overhead
	(ggc_free): Call ggc_free_overhead.
	(ggc_collect): Force collection when asked to be forced.
	(ggc_collect): Call ggc_prune_overhead_list.
	* ggc.h (ggc_force_collect): Declare
	(ggc_record_overhead): Update prototype.
	(ggc_free_overhead, ggc_prune_overhead_list): Declare.

2004-09-02  James E Wilson  <wilson@specifixinc.com>

	* common.opt (ftrapping-math): Default to on.

2004-09-02  Richard Earnshaw  <rearnsha@arm.com>

	* arm/predicates.md (arm_reload_memory_operand): Allow MEM.

2004-09-02  Denis Chertykov  <denisc@overta.ru>

	PR target/16884
	* config/avr/avr.md ("movmemhi"): Substitute match_dup to
	match_scratch.
	(*movmemqi_insn): Likewise.
	(*movmemhi): Likewise.
	(clrmemhi): Likewise.
	(*clrmemqi): Likewise.
	(*clrmemhi): Likewise.

2004-09-02  Paul Brook  <paul@codesourcery.com>

	* config.gcc (arm*-*-eabi* | arm*-*-symbianelf*): Set
	default_use_cxa_atexit=yes.

2004-09-02  Alan Modra  <amodra@bigpond.net.au>

	* config/rs6000/linux64.h: Don't include signal.h or sys/ucontext.h.
	(struct kernel_old_ucontext): Delete.
	(struct gcc_pt_regs, gcc_sigcontext, gcc_ucontext): New.
	(MD_FALLBACK_FRAME_STATE_FOR): Use gcc_* structs.  Only define
	when IN_LIGGCC2.

2004-09-02  Richard Sandiford  <rsandifo@redhat.com>

	* toplev.c (process_options): Fix typo.

2004-09-01  Richard Henderson  <rth@redhat.com>

	PR middle-end/17258
	* calls.c (initialize_argument_information): Tighten pass-through
	conditions for pass-by-reference.  Remove dead TARGET_EXPR code.
	Use build_fold_addr_expr.
	(emit_library_call_value_1): Use build_fold_addr_expr.  Remove code
	that assumes ADDR_EXPR allocates stack space.
	* fold-const.c (build_fold_addr_expr_with_type): Look through
	WITH_SIZE_EXPR.

2004-09-01  Dan Nicolaescu  <dann@ics.uci.edu>

	* gengenrtl.c (gendef): Use rtx_alloc, don't do PUT_CODE.
	* ggc.h (ggc_alloc_rtx): Delete.

2004-09-01  Roger Sayle  <roger@eyesopen.com>

	* expmed.c (enum alg_code): Remove long unused enumeration values.
	(struct mult_cost): New structure to hold the "score" of a synthetic
	multiply sequence, including both a rtx_cost and a latency field.
	(MULT_COST_LESS): New macro to compare mult_cost to a constant.
	(CHEAPER_MULT_COST): New macro to compare two mult_costs.
	(struct algorithm): Change type of cost field to be mult_cost.
	(synth_mult): Change type of cost_limit argument to be a
	pointer to a mult_cost.  Update all cost comparisons to use the
	new mult_cost infrastructure.  For alg_add_factor and
	alg_sub_factor operations, latency is lower than the rtx_cost.
	(choose_mult_variant): Update calls to synth_mult.  Perform
	cost comparisons using the new mult_cost infrastructure.
	(expand_mult_highpart): Use alg.cost.cost instead of alg.cost
	to optain the total rtx_cost of a synth_mult "algorithm".

2004-09-01  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/power4.md: Increase store latency to 12.
	* config/rs6000/power5.md: Same.

2004-09-01  James E Wilson  <wilson@specifixinc.com>

	PR target/14064
	* config/avr/avr.c (avr_unique_section): Delete prototype and
	definition.
	(TARGET_ASM_UNIQUE_SECTION): Delete.

2004-09-01  Ziemowit Laski  <zlaski@apple.com>

	* c-parse.in (primary): Call objc_build_message_expr(),
	objc_build_selector_expr(), objc_build_protocol_expr(),
	objc_build_encode_expr() and objc_build_string_object() instead of
	build_message_expr(), build_selector_expr(), build_protocol_expr(),
	build_encode_expr() and build_objc_string_object(), respectively.
	(component_decl_list2): Call objc_get_class_ivars() instead of
	get_class_ivars_from_name().
	(keyworddecl): Call objc_build_keyword_decl() instead of
	build_keyword_decl().
	(receiver): Call objc_get_class_reference() instead of
	get_class_reference().
	(reswords): Add blank line before @@ifobjc section, for clarity.

2004-09-01  Fariborz Jahanian <fjahanian@apple.com>

	* config/rs6000/darwin.h (ROUND_TYPE_ALIGN): Restrict alignment
	to Altivec vetors.

2004-09-01  Wu Yongwei  <adah@sh163.net>
	    Danny Smith  <dannysmith@users.sourceforge.net>

	* gthr-win32.h (__gthread_recursive_mutex_t): Use 'unsigned long',
	not Windows 'DWORD'.
	(__GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION): Correct typo.
	(__GTHREAD_RECURSIVE_MUTEX_INIT_DEFAULT): Likewise.
	(__gthr_win32_recursive_mutex_init_function): Add prototype for
	__GTHREAD_HIDE_WIN32API case..
	(__gthr_win32_recursive_mutex_lock): Likewise.
	(__gthr_win32_recursive_mutex_trylock): Likewise.
	(__gthr_win32_recursive_mutex_unlock): Likewise.
	(__gthread_recursive_mutex_init_function); Add definition for
	__GTHREAD_HIDE_WIN32API case.
	(__gthread_recursive_mutex_lock): Correct call to InterlockedDecrement.
	* config/i386/grthr-win32.c (__gthread_recursive_mutex_lock): Correct
	call to InterlockedDecrement.

2004-09-01  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* tree-tailcall.c (find_tail_calls): Also fail is statement has
	volatile operands.

	* tree-ssa.c (propagate_into_addr): Properly test for LHR.

	* doc/c-tree.texi: Document new operands for ARRAY_REF and
	COMPONENT_REF.

2004-09-01  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* Makefile.in (rtl-profile.o, value-prof.o): Add GCC_H dependency.
	* common.opt (fspeculative-prefetching): New.
	* flags.h (flag_speculative_prefetching_set): Declare.
	* gcov-io.c (gcov_write_counter, gcov_read_counter): Allow negative
	values.
	* opts.c (flag_sepculative_prefetching_set): New variable.
	(common_handle_option): Handle -fspeculative-prefetching.
	* passes.c (rest_of_compilation): Ditto.
	* profile.c (instrument_values, compute_value_histograms, branch_prob):
	Use vectors instead of arrays.
	* toplev.c (process_options): Handle -fspeculative-prefetching.
	* rtl-profile.c: Include ggc.h.
	(rtl_gen_interval_profiler, rtl_gen_pow2_profiler,
	rtl_gen_one_value_profiler_no_edge_manipulation,
	rtl_gen_one_value_profiler, rtl_gen_const_delta_profiler): Type of
	argument changed.
	* tree-profile.c (tree_gen_interval_profiler, tree_gen_pow2_profiler,
	tree_gen_one_value_profiler, tree_gen_const_delta_profiler): Type of
	argument changed.
	* value-prof.c: Include ggc.h.
	(NOPREFETCH_RANGE_MIN, NOPREFETCH_RANGE_MAX): New
	macros.
	(insn_prefetch_values_to_profile, find_mem_reference_1,
	find_mem_reference_2, find_mem_reference, gen_speculative_prefetch,
	speculative_prefetching_transform): New.
	(value_profile_transformations): Call speculative_prefetching_transform.
	(insn_values_to_profile): Call insn_prefetch_values_to_profile.
	(insn_divmod_values_to_profile, rtl_find_values_to_profile,
	tree_find_values_to_profile, find_values to profile): Use vectors
	instead of arrays.
	(free_profiled_values): Removed.
	* value-prof.h (struct histogram_value): Renamed to
	struct histogram_value_t.
	(histogram_value, histogram_values): New types.
	(find_values_to_profile): Declaration changed.
	(free_profiled_values): Removed.
	(struct profile_hooks): Type of argument of the hooks changed to
	histogram_value.
	* doc/invoke.texi (-fspeculative-prefetching): Document.

2004-09-01  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	PR rtl-optimization/16408
	* gcse.c (replace_store_insn): Fix LIBCALL/RETVAL notes.

2004-09-01  Richard Henderson  <rth@redhat.com>

	* config/ns32k/ns32k.h (TRANSFER_FROM_TRAMPOLINE): Remove.
	(TRAMPOLINE_TEMPLATE): Merge code from __trampoline inline.

2004-09-01  Jakub Jelinek  <jakub@redhat.com>

	* libgcc-std.ver (GCC_3.4.2): Export also __trampoline_setup.

2004-09-01  Mike Stump  <mrs@apple.com>

	* config/darwin.c (machopic_symbol_defined_p): In addition to
	being SYMBOL_REF_LOCAL_P, a symbol must also be
	! SYMBOL_REF_EXTERNAL_P, as only those are _always_ locally
	defined in this output file, or translation unit in the case
	of IMA not being used.
	(machopic_output_indirection): SYMBOL_REF_LOCAL_P symbols
	never need .indirect_symbol when indirecting.

2004-09-01  Jakub Jelinek  <jakub@redhat.com>

	* Makefile.in (bb-reorder.o): Add several dependencies.

2004-09-01  Jakub Jelinek  <jakub@redhat.com>

	* fold-const.c (operand_equal_p): Require equal sign also for
	FIX_{CEIL,TRUNC,FLOOR,ROUND}_EXPR.

2004-09-01  Richard Earnshaw  <rearnsha@arm.com>

	* config.gcc (--with-cpu on ARM): Preserve the canonical cpu name
	for use in configargs.h.  Put the cname in a separate variable.  Use
	that to set target_cpu_default2.

2004-09-01  J"orn Rennecke <joern.rennecke@superh.com>
	    Nick Clifton  <nickc@redhat.com>

	* config/sh/sh.md ("length"): Increase branch length when
	SH1 pic code to 18: 12 bytes of instructions, 4 byte for the
	constant, 2 byte for aligning the constant.

2004-09-01  Richard Earnshaw  <rearnsha@arm.com>

	* arm/arm-cores.def (ARM_CORE): Add new field for the real name of the
	CPU.
	(arm7tdmi-s): New CPU name.
	* arm/arm.c (ARM_CORE): Update for new format.
	* arm/arm.h (ARM_CORE): Likewise.
	* arm/gentune.sh: Update for extra field.
	* config.gcc: Likewise.
	* arm/arm-tune.md: Regenerate.
	* doc/invoke.texi: Document the real processor names for ARM cpus.

2004-09-01  Richard Earnshaw  <rearnsha@arm.com>

	* arm/ieee754-df.S (aeabi_ul2d, aeabi_l2d, floatundidf)
	(floatdidf): New functions.
	* arm/ieee754-sf.S (aeabi_ul2f, aeabi_l2f, floatundisf)
	(floatdisf): New functions.
	* t-arm-elf: Use them.

2004-09-01  Ziemowit Laski  <zlaski@apple.com>

	* c-common.h (lookup_interface): Remove prototype.
	(is_class_name): Rename to objc_is_class_name.
	(lookup_objc_ivar): Rename to objc_lookup_ivar.
	(get_current_scope): Rename to objc_get_current_scope.
	* c-decl.c (get_current_scope): Rename to objc_get_current_scope.
	* c-parse.in (parmlist_or_identifiers_1): Get rid of unused variable.
	(yylexname): Call objc_is_class_name() instead of is_class_name().
	* c-typeck.c (build_external_ref): Call objc_lookup_ivar()
	instead of lookup_objc_ivar().
	* stub-objc.c (lookup_interface): Remove stub.
	(is_class_name): Rename to objc_is_class_name.
	(lookup_objc_ivar): Rename to objc_lookup_ivar.

2004-08-31  Mark Mitchell  <mark@codesourcery.com>

	* config.gcc (arm*-*-symbianelf*): Do not include t-bpabi.
	* config/arm/lib1funcs.asm: Do not include supplemental .S files
	when compiling for Symbian.
	* config/arm/symbian.h (RENAME_LIBRARY): New macro.
	(TARGET_OS_CPP_BUILTINS): Likewise.
	* config/arm/t-symbian (LIB1ASMFUNCS): Define.

2004-08-31  Stan Shebs  <shebs@apple.com>

	* toplev.c (process_options): Ensure debug_hooks is initialized.

2004-08-31  Mark Mitchell  <mark@codesourcery.com>

	* target-def.h (TARGET_CXX): Add TARGET_CXX_EXPORT_CLASS_DATA.
	* target.h (cxx): Add export_class_data.
	* config/arm/arm.c (arm_cxx_export_class_data): New function.
	(TARGET_CXX_EXPORT_CLASS_DATA): Use it.
	* doc/tm.texi (TARGET_CXX_EXPORT_CLASS_DATA): Document it.

2004-08-31  Kaz Kojima  <kkojima@gcc.gnu.org>

	* config/sh/sh.c (output_branch): Check the insn length possibly
	in the delayed slot.

2004-08-31  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* tree-pretty-print.c (dump_generic_node, case CONVERT_EXPR): Add
	blank after ')'.
	(op_symbol, case *_{DIV,MOD}_EXPR): Say what rounding is being used.

	* c-common.c (c_alignof_expr): Use DECL_ALIGN_UNIT and TYPE_ALIGN_UNIT.
	(c_sizeof_of_alignof_type): Likewise.
	* expr.c (array_ref_element_size): Likewise.
	(highest_pow2_factor_for_target): Likewise.
	* gimplify.c (canonicalize_addr_expr): Likewise.
	(gimplify_compound_lval): Likewise.
	* stor-layout.c (finalize_record_size, finalize_type_size): Likewise.
	* tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Likewise.
	* varasm.c (assemble_variable): Likewise.
	(output_constant_def_contents): Alignments are unsigned.

2004-08-31  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
	    Jeff Law  <law@redhat.com>

	* tree-cfg.c (cfg_remove_useless_stmts_bb): Also invalidate if VAL
	gets modified.

2004-08-31  Mark Mitchell  <mark@codesourcery.com>

	* hooks.c (hook_bool_void_true): New function.
	* hooks.h (hook_bool_void_true): Declare.
	* target-def.h (TARGET_CXX): Add
	TARGET_CXX_KEY_METHOD_MAY_BE_INLINE.
	* target.h (struct cxx): Add key_method_may_be_inline.
	* config/arm/arm.c (arm_cxx_key_method_may_be_inline): New
	function.
	(TARGET_CXX_KEY_METHOD_MAY_BE_INLINE): New macro.
	* config/arm/bpabi.h: Use __THUMB_INTERWORK__ instead of
	__THUMB_INTERWORK.

2004-08-31  Denis Chertykov  <denisc@overta.ru>

	PR target/15417
	* config/avr/avr.c (avr_hard_regno_mode_ok): Enable usage of
	frame pointer register only in Pmode while reload in progress.

2004-08-31  Stephane Carrez  <stcarrez@nerim.fr>

	PR target/15334
	* config/m68hc11/m68hc11.c (m68hc11_override_options): Disable -fweb
	because it breaks the 32-bit shift patterns that rely on a match_dup.

2004-08-31  Matt Austern  <austern@apple.com>

	* config/darwin.c (darwin_make_decl_one_only): Allocate section
	names once per compilation, instead of once per symbol.

2004-08-31  Paolo Bonzini  <bonzini@gnu.org>

	* Makefile.in (build_subdir): New substitution.
	(fixinc.sh): Simplify heavily since fixincludes is already built.
	(stmp-fixinc): Depend on specs.ready.
	(install-mkheaders): Use new location of fixincludes.
	(clean): Do not descend into fixinc.
	(FORBUILD): Replace with ../$(build_subdir).
	* configure.ac (build_subdir): Substitute.
	(FORBUILD): Do not set.
	(all_outputs): Remove fixinc/Makefile.
	(default commands): Do not create links in fixinc.
	* mkfixinc.sh: New, from fixinc/mkfixinc.sh without
	the fixincludes configuration steps and substituting
	@FIXINCL@ in fixinc.in.
	* fixinc.in: New, from fixinc/fixincl.sh.

	* fixinc/*: Removed.

2004-08-31  Joseph S. Myers  <jsm@polyomino.org.uk>

	* attribs.c (strip_attrs): Remove.
	(split_specs_attrs): Move ...
	* c-decl.c: ... to here.
	* tree.h (split_specs_attrs, strip_attrs): Remove.
	* c-tree.h (split_specs_attrs): Declare.

2004-08-31  Richard Sandiford  <rsandifo@redhat.com>

	* read-rtl.c: Disable RTL checking.
	(apply_macro_to_rtx): Use XTMPL to access 'T' fields.

2004-08-31  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.md (fcond): New code macro and attribute.
	(sunordered_[sd]f, suneq_[sd]f, sunlt_[sd]f, sunle_[sd]f)
	(seq_[sd]f, slt_[sd]f, sle_[sd]f): Redefine using :SCALARF and fcond.
	(sgt_[sd]f, sge_[sd]f): Redefine using :SCALARF.

2004-08-30  Mark Mitchell  <mark@codesourcery.com>

	Revert:
	2004-08-29  Mark Mitchell  <mark@codesourcery.com>
	PR rtl-optimization/16590
	* gcse.c (pre_delete): Do not create invalid REG_EQUAL notes.

2004-08-30  Andrew Pinski  <apinski@apple.com>

	* hard-reg-set.h:
	s/HOST_BITS_PER_WIDES_FAST_INT/HOST_BITS_PER_WIDEST_FAST_INT.
	* ChangeLog: Fix previous ChangeLog entry.

	PR rtl-opt/13987
	* config.host (use_long_long_for_widest_fast_int): New, default is
	off.
	(ia64-*-hpux*): Enable use_long_long_for_widest_fast_int.
	* configure.ac: If use_long_long_for_widest_fast_int, then
	define USE_LONG_LONG_FOR_WIDEST_FAST_INT.
	* configure: Regenerate.
	* config.in: Regenerate.
	* hwint.h (HOST_WIDEST_FAST_INT, HOST_BITS_PER_WIDEST_FAST_INT):
	New: widest integer type supported efficiently in hardware for the
	host.
	* sbitmap.h (SBITMAP_ELT_BITS): Define based on
	HOST_BITS_PER_WIDEST_FAST_INT.
	(SBITMAP_ELT_TYPE): Define based on HOST_WIDEST_FAST_INT.
	* hard-reg-set.h (HARD_REG_ELT_TYPE): Define based on
	HOST_WIDEST_FAST_INT
	instead of HOST_WIDE_INT.
	(HARD_REG_SET_LONGS): Likewise.
	(UHOST_BITS_PER_WIDE_INT): Likewise.
	Change the checks for the fast cases to be based on
	HOST_BITS_PER_WIDEST_FAST_INT instead of HOST_BITS_PER_WIDE_INT.

2004-08-30  Steven Bosscher  <stevenb@suse.de>

	* cfgcleanup.c (merge_memattrs): Look at the value of MEM_SIZE,
	not the pointers.

2004-08-30  Geoffrey Keating  <geoffk@apple.com>

	PR 12738
	PR 17205
	Radar 3460526
	Radar 3775729
	* c-decl.c (grokdeclarator): Produce error for 'static' on local
	function declaration.

2004-08-30  Richard Henderson  <rth@redhat.com>

	* expr.c (array_ref_element_size): Force aligned_size back to
	sizetype.
	(component_ref_field_offset): Similarly for aligned_offset.
	* tree.c (recompute_tree_invarant_for_addr_expr): Mark raw
	low-bound, element-size, field-offset fields rather than
	computed values.

2004-08-30  Joseph S. Myers  <jsm@polyomino.org.uk>

	* c-parse.in (parmlist_or_identifiers_1): Remove unreachable and
	redundant code.

2004-08-30  Joseph S. Myers  <jsm@polyomino.org.uk>

	* c-tree.h (struct language_function): Add arg_info element.
	* c-decl.c (current_function_arg_info): New.
	(grokdeclarator, store_parm_decls): Use it instead of
	DECL_ARGUMENTS.
	(c_push_function_context, c_pop_function_context): Save and
	restore it.

2004-08-30  Richard Henderson  <rth@redhat.com>

	* c-typeck.c (build_unary_op): Don't expand ADDR_EXPR of a
	COMPONENT_REF to pointer arithmetic.
	* varasm.c (initializer_constant_valid_p): Allow "&(*c).f", for
	constant "c" as a valid constant initializer.  Allow narrowing of
	differences against the same base object, for any base object.

2004-08-30  Richard Henderson  <rth@redhat.com>

	* expr.c (expand_expr_addr_expr): New.
	(expand_expr_real_1) <case ADDR_EXPR>: Use it.

2004-08-30  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.c (MIPS_FP_CONDITIONS): New macro.
	(mips_fp_condition): New enum.
	(mips_fp_conditions): New array.
	(print_fcc_operand): Delete.
	(print_operand): Remove %V, %v and %Q.  Redefine %Z so that it prints
	the operand and comma if and only if ISA_HAS_8CC.  Add %Y.
	(builtin_description): Add "cond" field.
	(DIRECT_BUILTIN): Initialize it.
	(CMP_{SCALAR,PS,4S}_BUILTINS, MOVTF_BUILTINS): Split INSN parameter
	into INSN and CODE.  Initialize the "cond" field.
	(CMP_BUILTINS): Update accordingly.
	(mips_bdesc): Use MIPS_FP_CONDITIONS to invoke CMP_BUILTINS.
	(mips_expand_builtin_movtf, mips_expand_builtin_compare): Take the
	mips_fp_condition as argument.  Make it the final operand of the
	comparison instruction.
	(mips_expand_builtin): Update accordingly.
	* config/mips/mips.md (UNSPEC_C_*, UNSPEC_CABS_*): Delete.
	(UNSPEC_C, UNSPEC_CABS): New constants.  Shuffle others to fill
	the gaps.
	* config/mips/mips-ps-3d.md (mips_cond_move_tf_ps, bc1any[24][ft]):
	Don't use the 'Q' operand prefix; just print the operand normally.
	(mips_cabs_*, mips_c_*): Delete, replacing with...
	(mips_c_cond_{ps,4s}, mips_cabs_cond_{s,d,ps,4s}): ...these new
	patterns.  Split the 4s versions into 2 ps patterns after reload.

2004-08-30  Richard Henderson  <rth@redhat.com>

	* fold-const.c (tree_expr_nonzero_p): Use get_base_address before
	assuming an ADDR_EXPR is non-null.

2004-08-30  Jason Merrill  <jason@redhat.com>

	* gthr-posix.h, gthr-dce.h: Add #pragma weaks.

2004-08-30  Nathan Sidwell  <nathan@codesourcery.com>

	* alias.c (mems_in_disjoint_alias_sets_p, record_alias_subset,
	record_set, rtx_equal_for_memref_p, init_alias_analysis): Use
	gcc_assert and gcc_unreachable instead of abort.
	* alloc-pool.c (abort, fancy_abort): Remove.
	(create_alloc_pool, free_alloc_pool, pool_alloc, pool_free): Use
	gcc_assert or gcc_unreachable.
	* attribs.c (init_attributes, decl_attributes): Likewise.
	* bb-reorder.c (FREE, find_traces_1_round, copy_bb,
	mark_bb_for_unlikely_executed_section,
	add_labels_and_missing_jumps, fix_crossing_conditional_branches,
	fix_crossing_unconditional_branches): Likewise.
	* bitmap.c (bitmap_first_set_bit, bitmap_last_set_bit,
	bitmap_operation): Likewise.
	* bt-load.c (insn_sets_btr_p, augment_live_range,
	move_btr_def): Likewise.
	* builtins.c (c_readstr, expand_builtin_longjmp, apply_args_size,
	apply_result_size, expand_builtin_apply, expand_builtin_mathfn,
	expand_builtin_mathfn_2, expand_builtin_mathfn_3,
	builtin_memcpy_read_str, expand_movstr, expand_builtin_stpcpy,
	expand_builtin_memcmp, expand_builtin_args_info,
	std_gimplify_va_arg_expr, expand_builtin_unop,
	expand_builtin_fputs, expand_builtin_profile_func,
	expand_builtin_fork_or_exec, fold_builtin_bitop,
	fold_builtin_classify, fold_builtin_fputs): Likewise.

2004-08-30  Nathan Sidwell  <nathan@codesourcery.com>

	* gcov-io.c (GCOV_CHECK): Use gcc_assert when available.
	* gcov.c (abort): Remove undef.

	* tree.h (BINFO_PRIMARY_BASE_OF): Remove.
	(struct tree_binfo): Remove primary field.

2004-08-30  Paolo Bonzini  <bonzini@gnu.org>

	* fixinc/Makefile.in (machname.h): Remove.
	(fixincl.x): Do not pass $@ to genfixes.
	* fixinc/genfixes: Remove code to produce machname.h.
	* fixinc/fixincl.sh: Move it here instead.
	* fixinc/fixlib.c: Do not conditionalize on MN_NAME_PAT's presence,
	instead check if pz_mn_name_pat is NULL.  Make mn_get_regexps
	return a bool indicating whether pz_mn_name_pat is NULL.
	* fixinc/fixlib.h: Do not conditionalize on MN_NAME_PAT's presence.
	Declare extern C variables for the ENV_TABLE.
	* fixinc/fixfixes.c: Do not conditionalize on MN_NAME_PAT's presence,
	instead use the result of mn_get_regexps.
	* fixinc/fixtests.c: Likewise.

2004-08-30  Paolo Bonzini  <bonzini@gnu.org>

	* configure.ac: Do not run fixincludes after stage1 during
	toplevel bootstrap.
	* configure: Regenerate.

2004-08-30  Richard Earnshaw  <rearnsha@arm.com>

	* sched-deps.c (get_condition): Partially revert previous, by never
	trying to extract the condition from a condjump.

2004-08-30  Nathan Sidwell  <nathan@codesourcery.com>

	* c-common.c (c_sizeof_or_alignof_type): Use gcc_assert.
	(handle_visibility_attribute, c_determine_visibility): Likewise.
	* c-common.h (my_friendly_assert): Remove.

2004-08-30  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.md (UNSPEC_{RSQRT,RECIP}[12]_{S,D,PS}): Delete.
	(UNSPEC_{RSQRT,RECIP}[12]): New constants.
	(UNSPEC_MOVE_TF_PS): Renumber to avoid gaps.
	* config/mips/mips-ps-3d.md (*movcc_v2sf_[sd]i): Use :GPR.
	(mips_{rsqrt,recip}[12]_{s,d,ps}): Use :ANYF.

2004-08-30  Diego Novillo  <dnovillo@redhat.com>

	* tree-pretty-print.c (dump_generic_node): Handle VALUE_HANDLE
	in COMPONENT_REF nodes.

2004-08-29  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	PR c++/15378
	* c-opts.c (c_common_handle_option): <case OPT_Werror> set
	global_dc->warning_as_error_requested.
	* diagnostic.c (diagnostic_initialize): Tidy.
	* diagnostic.h (diagnostic_context::x_data): Remove
	(diagnostic_context::issue_warnings_are_errors_message): Rename
	from warnings_are_errors_message.
	(diagnostic_context::warning_as_error_requested): New.

2004-08-30  Richard Earnshaw  <rearnsha@arm.com>

	* sched-deps.c (get_condition): Fix breakage in previous patch.

2004-08-30  Paul Brook  <paul@codesourcery.com>

	* doc/install.texi: Fix broken mpfr link.

2004-08-29  David O'Brien  <obrien@FreeBSD.org>

	* config/rs6000/sysv4.h (LINK_OS_FREEBSD_SPEC): Sync '-p' handling with
	other FreeBSD platforms.

2004-08-29  Richard Earnshaw  <rearnsha@arm.com>

	* arm.h (REVERSE_CONDITION): Define.
	(REVERSIBLE_CC_MODE): All comparisons are now reversible.

2004-08-29  Richard Earnshaw  <rearnsha@arm.com>

	* flow.c (REVERSE_CONDEXEC_PREDICATES_P): Use the whole comparison, not
	just the codes, call reversed_comparison_code ().
	(ior_reg_cond): Update arguments to REVERSE_CONDEXEC_PREDICATES_P.
	(not_reg_cond): Use reversed_comparison_code.
	(and_reg_cond): Likewise.
	* ifcvt.c (cond_exec_process_if_block): Likewise.
	* doc/tm.texi (REVERSE_CONDEXEC_PREDICATES_P): Update documentation.

2004-08-29  Richard Earnshaw  <rearnsha@arm.com>

	* sched-deps.c (get_condition): Rewrite using jump support functions.
	Use reversed_comparison_code.
	(conditions_mutex_p): Use reversed_comparison_code.

2004-08-29  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.c (override_options): Disable hot/cold partitioning
	for MIPS16.

2004-08-29  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.h (mips_builtins, mips_cmp_choice): Delete.
	(mips_function_type): Move to mips.c.
	* config/mips/mips.c (mips_builtin_type): New enum.
	(builtin_description): Replace code and ftype with builtin_type
	and function_type.
	(DIRECT_BUILTIN, CMP_SCALAR_BUILTINS, CMP_PS_BUILTINS, CMP_4S_BUILTINS)
	(MOVTF_BUILTINS, CMP_BUILTINS): New macros.
	(CODE_FOR_mips_abs_ps): Define.
	(mips_bdesc): Use new macros.
	(mips_expand_builtin): Use builtin_type.  Update calls to subroutines.
	(mips_init_builtins): Use the mips_bdesc[] index as the function code.
	(mips_expand_builtin_direct): New function.
	(mips_expand_builtin_movtf): Renamed from mips_expand_ps_cond_move_
	builtin.  Replace boolean parameter with builtin_type.
	(mips_expand_compare_builtin, mips_expand_scalar_compare_builtin)
	(mips_expand_4s_compare_builtin): Delete, replacing with...
	(mips_expand_builtin_compare): ...this new function.

2004-08-29  Mark Mitchell  <mark@codesourcery.com>

	PR rtl-optimization/16590
	* gcse.c (pre_delete): Do not create invalid REG_EQUAL notes.

2004-08-29  Diego Novillo  <dnovillo@redhat.com>

	* tree-ssa-ccp.c (ccp_visit_stmt): Remove #if 0 guards.
	* tree-ssa-propagate.c: Fix documentation.

2004-08-29  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.md (*mov[sd]f_on_*): Redefine using :SCALARF.
	(mov[sd]fcc): Likewise.

2004-08-29  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.md (cmp[sd]f): Redefine using :SCALARF.

2004-08-29  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.md (divide_condition): New mode attribute.
	(div[sd]f3, *div[sd]f3): Use it.  Redefine using :SCALARF.
	(sqrt[sd]f3): Redefine using SCALARF.
	(*recip[sd]f3, *rsqrt<mode>[ab]): Likewise.  Name formerly unnamed
	patterns.

2004-08-29  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.md (ANYF, SCALARF): New mode macros.
	(loadx, storex, fmt, UNITMODE): New mode attributes.
	(add{sf,df,v2sf}3, sub{sf,df,v2sf}3): Redefine using :ANYF.
	(mul[sd]f3): Redefine using :SCALARF.
	(*mul[sd]f3): Renamed from mul[sd]f3_internal.  Use :SCALARF.
	(*mul[sd]3_r4300): Likewise mul[sd]f3_r4300.
	(*m{add,sub}{sf,df,v2sf}3): Name formerly unnamed patterns.  Use :ANYF.
	Check TARGET_FUSED_MADD for V2SF too.
	(*nm{add,sub}{sf,df,v2sf}3{,_fastmath}): Likewise, except v2sf patterns
	were already named.
	(abs{sf,df,v2sf}3, neg{sf,df,v2sf}3): Redefine using :ANYF.
	(*[sl][wd]xc1_[sd]i): Redefine using :ANYF.

2004-08-29  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.c (mips_init_builtins): Simplify.  Only create
	V2SF_type_node if it will be needed.

2004-08-29  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.h (MIPS_CMP_MOVT, MIPS_CMP_MOVF): Delete.
	* config/mips/mips.c (mips_prepare_builtin_arg): New function.
	(mips_prepare_builtin_target): New function.
	(mips_expand_builtin): Use them.  Update calls to subroutines.
	(mips_expand_ps_cond_move_builtin): Use the new functions.  Replace
	cmp_choice with a boolean argument to select between movt and movf.
	Take the comparison's icode as an argument, not the function's fcode.
	(mips_expand_compare_builtin): New function.  Rename existing function
	to mips_expand_scalar_compare_builtin.
	(mips_expand_scalar_compare_builtin, mips_expand_4s_compare_builtin)
	(mips_expand_ps_compare_builtin): Use the new functions.  Take the
	comparison's icode as an argument, not the builtin's fcode.

2004-08-29  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.c (print_operand): Remove '%Y' and '%y'.
	(mips_expand_4s_compare_builtin): Redefine CCV4 to be 0 if all
	registers are false and -1 if all registers are true.
	(mips_expand_ps_compare_builtin): Likewise CCV2.  Use subregs for
	MIPS_CMP_UPPER and MIPS_CMP_LOWER.
	* config/mips/mips.md (mips_cond_move_tf_ps): Use %Q rather than %y.
	(bc1any4t, bc1any4f): Adjust for new CCV4 interpretation.
	(bc1any2t, bc1any2f): Likewise CCV2.
	(bc1upper2t, bc1lower2t, bc1upper2f, bc1lower2f): Delete.

2004-08-29  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.md (UNSPEC_MOVE_TF_PS): New.
	* config/mips/mips-ps-3d.md (mips_cond_move_tf_ps): Express as an
	UNSPEC rather than an IF_THEN_ELSE.
	* config/mips/mips.c (mips_expand_ps_cond_move_builtin): Emit
	mips_cond_move_tf_ps by name.

2004-08-29  Chao-ying Fu  <fu@mips.com>
	    James E Wilson  <wilson@specifixinc.com>

	* config/mips/mips-modes.def (V2SF, CCV2, CCV4): New modes. Give CCV2
	8 byte size and alignment.  Give CCV4 16 byte size and alignment.
	* config/mips/mips-ps-3d.md: New file.
	* config/mips/mips.c (TARGET_VECTOR_MODE_SUPPORTED_P,
	TARGET_INIT_BUILTINS, TARGET_EXPAND_BUILTIN): Define.
	(mips_const_insns): Handle CONST_VECTOR the same as CONST_DOUBLE.
	(mips_output_move): Emit "mov.ps" for V2SFmode.
	(mips_arg_info): Add checks for VECTOR_FLOAT_TYPE_P and
	MODE_VECTOR_FLOAT.
	(override_options): Check if TARGET_MIPS3D and there was an explicit
	!TARGET_PAIRED_SINGLE_FLOAT.  Set MASK_PAIRED_SINGLE, if TARGET_MIPS3D.
	Check if TARGET_FLOAT64 and TARGET_HARD_FLOAT are both true, when
	TARGET_PAIRED_SINGLE_FLOAT is true.  Check if the ISA supports
	TARGET_PAIRED_SINGLE_FLOAT.  Allow MODE_VECTOR_FLOAT in fp registers,
	and allow CCV2 and CCV4 to occupy two and four CC registers.
	(print_fcc_operand): New function.
	(print_operand): Add %Y, %y, %V, %v, %Q for CCV2, CCV4, CC.  Modify
	%Z to call print_fcc_operand.
	(mips_function_value): Handle MODE_VECTOR_FLOAT.
	(mips_class_max_nregs): Check for ST_REGS, and handle CCmodes.
	(mips_vector_mode_supported_p): New function.
	(mips_hard_regno_nregs): Check for ST_REG_P, and handle CCmodes.
	(builtin_description): New struct.
	(mips_bdesc): New array of struct builtin_description.
	(mips_expand_builtin, mips_init_builtins,
	mips_expand_ps_cond_move_builtin, mips_expand_4s_compare_builtin,
	mips_expand_compare_builtin, mips_expand_ps_compare_builtin): New
	functions.
	* config/mips/mips.h (MASK_PAIRED_SINGLE, MASK_MIPS3D): New defines.
	(TARGET_PAIRED_SINGLE_FLOAT, TARGET_MIPS3D): New defines.
	(TARGET_CPU_CPP_BUILTINS): Add __mips_paired_single_float.
	(TARGET_SWITCHES): Added "-mpaired-single", "-mno-paired-single",
	"-mips3d", and "-mno-mips3d".
	(ASM_SPEC): Map -mips3d to -mips3d in gas.
	(EXTRA_CONSTRAINT_Y): New macro.
	(EXTRA_CONSTRAINT_STR): Renamed from EXTRA_CONSTRAINT.  Add new
	multi-letter constraint 'Y'.
	(CONSTRAINT_LEN): New macro.
	(enum mips_builtins): New for MIPS builtin functions.
	(enum mips_function_type): New for the types of MIPS builtin functions.
	(enum mips_cmp_choice): New for the MIPS comparison builtin functions.
	* config/mips/mips.md: New constants for paired single and MIPS-3D
	instructions.  Include the new mips-ps-3d.md file.
	(addv2sf3, subv2sf3, mulv2sf3, absv2sf2, negv2sf2, movv2sf,
	movv2sf_hardfloat_64bit): New named patterns.
	(madd.ps, msub.ps, nmaddv2sf, nmaddv2sf_fastmath, nmsubv2sf,
	nmsubv2sf_fastmath, ldxc1_v2sf_si, ldxc1_v2sf_di, sdxc1_v2sf_si,
	sdxc1_v2sf_di): New unnamed patterns.
	* config/mips/predicates.md (const_0_operand, const_1_operand): Add
	const_vector support.
	(const_0_or_1_operand): New predicate.
	* doc/invoke.texi (MIPS Options): Add -mpaired-single and -mips3d.

2004-08-29  Diego Novillo  <dnovillo@redhat.com>

	* Makefile.in (OBJS-common): Add tree-ssa-propagate.o
	(tree-ssa-propagate.o): New rule.
	(GTFILES): Add tree-ssa-propagate.c.
	* tree-flow.h (struct stmt_ann_d): Remove field
	in_ccp_worklist.
	* tree-ssa-propagate.c: New file.
	* tree-ssa-propagate.h: New file.
	* tree-ssa-ccp.c: Re-write to use the routines from
	tree-ssa-propagate.c.

2004-08-28  Andrew Pinski  <apinski@apple.com>

	* tree-ssa-loop.c: Remove extra include of basic-block.h.

2004-08-28  Ziemowit Laski  <zlaski@apple.com>

	* c-common.h: Update comments about ObjC/ObjC++ entry points.
	(objc_is_reserved_word): New prototype.
	(get_current_scope, objc_mark_locals_volatile): Move prototypes to
	separate section; these are call-backs.
	* c-lex.c (c_lex_with_flags): Call objc_is_reserved_word() to detect
	ObjC/ObjC++ "@" keywords.
	* c-tree.h (get_current_scope, objc_mark_locals_volatile): Remove
	prototypes; they already live in c-common.h.
	* stub-objc.c: Update copyright notice.
	(objc_is_reserved_word): New stub.

2004-08-28  Nathan Sidwell  <nathan@codesourcery.com>

	* system.h (gcc_assert): Remove __builtin_expect.  Evaluate EXPR
	even when not checking.

2004-08-27  Jason Merrill  <jason@redhat.com>

	PR c++/13684
	* gimplify.c (gimplify_cleanup_point_expr): Handle CLEANUP_EH_ONLY.
	(gimple_push_cleanup): Add eh_only parm.
	(gimplify_target_expr): Pass it.
	* c.opt (-fno-threadsafe-statics): New option.
	* c-opts.c (c_common_handle_option): Handle it.
	* c-common.h (flag_threadsafe_statics): Declare it.
	* c-common.c (flag_threadsafe_statics): Record it.
	* doc/invoke.texi: Document it.
	* tsystem.h (_GNU_SOURCE): Define.
	* gthr-posix.h (__gthread_recursive_mutex_t): New typedef.
	(__GTHREAD_RECURSIVE_MUTEX_INIT): New macro.
	(__GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION): New macro.
	(__gthread_recursive_mutex_init_function): New fn.
	(__gthread_recursive_mutex_lock): New fn.
	(__gthread_recursive_mutex_trylock): New fn.
	(__gthread_recursive_mutex_unlock): New fn.
	* gthr-solaris.h, gthr-single.h, gthr-dce.h: Likewise.
	* gthr-win32.h, gthr-vxworks.h: Likewise.
	* gthr.h: Document.

2004-08-27  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.c (rs6000_override_options): Increase
	maximum skip to 15.  Set function alignment, jump alignment, and
	loop alignment to 16 for processors that form dispatch groups.
	(rs6000_rtx_costs): outer_code is used.

2004-08-27  Nathan Sidwell  <nathan@codesourcery.com>

	* stor-layout.c (sizetype_set): Remove.
	(set_sizetype): Don't test or set it.

	* tree.h (size_int_type): Remove.
	* fold-const.c: Do not #include gt-fold-const.h.
	(size_htab_hash, size_htab_eq): Remove.
	(size_int_kind): Use build_int_cst.
	(new_const, size_htab): Remove.
	(size_int_type): Remove.
	(round_up): Use build_int_cst.
	(round_down): Likewise. Remove spurious constant build.

2004-08-27  Nathan Sidwell  <nathan@codesourcery.com>

	* configure.ac: Add ENABLE_ASSERT_CHECKING control.
	Add is_release variable, use it for --enable-werror and
	--enable-checking defaults.
	* system.h (gcc_assert, gcc_unreachable): New.
	* doc/install.texi (--enable-checking): Update.
	* configure, config.in: Rebuilt.

2004-08-26  Richard Sandiford  <rsandifo@redhat.com>

	* rtl.h (read_rtx): Change prototype.
	* read-rtl.c (read_rtx): Provide the caller with both an rtx and a
	line number.  Return true on success.
	* gensupport.c (process_include, init_md_reader_args_cb): Adjust
	callers accordingly.

2004-08-26  Richard Henderson  <rth@redhat.com>

	* c-typeck.c (build_offsetof): Remove.
	* c-tree.h (build_offsetof): Remove.
	* c-common.c (fold_offsetof_1, fold_offsetof): New.
	* c-common.h (fold_offsetof): Declare.
	* c-parse.in (offsetof_base): New.
	(offsetof_member_designator): Use it.  Build references, not just
	a tree list.
	(primary): Use fold_offsetof, not build_offsetof.

2004-08-26  Richard Henderson  <rth@redhat.com>

	* tree.c (staticp): Return the static object.
	* tree.h (staticp): Update decl.
	* langhooks.h (struct lang_hooks): Change staticp return type to tree.
	* langhooks.c (lhd_staticp): Return NULL_TREE.
	* langhooks-def.h (lhd_staticp): Update decl.
	* c-common.c (c_staticp): Return the static object.
	* c-common.h (c_staticp): Update decl.

2004-08-26  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.h (HARD_REGNO_MODE_OK): Allow complex float
	modes.

2004-08-26  Joseph S. Myers  <jsm@polyomino.org.uk>

	PR c/13801
	* c-decl.c (struct c_binding): Add type and inner_comp fields.
	(bind): Set type and inner_comp fields.
	(pop_scope): Restore type of decl to the correct type from an
	outer scope.  Give error when popping file scope for incomplete
	arrays completed incompatibly with default initialization in an
	inner scope.
	(diagnose_mismatched_decls): Handle externs with initializers at
	block scope.
	(pushdecl): Set type of external declaration at block scope based
	only on the visible declarations.  Save type when changing the
	type of a declaration.  Merge an external declaration at block
	scope with a visible static declaration at file scope.
	(implicitly_declare): Give recycled old declaration the new type
	except for incompatible declarations of built-in functions, saving
	the old type.

2004-08-26  Ziemowit Laski  <zlaski@apple.com>

	* c-parse.in (OBJC_TYPE_QUAL): New %token for ObjC use.

2004-08-26  Daniel Berlin  <dberlin@dberlin.org>

	* tree-alias-common.c (gate_pta): New function.
	(pass_build_pta): Use it.
	(pass_del_pta): Use it.
	(delete_alias_vars): Don't check flag_tree_points_to.

2004-08-26  Fariborz Jahanian  <fjahanian@apple.com>

	* config/rs6000/rs6000.h (HARD_REGNO_CALL_PART_CLOBBERED): Added
	TFmode as additional register mode cloberred by call.

2004-08-26  Fariborz Jahanian  <fjahanian@apple.com>

	* config/rs6000/rs6000.c (rs6000_libcall_value): Generate
	parallel pattern for library call returning DImode in
	mixed mode.

2004-08-26  Fariborz Jahanian  <fjahanian@apple.com>

	* config/rs6000/rs6000.c (function_arg): Generate parallel
	pattern for more split args.

2004-08-26  Fariborz Jahanian  <fjahanian@apple.com>

	* config/rs6000/rs6000.c (rs6000_split_multireg_move): Call
	either gen_movdi_di_update or gen_movdi_si_update depending on
	target mode.
	* config/rs6000/rs6000.md (movdi_update): Changed to movdi_<mode>_update,
	to generate two versions.

2004-08-26  Daniel Berlin  <dberlin@dberlin.org>

	* Makefile.in (lambda-code.o): New.
	(lambda-trans.o): Ditto.
	(TREE_DATA_REF_H): Ditto.
	(LAMBDA_H): Ditto.
	(lambda-mat.o): Use LAMBDA_H.
	(tree-data-ref.o): Ditto.
	* lambda-code.c: New file.  Lambda code generation algorithm.
	* lambda-trans.c: Ditto. Lambda transformation matrix support.
	* lambda.h: Add lambda loop structures.
	Add lambda loopnest structures.
	Add lambda body vector structure.
	Add lambda linear expression structures.
	Add prototypes for functions in new files.
	* lambda-mat.c: Include tree.h

2004-08-26  Daniel Berlin <dberlin@dberlin.org>
	    Sebastian Pop  <pop@cri.ensmp.fr>

	* tree-data-ref.h: Include lambda.h
	(free_dependence_relation): Declared here.
	(free_dependence_relations): Ditto.
	(free_data_refs): Ditto.
	* tree-data-ref.c (free_dependence_relation): New function.
	(free_dependence_relations): Ditto.
	(free_data_refs): Ditot.
	(analyze_all_data_dependences): Free datarefs and dependence_relations.
	(build_classic_dist_vector): Store in the dependence_relations the
	information. Each arc in the dependence_relations graph is labelled
	with the distance and direction vectors.
	(build_classic_dir_vector): Ditto.
	(compute_rw_wr_ww_dependences): Renamed again compute_all_dependences.
	Now computes again the whole dependence graph including read-read
	relations.
	(compute_data_dependences_for_loop): Now dependence_relations contains
	all the data, and thus it doesn't need to initialize the classic_dir
	and classic_dist vectors.
	(analyze_all_data_dependences): Adjusted for using the new interface of
	compute_data_dependences_for_loop.  Remove the statistics dump.

2004-08-26  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/xtensa.c (xtensa_ld_opcodes, xtensa_st_opcodes): Delete.
	(xtensa_expand_block_move): Update comment.
	(override_options): Remove initialization of xtensa_{ld,st}_opcodes.

2004-08-26  Richard Earnshaw  <rearnsha@arm.com>

	PR target/13506
	* toplev.c (crash_signal): If we crashed while emitting
	a user asm, then die more gracefully.

2004-08-26  Kazuhiro Inaoka  <inaoka.kazuhiro@renesas.com>

	PR target/17119.
	* config/m32r.c (gen_compare): Use reg_or_int16_operand when
	checking for a valid constant, regardless of sign.

2004-08-25  Richard Henderson  <rth@redhat.com>

	PR target/16974
	* config/alpha/alpha.md (adddi_fp_hack): Don't rely on splitting
	if the constant satisfies add_operand.

2004-08-25  Richard Henderson  <rth@redhat.com>

	PR debug/10695
	* config/alpha/alpha.c (emit_frame_store_1, emit_frame_store): New.
	(alpha_expand_prologue): Handle >32-bit frames.  Generate proper
	unwind info for >16-bit frames.

2004-08-25  Richard B. Kreckel  <richard.kreckel@framatome-anp.com>

	PR target/17171
	* config/i386/gas.h (ASM_COMMENT_START): Define to "#".

2004-08-25  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.c (alpha_cannot_force_const_mem): New.
	(TARGET_CANNOT_FORCE_CONST_MEM): New.

2004-08-25  Andrew MacLeod  <amacleod@redhat.com>

	* doc/tree-ssa.texi: Document new operand iterator.

2004-08-26  Alan Modra  <amodra@bigpond.net.au>

	PR target/16480
	* config/rs6000/rs6000.c (rs6000_split_multireg_move): Don't abort
	on "(mem (symbol_ref ..))" rtl.  Look at LO_SUM base regs as well
	as PLUS base regs.

2004-08-28  Paul Brook  <paul@codesourcery.com>

	* config/arm/symbian.h (SUBTARGET_ASM_FLOAT_SPEC): Default to
	-mfpu=vfp -march=armv5t
	* config/arm/t-symbian: Change multilib to mfloat-abi=softfp.

2004-08-25  Richard Henderson  <rth@redhat.com>

	* target-def.h (TARGET_SCALAR_MODE_SUPPORTED_P): New.
	* target.h (struct gcc_target): Add scalar_mode_supported_p.
	* targhooks.c (default_scalar_mode_supported_p): New.
	* targhooks.h (default_scalar_mode_supported_p): Declare.
	* doc/tm.texi (TARGET_SCALAR_MODE_SUPPORTED_P): Document.

	* c-common.c (handle_mode_attribute): Query scalar_mode_supported_p
	before attempting to create types.  Tidy.
	* expr.c (vector_mode_valid_p): Use scalar_mode_supported_p.

	* config/alpha/alpha.c (alpha_scalar_mode_supported_p): New.
	(TARGET_SCALAR_MODE_SUPPORTED_P): New.

2004-08-25  Richard Henderson  <rth@redhat.com>

	* config/i386/freebsd.h (SUBTARGET_OVERRIDE_OPTIONS): Don't
	set REAL_MODE_FORMAT for TFmode.

2004-08-25  Ziemowit Laski  <zlaski@apple.com>

	* c-decl.c (grokparm): New function.
	* c-tree.h (grokparm): New prototype.

2004-08-25  Andrew MacLeod  <amacleod@redhat.com>

	* tree-ssa-operands.h (struct ssa_operand_iterator_d): New.  SSA operand
	iterator controlling structure.
	(SSA_OP_USE, SSA_OP_DEF, SSA_OP_VUSE, SSA_OP_VMAYUSE, SSA_OP_VMAYDEF,
	SSA_OP_VMUSTDEF, SSA_OP_VIRTUAL_USES, SSA_OP_VIRTUAL_DEFS,
	SSA_OP_ALL_USES, SSA_OP_ALL_DEFS, SSA_OP_ALL_OPERANDS): New.  Operand
	iterator flags.
	(FOR_EACH_SSA_TREE_OPERAND): New.  Iterate over operands as trees.
	(FOR_EACH_SSA_USE_OPERAND): New.  Iterate over operands as uses.
	(FOR_EACH_SSA_DEF_OPERAND): New.  Iterate over operands as defs.
	(FOR_EACH_SSA_MAYDEF_OPERAND): New.  Iterate over V_MAY_DEFs.
	* tree-ssa-operands.c (NULL_DEF_OPERAND_P, NULL_USE_OPERAND_P): New.
	Empty operand pointers.
	* tree-flow-inline.h (op_iter_done): New.  Return true if finished.
	(op_iter_next_use): New.  Return next use_operand_p.
	(op_iter_next_def): New.  Return next def_operand_p.
	(op_iter_next_tree): New.  Return next operands as a tree.
	(op_iter_init): New.  Initialize an iterator structure.
	(op_iter_init_use): New.  Initialize structure and get the first use.
	(op_iter_init_def): New.  Initialize structure and get the first def.
	(op_iter_init_tree): New.  Initialize structure and get the first tree.
	(op_iter_next_maydef): New.  Return next V_MAY_DEF operands.
	(op_iter_init_maydef): New.  Initialize structure and get the first
	V_MAY_DEF operands.
	* tree-cfg.c (tree_duplicate_bb): Use new operand iterator.
	* tree-dfa.c (compute_immediate_uses_for_stmt,
	redirect_immediate_uses): Use new operand iterator.
	(v_may_defs_disappeared_p, v_must_defs_disappeared_p): Delete.
	(mark_new_vars_to_rename): Use new operand iterator.  Count virtual
	operands instead of using *_disappeared_p routines.
	* tree-into-ssa.c (mark_def_sites, ssa_mark_def_sites, rewrite_stmt,
	ssa_rewrite_stmt): Use new operand iterator.
	* tree-outof-ssa.c (check_replaceable, find_replaceable_in_bb,
	rewrite_trees): Use new operand iterator.
	* tree-pretty-print.c (dump_vops): Use new operand iterator.
	* tree-sra.c (mark_all_v_defs): Use new operand iterator.
	* tree-ssa-alias.c (compute_points_to_and_addr_escape,
	dump_points_to_info): Use new operand iterator.
	* tree-ssa-ccp.c (cp_lattice_meet, visit_stmt, initialize,
	replace_uses_in, replace_vuse_in, likely_value, set_rhs): Use new
	operand iterator.
	* tree-ssa-dce.c (mark_stmt_if_obviously_necessary,
	propagate_necessity): Use new operand iterator.
	* tree-ssa-dom.c (cprop_into_stmt, optimize_stmt): Use operand iterator.
	(register_definitions_for_stmt): Use new operand iterator.  Take stmt as
	a parameter instead of a stmt_ann_t.
	* tree-ssa-live.c (create_ssa_var_map, calculate_live_on_entry,
	build_tree_conflict_graph): Use new operand iterator.
	* tree-ssa-loop-im.c (determine_max_movement, single_reachable_address,
	rewrite_mem_refs): Use new operand iterator.
	* tree-ssa-loop-manip.c (find_uses_to_rename_stmt,
	check_loop_closed_ssa_use): Use new operand iterator.
	* tree-ssa.c (verify_ssa, replace_immediate_uses): Use operand iterator.
	* tree-ssanames.c (release_defs): Use new operand iterator.
	* tree-vectorizer.c (vect_create_data_ref): Use new operand iterator.

2004-08-25  Adam Nemet  <anemet@lnxw.com>

	* tlink.c (initial_cwd): New variable.
	(tlink_init): Initialize it.
	(recompile_files): Use tlink_execute() instead of system().  Don't
	duplicate verbose output of collect_execute.  Restore initial_cwd.
	Update comment before the function.

2004-08-25  Ziemowit Laski  <zlaski@apple.com>

	* c-typeck.c (build_c_cast): In ObjC, always preserve (and silently
	accept) a cast from one Objective-C pointer type to another.

2004-08-25  Paolo Carlini  <pcarlini@suse.de>

	* doc/install.texi: Document that libstdc++-v3 requires
	now automake 1.9.1.

2004-08-25  Caroline Tice  <ctice@apple.com>

	* bb-reorder.c (partition_hot_cold_basic_blocks): Add more details
	to comments at start of function.
	* cfgbuild.c (make_edges): Add more details to hot/cold partitioning
	comment.
	* cfgcleanup.c (try_simplify_condjump, try_forward_edges,
	merge_blocks_move_predecessor_nojumps,
	merge_blocks_move_successor_nojumps, merge_blocks_move,
	try_crossjump_to_edge, try_crossjump_bb): Likewise.
	* cfglayout.c (fixup_reorder_chain): Likewise.
	* cfgrtl.c (rtl_can_merge_blocks, try_redirect_by_replacing_jump,
	cfg_layout_can_merge_blocks_p): Likewise.
	* ifcvt.c (find_if_case_1, find_if_case_2): Likewise.
	* passes.c (rest_of_compilation): Update comments for calling
	optimization that partitions hot/cold basic blocks.
	* doc/invoke.texi: Update documentation of
	freorder-blocks-and-partition flag.

2004-08-25  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.md (reg): Renamed mode attribute from ccreg.
	(*mov*_on_*): Adjust accordingly.  Add an explicit MOVECC: prefix.

2004-08-25  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.md (any_shift): New code macro.
	(optab, insn): New code attributes.
	({ashl,ashr,lshr}[sd]i3): Redefine using :GPR and any_shift.
	Use the standard rather than internal patterns for the MIPS16
	double-shift optimization.
	(*{ashl,ashr,lshr}[sd]i3): New names for the non-mips16 shift patterns.
	Redefine using :GPR and any_shift.
	(*{ashl,ashr,lshr}si3_extend): Generalize ashlsi3_internal1_extend
	to cover all three shifts.
	(*{ashl,ashr,lshr}si3_mips16): New names for the mips16 SImode shifts.
	Redefine using any_shift.  Use :GPR and any_shift to combine splitters.
	(*{ashl,ashr,lshr}di3_mips16): New names for the mips16 DImode shifts.

2004-08-24  Geoffrey Keating  <geoffk@apple.com>

	* gimplify.c (lookup_tmp_var): Separate temporaries when not
	optimizing.

2004-08-25  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	PR libstdc++/17005 (fix for HP-UX 11.11)
	* config.gcc (hppa*-*-*): Move MASK_BIG_SWITCH to target_cpu_default2.
	(hppa*-*-hpux*): Consolidate hppa1.0-*-* code.  Rework handling of
	tm_file including pa-hpux1010.h or pa-hpux1111.h when appropriate.
	* config/pa/pa-hpux1010.h, config/pa/pa-hpux1111.h: New files.
	* config/pa/pa-hpux.h (TARGET_HPUX): Define.
	(LINK_SPEC): Handle march=1.0 option.
	* config/pa/pa-hpux10.h (TARGET_OS_CPP_BUILTINS): Predefine _XOPEN_UNIX
	and _XOPEN_SOURCE_EXTENDED for UNIX 95.
	(SUBTARGET_OPTIONS): New define.
	(LINK_SPEC): Handle march=1.0 option.
	(STARTFILE_SPEC): New define.
	* config/pa/pa-hpux11.h (TARGET_OS_CPP_BUILTINS): Predefine _XOPEN_UNIX
	and _XOPEN_SOURCE_EXTENDED for UNIX 95.  Additionally, predefine
	_INCLUDE__STDC_A1_SOURCE and _INCLUDE_XOPEN_SOURCE_500 for UNIX 98.
	(SUBTARGET_OPTIONS): New define.
	(LINK_SPEC): Handle march=1.0 option.
	(STARTFILE_SPEC): New define.
	* config/pa/pa.c (override_options): Add code to process -munix= option.
	* config/pa/pa.h (pa_unix_string, flag_pa_unix): Declare.
	(TARGET_HPUX, TARGET_HPUX_10_10, TARGET_HPUX_11_11): Provide default
	defines.
	(TARGET_OPTIONS): Add SUBTARGET_OPTIONS to option list.
	(SUBTARGET_OPTIONS): Provide default define.
	* config/pa/pa64-hpux.h (STANDARD_STARTFILE_PREFIX_1,
	STANDARD_STARTFILE_PREFIX_2): New defines.
	(STARTFILE_SPEC): Provide unix95.o or unix98.o startfiles as necessary.
	(ENDFILE_SPEC): Use %O.
	* doc/install.texi (hppa*-*-hpux*): Reword paragraph on -g and gas.
	Mention issue caused by changing namespace and runtime to UNIX 95/98.
	* doc/invoke.texi (HPPA options): Move misplaced text to FRV options.
	Document -munix=std option.

2004-08-25  Steven Bosscher  <stevenb@suse.de>

	* cse.c (cse_around_loop, cse_check_loop_start,
	cse_set_around_loop): Remove.
	(cse_basic_block): Remove the around_loop argument.
	(cse_end_of_basic_block): Remove the after_loop argument.
	(cse_main): Likewise.
	* rtl.h (cse_main): Update prototype.
	* passes.c (rest_of_handle_cse, rest_of_handle_cse2,
	rest_of_handle_gcse): Update cse_main calls.

2004-08-25  Nathan Sidwell  <nathan@codesourcery.com>

	* 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.

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

	* doc/install.texi: Document that libcpp does not require
	Automake any longer.  Document that Automake 1.9.1 should
	work everywhere.

2004-08-25  Zack Weinberg  <zack@codesourcery.com>

	* flags.h (enum debug_info_type): Remove DWARF_DEBUG.
	* defaults.h (PREFERRED_DEBUGGING_TYPE): Remove check for
	DWARF_DEBUGGING_INFO from choice-of-definition chain;
	restructure using C89 features (#elif, #error).
	* c-lex.c, final.c, opts.c, config/cris/cris.c, config/frv/frv.c
	* config/sh/sh.h: Remove references to DWARF_DEBUG.
	* doc/invoke.texi: Remove references to DWARF version 1;
	clarify why -gdwarf-2<n> doesn't work.

2004-08-25  Zack Weinberg  <zack@codesourcery.com>

	* basic-block.h (BB_SET_PARTITION): Clear old value first.
	* cfg.c (clear_bb_flags): Don't clear partition setting.
	* ifcvt.c (find_if_case_1): Remove ??? comment.

2004-08-25  Alan Modra  <amodra@bigpond.net.au>

	PR target/17052
	* config/rs6000/rs6000.h (machine_function): Remove sysv_varargs_p.
	* config/rs6000/sysv4.h (RS6000_VARARGS_AREA): Use
	current_function_stdarg in place of sysv_varargs_p.
	* config/rs6000/rs6000.c (setup_incoming_varargs): Don't set
	sysv_varargs_p.

2004-08-24  Richard Henderson  <rth@redhat.com>

	PR target/16298
	* config/i386/i386.c (legitimate_constant_p): Rework to not accept
	random codes within CONST.

2004-08-24  James E Wilson  <wilson@specifixinc.com>

	* Makefile.in (STAGEFEEDBACK_FLAGS_TO_PASS): Remove
	-freorder-blocks-and-partition.

2004-08-24  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	PR middle-end/17044
	* tree-ssa-threadupdate.c (redirection_data): Make static.
	(thread_block): Use ggc_alloc_cleared to allocate struct
	redirection_data.  Don't free elements in redirection_data.

2004-08-24  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/predicates.md (small_data_pattern): Match prefetches.

2004-08-24  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	PR tree-optimization/17016
	* tree-ssa-loop-niter.c (number_of_iterations_cond,
	number_of_iterations_exit): Use POINTER_TYPE_P instead
	of testing for POINTER_TYPE.

2004-08-24  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-ssa-loop-ivcanon.c: New file.
	* tree-ssa-loop-manip.c (create_iv): New function.
	* Makefile.in (tree-ssa-loop-ivcanon.o): Add.
	(tree-ssa-loop.o, tree-ssa-loop-manip.o): Add SCEV_H dependency.
	* cfgloop.c (mark_single_exit_loops): New function.
	(verify_loop_structure): Verify single-exit loops.
	* cfgloop.h (struct loop): Add single_exit field.
	(LOOPS_HAVE_MARKED_SINGLE_EXITS): New constant.
	(mark_single_exit_loops): Declare.
	(tree_num_loop_insns): Declare.
	* cfgloopmanip.c (update_single_exits_after_duplication): New function.
	(duplicate_loop_to_header_edge): Use it.
	* common.opt (fivcanon): New flag.
	* timevar.def (TV_TREE_LOOP_IVCANON, TV_COMPLETE_UNROLL): New timevars.
	* tree-cfg.c (tree_find_edge_insert_loc): Return newly created block.
	(bsi_commit_edge_inserts_1): Pass null to tree_find_edge_insert_loc.
	(bsi_insert_on_edge_immediate): New function.
	* tree-flow.h (bsi_insert_on_edge_immediate,
	canonicalize_induction_variables, tree_unroll_loops_completely,
	create_iv): Declare.
	* tree-optimize.c (init_tree_optimization_passes): Add
	pass_iv_canon and pass_complete_unroll.
	* tree-pass.h (pass_iv_canon, pass_complete_unroll): Declare.
	* tree-scalar-evolution.c (get_loop_exit_condition,
	get_exit_conditions_rec, number_of_iterations_in_loop,
	scev_initialize): Use single_exit information.
	* tree-ssa-loop-niter.c (number_of_iterations_cond): Record
	missing assumptions.
	(loop_niter_by_eval): Return number of iterations as unsigned
	int.
	* tree-ssa-loop.c (tree_ssa_loop_init): Mark single exit loops.
	(tree_ssa_loop_ivcanon, gate_tree_ssa_loop_ivcanon, pass_iv_canon,
	tree_complete_unroll, gate_tree_complete_unroll, pass_complete_unroll):
	New passes.
	(tree_ssa_loop_done): Call free_numbers_of_iterations_estimates.
	* tree-ssanames.c (make_ssa_name): Allow creating ssa name before
	the defining statement is ready.
	* tree-vectorizer.c (vect_create_iv_simple): Removed.
	(vect_create_index_for_array_ref, vect_transform_loop_bound):
	Use create_iv.
	(vect_transform_loop_bound): Use single_exit information.
	(vect_analyze_loop_form): Cleanup bogus tests.
	(vectorize_loops): Do not call flow_loop_scan.
	* tree.h (may_negate_without_overflow_p): Declare.
	* fold-const.c (may_negate_without_overflow_p): Split out from ...
	(negate_expr_p): ... this function.
	(tree_expr_nonzero_p): Handle overflowed constants correctly.
	* doc/invoke.texi (-fivcanon): Document.
	* doc/passes.texi: Document canonical induction variable creation.

2004-08-24  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.h (ISA_HAS_INT_CONDMOVE): Delete.
	* config/mips/mips.c (print_operand): Fold %B/%b handling into %T/%t,
	using the mode of the operand to decide between them.
	* config/mips/mips.md (MOVECC): New mode macro.
	(ccreg): New mode attribute.
	(*mov{si,di,sf,df}_on_{cc,si,di}): Name formerly unnamed patterns.
	Redefine using :GPR and :MOVECC.  Use %T and %t for the condition.
	(mov[sd]icc): Redefine using :GPR.

2004-08-24  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips-protos.h (mips_emit_prefetch): Delete.
	(mips_prefetch_cookie): New function.
	* config/mips/mips.c (print_operand_address): Fix handling of
	ADDRESS_CONST_INT.
	(mips_emit_prefetch): Delete.
	(mips_prefetch_cookie): New function.
	* config/mips/mips.md (prefetch): Turn into a define_insn.  Use a
	mode of QImode for the address_operand.  Use mips_prefetch_cookie
	to calculate the first "pref" operand.
	(prefetch_[sd]i, prefetch_[sd]i_address): Delete.
	(prefetch_indexed_[sd]i): Redefine using :P.  Use mips_prefetch_cookie.

2004-08-24  Richard Earnshaw  <rearnsha@arm.com>

	* arm.md: Include predicates.md.
	* predicates.md: New file.
	* arm.c (s_register_operand, arm_hard_register_operand)
	(arm_general_register_operand, f_register_operand, reg_or_int_operand)
	(arm_immediate_operand, arm_neg_immediate_operand)
	(arm_not_immediate_operand, arm_rhs_operand, arm_rhsm_operand)
	(arm_add_operand, arm_addimm_operand, arm_not_operand)
	(offsettable_memory_operand, alignable_memory_operand)
	(arm_reload_memory_operand, arm_float_rhs_operand)
	(arm_float_add_operand, vfp_compare_operand, arm_float_compare_operand)
	(index_operand, shiftable_operator, logical_binary_operator)
	(shift_operator, equality_operator, arm_comparison_operator)
	(minmax_operator, cc_register, dominant_cc_register)
	(arm_extendqisi_mem_op, power_of_two_operand, nonimmediate_di_operand)
	(di_operand, nonimmediate_soft_df_operand, soft_df_operand)
	(const_shift_operand, load_multiple_operation)
	(store_multiple_operation, multi_register_push, thumb_cmp_operand)
	(thumb_cmpneg_operand, thumb_cbrch_target_operand)
	(cirrus_register_operand, cirrus_fp_register)
	(cirrus_shift_const): Delete, replaced with equivalents in
	predicates.md.
	(shift_op): Handle ROTATE.
	* arm-protos.h: Delete declarations for above.
	* arm.h (PREDICATE_CODES, SPECIAL_MODE_PREDICATES): Delete.
	* t-arm (MD_INCLUDES): Add predicates.md.
	(s-preds): Depends on MD_INCLUDES.

2004-08-24  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.c (mips_gen_conditional_trap): Fix mode.
	* config/mips/mips.md (*conditional_trap[sd]i): Name previously unnamed
	patterns.  Redefine using :GPR.  Give the match_operator a mode.
	Use '%2' rather than '%z2' for operand 2.

2004-08-24  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.md (load_call[sd]i): Redefine using :P.  Add mode
	attribute.

2004-08-24  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.md (indirect_jump): Use force_reg.  Adjust names
	of internal patterns.
	(indirect_jump[sd]i): Renamed from indirect_jump_internal[12].
	Redefine using :P.
	(tablejump): Use expand_binop to calculate address.  Adjust names
	of internal patterns.
	(tablejump[sd]i): Renamed from tablejump_internal[12].
	Redefine using :P.
	(tablejump_mips16[12]): Delete.

2004-08-24  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.md (*seq_[sd]i, *seq_[sd]i_mips16, *sne_[sd]i)
	(*sgt_[sd]i, *sgt_[sd]i_mips16, *sge_[sd]i, *slt_[sd]i)
	(*slt_[sd]i_mips16, *sle_[sd]i, *sle_[sd]i_mips16, *sgtu_[sd]i)
	(*sgtu_[sd]i_mips16, *sge_[sd]i, *sltu_[sd]i, *sltu_[sd]i_mips16)
	(*sleu_[sd]i, *sleu_[sd]i_mips16): Redefine using :GPR.

2004-08-24  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.md (cmpsi, cmpdi): Redefine using :GPR.
	(*branch_zero[sd]i): Renamed from branch_zero{,_di}.  Redefine
	using :GPR.
	(*branch_zero[sd]i_inverted): Likewise branch_zero{,_di}_inverted.
	(*branch_equality[sd]i): Likewise branch_equality{,_di}.
	(*branch_equality[sd]i_inverted): Likewise
	branch_equality{,_di}_inverted.
	(*branch_equality[sd]i_mips16): Name formerly unnamed patterns.
	Redefine using :GPR.

2004-08-24  Zack Weinberg  <zack@codesourcery.com>

	* rtl.def: Reorganize, placing all codes used only in machine
	descriptions at the end.

	* rtl.def: Wrap MD-only codes in #ifdef GENERATOR_FILE.
	* gengtype.c: Don't include rtl.h.  Define enum rtx_code and
	rtx_name, rtx_format arrays by direct reference to rtl.def,
	first undefining GENERATOR_FILE.  Define enum insn_note and
	note_insn_name array by direct reference to insn-notes.def.
	(adjust_field_rtx_def): Remove local definition of rtx_name.
	Use symbolic names for insn notes.
	* Makefile.in (gengtype.o): Update dependencies.

2004-08-24  Zack Weinberg  <zack@codesourcery.com>

	* basic-block.h (struct basic_block_def): Reorder fields to
	eliminate interior padding.  Remove 'partition' field.
	(BB_DISABLE_SCHEDULE, BB_HOT_PARTITION, BB_COLD_PARTITION)
	(BB_UNPARTITIONED, BB_PARTITION, BB_SET_PARTITION)
	(BB_COPY_PARTITION): New macros.
	* bb-reorder.c, cfgcleanup.c, cfglayout.c, cfgrtl.c, ifcvt.c
	Replace all references to the 'partition' field of a basic
	block with new macros.

	* insn-notes.def: Delete NOTE_INSN_DISABLE_SCHED_OF_BLOCK.
	* final.c (final_scan_insn): Don't handle it.
	* modulo-sched.c: Set BB_DISABLE_SCHEDULE flag on g->bb
	instead of emitting a NOTE_INSN_DISABLE_SCHED_OF_BLOCK note.
	* sched-rgn.c (sched_is_disabled_for_current_region_p):
	Look for a BB_DISABLE_SCHEDULE flag on the block instead of a note.

2004-08-24  Nathan Sidwell  <nathan@codesourcery.com>

	* c-decl.c (c_init_decl_processing): Adjust
	build_common_tree_nodes call.
	* expmed.c (const_mult_add_overflow_p): Use
	build_distinct_type_copy.
	* stor-layout.c (early_type_list): Remove.
	(layout_type): Don't append to early_type_list.
	(initialize_sizetypes): Add signed_p argument.
	(set_sizetype): Overwrite the stub type nodes directly.
	* tree.c (copy_node_stat): Clear a type's value cache here ...
	(build_distinct_type): ... not here.
	(build_common_tree_nodes): Add signed_sizetype argument. Adjust.
	* tree.h (initialize_sizetypes): Add signed_p argument.
	(build_common_tree_nodes): Likewise.

	* objc/objc-act.c (get_static_reference): Use
	build_variant_type_copy.
	(get_protocol_reference): Likewise.
	* objc/objc-act.h (TREE_STATIC_TEMPLATE): Use TREE_PRIVATE.

2004-08-24  Richard Henderson  <rth@redhat.com>
	    Andrew Pinski  <apinski@apple.com>

	* gimplify.c (gimplify_array_ref_to_plus): Delete.
	(gimplify_addr_expr): Do not call gimplify_array_ref_to_plus
	for ARRAY_REF.

	* config/rs6000/rs6000.c (altivec_expand_builtin): Go passed
	ARRAY_REF also to get to the STRING_CST.

2004-08-24  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (arm_override_options): Update error message.
	* config/arm/arm.h (TARGET_HARD_FLOAT): Rename to
	TARGET_HARD_FLOAT_ABI.
	(TARGET_SOFT_FLOAT_ABI): Rename to TARGET_HARD_FLOAT.
	(LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P): Use TARGET_HARD_FLOAT_ABI.

2004-08-24  Kazuhiro Inaoka  <inaoka.kazuhiro@renesas.com>

	PR target/17093
	* config/m32r.md (movsi_sda): Add SI mode specification to
	UNSPEC.

2004-08-24  Nick Clifton  <nickc@redhat.com>

	* config/m32r/m32r.h (PREDICATE_CODES): Remove duplicate definition
	of seth_add3_operand.

2004-08-24  Nathan Sidwell  <nathan@codesourcery.com>

	* Makefile.in (PROTO_OBJS): Add errors.o.
	* protoize.c (fancy_abort): Remove.
	* mips-tfile.c (fancy_abort): Add parameters.

2004-08-24  Jonathan Wakely  <redi@gcc.gnu.org>

	* doc/trouble.texi (C++ misunderstandings): Fix example code.

2004-08-24  Andreas Tobler  <a.tobler@schweiz.ch>

	* Makefile.in (HOOKS_H): Add dependency on MACHMODE_H.
	(host-default.o): Add dependency on HOOKS_H.
	* config/x-linux: Likewise.
	* config/x-solaris: Likewise.
	* config/i386/x-mingw32: Likewise.
	* config/rs6000/x-darwin: Likewise.

2004-08-23  James E Wilson  <wilson@specifixinc.com>

	* reg-notes.def (REG_NOTE): In comment, change DEF_INSN_NOTE to
	DEF_REG_NOTE.

2004-08-23  Mark Mitchell  <mark@codesourcery.com>

	PR c/14492
	* dwarf2out.c (loc_descriptor_from_tree): Robustify.

2004-08-23  Diego Novillo  <dnovillo@redhat.com>

	* cfg.c (check_bb_profile): Fix typos.
	* function.c (assign_parm_is_stack_parm): Likewise.
	* tree-nested.c: Likewise.

2004-08-23  Daniel Jacobowitz  <dan@debian.org>

	* ggc-zone.c (struc alloc_chunk): Rearrange flag bits and SIZE.
	Remove TYPECODE.
	(ggc_alloc_zone_1): Mark TYPE as unused.  Don't save it in the chunk.

2004-08-23  Eric Christopher  <echristo@redhat.com>

	* defaults.h (VECTOR_MODE_SUPPORTED_P): Remove macro.
	* system.h (VECTOR_MODE_SUPPORTED_P): Poison.
	* target-def.h (TARGET_VECTOR_MODE_SUPPORTED_P): Define.
	* target.h: Ditto.
	* hooks.h: Include machmode.h.
	(hook_bool_mode_false): Declare.
	* hooks.c (hook_bool_mode_false): Define.
	* expr.c (vector_mode_valid_p): Use targetm.vector_mode_supported_p.
	* stor-layout.c (layout_type): Ditto.
	* config/alpha/alpha.c (alpha_vector_mode_supported_p): New function.
	Define to target macro.
	* config/alpha/alpha.h (VECTOR_MODE_SUPPORTED_P): Delete.
	* config/arm/arm.c: Ditto. Use.
	* config/arm/arm.h: Ditto.
	* config/arm/arm-protos.h: Ditto.
	* config/i386/i386.c: Ditto.
	* config/i386/i386.h: Ditto.
	* config/rs6000/rs6000.c: Ditto.
	* config/rs6000/rs6000.h: Ditto.
	* config/sh/sh.c: Ditto.
	* config/sh/sh.h: Ditto.
	* config/sh/sh-protos.h: Ditto.
	* config/sh/sh.md: Use.
	* doc/tm.texi: Move documentation for VECTOR_MODE_SUPPORTED_P
	to TARGET_VECTOR_MODE_SUPPORTED_P.

2004-08-23  Nathan Sidwell  <nathan@codesourcery.com>

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

	* tree.h (enum size_type_kind): Remove USIZETYPE, UBITSIZETYPE.
	(usize_type, ubitsizetype): Remove.
	* stor-layout.c (set_sizetype): Don't initialize usizetype,
	ubitsizetype.
	* fold-const.c (size_diffop): TYPE can never be ubitsizetype.

	* tree.h (build_distinct_type_copy): New.
	(build_type_copy): ... here.  Rename to ...
	(build_variant_type_copy): ... here.
	* tree.c (build_qualified_type): Rename build_type_copy call.
	(build_distinct_type_copy): New, broken out of ...
	(build_type_copy): ... here.  Rename to ...
	(build_variant_type_copy): ... here.  Use
	build_distinct_type_copy.
	(build_common_tree_nodes_2): Rename build_type_copy call.
	* c-common.c (c_common_nodes_and_builtins): Rename build_type_copy
	call.
	(handle_packed_attribute, handle_unused_attribute,
	handle_transparanet_union_attribute, handle_aligned_attribute,
	handle_deprecated_attribute): Likewise.
	* c-decl.c (clone_underlying_type, store_parm_decls_oldstyle):
	Likewise.
	* config/arm/arm.c (arm_handle_isr_attribyte): Likewise.
	* config/rs6000/rs6000.c (rs6000_init_builtins): Use
	build_distinct_type_copy.

2004-08-23  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.md (mfhilo_[sd]i): Redefine using :GPR.  Add mode
	attribute.

2004-08-23  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.md (length): Don't use mips_fetch_insns for indexed
	loads and stores.
	(*lwxc1_<mode>, *ldxc1_<mode>, *swxc1_<mode>, *sdxc1_<mode>): Name
	formerly unnamed patterns.  Redefine using :P for the address.  Remove
	explicit length attributes.

2004-08-23  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-ssa-loop-im.c (fem_single_reachable_address, for_each_memref):
	New functions.
	(single_reachable_address): Use them.
	(schedule_sm): Add dump.
	(is_call_clobbered_ref): New function.
	(determine_lsm_reg): Check whether the reference is call clobbered.
	Only work for gimple_reg_type values.

2004-08-23  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.md (*mov<mode>_ra): Name previously unnamed MIPS16
	$31 store insns.  Redefine using :GPR.

2004-08-23  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.md (P): New mode macro.
	(*xgot_hi[sd]i, *xgot_lo[sd]i, *got_disp[sd]i, *got_page[sd]i)
	(*load_got[sd]i, *low[sd]i, *low[sd]i_mips16): Redefine using :P.
	Add mode attributes.

2004-08-23  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.md (UNSPEC_[LS][WD][LR]): Delete in favor of...
	(UNSPEC_{LOAD,STORE}_{LEFT,RIGHT}): ...these new constants.  Shuffle
	later constants to cover the gap.
	(load, store): New mode attributes.
	(mov_l[wd]l, mov_l[wd]r, mov_s[wd]l, mov_s[wd]r): Redefine using :GPR.
	Use new unspec constants.

2004-08-23  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.md (one_cmpl[sd]i2): Redefine using :GPR.
	(and[sd]3, ior[sd]i3, xor[sd]i3): Likewise.  Change 32-bit patterns
	to use register_operand rather than uns_arith_operand as the predicate
	for operand 1.  Remove redundant MIPS16 force_reg() for operand 1.
	(*and[sd]i3, *ior[sd]i3, *xor[sd]i3): Name formerly unnamed patterns.
	Redefine using :GPR.  Make same predicate change here.  Extend the
	commutativity of operands 1 and 2 from the SImode version to the
	DImode one.
	(*and[sd]i3_mips16, *ior[sd]i3_mips16, *xor[sd]i3_mips16): Likewise,
	but with no predicate changes.
	(*nor[sd]i3): Redefine using :GPR.

2004-08-23  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-ssa-operands.c (get_call_expr_operands): Add VUSE operands for
	noreturn functions.

2004-08-23  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.h (ISA_HAS_DCLZ_DCLO): Delete.
	* config/mips/mips.md (abs[sd]i2): Redefine using :GPR.  Only use
	branch-likely insns for absdi2 if GENERATE_BRANCHLIKELY.  Use "%."
	rather than "%z2" (with a fake const0_rtx for operand 2).
	(ffs[sd]i2): Redefine using :GPR.
	(clz[sd]i2): Likewise.  Use ISA_HAS_CLO_CLZ for the 64-bit case.

2004-08-23  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.md ({,u}divmod[sd]i4): Redefine using :GPR.

2004-08-23  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.md (any_extend): New code macro.
	(u, su): New code attributes.
	({,u}mulsidi3, {,u}mulsidi3_32bit_internal, {,u}mulsidi3_32bit_r4000)
	({u,s}mulsi3_highpart, {u,s}mulsi3_highpart_internal)
	({u,s}mulsi3_highpart_mulhi_internal, {s,u}muldi3_highpart)
	(*{s,u}mul_acc_di): Redefine using any_extend.
	(*{,u}muls_di, *{s,u}msac_di): Likewise.  Change names of patterns
	to reflect real insn names.
	(*mulsidi3_64bit, *mulsidi3_64bit_parts): Replace use of match_operator
	with an any_extend template.
	({u,s}mulsi3_highpart_neg_mulhi_internal): Redefine using any_extend.
	Add '*' to name.

2004-08-23  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.h (GENERATE_MULT3_SI): Check TARGET_MAD.
	* config/mips/mips.md (mul[sd]i3, mul[sd]i3_internal)
	(mul[sd]i3_r4000): Redefine using :GPR.
	(mulsi3_mult3): Don't check TARGET_MAD separately.
	(muldi3_mult3): Moved after mulsi_mult3.

2004-08-23  Richard Sandiford  <rsandifo@redhat.com>

	* config.gcc (mips-*-*): Remove definitions of MASK_GAS and
	OBJECT_FORMAT_ELF.  Set MASK_SPLIT_ADDR by default if using GNU ld.
	* config/mips/mips.h (MASK_GAS): Delete.  Shuffle later masks down.
	(TARGET_GAS, TARGET_MIPS_AS): Delete.
	(TARGET_GPWORD): Define to true for n32 on IRIX.
	(TARGET_SWITCHES): Remove -mmips-as.  Turn -mgas into a no-op.
	(MIPS_AS_ASM_SPEC, SUBTARGET_MIPS_AS_ASM_SPEC): Delete.
	(GAS_ASM_SPEC): Delete, folding into ASM_SPEC.
	(ASM_ABI_DEFAULT_SPEC, TARGET_ASM_SPEC): Delete.
	(MDEBUG_ASM_SPEC): Delete, folding into...
	(SUBTARGET_ASM_DEBUGGING_SPEC): ...here.
	(ASM_SPEC): Inline old GAS_ASM_SPEC.  Use GNU names for ABI switches.
	(EXTRA_SPECS): Remove mips_as_asm_spec, gas_asm_spec, target_asm_spec,
	subtarget_mips_as_asm_spec, mdebug_asm_spec.  Use MULTILIB_ABI_DEFAULT
	to define asm_abi_default_spec.
	(ASM_STABS_OP, ASM_STABN_OP, ASM_STABD_OP): Delete.
	(TARGET_ASM_SELECT_SECTION): Delete.
	* config/mips/mips.c (MIPS_MAX_FIRST_STACK_STEP): Define to 0x7ff0
	for non-mips16 code, removing previous workaround for SGI assemblers.
	(TARGET_ASM_INTEGER, mips_assemble_integer): Delete.
	(TARGET_ASM_ALIGNED_DI_OP): Define this instead.
	(override_options): Remove !TARGET_GAS and !have_named_sections code.
	(print_operand): Fold TARGET_GAS conditionals into asm strings.
	(mips_output_filename): Remove !TARGET_GAS code.  Replace use of
	ASM_STABS_OP and ASM_STABN_OP.
	(mips_file_start): Remove TARGET_MIPS_AS/TARGET_GAS checks.
	(mips_output_aligned_decl_common): Remove mention of SGI o32 assembler.
	(mips_output_function_prologue): Remove !TARGET_GAS code.
	(mips_select_rtx_section): Remove !have_named_sections code.
	(mips_select_section): Delete.
	* config/mips/mips.md (trap): Remove !TARGET_GAS check.
	* config/mips/linux.h (TARGET_DEFAULT): Remove use of MASK_GAS.
	* config/mips/sdb.h (PUT_SDB_DEF, PUT_SDB_PLAIN_DEF): Delete.
	(PUT_SDB_BLOCK_START, PUT_SDB_BLOCK_END): Fold TARGET_GAS conditional.
	* config/mips/vxworks.h (ASM_SPEC): As for mips.h.
	* config/mips/windiss.h (ASM_SPEC): Likewise.

2004-08-23  Richard Sandiford  <rsandifo@redhat.com>

	* read-rtl.c (map_value, mapping, macro_group): New structures.
	(BELLWETHER_CODE): New macro.
	(modes, codes, bellwether_codes): New variables.
	(find_mode, uses_mode_macro_p, apply_mode_macro, find_code)
	(uses_code_macro_p, apply_code_macro, apply_macro_to_string)
	(apply_macro_to_rtx, uses_macro_p, add_condition_to_string)
	(add_condition_to_rtx, apply_macro_traverse, add_mapping)
	(add_map_value, initialize_macros): New functions.
	(def_hash, def_hash_eq_p): Generalize to anything that points to,
	or starts with, a char * field.
	(find_macro, read_mapping, check_code_macro): New functions.
	(read_rtx_1): New, split out from read_rtx.  Handle the new
	define_{mode,code}_{macro,attr} constructs.  Use find_macro
	to parse the name of a code or mode.  Use BELLWETHER_CODE to
	extract the format and to choose a suitable code for rtx_alloc.
	Modify recursive invocations to use read_rtx_1.
	(read_rtx): Call initialize_macros.  Apply code and mode macros
	to the rtx returned by read_rtx_1.  Cache everything after the
	first macro expansion for subsequent read_rtx calls.
	* doc/md.texi: Document new .md constructs.
	* config/mips/mips.md (GPR): New mode macro.
	(d, si8_di5): New mode attributes.
	(any_cond): New code macro.
	(add[sd]i3): Redefine using :GPR.
	(*add[sd]i3): Likewise, renaming from add[sd]i3_internal.
	(*add[sd]i3_sp[12], *add<mode>3_mips16): Redefine using :GPR, naming
	previously unnamed MIPS16 patterns.
	(*addsi3_extended): Renamed from addsi3_internal_2.  Fix overly long
	lines.  Don't match (plus (const_int 0) ...).
	(*addsi3_extended_mips16): Name previously unnamed MIPS16 pattern.
	Use a define_split to generate the addition.
	(sub[sd]i3): Redefine using :GPR.  Turn subsi3 into a define_insn.
	(subsi3_internal): Delete.
	(*subsi3_extended): Renamed from subsi3_internal_2.
	(bunordered, bordered, bunlt, bunge, buneq, bltgt, bunle, bungt)
	(beq, bne, bgt, bge, blt, ble, bgtu, bgeu, bltu, bleu): Redefine
	using an any_cond template.

2004-08-23  Richard Sandiford  <rsandifo@redhat.com>

	* read-rtl.c (read_rtx): Tidy use of format_ptr.

2004-08-23  Richard Sandiford  <rsandifo@redhat.com>

	* read-rtl.c (string_obstack): New file-scope variable.
	(read_string, read_quoted_string, read_braced_string)
	(read_escape): Remove obstack parameter and use string_obstack instead.
	(read_rtx): Remove function-local rtl_obstack and initialize
	string_obstack instead.  Update call to read_string.

2004-08-22  Andrew Pinski  <apinski@apple.com>

	PR c/15262
	* c-typeck.c (build_unary_op): Use &a.b if the foldded lowered
	expression is not constant.
	(c_finish_return): Do not go through INDIRECT_REF when looking
	for the inner expression of an ADDR_EXPR for warning about.

2004-08-22  Richard Henderson  <rth@redhat.com>

	PR 17075
	* cfgexpand.c (expand_gimple_tailcall): Detect when we can both
	create new blocks and fall through.
	(expand_gimple_basic_block): Update to match.

2004-08-22  Ulrich Weigand  <uweigand@de.ibm.com>

	* reload.c (find_reloads_address): Make return value tri-state.
	Return -1 if LEGITIMIZE_RELOAD_ADDRESS succeeded.
	(find_reloads): Assume that reloaded addresses match 'o' or
	EXTRA_MEMORY_CONSTRAINT constraints only if find_reloads_address
	returned 1 (not -1).  Omit optional reloads for address operands
	only if find_reloads_address returned 1 (not -1).

	* config/s390/s390.c (legitimize_reload_address): New function.
	* config/s390/s390-protos.h (legitimize_reload_address): Declare.
	* config/s390/s390.h (LEGITIMIZE_RELOAD_ADDRESS): Define.  Call
	legitimize_reload_address.

2004-08-22  Richard Hendersion  <rth@redhat.com>

	* tree.h (SAVE_EXPR_RESOLVED_P): New.
	* gimplify.c (gimplify_save_expr): Use it.
	* expr.c (expand_expr_real_1): Likewise.  Also set DECL_IGNORED_P
	on the temporary variable.

2004-08-22  Andrew Pinski  <pinskia@physics.uc.edu>

	* fold-const.c (rtl_expr_nonnegative_p): Delete.
	* tree.h (rtl_expr_nonnegative_p): Remove.

2004-08-22  Steven Bosscher  <stevenb@suse.de>

	* config/i386/ppro.md (ppro_complex_insn): Add missing check
	for cpu==pentiumpro.

	* combine.c (struct reg_stat): Fix comment typo.

2004-08-22  Joseph S. Myers  <jsm@polyomino.org.uk>

	* c-tree.h (c_sizeof_nowarn): Remove.

2004-08-21  Joseph S. Myers  <jsm@polyomino.org.uk>

	* c-decl.c (set_array_declarator_type): Rename to
	set_array_declarator_inner.
	(build_c_parm, build_attrs_declarator, build_function_declarator):
	New functions.
	(make_pointer_declarator): Call build_attrs_declarator.
	* c-tree.h (set_array_declarator_type): Rename to
	set_array_declarator_inner.
	(build_c_parm, build_attrs_declarator, build_function_declarator):
	New prototypes.
	* c-parse.in (after_type_declarator,
	parm_declarator_starttypename, parm_declarator_nostarttypename,
	notype_declarator, absdcl_maybe_attribute, direct_absdcl1, parm,
	firstparm): Use these functions

2004-08-21  Joseph S. Myers  <jsm@polyomino.org.uk>

	* c-decl.c (build_array_declarator, set_array_declarator_type,
	start_decl, grokdeclarator, grokparms): Change boolean parameters
	to type bool.
	* c-tree.h (build_array_declarator, set_array_declarator_type,
	start_decl): Update prototypes.
	* c-decl.c, c-parse.in: All callers changed.

2004-08-21  Mike Stump  <mrs@apple.com>

	* config/rs6000/darwin.h (SUBTARGET_OPTIONS): Move from here, to...
	(darwin_fix_and_continue): Likewise.
	(darwin_fix_and_continue_switch): Likewise.
	* config/darwin.h (SUBTARGET_OPTIONS): ...here, to fix -mone-byte-bool.
	(darwin_fix_and_continue): Likewise.
	(darwin_fix_and_continue_switch): Likewise.

2004-08-21  Danny Smith  <dannysmith@users.sourceforge.net>

	PR  c++/16030
	* config/i386/winnt/c (gen_stdcall_suffix, gen_fastcall_suffix):
	Remove, merging into ...
	(gen_stdcall_or_fastcall_suffix): New function, returning tree
	rather than const char*, and accepting additional parameter.
	Don't add suffix to '*'-prefixed symbols or variadic functions.
	(i386_pe_encode_section_info): Adjust for call to new function.
	Call change_decl_assembler_name.

2004-08-20  Mike Stump  <mrs@apple.com>

	* config/darwin.c (machopic_indirect_data_reference): Mark
	stubs as defined.
	* config/386/386.c (darwin_local_data_pic): Add.
	(legitimate_constant_p): Reorder so that PLUS handling runs
	before darwin_local_data_pic to match the ordering in
	legitimate_pic_address_disp_p and so that MINUS runs after
	darwin_local_data_pic as otherwise the darwin_local_data_pic
	logic can be skipped, which would be very bad.
	(legitimate_pic_address_disp_p): Move from from here to
	darwin_local_data_pic so it can be reused.

2004-08-21  Alan Modra  <amodra@bigpond.net.au>

	* config/rs6000/linux64.h (DOT_SYMBOLS): Define.
	(CRT_CALL_STATIC_FUNCTION): Define !DOT_SYMBOLS version.
	(ASM_DECLARE_FUNCTION_SIZE): Modify for !DOT_SYMBOLS.
	(ASM_OUTPUT_SOURCE_LINE, DBX_OUTPUT_BRAC, DBX_OUTPUT_NFUN): Likewise.
	(RS6000_ABI_NAME): Define as "linux".
	(SUBSUBTARGET_OVERRIDE_OPTIONS): Set dot_symbols.
	* config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Select
	ABI_AIX when rs6000_abi_name is "linux" and TARGET_64BIT.
	* config/rs6000/rs6000-protos.h (rs6000_output_function_entry): Decl.
	* config/rs6000/rs6000.c (dot_symbols): New global var.
	(rs6000_output_function_entry): New function, modified for
	!DOT_SYMBOLS..
	(print_operand <case 'z'>): ..extracted from here.
	(rs6000_assemble_visibility): Modify for !DOT_SYMBOLS.
	(rs6000_output_function_epilogue): Likewise.
	(rs6000_elf_declare_function_name): Likewise.
	* config/rs6000/rs6000.h (DOT_SYMBOLS): Define.
	(ASM_WEAKEN_DECL, ASM_OUTPUT_DEF_FROM_DECLS): Modify for !DOT_SYMBOLS.
	* configure.ac (HAVE_LD_NO_DOT_SYMS): Add new AC_DEFINE.
	* configure: Regenerate.
	* config.in: Regenerate.

2004-08-20  Mark Mitchell  <mark@codesourcery.com>

	* reload.c (find_reloads_address): Fix thinko in previous change.

	* reload.c (find_reloads_address): Reload the sum of a LO_SUM and
	a CONST_INT.

2004-08-20  Jakub Jelinek  <jakub@redhat.com>

	PR rtl-optimization/17099
	* combine.c (force_to_mode): Check if inner_mask has any bits set
	outside of GET_MODE (x) instead of op_mode.

2004-08-20  Mark Mitchell  <mark@codesourcery.com>

	* config.gcc (arm*-*-symbianelf*): Add t-symbian Makefile
	fragment.
	* config/arm/bpabi.h (RENAME_LIBRARY_SET): Fix typo.
	(SUBTARGET_EXTRA_ASM_SPEC): Pass -meabi=3 to the assembler.
	* config/arm/symbian.h (SUBTARGET_CPU_DEFAULT): Assume ARMV5
	architecture.
	(SUBTARGET_ASM_FLOAT_SPEC): Default to -mfpu=vfp for hard-float
	configurations.
	* config/arm/t-symbian: New file.

2004-08-20  Andrew Pinski  <apinski@apple.com>

	* regrename.c (kill_value_regno): ANSIfy.

2004-08-20  Dale Johannesen  <dalej@apple.com>

	* config/rs6000/rs6000.c (rs6000_rtx_costs): Improve DIV/MOD.

2004-08-20  Daniel Jacobowitz  <dan@debian.org>

	* regrename.c (kill_value_one_regno): Renamed from kill_value_regno.
	(kill_value_regno): New function, derived from kill_value.
	(kill_value): Update.
	(copyprop_hardreg_forward_1): Update call to kill_value_regno.

2004-08-20  Daniel Berlin  <dberlin@dberlin.org>

	Fix PR tree-optimization/17111
	* tree-ssa-pre.c (create_value_expr_from): Don't change the types
	of non-value_handles.
	(bitmap_set_contains): All constants are in every set.

2004-08-20  Nathan Sidwell  <nathan@codesourcery.com>

	* fold-const.c (round_up, round_down): Use build_int_cst.
	Optimize common case.

2004-08-20  Zack Weinberg  <zack@codesourcery.com>
	    John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* config/pa/pa-protos.h (readonly_data, one_only_readonly_data_section,
	one_only_data_section): Rename to som_readonly_data_section,
	som_one_only_readonly_data_section and som_one_only_data_section.
	* config/pa/pa.c (ONE_ONLY_TEXT_SECTION_ASM_OP,
	NEW_TEXT_SECTION_ASM_OP, DEFAULT_TEXT_SECTION_ASM_OP): Delete
	conditional defines.
	(som_text_section_asm_op): Replace ONE_ONLY_TEXT_SECTION_ASM_OP,
	NEW_TEXT_SECTION_ASM_OP and DEFAULT_TEXT_SECTION_ASM_OP with actual
	string values.
	(pa_select_section): Use renamed section functions.
	* config/pa/pa.h (EXTRA_SECTIONS, EXTRA_SECTION_FUNCTIONS,
	SOM_READONLY_DATA_SECTION_FUNCTION,
	SOM_ONE_ONLY_READONLY_DATA_SECTION_FUNCTION,
	SOM_ONE_ONLY_DATA_SECTION_FUNCTION, FORGET_SECTION_FUNCTION):
	Define here ...
	* config/pa/som.h: ... not here.
	(DEFAULT_TEXT_SECTION_ASM_OP, NEW_TEXT_SECTION_ASM_OP,
	ONE_ONLY_TEXT_SECTION_ASM_OP, READONLY_DATA_ASM_OP,
	ONE_ONLY_READONLY_DATA_SECTION_ASM_OP,
	ONE_ONLY_DATA_SECTION_ASM_OP): Delete.
	(READONLY_DATA_SECTION): Use som_readonly_data_section.

2004-08-20  Nathan Sidwell  <nathan@codesourcery.com>

	* fold-const.c (int_const_binop): Don't generate non-overflowing
	size-types specially.
	(fold_convert_const): Likewise.

	* stor-layout.c (initialize_sizetypes): Set SIZETYPE earlier,
	clear cache on copied sizetype.

2004-08-20  Ben Elliston  <bje@au.ibm.com>

	* configure.ac: Don't escape apostrophe in --enable-coverage help.
	* configure: Regenerate.

2004-08-20  Danny Smith  <dannysmith@users.sourceforge.net>

	PR 5620
	* gcc.c (struct stat input_stat): Don't define if
	HOST_LACKS_INODE_NUMBERS
	(do_spec_1): If HOST_LACKS_INODE_NUMBERS, use lrealpath rather
	than stat to determine if temp file is same as input file.
	* doc/hostconfig.texi: Document HOST_LACKS_INODE_NUMBERS.
	* config/i386/xm-mingw32.h: Define HOST_LACKS_INODE_NUMBERS

2004-08-20  Richard Sandiford  <rsandifo@redhat.com>

	* configure.ac (mips*-*-*): Print an error if not using GAS.
	* configure: Regenerated.
	* doc/install.texi: Remove irix5 bullet from --with-gnu-as.  Remove
	comments about buggy MIPSpro assemblers.
	* config.gcc (mips-sgi-irix[56]*): Combine stanzas.  Include elfos.h
	before mips.h and iris.h after it.  Use t-iris and t-slibgcc-irix.
	Use iris5.h only for IRIX 5 configs.  Use iris6.h and t-iris6 for
	IRIX 6 configs.  Define IRIX_USING_GNU_LD if using GNU ld.
	* config/mips/iris5.h (TARGET_IRIX, SWITCHES_NEED_SPACES)
	(DEFAULT_SIGNED_CHAR, WORD_SWITCH_TAKES_ARG, SUBTARGET_CC1_SPEC)
	(NO_IMPLICIT_EXTERN_C, MIPS_DEFAULT_GVALUE)
	(TARGET_ASM_EXTERNAL_LIBCALL): Move to iris.h.
	(WCHAR_TYPE, WCHAR_TYPE_SIZE, TARGET_OS_CPP_BUILTINS): Delete in favor
	of more general IRIX 6 definitions.
	(OBJECT_FORMAT_ELF, ASM_OUTPUT_ASCII, ASM_WEAKEN_LABEL)
	(HANDLE_SYSV_PRAGMA): Delete in favor of elfos.h definitions.
	(TARGET_IRIX5, ABICALLS_ASM_OP, BSS_SECTION_ASM_OP, HAS_INIT_SECTION)
	(LD_INIT_SWITCH, LD_FINI_SWITCH, SUBTARGET_ASM_OPTIMIZING_SPEC)
	(ASM_FINAL_SPEC, DBX_DEBUGGING_INFO, MIPS_DEBUGGING_INFO)
	(PREFERRED_DEBUGGING_TYPE, DWARF2_UNWIND_INFO, SET_FILE_NUMBER)
	(LABEL_AFTER_LOC, DOLLARS_IN_IDENTIFIERS, NO_DOLLAR_IN_LABEL)
	(TARGET_ASM_NAMED_SECTION, EXTRA_SECTION_FUNCTIONS)
	(ASM_DECLARE_FUNCTION_SIZE, ASM_OUTPUT_WEAK_ALIAS)
	(SUBTARGET_EXTRA_SPECS): Delete definitions or undefs.
	(LINK_SPEC): Move most of definition to iris.h.
	(SUBTARGET_LINK_SPEC): New macro.
	(IRIX_STARTFILE_SPEC): Fold into...
	(STARTFILE_SPEC): ...here.
	(IRIX_ENDFILE_SPEC): Fold into...
	(ENDFILE_SPEC): ...here.
	* config/mips/iris6.h (TARGET_IRIX5): Remove override.
	(WCHAR_TYPE, WCHAR_TYPE_SIZE, WINT_TYPE, WINT_TYPE_SIZE)
	(DWARF_OFFSET_SIZE, DWARF_INITIAL_LENGTH_SIZE, SET_ASM_OP)
	(LINK_ELIMINATE_DUPLICATE_LDIRECTORIES, ASM_DECLARE_OBJECT_NAME)
	(ASM_FINISH_DECLARE_OBJECT, LOCAL_LABEL_PREFIX): Move to iris.h.
	(TARGET_OS_CPP_BUILTINS): Likewise.  Guard IRIX6-specific bits.
	(DWARF2_UNWIND_INFO, DWARF2_GENERATE_TEXT_SECTION_LABEL)
	(SUBTARGET_CPP_SPEC, DWARF2_DEBUGGING_INFO, MIPS_DEBUGGING_INFO)
	(PREFERRED_DEBUGGING_TYPE, DWARF2_FRAME_INFO, MD_EXEC_PREFIX)
	(ASM_DECLARE_FUNCTION_NAME, ASM_DECLARE_FUNCTION_SIZE)
	(FUNCTION_NAME_ALREADY_DECLARED, SUPPORTS_INIT_PRIORITY)
	(POPSECTION_ASM_OP, SUBTARGET_ASM_SPEC, SUBTARGET_MIPS_AS_ASM_SPEC)
	(SUBTARGET_ASM_DEBUGGING_SPEC, SUBTARGET_ASM_OPTIMIZING_SPEC)
	(BSS_SECTION_ASM_OP*, READONLY_DATA_SECTION_ASM_OP*)
	(EH_FRAME_SECTION_NAME, MUST_USE_SJLJ_EXCEPTIONS, CTORS_SECTION_ASM_OP)
	(DTORS_SECTION_ASM_OP, TARGET_ASM_NAMED_SECTION, EH_FRAME_SECTION_NAME)
	(ASM_OUTPUT_ALIGN, ASM_OUTPUT_FILENAME, ASM_OUTPUT_ALIGNED_LOCAL)
	(ASM_OUTPUT_ALIGNED_BSS): Remove definitions or undefs.
	(TARGET_IRIX6): Define to 1.
	(DRIVER_SELF_SPECS): Define.
	(DWARF2_FRAME_INFO): Define to 1 rather than !TARGET_SGI_O32_AS.
	(SUBTARGET_CC1_SPEC): Remove in favor of DRIVER_SELF_SPECS.
	(SUBTARGET_LINK_SPEC): New macro.
	(IRIX_STARTFILE_SPEC): Fold into...
	(STARTFILE_SPEC): ...here.  Remove !mabi=* case.
	(SUBTARGET_{,DONT_}WARN_UNUSED_SPEC): New macros.
	(LIB_SPEC, LIBGCC_SPEC): Use them.
	(LIB_SPEC): Remove !mabi=* case.
	(IRIX_ENDFILE_SPEC): Fold into...
	(ENDFILE_SPEC): ...here.  Remove !mabi=* case.
	* config/mips/mips-protos.h (irix_output_external_libcall): Delete.
	* config/mips/mips.h (TARGET_IRIX5, TARGET_SGI_O32_AS): Delete.
	(TARGET_IRIX6): New macro.
	(ASM_ABI_DEFAULT_SPEC): Remove !ELF definition.
	(MD_EXEC_PREFIX, MD_STARTFILE_PREFIX, SET_FILE_NUMBER)
	(LABEL_AFTER_LOC): Delete.
	* config/mips/mips.c (TARGET_ASM_FILE_START, TARGET_ASM_FILE_END)
	(TARGET_SECTION_TYPE_FLAGS): Remove TARGET_IRIX versions.
	(mips_build_builtin_va_list): Check TARGET_IRIX6.
	(override_options): Remove TARGET_SGI_O32_AS-related code.
	(irix_output_external_libcall): Make static.
	(mips_output_filename): Avoid use of SET_FILE_NUMBER and
	LABEL_AFTER_LOC.
	(mips_file_start): Tidy guard for ABI sections.  Remove use of
	ABICALLS_ASM_OP; use .abicalls instead.
	(mips_output_aligned_decl_common, mips_declare_object_name)
	(mips_finish_declare_object): Remove use of TARGET_SGI_O32_AS.
	(mips_output_function_prologue): Set TREE_ASM_WRITTEN if emitting
	.globl foo .text directives.
	(irix_asm_named_section_1, irix_asm_named_section)
	(irix_section_align_entry, irix_section_align_htab)
	(irix_orig_asm_out_file, irix_section_align_entry_eq)
	(irix_section_align_entry_hash, irix_asm_output_align)
	(irix_file_start, irix_section_align_1, copy_file_data)
	(irix_file_end, irix_section_type_flags): Delete.
	* config/mips/irix-crti.asm (__gcc_init): Move to .gcc_init section.
	Use standard section syntax.  Remove protective "jr $31".
	(__gcc_fini): Likewise .gcc_fini.
	* config/mips/irix-crtn.asm: Adjust sections accordingly.
	* config/mips/sdb.h (PUT_SDB_SIZE, PUT_SDB_TYPE): Moved from
	iris5gas.h.
	* config/mips/t-iris (irix-crti.o, irix-crtn.o): New rules, moved
	from t-irix-gld.
	(EXTRA_MULTILIB_PARTS): Define.
	* config/mips/t-iris6: Remove bogus comment.
	(EXTRA_MULTILIB_PARTS, CRTSTUFF_T_CFLAGS): Delete.
	* config/mips/iris5gas.h, config/mips/iris5gld.h,
	config/mips/iris6gas.h, config/mips/iris6gld.h,
	config/mips/t-iris5-as, config/mips/t-iris5-gas
	config/mips/t-irix-gld: Delete.
	* config/mips/iris.h: New file.
	* config/mips/t-slibgcc-irix: Renamed from t-iris5-6.

2004-08-20  Richard Earnshaw  <rearnsha@arm.com>

	* postreload.c (reload_cse_move2add): Allow any condjump, but check
	that the implicit set isn't clobbered in the jump insn.

2004-08-19  Mark Mitchell  <mark@codesourcery.com>

	* defaults.h (TARGET_LIBGCC_LIBFUNCS): Remove.
	* optabs.c (init_optabs): Don't check it.
	* config/arm/bpabi.h (TARGET_LIBGCC_LIBFUNCS): Do not define.
	* doc/tm.texi (TARGET_LIBGCC_FUNCS): Remove.

2004-08-18  Andreas Krebbel  <krebbel1@de.ibm.com>

	* config/s390/s390.md (s390_warn_framesize_string)
	(s390_warn_dynamic_string, s390_stack_size_string)
	(s390_stack_guard_string): New global string variables.
	(s390_warn_framesize, s390_warn_dynamicstack_p, s390_stack_size)
	(s390_stack_guard): New global variables.
	(override_options): Added checks for the new options.
	(s390_emit_prologue): Emit stack check and trap code and perform
	compile time stack size checking.

	* config/s390/s390.h (TARGET_OPTIONS): Added new options
	"warn-framesize", "warn-dynamicstack", "stack-size" and
	"stack-guard".

	* doc/invoke.texi: Added documentation for the new options.

2004-08-19  Ulrich Weigand  <uweigand@de.ibm.com>

	* unwind-dw2-fde.c (get_cie_encoding): Cast argument to strlen
	to eliminate warning.
	(linear_search_fdes): Declare p as unsigned.
	(binary_search_mixed_encoding_fdes): Likewise.
	* unwind-dw2.c (get_cie_encoding): Cast argument to strlen
	to eliminate warning.
	* config/s390/linux.h (MD_FALLBACK_FRAME_STATE_FOR): Add missing
	type cast.

2004-08-19  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390-protos.h (preferred_la_operand_p): Adapt prototype.
	* config/s390/s390.c (preferred_la_operand_p): Accept two operands
	instead of one.  Check for strictly legitimate address.
	* config/s390/s390.md ("*la_31"/"*la_64" peepholes): Adapt call
	to preferred_la_operand_p, do not call gen_rtx_PLUS in predicate.

2004-08-19  Eric Christopher  <echristo@redhat.com>

	* langhooks-def.h (LANG_HOOKS_UNSAVE_EXPR_NOW): Remove.
	* langhooks.h (unsave_expr_now): Ditto.
	* tree.h (unsave_expr_1): Remove prototype.
	(lhd_unsave_expr_now): Rename to unsave_expr_now.
	* tree-inline.c (unsave_expr_1): Move here
	from tree.c. Make static.
	(unsave_expr_now): Rename from lhd_unsave_expr_now.
	* tree-sra.c: Fix up for rename.
	* tree-ssa-copy.c: Ditto.
	* tree-eh.c: Ditto.
	* tree.c (unsave_expr_1): Move to tree-inline.c.

2004-08-19  Caroline Tice  <ctice@apple.com>

	* config/i386/cygming.h (switch_to_section): Fix typo (change
	in_unlikely_text_section to in_unlikely_executed_text).

2004-08-19  Daniel Berlin  <dberlin@dberlin.org>

	* vec.h (VEC_lower_bound): New macro.

2004-08-19  Richard Sandiford  <rsandifo@redhat.com>

	PR target/16446
	* config/mips/mips.c (struct mips_arg_info): Delete num_bytes.
	(mips_arg_info): Update accordingly.  Remove common treatment of fpr_p;
	treat each ABI separately.  Deal with n32/n64 complex float arguments.
	(function_arg): Add associated complex handling here.

2004-08-19  Richard Henderson  <rth@redhat.com>

	* config/arm/arm.c (arm_gen_load_multiple): Use
	adjust_automodify_address.  Take base memory and offset instead
	of unchanging/struct/scalar bits.
	(arm_gen_store_multiple): Likewise.
	(arm_gen_movmemqi): Use adjust_automodify_address.
	* config/arm/arm-protos.h: Update decls.
	* config/arm/arm.md (load_multiple): Update arm_gen_load_multiple call.
	(store_multiple): Similarly.

2004-08-19  J"orn Rennecke <joern.rennecke@superh.com>

	* regclass.c (globalize_reg): Update call_really_used_regs.

2004-08-19  Nathan Sidwell  <nathan@codesourcery.com>

	* doc/invoke.texi (integer-share-limit): Document.

	* tree.h (TYPE_CACHED_VALUES_P): New.
	(TYPE_CACHED_VALUES): New.
	(TYPE_ORIG_SIZE_TYPE): Adjust.
	* tree.def (INTEGER_CST): Update documentation.
	* tree.c: Inlcude params.h.
	(build_int_cst): Cache small values.
	(build_type_copy): Do not copy the value cache.
	* c-common.c (c_common_nodes_and_builtins): Add comment, remove
	unneeded zeroing.
	* c-typeck.c (build_c_cast): Add comment about OVERFLOW setting.
	* expmed.c (const_mult_add_overflow_p): Clear type copy's value
	cache.
	* fold-const.c (force_fit_type): Copy value when setting
	overflows.
	(int_const_binop): Likewise.
	* stor-layout.c: Include params.h
	(set_sizetype): Create values cache.
	(fixup_unsigned_type): Set UNSIGNED_P before caching any values.
	* params.def (PARAM_INTEGER_SHARE_LIMIT): New.
	* params.h (INTEGER_SHARE_LIMIT): New.
	* Makefile.in (tree.o, stor-layout.o): Depend on PARAMS_H.

2004-08-19  Paolo Bonzini  <bonzini@gnu.org>

	* gimplify.c (gimplify_minimax_expr): Remove.
	(gimplify_expr) <MIN_EXPR, MAX_EXPR>: Remove special handling.

2004-08-19  Dorit Naishlos  <dorit@il.ibm.com>

	* tree-vectorizer.c (vect_can_force_dr_alignment_p): Replace
	STACK_BOUDARY with PREFERRED_STACK_BOUNDARY.

2004-08-19  Mark Mitchell  <mark@codesourcery.com>

	* bpabi.h (FPUTYPE_DEFAULT): Set it to FPUTYPE_VFP.

2004-08-18  Andrew Pinski  <apinski@apple.com>

	* varasm.c (ecode_reg_name): Do nothing if the asmspec is empty.

2004-08-18  Mark Mitchell  <mark@codesourcery.com>

	* config/arm/bpabi.c (__aeabi_ul2d): Give it default visibility.
	(__aeabi_ul2f): Likewise.

2004-08-18  Richard Henderson  <rth@redhat.com>

	* config/xtensa/xtensa.c (xtensa_expand_block_move): Expand block
	move to rtl completely.
	(struct meminsnbuf, xtensa_emit_block_move): Remove.
	(xtensa_find_mode_for_size): Remove.
	* config/xtensa/xtensa-protos.h (xtensa_emit_block_move): Remove.
	* config/xtensa/xtensa.md (movmemsi_internal): Remove.

2004-08-18  Richard Henderson  <rth@redhat.com>

	* config/mcore/mcore.c (mode_from_align): Remove DImode.
	(block_move_sequence): Rewrite to use adjust_address.
	(mcore_expand_block_move): Cleanup logic.  Accept only operands.
	Return boolean indicating success/failure.
	* config/mcore/mcore-protos.h (mcore_expand_block_move): Update decl.
	* config/mcore/mcore.md (movmemsi): Update to match.

2004-08-18  Mike Stump  <mrs@apple.com>

	* doc/invoke.texi (-mfix-and-continue): Add support for
	fast turn around debugging.
	(-ffix-and-continue): Likewise.
	(-mindirect-data): Likewise.
	(-findirect-data): Likewise.
	* config/darwin.c (TARGET_FIX_AND_CONTINUE): Likewise.
	(indirect_data): Likewise.
	(machopic_data_defined_p): Likewise.
	(machopic_output_indirection): Likewise.
	(darwin_encode_section_info): Likewise.
	(darwin_fix_and_continue): Likewise.
	(darwin_fix_and_continue_switch): Likewise.
	* config/darwin.h (MACHO_SYMBOL_STATIC): Likewise.
	* config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Likewise.
	(SUBTARGET_OPTION_TRANSLATE_TABLE): Likewise.
	(SUBTARGET_OPTIONS): Likewise.
	(darwin_fix_and_continue): Likewise.
	(darwin_fix_and_continue_switch): Likewise.
	(TARGET_FIX_AND_CONTINUE): Likewise.
	* config/rs6000.c (rs6000_emit_prologue): Likewise.

2004-08-19  Steven Bosscher  <stevenb@suse.de>

	* basic-block.h (struct edge_def): Remove crossing_edge.
	(EDGE_CROSSING): New define.
	(EDGE_ALL_FLAGS): Update.
	* bb-reorder.c (find_traces_1_round, better_edge_p,
	find_rarely_executed_basic_blocks_and_cr, fix_up_fall_thru_edges,
	find_jump_block, fix_crossing_conditional_branches,
	fix_crossing_unconditional_branches, add_reg_crossing_jump_notes):
	Replace all occurences of crossing_edge with an edge flag check
	or set/reset.
	* cfgcleanup.c (try_simplify_condjump, try_forward_edges,
	try_crossjump_bb): Likewise.
	* cfglayout.c (fixup_reorder_chain): Likewise.
	* cfgrtl.c (force_nonfallthru_and_redirect,
	commit_one_edge_insertion): Likewise.

	* Makefile.in (cfganal.o): Depend on TIMEVAR_H.
	* tree-flow.h (compute_dominance_frontiers): Move prototype...
	* basic-block.h: ...here.
	* tree-cfg.c (compute_dominance_frontiers_1,
	compute_dominance_frontiers): Move from here...
	* cfganal.c: ...to here.  Include timevar.h.

2004-08-18  James E Wilson  <wilson@specifixinc.com>

	* config/mips/mips.h (ASM_SPEC): In comment, change -meabi= to -mabi=.
	* config/mips/sb1.md (ir_sb1_divsf_1pipe): Renamed from ...1pipes.

	* config/mips/mips.md (type): Add frdiv.
	(divsf3+1, divsf3+2): Change type to frdiv.
	* config/mips/sb1.md (ir_sb1_recipsf_2pipes, ir_sb1_recipsf_1pipe,
	ir_sb1_recipdf_2pipes, ir_sb1_recipdf_1pipe): New.

	* config/mips/3000.md (r3k_fdiv_single, r3k_fdiv_double): Add frdiv.
	* config/mips/4300.md (r4300_fdiv_single, r4300_fdiv_double): Likewise.
	* config/mips/4600.md (r4600_fdiv_single, f4600_fdiv_double): Likewise.
	* config/mips/5000.md (r5k_fdiv_single): Likewise.
	* config/mips/5400.md (ir_vr54_fdiv_sf, ir_vr54_fdiv_df): Likewise.
	* config/mips/5500.md (ir_vr55_fdiv_sf, ir_vr55_fdiv_df): Likewise.
	* config/mips/6000.md (r6k_fdiv_single, r6k_fdiv_double): Likewise.
	* config/mips/7000.md (rm7_fp_divsqrt_df, rm7_fp_divsqrt_sf): Likewise.
	* config/mips/9000.md (rm8k_fdivs, rm9k_fdivd): Likewise.
	* config/mips/generic.md (generic_fdiv_single, generic_fdiv_double):
	Likewise.
	* config/mips/sr71k.md (ir_sr70_fdiv_sf, ir_sr70_fdiv_df): Likewise.

2004-08-18  Robert Bowdidge <bowdidge@apple.com>

	* config/rs6000/x-darwin: Remove XCFLAGS -mdynamic-no-pic to
	get regression tester working again.

2004-08-18  Zack Weinberg  <zack@codesourcery.com>

	* insn-notes.def, reg-notes.def: New files.
	* rtl.h: Use them to define enum insn_note and enum reg_note.
	* rtl.c: Use them to define note_insn_name and reg_note_name.
	* Makefile.in (RTL_BASE_H): Update.

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

2004-08-18  Richard Earnshaw  <rearnsha@arm.com>

	* arm.c (arm_size_rtx_costs): New function.
	(arm_override_options): Use it if optimizing for space.

2004-08-18  Richard Henderson  <rth@redhat.com>

	* 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.

2004-08-18  Steven Bosscher  <stevenb@suse.de>

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

2004-08-18  Diego Novillo  <dnovillo@redhat.com>

	* tree-ssa-loop.c (pass_loop_init): Add TODO_dump_func.
	(pass_loop_done): Likewise.

2004-08-18  Andrew Pinski  <apinski@apple.com>

	* config/rs6000/darwin.md: Delete the altivec patterns which are
	handled differently now.
	(load_macho_picbase_di): Make sure that is only happens for TARGET_64BIT
	(macho_correct_pic_di): Likewise.
	(call_indirect_nonlocal_darwin64): Likewise.
	Delete the save world/saveFP/saveVec patterns.

	Revert the reversion of: 2004-08-16  Stan Shebs  <shebs@apple.com>
	* config/darwin.c (macho_indirect_data_reference): Add DImode case.
	* config/rs6000/rs6000.md: Include darwin.md.
	(builtin_setjmp_receiver): Add DImode case.
	* config/rs6000/rs6000.c (rs6000_emit_move): Add DImode case to
	Darwin bits.

2004-08-18  Matt Austern  <austern@apple.com>

	Dead code stripping
	* darwin.h (EH_FRAME_SECTION_ATTR): Mark so it doesn't get stripped.
	* darwin.c (darwin_file_end): Mark file as potentially strippable.

2004-08-18  Richard Henderson  <rth@redhat.com>

	* alias.c (readonly_fields_p): Remove.
	(objects_must_conflict_p): Don't call it.
	* tree.h (readonly_fields_p): Remove.
	* langhooks.h (struct lang_hooks): Remove honor_readonly.
	* langhooks-def.h (LANG_HOOKS_HONOR_READONLY): Remove.

2004-08-18  Diego Novillo  <dnovillo@redhat.com>

	* tree-dfa.c (add_referenced_var): Only global variables are
	call-clobbered.
	* tree-flow.h (struct ptr_info_def): Add field pt_global_mem.
	* tree-ssa-alias.c (compute_points_to_and_addr_escape): Mark
	all pointers dereferenced if the statement dereferences them.
	(create_name_tags): Do not create memory tags for pointers
	that have PT_ANYTHING set.
	Also check if PT_VARS is not empty before creating a name tag.
	(compute_flow_sensitive_aliasing): Don't mark call-clobbered
	variables that share the same alias set with a pointer that
	may point anywhere.
	(add_may_alias): Add FIXME comment to remove clobbering
	aliased variables and tags.
	(replace_may_alias): Likewise.
	(set_pt_anything): Do not clear PT_VARS nor IS_DEREFERENCED.
	(merge_pointed_to_info): If the original variable has not
	points-to information, call set_pt_anything.
	(add_pointed_to_var): Do not prevent adding a pointed-to
	variable if the pointers is PT_ANYTHING.
	If the variable is a global, set PT_GLOBAL_MEM.
	(collect_points_to_info_r): Don't assume that PLUS_EXPRs of
	pointer type only come in PTR+OFFSET flavours.
	Always call merge_pointed_to_info on PHI arguments that are
	SSA_NAMEs.
	(get_nmt_for): Mark call-clobbered tags whose pointer points
	to global memory.
	* tree-ssa-operands.c (opf_kill_def, opf_no_vops): Switch
	values.
	(get_indirect_ref_operands): Always clear OPF_KILL_DEF from
	FLAGS.
	(add_stmt_operand): Abort if the caller tried to add a killing
	definition for a memory tag.
	* tree-ssa.c (verify_flow_sensitive_alias_info): Remove
	unnecessary checks.

2004-08-18  J"orn Rennecke <joern.rennecke@superh.com>

	* sh.h (CONDITIONAL_REGISTER_USAGE): Don't exclude fixed registers
	from call_used_regs.  Update call_really_used_regs.
	(CALL_REALLY_USED_REGISTERS): Define.
	* sh.c (output_stack_adjust, shmedia_target_regs_stack_space):
	Replace call_used_regs with call_really_used_regs.
	(calc_live_regs, sh_media_register_for_return): Likewise.
	(sh5_schedule_saves, sh_expand_prologue, reg_unused_after): Likewise.
	* sh.md (return_media): Likewise.

2004-08-18  Andrew Pinski  <apinski@apple.com>

	* config/darwin.c (machopic_legitimize_pic_address): Only set
	MEM_READONLY_P in the non TARGET_TOC case.

2004-08-18  Zack Weinberg  <zack@codesourcery.com>

	* rtl.def (NIL): Delete.
	* read-rtl.c (read_rtx): Handle (nil) like (define_constants).
	Tighten the syntax a little.

	* cfgloop.h, combine.c, cse.c, loop-iv.c, postreload.c, reload.c
	* config/alpha/alpha.c, config/alpha/alpha.h, config/arc/arc.h
	* config/arm/arm.h, config/frv/frv.h, config/i386/i386.c
	* config/i386/predicates.md, config/m32r/m32r.h
	* config/m68hc11/m68hc11.c, config/mcore/mcore.h, config/mips/mips.c
	* config/mmix/mmix.c, config/pa/pa.h, config/sh/sh.h
	* config/sparc/sparc.h, doc/tm.texi:
	Replace all occurrences of NIL with UNKNOWN.

2004-08-18  Zack Weinberg  <zack@codesourcery.com>

	* dojump.c (do_jump <unordered_bcc>): Do not recursively call
	self with a TRUTH_ORIF_EXPR; generate the appropriate jump
	sequence inline.  Move drop_through_label code into this
	block, being the only place it is used.  Adjust comments.

2004-08-18  Fariborz Jahanian <fjahanian@apple.com>

	* config/rs6000/altivec.md: Add new patterns for calls to
	save_world/rest_world functions.

	* config/rs6000/rs6000-protos.h: (save_world_operation,
	restore_world_operation) new declarations.

	* config/rs6000/rs6000.c: (struct rs6000_stack) new world_save_p
	field added.
	(rs6000_stack_info): Set world_save_p field.
	(save_world_operation): New function.
	(restore_world_operation): New function.
	(compute_save_world_info): New function.
	(rs6000_stack_info): Call compute_save_world_info.
	(rs6000_emit_prologue): Check for world_save_p and generate
	pattern to call save_world for saving all non-volatile and
	special registers.
	(rs6000_emit_epilogue): Check for world_save_p and generate
	pattern to call rest_world to restore saved registers.

	config/rs6000/rs6000.h: macros FIRST_SAVED_ALTIVEC_REGNO,
	FIRST_SAVED_FP_REGNO, FIRST_SAVED_GP_REGNO defined.
	(rs6000_reg_names): New entries added for save_world_operation and
	restore_world_operation.

2004-08-18  Caroline Tice  <ctice@apple.com>

	* Makefile.in (STAGEFEEDBACK_FLAGS_TO_PASS) Add
	"-freorder-blocks-and-partition" to the flags used in second
	stage of profiledbootstrap.
	* bb-reorder.c (push_to_next_round_p): Add new variable,
	next_round_is_last; set and use variable to make sure, when
	partitioning, that the last trace construction round consists
	of all (and only) cold basic blocks.
	(rotate_loop): Don't copy blocks that end in a section
	crossing jump.
	(copy_bb): Correctly initialize "partition" of duplicated bb.
	(add_unlikely_executed_notes): Add a comment.
	(find_rarely_executed_basic_blocks_and_crossing_edges): Modify
	to make sure, if function contains hot blocks, that the
	successors of ENTRY_BLOCK_PTR are hot; also, only look for
	crossing edges if the architecture supports named sections.
	(mark_bb_for_unlikely_executed_section): Modify to always
	insert the NOTE_INSN_UNLIKELY_EXECUTED_CODE immediately after
	the basic block note insn.
	(fix_crossing_unconditional_branches): Remove extra space.
	(fix_edges_for_rarely_executed_code): Modify to only do
	partitioning work if the architecture supports named sections.
	(reorder_basic_blocks): Modify to only add
	NOTE_INSN_UNLIKELY_EXECUTED_CODE notes if the architecture
	supports named sections.
	* c-common.c (handle_section_attribute): Initialize new global
	variable, user_defined_section_attribute, to true if user has
	specified one.
	* cfgcleanup.c (try_forward_edges): Modify to not attempt to
	forward edges that cross section boundaries.
	* cfglayout.c (fixup_reorder_chain): Modify to only fix up
	partitioning information if the architecture supports named
	sections.
	* cfgrtl.c (target.h): Add statement to include this.
	(rtl_split_block): Make sure newly created bb gets correct
	partition.
	(try_redirect_by_replacing_jump): Make sure redirection isn't
	attempting to cross section boundaries.
	(force_nonfallthru_and_redirect): Only do partition fix up if
	architecture supports named sections.
	(rtl_split_edge): Make sure newly created bb ends up in
	correct partition.
	(commit_one_edge_insertion): Remove code that incorrectly
	updated basic block partition; Make sure partition fix up only
	happens if architecture supports named sections and it's not
	already done.
	(rtl_verify_flow_info_1): Fix if-condition on test/error
	condition that fallthru edges are not allowed to cross section
	boundaries.
	* defaults.h (NORMAL_TEXT_SECTION_NAME): Remove this.
	* final.c (final_scan_insn): Remove redundant test from if-statement;
	change calls to text_section into calls to function_section; add code
	to only to partitioning fix up if architecture supports named
	sections.
	* ifcvt.c (find_if_case_1): Make sure newly created bb has correct
	partition.
	(if_convert): Add targetm.have_named_sections to test.
	* output.h (unlikely_section_label): Extern declaration for new global
	variable.
	(unlikely_text_section_name): Likewise.
	* opts.c (decode_options): If both partitioning and DWARF debugging
	are turned on, issue a warning that this doesn't work, and change
	partitiong to basic block reordering (without hot/cold partitions).
	* passes.c (rest_of_handle_final): Re-set new global variable,
	user_defined_section_attribute, to false.
	(rest_of_compilation): Change options for calling partitioning
	function: Don't call if the user defined the section attribute, and
	don't call if DECL_ONE_ONLY is true for the current function.
	* predict.c (choose_function_section): Return immediately if we
	are doing hot/cold partitioning (i.e. let the basic block partitioning
	determine where the function belongs).
	* reg-stack.c (emit_swap_insn): Add condition to step over
	NOTE_INSN_UNLIKELY_EXECUTED_CODE notes.
	* toplev.c (user_defined_section_attribute): New global variable.
	* toplev.h (user_defined_section_attribute): Extern declaration
	for new global variable.
	* varasm.c (unlikely_section_label): New global variable.
	(unlikely_text_section_name): New global variable.
	(unlikely_text_section): Add code to initialize
	unlikely_text_section_name if necessary; modify to use
	unlikely_text_section_name and unlikely_section_label; also to use
	named_section properly.
	(in_unlikely_text_section): Modify to work correctly with
	named_section and to use unlikely_text_section_name.
	(named_section): Add code to work properly with cold section.
	(function_section): Clean up if-statement.
	* config/darwin.c (darwin_asm_named_section): Return to original
	code, removing use of SECTION_FORMAT_STRING.
	* config/arm/pe.h (switch_to_section): Add case for
	in_unlikely_executed_text to switch statement.
	* config/i386/cygming.h (switch_to_section): Likewise.
	* config/i386/darwin.h (NORMAL_TEXT_SECTION_NAME): Remove.
	(SECTION_FORMAT_STRING): Likewise.
	* config/mcore/mcore.h (switch_to_section): Likewise.
	* config/rs6000/darwin.h (NORMAL_TEXT_SECTION_NAME): Remove.
	(SECTION_FORMAT_STRING): Remove.

2004-08-18  Roger Sayle  <roger@eyesopen.com>

	* config/i386/i386.h (FIXED_REGISTERS): Update encoding to be
	-ffixed-reg safe, by preserving the meanings of zero and one.
	(CALL_USED_REGISTERS): Likewise.
	(CONDITIONAL_REGISTER_USAGE): Update to process new encodings.

2004-08-18  Kaz Kojima  <kkojima@gcc.gnu.org>

	* config/sh/sh.c (split_branches): Check the result of
	next_active_insn.
	(sh_output_mi_thunk): Call init_flow if basic_block_info is null.
	Call rtl_register_cfg_hooks.

2004-08-18  Richard Henderson  <rth@redhat.com>

	* 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.

2004-08-18  Richard Henderson  <rth@redhat.com>

	* tree.h (struct tree_decl): Add gimple_formal_temp.
	(DECL_GIMPLE_FORMAL_TEMP_P): New.
	* gimplify.c (pop_gimplify_context): Clear it.
	(lookup_tmp_var): Set it, if is_formal.
	(gimplify_init_constructor): Use rhs_predicate_for for COMPLEX.
	Use is_gimple_val for VECTOR.  Simplify return value.
	(gimplify_save_expr): Use and set DECL_GIMPLE_FORMAL_TEMP_P.
	(gimplify_expr): Likewise.
	* tree-gimple.c (is_gimple_formal_tmp_rhs): Rename from
	is_gimple_tmp_rhs for clarity.  Update all callers.
	(is_gimple_reg_rhs): Simplify logic.
	(is_gimple_formal_tmp_var): Rename from is_gimple_tmp_var for
	clarity; use DECL_GIMPLE_FORMAL_TEMP_P.
	(is_gimple_formal_tmp_reg): Similarly.
	* tree-gimple.h: Update decls.
	* tree-ssa-copyrename.c (copy_rename_partition_coalesce): Use
	DECL_IGNORED_P, not DECL_ARTIFICIAL.  Tidy formatting.
	* tree-ssa-live.c (var_union, type_var_init): Likewise.

2004-08-18  Paolo Bonzini  <bonzini@gnu.org>

	* c4x.c (legitimize_operands): Remove calls to
	preserve_subexpressions_p.

2004-08-18  David Edelsohn  <edelsohn@gnu.org>

	* varasm.c (MAX_OFILE_ALIGNMENT): Move ...
	* defaults.h (MAX_OFILE_ALIGNMENT): ... here.

2004-08-18  Ziemowit Laski  <zlaski@apple.com>

	* gcc.c (default_compilers): Add info about ".mm", ".M" and ".mii"
	Objective-C++ extensions.
	* gengtype.c (get_file_basename): Match entire subdirectory name
	('cp', 'objc', 'objcp') rather than just its suffix.
	(get_base_file_bitmap): Allow for files to belong to more than one
	language.
	(get_output_file_with_visibility): Treat objc/objc-act.h as a header
	used by more than one front-end.

2004-08-18  Richard Earnshaw  <rearnsha@arm.com>

	* arm.md (addsi3, subsi3, andsi3, iorsi3, movsi, movhi): Rework to
	avoid use of preserve_subexpressions_p.

2004-08-17  Richard Henderson  <rth@redhat.com>

	PR 17051
	* tree-sra.c (scalarize_use): Mark all v_defs for !is_output too.

2004-08-17  DJ Delorie  <dj@redhat.com>

	* doc/extend.texi: Document new xstormy16 attribute.

	* config/stormy16/stormy16.c (xstormy16_splittable_below100_operand): New.
	(xstormy16_splittable_below100_or_register): New.
	(combine_bnp): New.
	(xstormy16_reorg): New.
	(TARGET_MACHINE_DEPENDENT_REORG): Define.

	* config/stormy16/stormy16.md (movqi_internal): Make name public.
	(movhi_internal): Likewise.
	(cbhranchhi): Likewise.
	(cbhranchhi_neg): Likewise.
	(andhi3): Only allow splittable below100 operands.
	(iorhi3): Likewise.
	(peephole2): New and/zero_extend->and peephole.
	(peephole2): New load/ior/save->set1 peephole.
	(peephole2): New load/and/save->clr1 peephole.
	(bclrx, bclrx2, bclr7, bclr15): New.
	(bsetx, bsetx2, bset7, bset15): New.

	* config/stormy16/stormy16.c (xstormy16_print_operand): Be more
	liberal about acceptable 'B' masks.

	* config/stormy16/stormy16-protos.h
	(xstormy16_asm_output_aligned_common, xstormy16_below100_symbol,
	xstormy16_below100_operand, xstormy16_below100_or_register,
	xstormy16_onebit_set_operand, xstormy16_onebit_clr_operand): New.
	(PREDICATE_CODES): Add new predicates.

	* config/stormy16/stormy16.c
	(xstormy16_asm_output_aligned_common, xstormy16_below100_symbol,
	xstormy16_below100_operand, xstormy16_below100_or_register,
	xstormy16_onebit_set_operand, xstormy16_onebit_clr_operand): New.
	(xstormy16_expand_iorqi3, xstormy16_expand_andqi3): New.
	(xstormy16_legitimate_address_p): Allow below100 symbols.
	(xstormy16_extra_constraint_p): Add 'W' for below100 operands.
	(xstormy16_expand_move): Leave below100 operands as-is.
	(xstormy16_encode_section_info): Encode below100 symbols.
	(xstormy16_strip_name_encoding): New.
	(xstormy16_print_operand): Print 'b' as shift mask.
	(xstormy16_attribute_table): Add below100 attributes.
	(xstormy16_handle_below100_attribute): New.

	* config/stormy16/stormy16.h (EXTRA_SECTIONS): add in_bss100.
	(XSTORMY16_SECTION_FUNCTION): New.
	(EXTRA_SECTION_FUNCTIONS): Define using the above.
	(ASM_OUTPUT_ALIGNED_DECL_COMMON, ASM_OUTPUT_ALIGNED_DECL_LOCAL): New.
	(ASM_OUTPUT_SYMBOL_REF): Handle encoded symbols.
	(ASM_OUTPUT_LABELREF): Define.

	* config/stormy16/stormy16.md (movqi_internal): Add below100 support.
	(movhi_internal): Add below100 support.
	(andhi3): Add below100 support.
	(iorhi3): Add below100 support.
	(iorqi3, iorqi3_internal, andqi3, andqi3_internal): New.

2004-08-17  James E Wilson  <wilson@specifixinc.com>

	* config/mips/mips.c (gen_conditional_move): Use GET_MODE (op0) instead
	of VOIDmode for comparison code mode.
	* config/mips/mips.md: For conditional move patterns, use mode of
	first compare operand for comparison mode, instead of VOIDmode.

	* config/mips/mips.md: Add canonical nmadd and nmsub patterns for both
	normal and -ffast-math code.

2004-08-17  Mark Mitchell  <mark@codesourcery.com>

	PR c++/15871
	* doc/invoke.texi (-fkeep-inline-functions): Update documentation.

2004-08-17  Robert Bowdidge  <bowdidge@apple.com>

	* config/rs6000/x-darwin: Add -mdynamic-no-pic to gcc build flags.

2004-08-17  Andreas Tobler  <a.tobler@schweiz.ch>

	* config/rs6000/darwin.md (*call_nonlocal_darwin64): Add #else clause
	for non Darwin targets.
	(*call_value_nonlocal_darwin64): Likewise.

2004-08-17  Fariborz Jahanian <fjahanian@apple.com>

	* config/rs6000/rs6000.c (rs6000_function_value): Check for
	altivec mode for altivec return register.

2004-08-17  David Edelsohn  <edelsohn@gnu.org>

	Revert 2004-08-16  Stan Shebs  <shebs@apple.com>
	* config/darwin.c (macho_indirect_data_reference): Add DImode case.
	* config/rs6000/rs6000.md: Include darwin.md.
	(builtin_setjmp_receiver): Add DImode case.
	* config/rs6000/rs6000.c (rs6000_emit_move): Add DImode case to
	Darwin bits.

2004-08-17  Dorit Naishlos  <dorit@il.ibm.com>

	* tree-vectorizer.c: New File: loop vectorization on SSAed GIMPLE
	trees.
	* tree-vectorizer.h: New File: Same.
	* Makefile.in (tree-vectorizer.c, tree-vectorizer.h): Add new files.
	* common.opt (ftree-vectorize): New flag to enable vectorization.
	* timevar.def (TV_TREE_VECTORIZATION): New dump file for
	vectorization pass.
	* tree-data-ref.h (init_data_ref): Additional argument.
	(array_base_name_differ_p): Moved to tree-data-ref.c.
	* tree-data-ref.c (array_base_name_differ_p): Revised.
	(initialize_data_dependence_relation): Call array_base_name_differ_p
	with an extra argument.
	(analyze_all_data_dependences): Same.
	(init_data_ref): Additional argument is_read to set DR_IS_READ.
	* tree-ssa-phiopt.c (empty_block_p): Expose for usage out of this
	file.
	* tree-flow.h (vectorize_loops, empty_block_p): Add declaration.
	* tree-optimize.c (pass_vectorize): Schedule the vectorization pass.
	* tree-pass.h (tree_opt_pass pass_vectorize): Declare the new
	vectorization pass.
	* tree-ssa-loop.c (tree_ssa_loop_init): Call scev_initialize.
	(tree_ssa_loop_done): Call scev_finalize.
	(tree_vectorize): Define the new vectorization pass.
	* defaults.h (UNITS_PER_SIMD_WORD): Allow targets to specify the
	size of the vector they support (until support for multiple vector
	sizes is added to the vectorizer).
	* config/i386/i386.h (UNITS_PER_SIMD_WORD): Define.
	* config/rs6000/rs6000.h (UNITS_PER_SIMD_WORD): Define.
	* invoke.texi (fdump-tree-vect, ftree-vectorize): Add
	documentation.

2004-08-17  Nathan Sidwell  <nathan@codesourcery.com>

	* objc/objc-act.c (build_protocol_initializer): Fix build_int_cst
	usage.
	(generate_protocol_list, handle_impent): Likewise.

2004-08-17  Roger Sayle  <roger@eyesopen.com>

	* regclass.c (init_reg_sets_1): Add ENABLE_CHECKING sanity tests to
	ensure that call_used_regs is a superset of both fixed_regs and
	call_really_used_regs.

2004-08-17  Daniel Bornstein  <danfuzz@milk.com>

	PR target/17019
	* arm.md (addsi3_cbranch_scratch): Correct case labels.

2004-08-17  Paolo Bonzini  <bonzini@gnu.org>

	PR middle-end/17036
	* fold-const.c (fold): Check for integer operand when
	folding (A >> N) & 1 ? (1 << N) : 0.  Fix from Andrew
	Pinski  <pinskia@physics.uc.edu>.

2004-08-17  Paolo Bonzini  <bonzini@gnu.org>

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

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

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

2004-08-16  James E Wilson  <wilson@specifixinc.com>

	* tree.h (VECTOR_FLOAT_TYPE_P): New.
	(FLOAT_TYPE_P): Use it.
	* c-typeck.c (build_binary_op): After convert calls, check for
	check for ERROR_MARK operands.

2004-08-16  Zack Weinberg  <zack@codesourcery.com>

	* Makefile.in (BUILD_PREFIX, BUILD_PREFIX_1): Delete.
	(BUILD_RTL, BUILD_PRINT, BUILD_ERRORS, BUILD_VARRAY): Update.
	(genobjs): Add build-rtl.o, build-print-rtl.o, build-varray.o.
	(genobjs static pattern rule): Remove %.c dependency.
	($(BUILD_PREFIX_1)rtl.o, print-rtl.o, $(BUILD_PREFIX_1)varray.o):
	Rename rules; delete commands; fix dependencies.
	(mostlyclean): Do not delete temporary source copies.
	* configure.ac: Delete all references to BUILD_PREFIX and
	BUILD_PREFIX_1.
	* configure: Regenerate.

	* print-rtl.c: Include bconfig.h #ifdef GENERATOR_FILE.
	Do not include tree.h, real.h, flags.h, hard-reg-set.h, or
	basic-block.h #ifdef GENERATOR_FILE.  Surround some more code
	with #ifndef GENERATOR_FILE so that nothing from those headers
	is used.

	* rtl.c, varray.c: Include bconfig.h #ifdef GENERATOR_FILE.

2004-08-16  Adam Nemet  <anemet@lnxw.com>

	* Makefile.in (LIBS): Move $(LIBIBERTY) after $(BANSHEELIB).

2004-08-16  Andrew Pinski  <apinski@apple.com>

	* target-def.h (TARGET_EH_RETURN_FILTER_MODE): Remove
	extraneous semicolon.

2004-08-16  Devang Patel  <dpatel@apple.com>

	* c-common.c (handle_used_attribute): Set DECL_PRESERVE_P.
	* print-tree.c (print_node): Print DECL_PRESERVE_P.
	* target-def.h (TARGET_ASM_MARK_DECL_PRESERVED): New #define.
	(TARGET_ASM_OUT): New member, TARGET_ASM_MARK_DECL_PRESERVED
	* target.h (struct gcc_target): New member, mark_decl_preserved.
	* hooks.c (hook_void_charptr): Rename to ...
	(hook_void_constcharptr): ... new name.
	* hooks.h (hook_void_charptr): Rename to ..
	(hook_void_constcharptr): ... new name.
	* tree.h (DECL_PRESERVE_P): New #define.
	(struct tree_decl): New member, preserve_flag.
	* varasm.c (assemble_start_function): Mark decl preserved.
	(assemble_variable): Same.
	* darwin.c (darwin_mark_decl_preserved): New function.
	* darwin.h (TARGET_ASM_MARK_DECL_preserved): New #define.
	* darwin-protos.h (darwin_mark_decl_preserved): New decl.
	* doc/tm.texi (TARGET_ASM_MARK_DECL_PRESERVED): Document.

2004-08-16  Joseph S. Myers  <jsm@polyomino.org.uk>

	* c-decl.c (grokdeclarator): Allow for function definition where
	innermost declarator has attributes.

2004-08-16  Fariborz Jahanian <fjahanian@apple.com>

	* except.c (get_exception_filter, build_post_landing_pads,
	dw2_build_landing_pads): Use target-specific mode for 'filter'.
	* target-def.h (TARGET_EH_RETURN_FILTER_MODE): macro defined and used.
	* target.h (eh_return_filter_mode): New field added.
	* targhooks.c (default_eh_return_filter_mode): Defined.
	* targhooks.h (default_eh_return_filter_mode): Declared.
	* config/rs6000/rs6000.c (rs6000_eh_return_filter_mode): Defined.

2004-08-16  Nathanael Nerode  <neroden@gcc.gnu.org>

	* configure.ac: Replace _GCC_TOPLEV_NONCANONICAL_TARGET with
	ACX_NONCANONICAL_TARGET; remove now-unneeded AC_SUBST.
	* configure: Regenerate.

2004-08-16  Stan Shebs  <shebs@apple.com>

	Basic support for 64-bit Darwin.
	* config/darwin.c (macho_indirect_data_reference): Add DImode case.
	(machopic_legitimize_pic_address): Similarly, plus use Pmode
	instead of SImode.
	* config/rs6000/darwin.h (PTRDIFF_TYPE): Be "long int" if 64-bit.
	(TARGET_OS_CPP_BUILTINS): Add 64-bit preprocessor macro.
	(SUBTARGET_SWITCHES): Add -m32 and -m64 flags.
	(SUBTARGET_OVERRIDE_OPTIONS): Require 64-bit processor if -m64.
	(PROCESSOR_DEFAULT64): Define.
	* config/rs6000/darwin.md: New file, patterns specific to 64-bit
	Darwin.
	* config/rs6000/rs6000.md: Include darwin.md.
	(builtin_setjmp_receiver): Add DImode case.
	* config/rs6000/rs6000.c (TARGET_ASM_UNALIGNED_DI_OP): Define for
	Darwin.
	(TARGET_ASM_ALIGNED_DI_OP): Ditto.
	(rs6000_emit_move): Add DImode case to Darwin bits.
	(machopic_output_stub): Use .quad if 64-bit.
	* invoke.texi: Document -m32 and -m64.

2004-08-16  Janis Johnson  <janis187@us.ibm.com>

	* doc/extend.texi (AltiVec builtins): Document additional differences
	from the Motorola AltiVec PIM.

2004-08-16  Nathan Sidwell  <nathan@codesourcery.com>

	* c-typeck.c (build_c_cast): Only copy overflow from expr nodes.
	* tree.h (IS_NON_TYPE_CODE_CLASS): Simplify.
	(struct tree_common): Update public_flag documentation.

2004-08-16  Nathanael Nerode  <neroden@gcc.gnu.org>

	* tree-ssa-copyrename.c (copy_rename_partition_coalesce):
	Check for artificial variables, not is_gimple_tmp_var.
	* tree-ssa-live.c (var_union): Likewise.

2004-08-16  Nathan Sidwell  <nathan@codesourcery.com>

	* calls.c (load_register_parameters): Remove spurious FIXME token.

2004-08-15  Ziemowit Laski  <zlaski@apple.com>

	* Makefile.in (C_PRETTY_PRINT_H): Add c-pretty-print.h.
	(c-lang.o): Depend on c-objc-common.h.
	(c-objc-common.o): Depend on $(C_PRETTY_PRINT_H) and
	c-objc-common.h; remove duplicate $(C_TREE_H) dependency.
	* c-lang.c: Include c-objc-common.h.
	(LANG_HOOKS_FINISH, LANG_HOOKS_INIT_OPTIONS,
	LANG_HOOKS_INITIALIZE_DIAGNOSTICS, LANG_HOOKS_HANDLE_OPTION,
	LANG_HOOKS_MISSING_ARGUMENT, LANG_HOOKS_POST_OPTIONS,
	LANG_HOOKS_GET_ALIAS_SET, LANG_HOOKS_SAFE_FROM_P,
	LANG_HOOKS_EXPAND_EXPR, LANG_HOOKS_MARK_ADDRESSABLE,
	LANG_HOOKS_PARSE_FILE, LANG_HOOKS_TRUTHVALUE_CONVERSION,
	LANG_HOOKS_FINISH_INCOMPLETE_DECL, LANG_HOOKS_UNSAFE_FOR_REEVAL,
	LANG_HOOKS_STATICP, LANG_HOOKS_SET_DECL_ASSEMBLER_NAME,
	LANG_HOOKS_NO_BODY_BLOCKS, LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL,
	LANG_HOOKS_PRINT_IDENTIFIER, LANG_HOOKS_FUNCTION_ENTER_NESTED,
	LANG_HOOKS_FUNCTION_LEAVE_NESTED, LANG_HOOKS_DUP_LANG_SPECIFIC_DECL,
	LANG_HOOKS_DECL_UNINIT, LANG_HOOKS_RTL_EXPAND_STMT,
	LANG_HOOKS_COMMON_ATTRIBUTE_TABLE, LANG_HOOKS_FORMAT_ATTRIBUTE_TABLE,
	LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN,
	LANG_HOOKS_TREE_INLINING_DISREGARD_INLINE_LIMITS,
	LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P,
	LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING,
	LANG_HOOKS_TREE_INLINING_ESTIMATE_NUM_INSNS,
	LANG_HOOKS_TREE_DUMP_DUMP_TREE_FN,
	LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION, LANG_HOOKS_TYPE_FOR_MODE,
	LANG_HOOKS_TYPE_FOR_SIZE, LANG_HOOKS_SIGNED_TYPE,
	LANG_HOOKS_UNSIGNED_TYPE, LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE,
	LANG_HOOKS_INCOMPLETE_TYPE_ERROR, LANG_HOOKS_TYPE_PROMOTES_TO,
	LANG_HOOKS_REGISTER_BUILTIN_TYPE, LANG_HOOKS_WRITE_GLOBALS):
	Move to c-objc-common.h.
	* c-objc-common.c: Include c-objc-common.h.
	* c-objc-common.h: New file.

2004-08-15  Andreas Tobler  <a.tobler@schweiz.ch>
	    Andrew Pinski  <pinskia@physics.uc.edu>

	PR target/14931
	* config/rs6000/darwin-tramp.asm (L_abort$stub): Change to new stub
	style.

2004-08-15  Nathan Sidwell  <nathan@codesourcery.com>

	* 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.

2004-08-15  Ben Elliston  <bje@au.ibm.com>

	* vec.h: Comment improvements.

2004-08-14  Roger Sayle  <roger@eyesopen.com>

	* c-common.c (shorten_compare, pointer_int_sum,
	c_common_truthvalue_conversion, boolean_increment): Replace calls
	to build with calls to buildN.
	* c-decl.c (complete_array_type, grokdeclarator): Likewise.
	* c-gimplify.c (c_build_bind_expr, gimplify_c_loop,
	gimplify_switch_stmt): Likewise.
	* c-typeck.c (default_function_array_conversion,
	build_component_ref, build_array_ref, build_function_call,
	pointer_diff, build_unary_op, build_conditional_expr,
	build_compound_expr, build_modify_expr, c_finish_goto_label,
	c_finish_goto_ptr, c_finish_return, c_finish_loop,
	c_finish_bc_stmt, c_finish_stmt_expr, c_end_compound_stmt,
	build_binary_op): Likewise.

2004-08-15  Steven Bosscher  <stevenb@suse.de>

	* rtl.c (note_insn_name): Add NOTE_DISABLE_SCHED_OF_BLOCK.

2004-08-14  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* fixinc/inclhack.def (stdio_va_list): Also fix com_err.h, cps.h,
	curses.h, krb5.h, lc_core.h, pfmt.h, wchar.h and curses_colr/curses.h.
	* fixinc/fixincl.x: Rebuilt.

2004-08-14  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips-protos.h (mips_symbolic_constant_p)
	(mips_atomic_symbolic_constant_p, mips_stack_address_p)
	(mips_small_data_pattern_p): Declare.
	* config/mips/mips.h (CONST_GP_P): Moved from mips.c.
	(PREDICATE_CODES, SPECIAL_MODE_PREDICATES): Delete.
	* config/mips/mips.c (mips_symbolic_constant_p): Make global.
	(mips_atomic_symbolic_constant_p, mips_stack_address_p): New functions.
	(uns_arith_operand, const_arith_operand, arith_operand, sle_operand)
	(sleu_operand, small_int, reg_or_0_operand, const_float_1_operand)
	(reg_or_const_float_1_operand, hilo_operand, extend_operator)
	(macc_msac_operand, equality_op, cmp_op, trap_cmp_op)
	(pc_or_label_operand, call_insn_operand, move_operand)
	(consttable_operand, symbolic_operand, general_symbolic_operand)
	(global_got_operand, local_got_operand, stack_operand)
	(fp_register_operand, lo_operand, fcc_register_operand): Delete.
	(mips_small_data_pattern_1): Renamed from small_data_pattern_1.
	(mips_small_data_pattern_p): Replace previous small_data_pattern
	predicate.  Turn into a bool () (rtx) function.
	* config/mips/predicates.md: New file.
	* config/mips/mips.md: Include it.  Use the target-independent
	comparison_operator instead of cmp_op.  Rename trap_cmp_op to
	trap_comparison_operator and equality_op to equality_operator.
	Replace uses of small_int with the equivalent const_arith_operand.
	Rename reg_or_const_float_1_operand to reg_or_1_operand.  Rename
	const_float_1_operand to const_1_operand.  Rename fcc_register_operand
	to fcc_reload_operand.
	* config/mips/sb1.md: Rename fp_register_operand to fpr_operand.

2004-08-14  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	PR libstdc++/17005 partial fix.
	* pa-hpux11.h (TARGET_OS_CPP_BUILTINS): Define _INCLUDE__STDC_A1_SOURCE
	except when generating ANSI/C89 code.

2004-08-14  Nathan Sidwell  <nathan@codesourcery.com>

	* c-common.c (shorten_compare): Use force_fit_type directly.

2004-08-14  Gerald Pfeifer  <gerald@pfeifer.com>
	    Dimitri Papadopoulos-Orfanos  <papadopo@shfj.cea.fr>
	    Dave Korn  <dk@artimi.com>

	* doc/install.texi (Building): Avoid duplicate reference to GNU
	make requirement.
	(*-*-solaris2*): Do not recommend GNU make any longer.  Simplify.

2004-08-14  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.h (PROMOTE_MODE): Don't promote vector types.
	* config/alpha/alpha.c (function_value): Use PROMOTE_MODE.

2004-08-13  Richard Henderson  <rth@redhat.com>

	* config/i386/i386.md (call_1, sibcall_1, call_1_rex64): Use Pmode
	for constant_call_address_operand.
	(call_value_pop_1, call_value_1): Likewise.
	(sibcall_value_1, call_value_1_rex64): Likewise.

2004-08-13  James E Wilson  <wilson@specifixinc.com>

	* config/mips/sb1.md (ir_sb1_divdf_2pipes, ir_sb1_divdf_1pipe):
	Correct mode from SFmode to DFmode.

2004-08-13  Ziemowit Laski  <zlaski@apple.com>

	* config/darwin.h (EXTRA_SECTION_FUNCTIONS): Mark the __sel_fixup,
	__cstring_object and __image_info sections with the no_dead_strip
	attribute.

2004-08-13  Roger Sayle  <roger@eyesopen.com>
	    David Billinghurst  <David.Billinghurst@riotinto.com>

	PR libgfortran/15930
	* fixinc/inclhack.def (irix___generic1, irix___generic2): New.
	* fixinc/fixincl.x: Regenerate.
	* fixinc/tests/base/internal/math_core.h: New file.

2004-08-13  Richard Henderson  <rth@redhat.com>

	* dbxout.c (NO_DBX_FUNCTION_END): Default to zero.
	(dbxout_function_end): Remove ifdefs for it.
	(dbxout_begin_prologue): Protect N_BNSYM with it, and gdb extensions.

2004-08-13  Richard Henderson  <rth@redhat.com>

	* Makefile.in (insn-preds.o): Depend on TREE_H.
	* genpreds.c (write_insn_preds_c): Include tree.h.
	* config/alpha/alpha.c (reg_or_0_operand, reg_or_6bit_operand,
	reg_or_8bit_operand, cint8_operand, add_operand, sext_add_operand,
	const48_operand, and_operand, or_operand, mode_width_operand,
	mode_mask_operand, mul8_operand, const0_operand,
	hard_fp_register_operand, hard_int_register_operand,
	reg_or_cint_operand, some_operand, some_ni_operand, input_operand,
	samegp_function_operand, direct_call_operand, small_symbolic_operand,
	global_symbolic_operand, call_operand, symbolic_operand,
	dtp16_symbolic_operand, dtp32_symbolic_operand,
	gotdtp_symbolic_operand, tp16_symbolic_operand, tp32_symbolic_operand,
	gottp_symbolic_operand, alpha_comparison_operator,
	alpha_zero_comparison_operator, alpha_swapped_comparison_operator,
	signed_comparison_operator, alpha_fp_comparison_operator,
	divmod_operator, fix_operator, aligned_memory_operand,
	unaligned_memory_operand, reg_or_unaligned_mem_operand,
	any_memory_operand, reg_not_elim_operand, normal_memory_operand,
	reg_no_subreg_operand, addition_operation): Move to predicates.md.
	(reg_or_const_int_operand): Remove.  Replace all users with
	reg_or_cint_operand.
	(tls_symbolic_operand_1): Export.  Don't check mode or for CONST.
	(resolve_reload_operand): Split out of aligned_memory_operand.
	* config/alpha/alpha-protos.h: Update for exports.
	* config/alpha/alpha.h (PREDICATE_CODES): Remove.
	* config/alpha/alpha.md: Include predicates.md.
	* config/alpha/predicates.md: New file.

2004-08-13  Richard Sandiford  <rsandifo@redhat.com>

	* genattrtab.c (insn_ent): Replace insn_code, insn_index and lineno
	fields with a pointer to the instruction definition.
	(get_attr_value, fill_attr, make_length_attrs, remove_insn_ent)
	(insert_insn_ent, simplify_test_exp, optimize_attrs, write_attr_get)
	(write_attr_case, write_const_num_delay_slots): Update accordingly.
	(write_attr_case, write_const_num_delay_slots): Write the name of
	an insn next to its case statement.
	* genoutput.c (data): Add a filename field.
	(gen_insn, gen_peephole, gen_expand, gen_split): Set it.
	(output_insn_data): Print the location of each insn definition.
	* genrecog.c (write_action): Print the name of an insn above
	the statement that returns its code.

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.

2004-08-13  Daniel Berlin  <dberlin@dberlin.org>

	* Makefile.in (BOOT_CFLAGS): Remove accidental addition of -dU.

2004-08-13  J"orn Rennecke <joern.rennecke@superh.com>

	* sh.md (cbranch define_delay) Use cond_delay_slot for
	non-anulled condition too.

2004-08-12  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.c (any_parallel_operand): New predicate.
	* config/rs6000/rs6000.h (PREDICATE_CODES): Add
	any_parallel_operand, lmw_operation, stmw_operation,
	mfcr_operation, mtcrf_operation.  Remove PARALLEL from any_operand.
	* config/rs6000/rs6000.md (save_fpregs_{si,di}): Use
	any_parallel_operand.
	(return_and_restore_fpregs_{si,di}): Same.

2004-08-12  Zack Weinberg  <zack@codesourcery.com>

	* genrecog.c (add_to_sequence): When processing a MATCH_PARALLEL,
	if pred->singleton != PARALLEL, issue a warning and pretend it was.
	Also issue a warning for any predicate we don't know about.

2004-08-12  Richard Henderson  <rth@redhat.com>

	* config/i386/i386.c (internal_label_prefix): Export.
	(internal_label_prefix_len, struct ix86_address,
	ix86_decompose_address, maybe_get_pool_constant,
	ix86_fp_compare_code_to_integer, ix86_fp_comparison_codes,
	memory_address_length): Export.
	(any_fp_register_operand, fp_register_operand,
	register_and_not_any_fp_reg_operand, register_and_not_fp_reg_operand,
	x86_64_general_operand, x86_64_szext_general_operand,
	x86_64_nonmemory_operand, x86_64_movabs_operand,
	x86_64_szext_nonmemory_operand, x86_64_immediate_operand,
	x86_64_zext_immediate_operand, const_int_1_31_operand,
	symbolic_operand, pic_symbolic_operand, local_symbolic_operand,
	tls_symbolic_operand, global_dynamic_symbolic_operand,
	local_dynamic_symbolic_operand, initial_exec_symbolic_operand,
	local_exec_symbolic_operand, call_insn_operand, sibcall_insn_operand,
	constant_call_address_operand, const0_operand, const1_operand,
	const248_operand, const_0_to_3_operand, const_0_to_7_operand,
	const_0_to_15_operand, const_0_to_255_operand, incdec_operand,
	shiftdi_operand, reg_no_sp_operand, mmx_reg_operand,
	general_no_elim_operand, nonmemory_no_elim_operand,
	index_register_operand, q_regs_operand, flags_reg_operand,
	non_q_regs_operand, zero_extended_scalar_load_operand,
	vector_move_operand, no_seg_address_operand, sse_comparison_operator,
	ix86_comparison_operator, ix86_carry_flag_operator,
	fcmov_comparison_operator, promotable_binary_operator,
	cmp_fp_expander_operand, ext_register_operand, binary_fp_operator,
	mult_operator, div_operator, arith_or_logical_operator,
	memory_displacement_operand, cmpsi_operand, long_memory_operand,
	aligned_operand): Move to predicates.md as define_predicates.
	(tls_symbolic_operand_1): Remove.
	(x86_64_sign_extended_value): Merge into x86_64_immediate_operand.
	(x86_64_zero_extended_value): Merge into x86_64_zext_immediate_operand.
	(legitimize_address): Merge tls_symbolic_operand contents.
	(ix86_expand_move): Likewise.
	* config/i386/i386-protos.h: Update for exports.
	* config/i386/i386.h (EXTRA_CONSTRAINT): Update for renames.
	(PREDICATE_CODES, SPECIAL_MODE_PREDICATES): Remove.
	* config/i386/i386.md: Include predicates.md.
	* config/i386/predicates.md: New file.

2004-08-13  Mark Mitchell  <mark@codesourcery.com>

	PR c++/16924
	* config/i386/winnt.c (i386_pe_mark_dllexport): Set
	SYMBOL_REF_DECL.
	(i386_pe_mark_dllimport): Likewise.
	(i386_pe_encode_section_info): Likewise, when overriding
	dllimport attribute.

2004-08-12  Geoffrey Keating  <geoffk@apple.com>

	* configure.ac: When testing for flex, nm, ar, and bison, check
	that they will actually be built.
	* configure: Regenerate.

2004-08-12  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.h (MAX_FIXED_MODE_SIZE): Define.
	(MOVE_MAX_PIECES): Define.

2004-08-12  Devang patel  <dpatel@apple.com>

	* dbxout.c (dbxout_begin_prologue): New function.
	(dbx_debug_hooks): Use new begin prologue hook.
	(dbxout_function_end): Emit N_ENSYM.
	* stab.def (N_BNSYM, N_ENSYM): Define and document these two new stabs.

2004-08-12  Janis Johnson  <janis187@us.ibm.com>

	* config/rs6000/altivec.h (vec_dst): Fix C++ functions whose first
	argument is float*.

	* config/rs6000/rs6000.c (altivec_init_builtins): Fix argument type
	for vec_dss.

	* doc/extend.texi (AltiVec builtins): Fix description for recent
	changes.  Update operation list to match current support.

2004-08-12  Andreas Krebbel  <krebbel1@de.ibm.com>

	* config/s390/s390.c (struct s390_frame_layout): New struct as element
	of struct machine_function.
	(cfun->machine->frame_size): Moved into cfun->machine->frame_layout and
	changed all uses.
	(cfun->machine->save_fprs_p): Replaced by cfun_save_high_fprs and
	changed all uses.
	(cfun_frame_layout, cfun_save_high_fprs_p, cfun_gprs_save_area_size)
	(cfun_set_fpr_bit, cfun_fpr_bit_p): New macros.
	(s390_frame_area, s390_register_info): New functions.
	(s390_optimize_prolog): Renamed to s390_optimize_prologue.  Added check
	for base register.
	(s390_return_addr_rtx, s390_return_address_offset)
	(s390_va_start, s390_gimplify_va_arg)
	(s390_emit_prologue, s390_emit_epilogue): Adjusted for new stack
	layouts.
	(s390_frame_info): Functionality partly moved to s390_register_info.
	Made adaptions for new stack layout.
	(save_gprs, restore_gprs): Changed meaning of second parameter and
	adapted all callers.

	* config/s390/s390.h (s390_backchain_string): New global variable.
	(MASK_BACKCHAIN): Removed definition.
	(TARGET_BACKCHAIN): Changed check.
	(TARGET_KERNEL_BACKCHAIN): New macro.
	(TARGET_SWITCHES): Removed entries of "backchain" and "no-backchain".
	(TARGET_OPTIONS): Added "backchain", "no-backchain" and
	"kernel-backchain".
	(DYNAMIC_CHAIN_ADDRESS): Adjusted for new stack layouts.

	* config/s390/s390.md ("allocate_stack"): Added TARGET_KERNEL_BACKCHAIN
	as condition.  Adjusted for new stack layout.

	* doc/invoke.texi: Added documentation for new option
	"-mkernel-backchain" and adjusted documentation of "-mbackchain" and
	"-mno-backchain".

2004-08-12  Paul Brook  <paul@codesourcery.com>

	* config/arm/lib1funcs.asm (ARM_FUNC_ALIAS): Also alias _L__name.
	(aeabi_uidivmod, aeabi_idivmod): Provide thumb implementation.

2004-08-12  David Daney  <ddaney@avtrex.com>

	* java/gcj.texi: Add subsection on signal usage.

2004-08-12  David Edelsohn  <edelsohn@gnu.org>

	* expr.c (move_by_pieces): Set alignment for move to minimum of
	MOVE_MAX_PIECES mode alignment and the largest non-slow mode
	alignment, but not less than the original alignment.
	(move_by_pieces_ninsns): Same.
	(can_store_by_pieces): Similar for store with STORE_MAX_PIECES.
	(store_by_pieces_1): Same.

2004-08-12  Diego Novillo  <dnovillo@redhat.com>

	PR tree-optimization/16867
	* tree.c (is_global_var): New function.
	(needs_to_live_in_memory): Check for TREE_ADDRESSABLE.
	Call is_global_var.
	* tree.h (DECL_NEEDS_TO_LIVE_IN_MEMORY_INTERNAL): Remove.
	Update all users.
	(is_global_var): Declare.
	* tree-dfa.c (dump_variable): Display global and addressable
	attributes.
	(add_referenced_var): Clarify documentation when marking
	variables call-clobbered.
	* tree-flow-inline.h (is_call_clobbered): Call is_global_var
	instead of needs_to_live_in_memory.
	(mark_call_clobbered): If the variable is a tag, mark it
	DECL_EXTERNAL.
	* tree-gimple.c (is_gimple_reg): Don't check for
	TREE_ADDRESSABLE.
	(is_gimple_non_addressable): Likewise.
	* tree-ssa-alias.c (get_nmt_for): Always check whether the tag
	needs to be marked call-clobbered.
	(setup_pointers_and_addressables): Call is_global_var instead
	of needs_to_live_in_memory.
	* tree-ssa-dce.c (need_to_preserve_store): Remove.
	Update all users with is_global_var.
	(mark_stmt_if_obviously_necessary): Fix processing of aliased
	stores.  Don't check the virtual definitions.  Rather, check
	whether the store is going into global memory.
	(find_obviously_necessary_stmts): Get the symbol from the PHI
	result.
	* tree-ssa-operands.c (get_call_expr_operands): Do not add
	clobbering may-defs if the call does not have side effects.

2004-08-12  Jakub Jelinek  <jakub@redhat.com>

	PR c++/16276
	* output.h (default_function_rodata_section,
	default_no_function_rodata_section): New prototypes.
	* target.h (struct gcc_target): Add asm_out.function_rodata_section.
	* target-def.h (TARGET_ASM_FUNCTION_RODATA_SECTION): Define.
	(TARGET_ASM_OUT): Add it.
	* varasm.c (default_function_rodata_section,
	default_no_function_rodata_section): New functions.
	* final.c (final_scan_insn): Call
	targetm.asm_out.function_rodata_section instead of
	readonly_data_section.
	* config/darwin.h (TARGET_ASM_FUNCTION_RODATA_SECTION): Define.
	* config/mcore/mcore.c (TARGET_ASM_FUNCTION_RODATA_SECTION): Likewise.
	* config/ip2k/ip2k.c (TARGET_ASM_FUNCTION_RODATA_SECTION): Likewise.
	* config/rs6000/xcoff.h (TARGET_ASM_FUNCTION_RODATA_SECTION):
	Likewise.
	* config/alpha/alpha.c (TARGET_ASM_FUNCTION_RODATA_SECTION): Likewise.
	* config/i386/cygming.h (TARGET_ASM_FUNCTION_RODATA_SECTION):
	Likewise.
	* config/i386/i386-interix.h (TARGET_ASM_FUNCTION_RODATA_SECTION):
	Likewise.
	* config/arm/pe.h (TARGET_ASM_FUNCTION_RODATA_SECTION): Likewise.
	* config/avr/avr.c (TARGET_ASM_FUNCTION_RODATA_SECTION): Likewise.
	* doc/tm.texi (TARGET_ASM_FUNCTION_RODATA_SECTION): Document.

2004-08-12  Paul Brook  <paul@codesourcery.com>

	* dwarf2out.h (dwarf2out_frame_finish): Conditionalize outputting eh
	frame info.
	* doc/tm.texi: Document interaction between TARGET_UNWIND_INFO and
	DWARF2_UNWIND_INFO.

2004-08-12  Ben Elliston  <bje@au.ibm.com>

	PR target/16286
	* config/rs6000/altivec.h: Change vector to __vector throughout.
	(Except for the `vector' macro itself).

2004-08-12  Zack Weinberg  <zack@codesourcery.com>

	* 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.

2004-08-12  Richard Henderson  <rth@redhat.com>

	* c-common.h (STATEMENT_LIST_HAS_LABEL): New.
	* c-semantics.c (add_stmt): Set it.
	* c-decl.c (finish_decl): Use it to create a new BIND_EXPR
	before instantiating a variable sized type.

2004-08-12  Richard Henderson  <rth@redhat.com>

	* stor-layout.c (round_up, round_down): Move ...
	* fold-const.c (round_up, round_down): ... here.  Use
	multiple_of_p to avoid any arithmetic at all.

2004-08-12  Richard Henderson  <rth@redhat.com>

	* gimplify.c (struct gimplify_init_ctor_preeval_data): New.
	(gimplify_init_ctor_preeval_1): New.
	(gimplify_init_ctor_preeval): New.
	(gimplify_init_ctor_eval): New.
	(gimplify_init_constructor): Use them.  Always gimplify the LHS
	object first.

2004-08-12  Ziemowit Laski  <zlaski@apple.com>

	(This patch is part of merge of objc-improvements-branch
	into mainline.)

	* doc/frontends.texi: Mention Objective-C++ in addition to
	Objective-C.
	* doc/install.texi: Add 'obj-c++' to list of configurable
	languages.
	* doc/invoke.texi: Rename Objective-C option headings to
	indicate they also apply to Objective-C++.  List file
	extensions for Objective-C++ sources.  Mention that
	ObjC and ObjC++ compilations may also use C and C++ options,
	respectively.  Point users to doc/standards.texi for
	further info on ObjC and ObjC++.
	* doc/sourcebuild.texi: Mention the objcp/ directory and
	the Objective-C++ sources it contains.
	* doc/standards.texi: Update link to Apple ObjC site;
	add link to gcc readings.html WWW doc.

2004-08-12  Alan Modra  <amodra@bigpond.net.au>

	* config/rs6000/rs6000.c (function_arg_padding): Revert 2004-07-28
	and 2004-07-14 changes.

2004-08-12  Paul Brook  <paul@codesourcery.com>

	* doc/invoke.texi: Fix typo.

2004-08-11 Devang Patel  <dpatel@apple.com>

	* config/darwin.h (TARGET_OPTION_TRANSLATE_TABLE): Add -dead_strip
	and -no_dead_strip_inits_and_terms.
	(LINK_SPEC): Same.
	* doc/invoke.texi (Darwin Options): Document -dead_strip and
	-no_dead_strip_inits_and_terms.

2004-08-11  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm-protos.h (arm_finalize_pic) Rename ...
	(arm_load_pic_register): ... to this.
	* config/arm/arm.c (arm_finalize_pic): Rename ...
	(arm_load_pic_register): ... to this.  Always output insns at the
	current location.  Load via low reg in thumb mode.
	(arm_expand_prologue): Call arm_load_pic_register.
	(thumb_expand_prologue): Ditto.
	* config/arm/arm.h (FINALIZE_PIC): Remove.
	* config/arm/arm.md (builtin_setjmp_receiver): Call
	arm_load_pic_register.

2004-08-11  Paul Brook  <paul@codesourcery.com>

	* arm.c (thumb_force_lr_save): Add prototype.
	(thumb_compute_save_reg_mask): New function.
	(thumb_find_work_register): New function.
	(arm_get_frame_offsets): Use thumb_compute_save_reg_mask.
	(thumb_unexpanded_epilogue): Ditto.  Remove redundant code.
	Don't clobber r3 when removing pretend args.
	(thumb_expand_prologue): Use thumb_compute_save_reg_mask.
	(thumb_output_function_prologue): Use new functions.
	(thumb_set_return_address): Use thumb_compute_save_reg_mask.
	* arm.h (THUMB_REG_PUSHED_P): Remove.

2004-08-11  James E Wilson  <wilson@specifixinc.com>

	PR rtl-optimization/16490
	* cfgrtl.c (cfg_layout_split_edge): Set global_live_at_start and
	global_live_at_end for new basic block if already set for other blocks.

2004-08-11 David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.h (MAX_FIXED_MODE_SIZE): Define.

	* config/rs6000/rs6000.md (mfcr rlwinm patterns): Set length to 8.
	(mfcr rlwinm rlwinm patterns): Set length to 12.

2004-08-11  Andrew MacLeod  <amacleod@redhat.com>

	* tree-flow-inline.h (get_def_ops, get_use_ops, get_v_may_def_ops,
	get_vuse_ops,get_v_must_def_ops): Add operand structure reference.
	(get_v_may_def_result_ptr, get_v_may_def_op_ptr): New access struct.
	(start_ssa_stmt_operands): Delete.
	* tree-flow.h (struct stmt_ann_d): Replace operand vectors with new
	struct stmt_operands_d.
	(build_ssa_operands): New extern entry point.
	* tree-ssa-dom.c (record_equivalences_from_stmt): Remove operand
	building code, replace with create_ssa_artficial_load_stmt().
	* tree-ssa-operands.c (struct voperands_d): Delete.
	(allocate_v_may_def_optype): Allocate v_may_def_operand_type_t vector.
	(allocate_v_must_def_optype): Use sizeof (tree), not sizeof (tree *).
	(free_uses, free_defs, free_vuses, free_v_may_defs,
	free_v_must_defs): Remove dealloc parameter.
	(remove_vuses, remove_v_may_def, remove_v_must_defs): Delete.
	(finalize_ssa_defs, finalize_ssa_uses, finalize_ssa_v_may_defs,
	finalize_ssa_vuses, finalize_ssa_v_must_defs): Perform all operand
	vector comparisons, ssa_name reuse, and allocations here.
	(verify_start_operands): Delete.
	(finalize_ssa_stmt_operands): Set new operands by calling finalize
	routines.
	(start_ssa_stmt_operands): Move from tree-flow-inline.h.
	(append_def, append_usei): Simplify to simple accumulation.
	(append_v_may_def, append_vuse, append_v_must_def): Simplify to avoiding
	duplicates and simple accumulation.
	(free_ssa_operands): Free vectors in a stmt_operand structure.
	(build_ssa_operands): New. Create a new stmt_operand structure from
	a stmt and an old set of stmt_operands.
	(get_stmt_operands): Simplify and call build_ssa_operands.
	(get_expr_operands, get_asm_expr_operands, get_indirect_ref_operands,
	get_call_expr_operands, add_stmt_operand, add_call_clobber_ops,
	add_call_read_ops): Don't pass prev_vops around anymore.
	(note_addressable): Return if no stmt annotation.
	(copy_virtual_operands): Access v_may_def operands through a struct.
	(create_ssa_artficial_load_stmt): New.  Create a load stmt for DOM's
	hash tables without treating the stmt as a real stmt.
	* tree-ssa-operands.h (struct v_may_def_operand_type): New.  Access
	v_may_def def and use through a struct instead of 2 array elements.
	(struct v_may_def_optype_d): Use v_may_def_operand_type.
	(struct stmt_operands_d): New.  Struct for storing all operand vectors.

2004-08-11  Nick Clifton  <nickc@redhat.com>

	* config/arm/arm.c (arm_is_longcall_p): Update comment describing
	this funciton's behaviour.  Return true when the current function
	has a section attribute and -mlong-calls is in effect.
	* config/arm/arm.h (ARM_DECLARE_FUNCTION_SIZE): Do not set the
	short-call marker when -mlong-calls is in effect and the function
	has a section attribute.

2004-08-10  Zack Weinberg  <zack@codesourcery.com>

	* stmt.c (expand_return): If asked to return the RESULT_DECL,
	just call expand_value_return on result_rtl.

2004-08-10  Richard Henderson  <rth@redhat.com>

	* builtins.def (BUILT_IN_STACK_ALLOC): Remove.
	* builtins.c (expand_builtin) <BUILT_IN_STACK_ALLOC>: Remove.
	* dwarf2out.c (loc_descriptor): Handle PARALLEL here ...
	(add_location_or_const_value_attribute): ... not here.  Use
	loc_descriptor_from_tree if possible.
	(loc_descriptor_from_tree_1): Rename from loc_descriptor_from_tree.
	Simplify address handling.  Handle DECL_VALUE_EXPR.  Handle register
	values specially.
	(loc_descriptor_from_tree): New.  Update callers.
	* expr.c (expand_var): Ignore DECL_VALUE_EXPR variables.
	* gimplify.c (gimplify_decl_expr): Lower variable sized types to
	pointer plus dereference.  Set DECL_VALUE_EXPR.  Set save_stack.
	(gimplify_call_expr): Do not recognize BUILT_IN_STACK_ALLOC
	and BUILT_IN_STACK_RESTORE.
	(gimplify_expr): Lower DECL_VALUE_EXPR decls.
	* stmt.c (expand_stack_alloc): Remove.
	* tree-mudflap.c (mx_register_decls): Don't look for
	BUILT_IN_STACK_ALLOC.
	* tree-nested.c (convert_local_reference): Likewise.
	* tree.h (DECL_VALUE_EXPR): New.

2004-08-10  Richard Henderson  <rth@redhat.com>

	* stor-layout.c (round_up): Check for 0/1 before dividing.
	(round_down): Likewise.

	* tree-tailcall.c (suitable_for_tail_opt_p): Also check DECL_EXTERNAL.

2004-08-09  Mark Mitchell  <mark@codesourcery.com>

	* config.gcc (arm*-*-eabi*): New target.
	* defaults.h (TARGET_LIBGCC_FUNCS): New macro.
	(TARGET_LIB_INT_CMP_BIASED): Likewise.
	* expmed.c (expand_divmod): Try a two-valued divmod function as a
	last resort.
	* gthr.h: Remove bogus tokens at end of #pragma.
	* optabs.c (expand_twoval_binop_libfunc): New function.
	(prepare_cmp_insn): Handle the !TARGET_LIB_INT_CMP_BIASED case.
	(prepare_float_lib_cmp): Try reversing the condition.
	(debug_optab_libfuncs): New function.
	* optabs.h (expand_twoval_binop_libfunc): Declare.
	* config/arm/arm.c (arm_init_libfuncs): New function.
	(arm_compute_initial_eliminatino_offset): Return HOST_WIDE_INT.
	(TARGET_INIT_LIBFUNCS): Define it.
	* config/arm/arm.h (TARGET_BPABI): New macro.
	* config/arm/arm-protos.h
	(arm_compute_initial_elimination_offset): Return HOST_WIDE_INT.
	* config/arm/bpabi.S: New file.
	* config/arm/bpabi.c: Likewise.
	* config/arm/bpabi.h: Likewise.
	* config/arm/ieee754-df.S (__aeabi_dneg): New function or alias.
	(__aeabi_drsub): Likewise.
	(__aeabi_dsub): Likewise.
	(__aeabi_dadd): Likewise.
	(__aeabi_ui2d): Likewise.
	(__aeabi_i2d): Likewise.
	(__aeabi_f2d): Likewise.
	(__aeabi_dmul): Likewise.
	(__aeabi_ddiv): Likewise.
	(__aeabi_cdrcmple): Likewise.
	(__aeabi_cdcmpeq): Likewise.
	(__aeabi_cdcmple): Likewise.
	(__aeabi_dcmpeq): Likewise.
	(__aeabi_dcmplt): Likewise.
	(__aeabi_dcmple): Likewise.
	(__aeabi_dcmpge): Likewise.
	(__aeabi_dcmpgt): Likewise.
	(__aeabi_dcmpun): Likewise.
	(__aeabi_d2iz): Likewise.
	(__aeabi_d2uiz): Likewise.
	(__aeabi_d2f): Likewise.
	* config/arm/ieee754-sf.S (__aeabi_fneg): New function or alias.
	(__aeabi_frsub): Likewise.
	(__aeabi_fsub): Likewise.
	(__aeabi_fadd): Likewise.
	(__aeabi_ui2f): Likewise.
	(__aeabi_i2f): Likewise.
	(__aeabi_fmul): Likewise.
	(__aeabi_fdiv): Likewise.
	(__aeabi_cfrcmple): Likewise.
	(__aeabi_cfcmpeq): Likewise.
	(__aeabi_cfcmple): Likewise.
	(__aeabi_fcmpeq): Likewise.
	(__aeabi_fcmplt): Likewise.
	(__aeabi_fcmple): Likewise.
	(__aeabi_fcmpge): Likewise.
	(__aeabi_fcmpgt): Likewise.
	(__aeabi_fcmpun): Likewise.
	(__aeabi_f2iz): Likewise.
	(__aeabi_f2uiz): Likewise.
	* config/arm/lib1funcs.asm (ARM_CALL): New macro.
	(__aeabi_uidivmod): New function or alias.
	(__aeabi_idivmod): Likewise.
	(__aeabi_idiv0): Likewise.
	(__aeabi_ldiv0): Likewise.
	(__aeabi_llsr): Likewise.
	(__aeabi_lasr): Likewise.
	(__aeabi_llsl): Likewise.
	(bpabi.S): Include it.
	* config/arm/libgcc-bpabi.ver: New file.
	* config/arm/symbian.h (ARM_DEFAULT_ABI): Remove.
	(LINK_SPEC): Remove.
	* config/arm/t-arm-elf (LIB1ASMFUNCS): Add __aeabi_lcmp and
	__aeabi_ulcmp.
	* config/arm/t-bpabi: New file.
	* doc/tm.texi (TARGET_LIBGCC_FUNCS): New entry.
	(TARGET_LIB_INT_CMP_BIASED): Likewise.

2004-08-10  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000-protos.h (expand_block_clear): Declare.
	* config/rs6000/rs6000.md (clrmemsi): New pattern.
	* config/rs6000/rs6000.c (expand_block_clear): New function.
	(expand_block_move): Convert alignment to bits.  Use SImode and
	HImode for unaligned addresses if not STRICT_ALIGNMENT.

2004-08-10  Caroline Tice  <ctice@apple.com>

	* varasm.c (unlikely_section_label): New global variable.
	(unlikely_text_section_name): New global variable.
	(text_section): Remove alignment statement.
	(unlikely_text_section): Remove alignment statement; use
	unlikely_section_label rather than hard-coded string.
	(assemble_start_function): Initialize unlikely_section_label and
	unlikely_text_section_name;  make sure cold section is properly
	aligned at start of function; output unlikely_section_label if
	appropriate.

2004-08-10  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390-protos.h (s390_canonicalize_comparison): Declare.
	* config/s390/s390.c (s390_canonicalize_comparison): New function.
	* config/s390/s390.h (CANONICALIZE_COMPARISON): Define.
	* config/s390/s390.md ("*tmdi_ext", "*tmsi_ext", "*tmqisi_ext",
	"*tmqidi_ext", "*tmdi_mem", "*tmsi_mem", "*tmhi_mem"): Remove.
	("*tmqi_mem"): Remove SUBREG from pattern.
	("*anddi3_cconly"): Prevent accidentally matching TM pattern.
	("*andsi3_cconly"): Likewise.

2004-08-10  H.J. Lu  <hongjiu.lu@intel.com>

	PR target/16909
	* config/i386/i386.md (*strsetdi_rex_1): Use DI instead of SI.

2004-08-10  Janis Johnson  <janis187@us.ibm.com>

	* doc/sourcebuild.texi (compat testing): Document available test
	framework commands.  Use the preferred spelling of DejaGnu.

2004-08-10  Daniel Berlin <dberlin@dberlin.org>

	* lambda.h: Add matrix type, and prototypes for remainder of
	matrix and vector functions.
	(lambda_vector_mult_const): New function.
	(lambda_vector_negate): Ditto.
	(lambda_vector_add): Ditto.
	(lambda_vector_add_mc): Ditto.
	(lambda_vector_copy): Ditto.
	(lambda_vector_zerop): Ditto.
	(lambda_vector_equal): Ditto.
	(lambda_vector_min_nz): Ditto.
	(lambda_vector_first_nz): Ditto.
	(lambda_vector_matrix_mult): Ditto.
	* lambda-mat.c: New file.
	* Makefile.in (lambda-mat.o): New.

2004-08-10  Andrew MacLeod  <amacleod@redhat.com>

	* tree-cfg.c (bsi_insert_before, bsi_insert_after): Call modify_stmt
	after linking stmt into the program.
	(bsi_remove): Don't call modify_stmt.
	* tree-complex.c (update_complex_assignment,
	expand_complex_comparison): Call modify_stmt after changing the stmt.
	* tree-outof-ssa.c (rewrite_trees): Call modify_stmt only if not
	removing the stmt.
	* tree-ssa-ccp.c (substitute_and_fold): Call modify_stmt after changing
	the stmt, and only if needed.
	* tree-ssa-dom.c (thread_across_edge): Pass no annotation for a dummy
	expression.
	(simplify_rhs_and_lookup_avail_expr): Don't take an annotation param.
	(simplify_cond_and_lookup_avail_expr): Use modify_stmt.
	(simplify_switch_and_lookup_avail_expr): Don't take an annotation param.
	(eliminate_redundant_computations): Don't pass an annotation. Call
	modify_stmt rather than setting the annotation directly.
	(record_equivalences_from_stmt): Remove unused local 'j'.
	(cprop_operand): Take a stmt rather than an annotation as a parameter.
	Call modify_stmt.
	(cprop_into_stmt): Pass stmt rather than annotation.
	(update_rhs_and_lookup_avail_expr): Call modify_stmt.
	* tree-ssa-loop-im.c (schedule_sm): Call get_stmt_ann rather than
	modify_stmt.
	* tree-ssa.c (propagate_into_addr): Dont call modify_stmt.

2004-08-10  Jason Merrill  <jason@redhat.com>

	PR middle-end/16948
	* function.c (expand_function_start): Handle DECL_BY_REFERENCE on
	the RESULT_DECL.

2004-08-10  Geoffrey Keating  <geoffk@apple.com>

	* tree-vn.c (val_expr_pair_expr_eq): Compare vuses, to match the
	hash function.

2004-08-10  Roger Sayle  <roger@eyesopen.com>

	* config/mips/mips.md: New reciprocal square root patterns that
	match sqrt(1.0/x) in addition to the existing 1.0/sqrt(x) insns.

2004-08-10  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm-protos.h (arm_set_return_address,
	thumb_set_return_address): Add prototypes.
	* config/arm/arm.h (ARM_FT_EXCEPTION_HANDLER): Remove.
	* config/arm/arm.c (arm_compute_func_type,
	use_return_insn, arm_compute_save_reg0_reg12_mask,
	arm_compute_save_reg_mask, arm_output_function_prologue,
	arm_output_epilogue): Replace ARM_FT_EXCEPTION_HANDLER with
	current_function_calls_eh_return.
	(thumb_exit, thumb_pushpop, thumb_unexpanded_epilogue): Replace
	old eh code.
	(arm_set_return_address, thumb_set_return_address): New functions.
	* config/arm/arm.h (MUST_USE_SJLJ_EXCEPTIONS, DWARF2_UNWIND_INFO,
	ARM_EH_STACKADJ_REGNUM, EH_RETURN_STACKADJ_RTX): Define.
	* config/arm/arm.md (VUNSPEC_EH_RETURN): Add.
	(epilogue): Use the stackadj register.
	(eh_return, arm_eh_return, thumb_eh_return): New pattern.

2004-08-10  Jakub Jelinek  <jakub@redhat.com>

	PR target/3144
	* expr.c (move_by_pieces_ninsns): Add max_size argument.
	(MOVE_BY_PIECES_P): Pass MOVE_MAX_PIECES + 1 to it.
	(CLEAR_BY_PIECES_P): Pass STORE_MAX_PIECES + 1 to it.
	(STORE_BY_PIECES_P): Define similarly to CLEAR_BY_PIECES_P,
	but using MOVE_RATIO.
	(move_by_pieces): Pass max_size to move_by_pieces_ninsns.
	(can_store_by_pieces): Change max_size type to unsigned int.
	(store_by_pieces_1): Likewise.  Pass max_size to
	move_by_pieces_ninsns.
	* config/s390/s390.h (STORE_BY_PIECES_P): Define.
	* config/sh/sh.c (MOVE_BY_PIECES_P): Pass MOVE_MAX_PIECES + 1
	to move_by_pieces_ninsns.
	(STORE_BY_PIECES_P): Define.
	* config/ns32k/ns32k.h (STORE_BY_PIECES_P): Pass STORE_MAX_PIECES + 1
	to move_by_pieces_ninsns.
	* doc/tm.texi (STORE_BY_PIECES_P): Document changed default.

	* config/i386/i386.h (CLEAR_RATIO): Define.

2004-08-09  Paolo Bonzini  <bonzini@gnu.org>

	* expr.c (expand_expr_real_1): Add back code that was not dead.

2004-08-09  Andrew Pinski  <apinski@apple.com>

	* c-common.c (c_common_get_alias_set): Set the aliasing set of the type
	which is found to be compatible before returning the aliasing set.

2004-08-09  Daniel Jacobowitz  <dan@debian.org>

	* ggc-zone.c (struct alloc_zone): Add statistics counters.
	(always_collect): New flag.
	(ggc_alloc_zone_1): Update statistics support.  Don't include
	overhead in allocated counter.
	(sweep_pages): Update allocated counter for large pages.  Don'y
	include overhead.
	(ggc_collect_1): Always collect.
	(ggc_collect): Honor always_collect flag.  Sum all zones to decide
	whether to collect.
	(SCALE, LABEL): New macros.
	(ggc_print_statistics): Add statistics support.

2004-08-09  Roger Sayle  <roger@eyesopen.com>

	* expmed.c (sdiv_pow2_cheap, smod_pow2_cheap): Change type to bool.
	(init_expmed): Fix potential overrun problem with "all.reg".
	(expand_sdiv2_pow2): Add an alternate implementation for signed
	division, if the target provides a suitable conditional move insn.

2004-08-09  Paul Brook  <paul@codesourcery.com>
	Richard Henderson  <rth@redhat.com>

	* unwind-dw2.c (uw_install_context_1): Update target saved stack
	pointer.

2004-08-09  Geoffrey Keating  <geoffk@apple.com>

	* ggc-common.c (ggc_rlimit_bound): Don't check RSS limit.
	Check DATA limit only if there's no AS limit.  Ignore insanely
	low DATA limits.
	(ggc_min_heapsize_heuristic): Don't divide AS or RSS limits by 8,
	but take care that the AS limit isn't overrun.
	* doc/invoke.texi: Update documentation of min-heapsize parameter.

2004-08-09  Jeff Law  <law@redhat.com>

	* Makefile.in (OBJC-common): Add tree-ssa-threadupdate.c
	(tree-ssa-threadupdate.o): Add dependencies.
	* tree-ssa-threadupdate.c: New file.
	* tree-flow.h (incoming_edge_threaded): New flag in block annotation.
	(rewrite_vars_out_of_ssa): Remove prototype.
	(cleanup_tree_cfg): Returns a bool.
	* tree.h (thread_through_all_blocks): Prototype.
	* tree-outof-ssa.c  (SSANORM_*): Move into here.
	(remove_ssa_form): Now static.
	(rewrite_vars_out_of_ssa): Kill.
	* tree-ssa-live.c (register_ssa_partitions_for_vars): Kill.
	* tree-ssa-live.h (SSANORM_*): Moved into tree-outof-ssa.c.
	(remove_ssa_form, register_partitions_for_vars): Kill declarations.
	* tree-cfg.c (cleanup_tree_cfg): Return a value indicating if
	anything was changed.
	* tree-phinodes.c (add_phi_arg): Get the block for the PHI
	from the PHI's annotation rather than the edge associated with
	the new argument.
	* tree-ssa-dom.c (redirection_edges): Kill.
	(redirect_edges_and_update_ssa_graph): Kill.
	(tree_ssa_dominator_optimize): Do not reset forwardable flag
	for blocks anymore.  Do not initialize redirection_edges.
	Call thread_through_all_blocks.  Simplify code for cleanup
	of the CFG and iterating.  No longer call cleanup_tree_cfg
	outside the iteration loop.
	(thread_across_edge): No longer mess with forwardable blocks.

2004-08-09  Zack Weinberg  <zack@codesourcery.com>

	* explow.c (memory_address): Use memory_address_p.
	* recog.c (general_operand): Likewise.
	* regrename.c: No need to define REG_OK_STRICT.

2004-08-09  Steven Bosscher  <stevenb@suse.de>

	* timevar.def (TV_CPROP1, TV_CPROP2, TV_PRE, TV_HOIST, TV_LSM):
	New timers.
	* gcse.c: Include timevar.h.
	(const_prop_count, copy_prop_count): Rename to global_const_prop_count
	and global_copy_prop_count.
	(local_const_prop_count, local_copy_prop_count): New static globals.
	(gcse_main): Set the right timevar for each pass.
	(cprop_jump): Increment global_const_prop_count when a constant is
	propagated.  Add "GLOBAL" to dump output.
	(cprop_insn): Increment global_const_prop_count when a constant is
	propagated, or global_copy_prop_count when a copy is propagated.
	(do_local_cprop): Likewise for local_const_prop_count and
	local_copy_prop_count.
	(one_cprop_pass): Initialize const/cprop counters to zero.
	Print out results of local and global const/cprop separately.
	(bypass_block): Break over-length line.
	* Makefile.in (gcse.o): Add TIMEVAR_H dependency.  Fix dependencies
	for bb-reorder.o and tracer.o.

2004-08-09  Paolo Bonzini  <bonzini@gnu.org>

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

2004-08-09  Paolo Bonzini  <bonzini@gnu.org>

	* expr.c (expand_expr_real_1): Use optab_for_tree_code.

2004-08-09  Paolo Bonzini  <bonzini@gnu.org>

	* expr.c (var_rtx): Remove.
	(expand_expr_real_1) <LOOP_EXPR, EXIT_EXPR,
	LABELED_BLOCK_EXPR, EXIT_BLOCK_EXPR, TRUTH_ANDIF_EXPR,
	TRUTH_ORIF_EXPR, COMPOUND_EXPR, CONJ_EXPR, INIT_EXPR>:
	Abort.
	(expand_expr_real_1) <COND_EXPR>: Remove most special cases.
	* optabs.c (emit_clr_insn, emit_0_to_1_insn): Remove.
	* optabs.h (emit_clr_insn, emit_0_to_1_insn): Remove.

2004-08-08  Mostafa Hagog  <mustafa@il.ibm.com>
	Ayal Zaks <zaks@il.ibm.com>

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

2004-08-07  H.J. Lu  <hongjiu.lu@intel.com>

	* config/i386/i386.c (ix86_expand_clrmem): Revert the last
	change.

2004-08-07  H.J. Lu  <hongjiu.lu@intel.com>

	* config/i386/i386.c (ix86_expand_clrmem): Properly call
	gen_strset for 64bit target.

2004-08-07  Olivier Hainque  <hainque@act-europe.fr>

	* config/vxworks.h (HANDLE_SYSV_PRAGMA): Remove definition.

2004-08-07  Jason Merrill  <jason@redhat.com>

	Make return in memory explicit.
	* function.c (aggregate_value_p): Check DECL_BY_REFERENCE.
	(assign_parm_find_data_types): Remove code for old front end
	invisible reference handling.
	(assign_parms): Handle DECL_BY_REFERENCE on the RESULT_DECL.
	(expand_function_end): Likewise.
	* gimplify.c (gimplify_return_expr): Handle a dereferenced
	RESULT_DECL.
	* tree-inline.c (copy_body_r): Don't bother looking for &* anymore.
	(declare_return_variable): Handle DECL_BY_REFERENCE.
	* cp/cp-gimplify.c (is_invisiref_parm): Also handle RESULT_DECL.
	(cp_genericize_r): Use convert_from_reference.
	Don't dereference a RESULT_DECL directly inside a RETURN_EXPR.
	(cp_genericize): Handle the RESULT_DECL.  Unset TREE_ADDRESSABLE.

	* c-common.c (c_warn_unused_result): Check TREE_USED before
	warning about a CALL_EXPR with an unused value.

2004-08-06  Mark Mitchell  <mark@codesourcery.com>

	* config/arm/symbian.h (CC1_SPEC): Avoid passing duplicate options
	to the compiler.  Use -fshort-wchar by default.

2004-08-06  Pat Haugen  <pthaugen@us.ibm.com>

	* params.def (PARAM_MIN_CROSSJUMP_INSNS): New.
	* cfgcleanup.c (try_crossjump_to_edge): Add minimum insn match
	threshhold.
	* doc/invoke.texi (param): Document min-crossjump-insns.

2004-08-06  Richard Sandiford  <rsandifo@redhat.com>

	PR c/13282
	* c.opt (Wmissing-field-initializers): New option.
	* c-opts.c (c_common_post_options): Make -Wextra turn it on by default.
	* c-typeck.c (pop_init_level): Guard the missing field warning with
	warn_missing_field_initializers rather than extra_warnings.
	* doc/invoke.texi (-Wmissing-field-initializers): Document, moving
	some of the explanation from...
	(-Wextra): ...here.  Say that the missing field warning can be
	seperately controlled by -Wmissing-field-initializers.

2004-08-06  Paolo Bonzini  <bonzini@gnu.org>

	* expr.c (expand_expr_real_1) <ENTRY_VALUE_EXPR>: Remove.
	* tree-inline.c (estimate_num_insns_1) <ENTRY_VALUE_EXPR>: Remove.
	* tree-pretty-print.c (dump_generic_node) <ENTRY_VALUE_EXPR>: Remove.
	* tree.def (ENTRY_VALUE_EXPR): Remove.

2004-08-06  Jakub Jelinek  <jakub@redhat.com>

	* config/i386/i386.c (ix86_expand_clrmem): Move gen_cld down to
	the places where it is actually needed.  Don't use repz; stosb
	for -Os with sufficiently small constant sizes.
	For sufficiently small repz; stos{l,q} repeat counts use a sequence
	of stos{l,q} instructions instead.

2004-08-06  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	PR tree-optimization/16807
	* loop-iv.c (dump_iv_info): Dump invariants correctly.
	(iv_subreg, iv_extend): Express value of invariant purely in
	base field.

2004-08-06  Mark Mitchell  <mark@codesourcery.com>

	* config/arm/symbian.h (CC1_SPEC): Add -fno-short-enums.
	(CC1PLUS_SPEC): Define it to be the same as CC1_SPEC.

2004-08-06  Roman Zippel  <zippel@linux-m68k.org>

	* config/m68k/m68k.c (post_inc_operand,pre_dec_operand): New.
	* config/m68k/m68k.h (PREDICATE_CODES): add post_inc_operand,
	pre_dec_operand.
	* config/m68k/m68k.md (zero_extend*2): delay the splitting of the
	pattern until reload is finished to allow better code generation
	and split them completely into separate instrunctions.
	(*andsi3_split): New pattern.

2004-08-05  Mark Mitchell  <mark@codesourcery.com>

	* tree.c (handle_dll_attribute): Move here from i383/winnt.c.
	Replace use of DECL_INLINE with DECL_DECLARED_INLINE_P.  Set
	DECL_VISIBLITY.  Test TARGET_DLLIMPORT_DECL_ATTRIBUTES with #if.
	* tree.h (handle_dll_attribute): Declare.  Test
	TARGET_DLLIMPORT_DECL_ATTRIBUTES with #if.
	* c-common.h (c_determine_visibility): Declare.
	* c-common.c (c_determine_visibility): New function.
	* c-decl.c (finish_decl): Use it.
	(finish_function): Likewise.
	* defaults.h (TARGET_DLLIMPORT_DECL_ATTRIBUTES): Define it to
	zero, by default.  Use #if, not	#ifdef, to test it.
	* config/arm/arm.c (arm_attribute_table): Use
	handle_dll_attribute.  Test TARGET_DLLIMPORT_DECL_ATTRIBUTES with
	#if.
	* config/arm/pe.h (TARGET_DLLIMPORT_DECL_ATTRIBUTES): Define to 1.
	* config/i386/cygming.h (TARGET_DLLIMPORT_DECL_ATTRIBUTES): Define
	to 1.
	* config/i386/i386-protos.h (ix86_handle_dll_attribute): Remove.
	* config/i386/i386.c (ix86_attribute_table): Use
	handle_dll_attribute for dllimport/dllexport.  Test
	TARGET_DLLIMPORT_DECL_ATTRIBUTES with #if.
	* config/i386/winnt.c (ix86_handle_dll_attribute): Remove.
	* config/mcore/mcore.h (TARGET_DLLIMPORT_DECL_ATTRIBUTES): Define
	it to 1.
	* config/mcore/mcore.c (TARGET_DLLIMPORT_DECL_ATTRIBUTES): Test it
	with #if.
	* config/sh/symbian-pre.h (TARGET_DLLIMPORT_DECL_ATTRIBUTES): Define
	it to 1.
	* doc/extend.texi (dllexport): Clarify and correct documentation.
	(dllimport): Likewise.
	* doc/tm.texi (TARGET_DLLIMPORT_DECL_ATTRIBUTES): Mention
	handle_dll_attribute.

2004-08-05  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-ssa-loop-manip.c: New file.
	* Makefile.in (tree-ssa-loop-manip.o): Add.
	* tree-flow.h (rewrite_into_loop_closed_ssa, verify_loop_closed_ssa):
	Declare.
	* tree-ssa-loop.c (tree_loop_optimizer_init): Create loop closed ssa
	form.
	(tree_ssa_loop_done): Verify loop closed ssa form.
	* tree-ssa-loop-im.c (move_computations): Update loop closed ssa form.

2004-08-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* pa.c (pa_asm_output_aligned_bss, pa_asm_output_aligned_common,
	pa_asm_output_aligned_local): New functions.
	* pa-protos.h: Add prototypes for pa_asm_output_aligned_bss,
	pa_asm_output_aligned_common and pa_asm_output_aligned_local.
	* pa-pro-end.h (ASM_OUTPUT_ALIGNED_COMMON): Use
	pa_asm_output_aligned_common.
	(ASM_OUTPUT_ALIGNED_LOCAL): Use pa_asm_output_aligned_local.
	* pa.h (ASM_OUTPUT_ALIGNED_BSS): New macro.
	(ASM_OUTPUT_ALIGNED_COMMON): Use pa_asm_output_aligned_common.
	(ASM_OUTPUT_ALIGNED_LOCAL): Use pa_asm_output_aligned_local.
	* pa64-hpux.h (MAX_OFILE_ALIGNMENT): New macro.
	(ASM_OUTPUT_ALIGNED_COMMON): Use pa_asm_output_aligned_common.
	(ASM_OUTPUT_ALIGNED_LOCAL): Use pa_asm_output_aligned_local.
	* som.h (MAX_OFILE_ALIGNMENT): Provide maximum alignment of global
	common data.

2004-08-05  Andrew Pinski  <apinski@apple.com>

	* objc/objc-act.c (build_objc_string_object): Mark the address
	expression as constant.

2004-08-05  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.c (rs6000_rtx_costs): Fix mask_operand
	and mask64_operand thinkos.  Handle ZERO_EXTRACT.  Handle
	SIGN_EXTEND / ZERO_EXTEND of MEM.  Handle rlwinm patterns.

2004-08-05  Joseph S. Myers  <jsm@polyomino.org.uk>

	* config/linux.h, config/i386/linux.h, config/sparc/linux.h:
	Remove definitions conditioned on USE_GNULIBC_1 or conditioned
	out, and associated obsolete comments.

2004-08-05  Nathan Sidwell  <nathan@codesourcery.com>

	* tree.h (force_fit_type): Return a tree, take three flags.
	* fold-const.c (force_fit_type): Set TREE_OVERFLOW and
	TREE_CONSTANT_OVERFLOW here.
	(int_const_binop, const_binop): Adjust.
	(size_int_type): Do sign extension here.
	(fold_convert_const, optimize_bit_field_compare,
	decode_field_reference, all_ones_mask_p, fold_div_compare, fold,
	fold_negate_const, fold_abs_const, fold_not_const): Adjust.
	* tree.c (size_in_bytes, int_fits_type_p): Adjust.

2004-08-05  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	PR tree-optimization/16864
	* tree-tailcall.c (eliminate_tail_call): Do not create phi nodes
	for ssa names without default_def.

2004-08-05  Richard Sandiford  <rsandifo@redhat.com>

	* config/i386/i386.c (ix86_expand_prologue): If the function uses a
	frame pointer, restore eax with an ebp-relative address.

2004-08-04  Geoffrey Keating  <geoffk@apple.com>

	PR 14516
	* c-common.c (c_expand_decl): Don't special-case static VAR_DECLs.
	* c-common.h (make_rtl_for_local_static): Delete.
	* c-decl.c (shadow_tag_warned): Clean up comment.
	(finish_decl): Clean up spacing.  Use set_user_assembler_name when
	appropriate.  Don't pass asmspec to rest_of_decl_compilation.
	* c-semantics.c (make_rtl_for_local_static): Delete.
	* expr.c (init_block_move_fn): Use set_user_assembler_name.
	(init_block_clear_fn): Likewise.
	* passes.c (rest_of_decl_compilation): Remove asmspec parameter,
	expect it to be in DECL_ASSEMBLER_NAME.  Update callers in many files.
	* toplev.h (rest_of_decl_compilation): Remove asmspec parameter.
	* tree.h (make_decl_rtl): Remove second parameter.
	(set_user_assembler_name): New.
	* varasm.c (set_user_assembler_name): New.
	(make_decl_rtl): Remove second parameter.  Update callers in many
	files.

2004-08-05  Adam Nemet  <anemet@lnxw.com>

	* config.gcc (case i[34567]86-*-lynxos*): Update to LynxOS 4.0.
	(case rs6000-*-lynxos*): Rename it to powerpc-*-lynxos*.  Update
	to LynxOS 4.0.
	* gthr-lynx.h: New file.
	* config/lynx-ng.h: Remove file.
	* config/lynx.h: Update to LynxOS 4.0.
	* config/t-lynx: New file.
	* config/i386/lynx-ng.h: Remove file.
	* config/i386/lynx.h: Update to LynxOS 4.0.
	* config/rs6000/lynxbase.h: Remove file.
	* config/rs6000/lynx.h: Update to LynxOS 4.0.
	* config/rs6000/t-lynx: New file.
	* doc/install.texi (Options specification): Remove reference to
	LynxOS from systems where --with-gnu-as makes a difference.

2004-08-05  Joseph S. Myers  <jsm@polyomino.org.uk>

	* c-common.c (c_stddef_cpp_builtins): Define __INTMAX_TYPE__ and
	__UINTMAX_TYPE__.
	* c-cppbuiltin.c (builtin_define_stdint_macros): New.  Define
	__INTMAX_MAX__.
	(c_cpp_builtins): Call it.
	* doc/cpp.texi: Update.

2004-08-04  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.c (rs6000_rtx_costs): LABEL_REFs are zero
	cost.

2004-08-04  Jan Hubicka  <jh@suse.cz>

	* basic-block.h (profile_staus): New global variable.
	* cfg.c (profile_status): Declare.
	(check_bb_profile): Break out from ....; use profile_status
	(dump_flow_info): ... here.
	* cfgbuild.c (find_basic_blocks): Set profile_status.
	* cfgexpand.c (tree_expand_cfg): Likewise.
	* predict.c (estimate_probability): Likewise.
	* profile.c (branch_prob): Likewise.
	* tree-cfg.c (build_tree_cfg): Likewise.
	(dump_function_to_file): Use check_bb_profile.
	* tree-pretty-print (dump_bb_header): Likewise.
	* tree-profile.c (do_tree_profiling): Cleanup.

2004-08-04  Zack Weinberg  <zack@codesourcery.com>

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

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

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

2004-08-04  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>
	    Jeff Law  <law@redhat.com>

	* tree-cfg.c (tree_duplicate_bb): Mark duplicated definitions.
	* tree-flow.h (rewrite_ssa_into_ssa): Declaration changed.
	* tree-into-ssa.c (rewrite_ssa_into_ssa): Use new interface to
	manipulate the duplicated ssa names.
	* tree-ssanames.c (ssa_names_to_rewrite): New variable.
	(marked_for_rewrite_p, any_marked_for_rewrite_p, mark_for_rewrite,
	unmark_all_for_rewrite, marked_ssa_names, release_ssa_name_force):
	New functions.
	(release_ssa_name): Do not release ssa names that may have multiple
	definitions.
	* tree.h (release_ssa_name_force, mark_for_rewrite,
	unmark_all_for_rewrite, marked_for_rewrite_p, any_marked_for_rewrite_p,
	marked_ssa_names): Declare.
	* tree-ssa-loop-ch.c (mark_defs_for_rewrite): Remove.
	(duplicate_blocks): Remove call to mark_defs_for_rewrite.
	Update call to rewrite_ssa_into_ssa.

2004-08-04  Mark Mitchell  <mark@codesourcery.com>

	* defaults.h (TARGET_DECLSPEC): New macro.
	* c-cppbuiltin.c (c_cpp_builtins): Handle TARGET_DECLSPEC.
	* config/arm/pe.h (SUBTARGET_CPP_SPEC): Remove __declspec support.
	* config/arm/symbian.h (TARGET_DLLIMPORT_DECL_ATTRIBUTES): Define.
	* config/i386/beof-elf.h (TARGET_OS_CPP_BUILTINS): Remove
	__declspec support.
	(TARGET_DECLSPEC): Define.
	* config/i386/cygming.h (TARGET_OS_CPP_BUILTINS): Remove
	__declspec support.
	* config/i386/i386-interix.h (TARGET_OS_CPP_BUILTINS): Remove
	__declspec support.
	(TARGET_DECLSPEC): Define.
	* config/mcore/mcore.h (TARGET_CPU_CPP_BUILTINS): Remove
	__declspec support.
	* config/sh/symbian-pre.h (SUBTARGET_CPP_SPEC): Remove __declspec
	support.
	* doc/tm.texi (TARGET_DECLSPEC): Document.

	* doc/extend.texi: Fix typo in comment.

2004-08-04  Paul Brook  <paul@codesourcery.com>

	* target-def.h (TARGET_CXX_CDTOR_RETURNS_THIS): Define.
	(TARGET_CXX): Use it.
	* target.h (struct gcc_target): Add cdtor_returns_this.
	* config/arm/arm.c (arm_cxx_cdtor_returns_this): New function.
	(TARGET_CXX_CDTOR_RETURNS_THIS): Define.
	* doc/tm.texi: Document TARGET_CXX_CDTOR_RETURNS_THIS.

2004-08-03  Nathan Sidwell  <nathan@codesourcery.com>

	* c-lex.c (narrowest_unsigned_type, narrowest_signed_type): Take
	low/high pair. Do range checking directly.
	(interpret_integer): Adjust.

2004-08-04  Nick Clifton  <nickc@redhat.com>

	* config/sh/sh.h (TARGET_SWITCHES): Add no-renesas to select the
	GCC ABI.
	* doc/invoke.texi: Document this new switch and also the -mrenesas
	switch.

2004-08-04  Nathan Sidwell  <nathan@codesourcery.com>

	* cfglayout.c (insn_locators_initialize): Update the current
	location before initializing a location.

2004-08-03  Zack Weinberg  <zack@codesourcery.com>

	* dbxout.c (dbxout_function_decl): Always call dbxout_function_end.
	(dbxout_function_end): Return after emitting the "Lscope" symbol
	under the same conditions that this function formerly wasn't called.
	Add explanatory comments.

	PR 14860
	* c-decl.c (record_builtin_type): Call debug_hooks->type_decl
	on the new decl.

	PR 13956
	* dbxout.c (dbx_output_lbrac, dbx_output_rbrac): New
	functions, broken out of dbxout_block.
	(dbxout_block): The block at depth 0 should get LBRAC/RBRAC
	stabs too, if it contains symbols.  Use the begin_label and
	the Lscope label (emitted by dbxout_function_end) for the
	range of this block.

2004-08-03  Nathanael Nerode  <neroden@gcc.gnu.org>

	* doc/install.texi: Update autoconf version requirements.

2004-08-03  Zack Weinberg  <zack@codesourcery.com>

	* defaults.h (LEGITIMATE_PIC_OPERAND_P): Provide default definition.
	* recog.c (general_operand, immediate_operand, nonmemory_operand)
	(asm_operand_ok): Remove #ifdefs on LEGITIMATE_PICOPERAND_P.
	* regclass.c (record_reg_classes): Likewise.
	* reload.c (find_reloads): Likewise.
	* reload1.c (reload): Likewise.

2004-08-03  Zack Weinberg  <zack@codesourcery.com>

	* gensupport.c (init_md_reader_args_cb): Renamed from
	init_md_reader_args.  Add third option, callback function for
	parsing program-specific options.  Add diagnosis of incorrect
	number of input files.
	(init_md_reader): Fold into init_md_reader_args_cb.
	(init_md_reader_args): Now a thin wrapper around
	init_md_reader_args_cb.
	* gensupport.h: Update prototypes.

	* genattr.c, genattrtab.c, gencodes.c, genconfig.c, genemit.c
	* genextract.c, genflags.c, genopinit.c, genoutput.c, genpeep.c
	* genrecog.c: No need to diagnose lack of an input file;
	init_md_reader_args will handle it.
	* genconditions.c: Likewise, and use init_md_reader_args.
	* genconstants.c: Likewise, and no need to call read_md_rtx.

2004-08-03  Joseph S. Myers  <jsm@polyomino.org.uk>

	* c-decl.c (implicitly_declare): Diagnose incompatible implicit
	declarations.

2004-08-03  Mike Stump  <mrs@apple.com>

	* config/darwin-c.c: Don't search in "/Local/Library/Frameworks"
	for frameworks.
	* doc/invoke.texi (Darwin Options): Update to reflect above.

2004-08-03  Roger Sayle  <roger@eyesopen.com>

	PR middle-end/16790
	* fold-const.c (extract_muldiv_1) <NOP_EXPR>: Disallow local
	truncations, not just global truncations.

2004-08-03  Andrew Pinski  <apinski@apple.com>

	PR bootstrap/16865
	* loop-iv.c (simplify_using_assignment): Initialize lhs.

2004-08-03  Paul Brook  <paul@codesourcery.com>

	* doc/install.texi: Document MPFR requirement.

2004-08-03  Maciej W. Rozycki  <macro@linux-mips.org>

	* aclocal.m4 (gcc_AC_FUNC_MMAP_BLACKLIST): Check for <sys/mman.h>
	and mmap() explicitly instead of relying on preset autoconf cache
	variables.
	* configure: Regenerate.

2004-08-03  H.J. Lu  <hongjiu.lu@intel.com>

	PR target/16570
	* config.gcc (i[34567]86-*-* | x86_64-*-*): Add i386/t-gmm_malloc
	to tmake_file.
	(i[34567]86-*-linux*aout* | i[34567]86-*-linux*libc1): Likewise.
	(i[34567]86-*-linux* | x86_64-*-linux*): Add i386/t-pmm_malloc
	to tmake_file.

	* config/i386/t-gmm_malloc: New file.
	* config/i386/t-pmm_malloc: Likewise.

	* config/i386/xmmintrin.h: Include <mm_malloc.h>.

2004-08-03  H.J. Lu  <hongjiu.lu@intel.com>
	    Tanguy Fautré  <tfautre@pandora.be>

	* config/i386/pmm_malloc.h: New file.

2004-08-03  Danny Smith  <dannysmith@users.sourceforge.net>

	* config/i386/gmm_malloc.h: New file.

2004-08-03  Dale Johannesen  <dalej@apple.com>

	* config/rs6000/rs6000.c (machopic_output_stub): Align Darwin stubs.
	* c-common.c: Include opts.h.
	(c_common_get_alias_set): Fix check for a single input file.
	* toplev.c: Remove current_file_decl.
	* tree.h: Ditto.

2004-08-03  Mark Mitchell  <mark@codesourcery.com>

	* config.gcc (arm*-*-symbianelf*): New target.
	* config/arm/symbian.h: New file.

	* gthr-gnat.c: Add visibility #pragmas.
	* gthr-gnat.h : Likewise.
	* gthr.h: Likewise.
	* libgcc2.c (__ffsSI2): Move prototype to libgcc2.h.
	(__ffsDI2): Likewise.
	(__clzSI2): Likewise.
	(__ctzSI2): Likewise.
	(__ctzDI2): Likewise.
	(__popcountSI2): Likewise.
	(__popcountDI2): Likewise.
	(__paritySI2): Likewise.
	(__parityDI2): Likewise.
	* libgcc2.h: Add visibility #pragmas.
	(__clzDI2): Add prototype.
	(__clzSI2): Likewise.
	(__ctzSI2): Likewise.
	(__ffsDI2): Likewise.
	(__ffsSI2): Likewise.
	(__ctzDI2): Likewise.
	(__popcountSI2): Likewise.
	(__popcountDI2): Likewise.
	(__paritySI2): Likewise.
	(__parityDI2): Likewise.
	* unwind-dw2-fde.h: Add visibility #pragmas.
	* unwind.h: Likewise.

2004-08-03  David Edelsohn  <edelsohn@gnu.org>
	    Dale Johannesen  <dalej@apple.com>
	    Roger Sayle  <roger@eyesopen.com>

	* config/rs6000/rs6000.c (rs6000_rtx_costs): Calculate cost of
	constants more accurately.  Adjust costs for FMA instructions.
	Add cases for most logical and float operations.  Recurse into
	most operands.

2004-08-03  Richard Earnshaw  <rearnsha@arm.com>

	* config.gcc (strongarm-*, xscale-*): Add t-arm to tmake_files.

2004-08-03  Pat Haugen  <pthaugen@us.ibm.com>

	* ra-build.c (conflicts_between_webs): For webs that cross a call add
	conflicts to regs_invalidated_by_call.

2004-08-03  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (emit_sfm): Only emit a single frame adjustment.

2004-08-03  Jan Hubicka  <jh@suse.cz>

	* coverage.c (tree_coverage_counter_ref): Fix computation of the new
	ARRAY_REF argument.

2004-08-03  Richard Earnshaw  <rearnsha@arm.com>

	* arm-cores.def: Sort by architecture.  Add arm946es, arm966es,
	arm968es, arm10e, arm1020e, arm1022e.
	* invoke.texi: Update list of ARM cores.
	* arm-tune.md: Regenerate.

2004-08-03  Richard Earnshaw <rearnsha@arm.com>

	* arm/gentune.sh: New file.
	* arm/t-arm: New file.
	* arm/arm-tune.md: New file (autogenerated).
	* config.gcc (arm*-*-*): Add t-arm to tmake_file for all variants.
	* arm.md (attribute tune): Delete.  Include arm-tune.md.

2004-08-03  Paolo Bonzini <bonzini@gnu.org>

	* gcc.c (add_prefix, add_sysrooted_prefix): Remove
	penultimate parameter.  All callers adjusted.
	(struct prefix_list): Remove used_flag_ptr.
	(find_a_file): Do not set *pl->used_flag_ptr.
	(warn_B, warn_std_ptr): Remove.

2004-08-03  Yossi Markovich <yossim@il.ibm.com>
	    Mostafa Hagog <mustafa@il.ibm.com>

	* config/rs6000/altivec.md (altivec_vnmsubfp): Fix wrong pattern.

2004-08-02  Geoffrey Keating  <geoffk@apple.com>

	* dwarf2out.c (output_call_frame_info): Don't change data format
	due to TARGET_USES_WEAK_UNWIND_INFO.  Always refer to the local
	label.  Use 'true' not '1'.
	* doc/install.texi (powerpc-*-darwin*): Mention cctools version
	required.

2004-08-02  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* gdbinit.in: Reflect previous changes to rtunion_def.

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

	* fold-const.c (fold) <TRUNC_MOD_EXPR>: The transformation "X % -Y"
	-> "X % Y" is only valid for TRUNC_MOD_EXPR.

2004-08-02  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* vec.h (DEF_VEC_P): Add proper cast to uses of vec_o_reserve and
	vec_p_reserve.
	* langhooks.h (lang_hooks::builtin_function): Rename parameter
	from "class" to "bt_class".

2004-08-02  Paul Brook  <paul@codesourcery.com>

	PR rtl-optimization/15068
	* flow.c (init_propagate_block_info): Check condition is reversible.

2004-08-02  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* gengtype.h (options::info): Change type to const char *.
	(enum gc_used_enum): Move out of struct type scope.
	* gengtype.c (create_option): Convert initializer for option::info to
	appropiate type.
	(adjust_field_type, walk_type, write_func_for_structure,
	write_root, write_roots): Remove pointless cast.

2004-08-02  J"orn Rennecke <joern.rennecke@superh.com>

	* genopinit.c (gen_insn): Check for MODE_COMPLEX_FLOAT patterns for $F.

2004-08-02  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* rtl.h (union rtunion_def): Have all members  start with the
	prefix "rt_".
	(XINT, XSTR, XEXP, XVEC, XMODE, XBITMAP, XTREE, XBBDEF, XTMPL,
	X0INT, X0UINT, X0STR, X0EXP, X0VEC, X0MODE, X0BITMAP, X0TREE,
	X0MEMATTR, X0BBDEF, X0REGATTR, XCINT, XCUINT, XCSTR, XCEXP,
	XCVEC, XCMODE, XCBITMAP, XCTREE, XCBBDEF, XC2EXP): Adjust members
	access.
	* gengtype.c (adjust_field_rtx_def): Likewise.
	* rtlanal.c (loc_mentioned_in_p): Likewise.

2004-08-02  Richard Sandiford  <rsandifo@redhat.com>

	* config.gcc (mips*-*-elf*, mips*-*-rtems*): Add elfos.h to tm_file.
	Replace uses of mips/elf64.h with mips/elf.h
	* config/mips/elf.h (MAX_OFILE_ALIGNMENT, TARGET_ASM_NAMED_SECTION)
	(TYPE_OPERAND_FMT, TYPE_ASM_OP, SIZE_ASM_OP, BSS_SECTION_ASM_OP)
	(ASM_OUTPUT_ALIGNED_BSS, ASM_WEAKEN_LABEL, ASM_OUTPUT_WEAK_ALIAS)
	(MAKE_DECL_ONE_ONLY, INIT_SECTION_ASM_OP, FINI_SECTION_ASM_OP)
	(HANDLE_SYSV_PRAGMA): Delete.
	(ASM_OUTPUT_DEF): Fix formatting.
	* config/mips/elf64.h: Delete.

2004-08-01  Zack Weinberg  <zack@codesourcery.com>

	* 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.

2004-08-01  Geoffrey Keating  <geoffk@apple.com>

	* config/rs6000/rs6000.c (rs6000_split_multireg_move): Just abort
	if trying to *store* to a non-offsettable address.
	* config/rs6000/rs6000.md (movtf_internal): Don't move GPRs to
	a nonoffsettable address.
	(movdi_internal32): Don't move GPRs to a nonoffsettable address.
	Clean up.
	(movti_string): Don't move GPRs to a nonoffsettable address.
	(movti_ppc64): Don't move GPRs to a nonoffsettable address.  Clean up.

2004-08-02  Ben Elliston  <bje@au.ibm.com>

	PR target/16155
	* config/rs6000/altivec.h: Replace typeof with __typeof__.

2004-08-01  Richard Henderson  <rth@redhat.com>

	* expr.c (expand_expr_real_1) <normal_inner_ref>: Fix crash with
	variable sized types.

2004-08-01  Richard Sandiford  <rsandifo@redhat.com>

	* doc/invoke.texi: In the MIPS options section, remove the passage
	saying that -mexplicit-relocs is usually disabled for -mabicalls
	-fno-unit-at-a-time.
	* config/mips/mips.c (override_options): Remove the code that enforced
	this rule.

2004-08-01  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.md (cprestore): Provide two alternatives, one for
	an in-range offset and one for an out-of-range offset.  Wrap the latter
	in .set macro/.set nomacro if it's inside a .set nomacro block.

2004-08-01  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips-protos.h (mips_gp_save_slot): Remove.
	(mips_restore_gp): Declare.
	* config/mips/mips.c (mips_add_offset): Add a scratch register
	argument.  Reimplement in rtl only, reusing MIPS16 logic from
	mips_output_mi_thunk.
	(mips_legitimize_address, mips_legitimize_const_move): Adjust calls
	to mips_add_offset.
	(mips_gp_save_slot): Delete.
	(mips_restore_gp): New function.
	(mips_set_return_address, mips_output_mi_thunk): Use mips_add_offset.
	* config/mips/mips.md (exception_receiver): Turn into a
	define_insn_and_split.  Use mips_restore_gp to do the split.
	(call_internal, call_value_internal, call_value_multiple_internal): Use
	mips_restore_gp to restore $gp.

2004-07-31  Andrew Pinski  <apinski@apple.com>

	PR other/16842
	* mkheaders.in (libsubdir): s/gcc-lib/gcc/.

2004-07-31  Joseph S. Myers  <jsm@polyomino.org.uk>

	* c-decl.c (diagnose_mismatched_decls): Give error for external
	redeclaration of identifier declared with no linkage, not just
	warning with -Wtraditional.  Do not check DECL_CONTEXT to give
	error for redeclaration with no linkage.

2004-07-30  Geoffrey Keating  <geoffk@apple.com>
	    Fariborz Jahanian <fjahanian@apple.com>

	* config/rs6000/rs6000.c (legitimate_lo_sum_address_p): Permit
	non-offsettable addresses even for DImode.
	(rs6000_split_multireg_move): Cope with non-offsettable addresses
	being moved into multiple GPRs.

	* config/rs6000/rs6000.c (RS6000_DEFAULT_LONG_DOUBLE_SIZE): Default
	to 64.
	(rs6000_override_options): Use RS6000_DEFAULT_LONG_DOUBLE_SIZE.
	* config/rs6000/darwin.h (RS6000_DEFAULT_LONG_DOUBLE_SIZE): Define
	to 128.
	* config/rs6000/darwin-ldouble.c (isless): New macro.
	(inf): New macro.
	(nonfinite): New macro.
	(FPKINF): Delete.
	(_xlqadd): Completely rewrite.
	(_xlqmul): Correct overflow handling.
	(_xlqdiv): Correct overflow handling.
	* config/rs6000/darwin-ldouble-format: New file.

2004-07-30  Roger Sayle  <roger@eyesopen.com>
	    Richard Henderson  <rth@redhat.com>

	* config/i386/i386.md: New peephole2's to convert imul by 3, 5 or
	9 into the equivalent lea instruction.

2004-07-30  Richard Henderson  <rth@redhat.com>

	* gimplify.c (gimplify_expr) <case CONST_DECL>: Don't replace
	with DECL_INITIAL if fb_lvalue.
	* tree-gimple.c (is_gimple_id): Add CONST_DECL.
	* tree-pretty-print.c (dump_decl_name): Dump unnamed CONST_DECL
	with <Cxxx>.
	* tree-ssa-ccp.c (maybe_fold_stmt_indirect): Fold CONST_DECL.

2004-07-30  Diego Novillo  <dnovillo@redhat.com>

	* tree-ssa-alias.c (compute_points_to_and_addr_escape): If a
	pointer escapes through a function call, assume that the
	callee will dereference it.
	(add_pointed_to_var): Assume that VALUE is always an
	ADDR_EXPR.
	(collect_points_to_info_r): Only call add_pointed_to_var if
	the value is an ADDR_EXPR.

2004-07-30  Diego Novillo  <dnovillo@redhat.com>

	* tree-ssa-alias.c (create_alias_map_for): Do not get the
	alias set of the inner type of ARRAY_TYPEs.

2004-07-29  Diego Novillo  <dnovillo@redhat.com>

	* tree-ssa-ccp.c (visit_assignment): Move code to prevent
	setting a non-register to UNDEFINED right before the call to
	set_lattice_value.

2004-07-29  Kaz Kojima  <kkojima@gcc.gnu.org>

	* config/sh/lib1funcs.asm: Make aliases movstr* for movmem*.

2004-07-29  Diego Novillo  <dnovillo@redhat.com>

	* tree-ssa.c (verify_flow_sensitive_alias_info): When
	comparing points-to sets of different pointers, make sure the
	second pointer is actually referenced in the code.

2004-07-29  Zack Weinberg  <zack@codesourcery.com>

	* 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.

2004-07-29  Mark Mitchell  <mark@codesourcery.com>

	* c-common.h (lang_post_pch_load): New variable.
	* c-pch.c (lang_post_pch_load): Define it.
	(c_common_read_pch): Use it.
	* cgraphunit.c (record_call_1): Give the front end a chance to
	record additional needed entities when a variable is marked as
	needed.
	* tlink.c (recompile_files): Robustify.
	(scan_linker_output): If a symbol is assigned to a file,
	but after recompilation is not present there, issue an error
	message.

2004-07-29  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-ssa-loop-im.c (force_move_till_expr, force_move_till):
	Take orig_loop argument and pass it to set_level.
	(schedule_sm): Pass the correct orig_loop to force_move_till.

2004-07-29  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* cfgloop.c (update_latch_info): Update dominator of the new block.
	(canonicalize_loop_headers, flow_loops_find): Do not free dominance
	info.
	* dominance.c (verify_dominators): Check that the dominance tree is
	connected.
	(recount_dominator): Ignore unreachable blocks.
	(iterate_fix_dominators): Cleanup old dominance information before
	recomputing it.

2004-07-29  Diego Novillo  <dnovillo@redhat.com>

	* tree-ssa-operands.c (get_expr_operands): Revert changes
	to ADDR_EXPR processing introduced by:
	    2004-06-21  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
	    * tree-ssa-operands.c (get_expr_operands): Minor rearrangements.

2004-07-29  Joseph S. Myers  <jsm@polyomino.org.uk>

	* doc/implement-c.texi: Add C90 subclause references.  Point to
	preprocessor documentation instead of duplicating it.  Add points
	only present in C90.  Fill in documentation for all points.

2004-07-29  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* pa.c (output_movb): Correct typo.

2004-07-29  Pat Haugen  <pthaugen@us.ibm.com>

	* ra.h (single_reg_in_regclass): Declare.
	* ra.c (single_reg_in_regclass): Define.
	(first_hard_reg): New.
	(init_ra): Initialize single_reg_in_regclass.
	* ra-colorize.c (ok_class): New.
	(coalesce, aggressive_coalesce, extended_coalesce_2): Use it.

2004-07-29  Nathan Sidwell  <nathan@codesourcery.com>

	* gcov-io.h: Allow zero tag as EOF indicator.
	(gcov_is_eof): Remove.
	(gcov_truncate): Remove.
	* gcov-io.c (gcov_seek): Always SEEK_SET.
	* libgcov.c (gcov_exit): Don't use gcov_truncate.  Write explicit
	EOF tag.
	* coverage.c (read_counts_file): Don't use gcov_is_eof.
	* gcov-dump.c (dump_file): Likewise.
	* gcov.c (read_graph_file, read_count_file): Likewise.

	* c-decl.c (complete_array_type): Don't gratuitously copy
	maxindex.  Check it always has a type.

2004-07-29  Steven Bosscher  <stevenb@suse.de>

	* 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.

2004-07-29  Alexandre Oliva  <aoliva@redhat.com>

	Introduce sh2a support.
	2004-07-29  Alexandre Oliva  <aoliva@redhat.com>
	* config.gcc: Build multilibs for sh2a and sh2a-single by
	default.
	* config/sh/sh.h (SUPPORT_SH2A, SUPPORT_SH2A_SINGLE): Define by
	default.  Split their tests out of the corresponding SH4
	multilibs.
	* config/sh/t-sh (MULTILIB_MATCHES): Don't ever use SH4 or SH4a
	multilibs for SH2a.
	2004-07-28  Alexandre Oliva  <aoliva@redhat.com>
	* config.gcc: Handle sh2a multilibs and cpu selection.
	* config/sh/sh.h: Likewise.  Handle sh2a command line flags.
	* config/sh/t-mlib-sh2a: New.
	* config/sh/t-mlib-sh2a-nofpu: New.
	* config/sh/t-mlib-sh2a-single: New.
	* config/sh/t-mlib-sh2a-single-only: New.
	2004-07-09  Nick Clifton  <nickc@redhat.com>
	Issue 43400
	* config/sh/sh.h (DRIVER_SELF_SPECS): Issue an error message if
	-ml and -m2a are used together.
	2004-03-23  DJ Delorie  <dj@redhat.com>
	* config/sh/sh.c (sh_builtin_saveregs): Use the double code only
	when we have a double-sized FPU.
	2004-02-24  Corinna Vinschen <vinschen@redhat.com>
	* config/sh/lib1funcs.asm (set_fpscr): Don't build if __SH2A_NOFPU__
	is set.
	* config/sh/elf.h (SUBTARGET_ASM_ISA_SPEC): Add cases for -msh2a-nofpu,
	-msh2a-single and -msh2a-single-only
	2004-02-24  Corinna Vinschen <vinschen@redhat.com>
	* config/sh/crt1.asm: Don't generate FPU instructions if __SH2A_NOFPU__
	is set.
	2004-02-20  DJ Delorie  <dj@delorie.com>
	* config/sh/sh.md (movsf_i, movsf_ie, movsf, ble, bge): Disable for sh2a-nofpu.
	2004-02-20  Fred Fish <fnf@redhat.com>,
	Corinna Vinschen <vinschen@redhat.com>
	* config/sh/t-sh (MULTILIB_OPTIONS): Add 2a-nofpu.
	(MULTILIB_EXCEPTIONS): Don't build littel-endian on sh2a.
	2004-02-18  DJ Delorie  <dj@redhat.com>
	* config/sh/sh.c (broken_move): Add support for movi20.
	* config/sh/sh.h: Likewise.
	(SHIFT_COUNT_TRUNCATED): Set for sh2a.
	* config/sh/sh.md (udivsi3_sh2a): New.
	(udivsi3): Call it.
	(divsi3_sh2a): New.
	(divsi3): Call it.
	(mul_r): New.
	(ashlsi3_sh2a): New.
	(ashrsi3_sh2a): New.
	(lshrsi3_sh2a): New.
	(movsi_i): Disable for sh2a.
	(movsi_ie): Add movi20.
	(movsf_i, movsf_ie, movsf, ble, untyped_call): Explicitly enable
	sh2a, for -m2a-nofpu mode.
	2004-02-13  DJ Delorie  <dj@redhat.com>
	* config/sh/lib1funcs.asm: Handle double vs single better.
	* config/sh/sh.h: Likewise.
	2004-02-09  DJ Delorie  <dj@redhat.com>
	* config/sh/crt1.asm: Add support for sh2a.
	* config/sh/elf.h: Likewise.
	* config/sh/lib1funcs.asm: Likewise.
	* config/sh/sh.c: Likewise.
	* config/sh/sh.md: Likewise.
	* config/sh/sh.h: Likewise.
	* config/sh/t-sh: Likewise.

2004-07-28  Alexandre Oliva  <aoliva@redhat.com>

	* config/frv/frv.md (movqi_internal, movhi_internal,
	movsi_internal): Add backup alternatives for memory inputs.

2004-07-28  Matt Austern  <austern@apple.com>

	* config/darwin.c (darwin_one_byte_bool): New global variable.
	* config/darwin.h (darwin_one_byte_bool): Declare.
	(SUBTARGET_OPTIONS): Define macro.  (for -mone-byte-bool flag.)
	* config/rs6000/darwin.h (BOOL_TYPE_SIZE): Conditionalize on
	value of darwin_one_byte_bool.
	* doc/invoke.texi: Document -mone-byte-bool flag.

2004-07-28  Eric Christopher  <echristo@redhat.com>

	* c-common.c (c_common_unsafe_for_reeval): Delete.
	* c-lang.c (LANG_HOOKS_UNSAFE_FOR_REEVAL): Delete use.
	* c-pretty-print.c (pp_c_expression): Delete UNSAVE_EXPR case.
	* calls.c (fix_unsafe_tree): Delete.
	(expand_call): Delete code which used above.
	* dojump.c (do_jump): Delete UNSAVE_EXPR case.
	* expr.c (expand_expr_real_1): Ditto.
	* fold-const.c (non_lvalue): Ditto.
	* langhooks-def.h (LANG_HOOKS_UNSAFE_FOR_REEVAL): Delete.
	(lhd_unsafe_for_reeval): Ditto.
	* langhooks.c (lhd_unsafe_for_reeval): Ditto.
	* langhooks.h (unsafe_for_reeval): Ditto.
	(unsave_expr_now): Adjust comment.
	* tree-inline.c (copy_body_r): Delete UNSAVE_EXPR bits.
	(estimate_num_insns_1): Ditto.
	* tree-pretty-print.c (dump_generic_node): Ditto.
	* tree.c (expr_align): Ditto.
	(unsave_expr): Delete.
	(unsafe_for_reeval): Ditto.
	* tree.h (unsafe_for_reeval, unsave_expr): Ditto.
	* tree.def (UNSAVE_EXPR): Delete.
	* objc/objc-lang.c (LANG_HOOKS_UNSAFE_FOR_REEVAL): Delete.

2004-07-28  Zack Weinberg  <zack@codesourcery.com>

	* tree.h (enum tls_model): Move ...
	* coretypes.h: ... here.

2004-07-28  Richard Sandiford <rsandifo@redhat.com>

	* config/frv/frv.h (EPILOGUE_USES): New.  Use LR.

2004-07-28  Richard Sandiford  <rsandifo@redhat.com>

	* cse.c (validate_canon_reg): New function, split out from...
	(canon_reg): ...here.  Use validate_canon_reg for both 'e' and 'E'.

2004-07-28  Diego Novillo  <dnovillo@redhat.com>

	* tree-ssa-alias.c (maybe_create_global_var): Don't just
	return if .GLOBAL_VAR has been created.

2004-07-28  Diego Novillo  <dnovillo@redhat.com>

	* tree-ssa.c (verify_flow_insensitive_alias_info): Process
	every variable that may have aliases, not just tags.

2004-07-28  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/rs6000.md ("move_from_CR_gt_bit"): Rename to
	move_from_CR_eq_bit.
	Rename UNSPEC_MV_CR_GT to UNSPEC_MV_CR_EQ.


	* config/rs6000/spe.md ("e500_flip_gt_bit"): Rename to
	e500_flip_eq_bit.

	* config/rs6000/rs6000-protos.h: Rename output_e500_flip_gt_bit to
	output_e500_flip_eq_bit.

	* config/rs6000/rs6000.c (output_e500_flip_gt_bit): Rename to
	output_e500_flip_eq_bit.
	(rs6000_emit_sCOND): Rename call to output_e500_flip_gt_bit to
	output_e500_flip_eq_bit.
	Rename gen_move_from_CR_gt_bit to gen_move_from_CR_eq_bit.
	(print_operand): case D.  Get to EQ bit.

2004-07-28  Richard Sandiford  <rsandifo@redhat.com>

	* gcov.c (function_summary): Add missing \n.

2004-07-28  Alexandre Oliva  <aoliva@redhat.com>

	Introduce sh4a support.
	* config.gcc: Handle sh4a multilibs and cpu selection.
	* config/sh/sh.h: Likewise.  Handle sh4a command line flags.
	* config/sh/t-mlib-sh4a: New.
	* config/sh/t-mlib-sh4al: New.
	* config/sh/t-mlib-sh4a-nofpu: New.
	* config/sh/t-mlib-sh4a-single: New.
	* config/sh/t-mlib-sh4a-single-only: New.
	2004-02-20  DJ Delorie  <dj@redhat.com>
	* config/sh/sh.md ("movua"): Change constraint from "m" to "Sua".
	* config/sh/sh.h (EXTRA_CONSTRAINT_S): Add "Sua" support.
	2003-08-22  Eric Christopher  <echristo@redhat.com>
	* config/sh/sh4a.md: Update for chip errata.
	2003-08-07  Eric Christopher  <echristo@redhat.com>
	* config/sh/sh4a.md: New file. sh4a processor description.
	2003-07-08  Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/sh.h (TARGET_SWITCHES): Added 4al.  Adjust description
	of -m4a-nofpu.
	(SH_ASM_SPEC): Pass -dsp for -m4al, not -m4a-nofpu.
	* config/sh/t-sh (MULTILIB_MATCHES): Map -m4al to -m4a-nofpu.
	* doc/invoke.texi (SH Options): Document -m4al.
	2003-07-03  Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/sh.c (expand_block_move): Remove commented-out code
	checked in by mistake.
	(sh_cannot_change_mode_class): Enable SUBREGs to be used to select
	single elements from SFmode vectors.
	* config/sh/sh.md (fsca): Use VEC_CONCAT to initialize the output
	register.
	(sinsf2, cossf2, sindf2, cosdf2): Don't emit CLOBBER.
	2003-07-01  Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/sh.h (sh_fsca_sf2int, sh_fsca_df2int,
	sh_fsca_int2sf): Remove variable declarations.
	* config/sh/sh.c (sh_fsca_sf2int, sh_fsca_df2int,
	sh_fsca_int2sf): New functions.
	(sh_fsca_sf2int_rtx, sh_fsca_df2int_rtx,
	sh_fsca_int2sf_rtx): New static variables.
	* config/sh/sh-protos.h (sh_fsca_sf2int, sh_fsca_df2int,
	sh_fsca_int2sf): Declare.
	* config/sh/sh.md: Adjust.
	* doc/invoke.texi (SH Options): Document new options.
	* config/sh/lib1funcs.asm (ic_invalidate): Remove SH4a forward
	compatibility from SH4 code.
	2003-06-27  Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/sh.c (expand_block_move): Don't emit POST_INC too
	early.
	(memory_movsrc_operand): Renamed to...
	(unaligned_load_operand): ... this.  Simplified.
	* config/sh/sh.h (PREDICATE_CODES): Adjust.
	* config/sh/sh.md (movua, extv, extzv): Likewise.  Change movua's
	input operand to SImode, and adjust the others.  Introduce
	post-increment by peephole.
	* config/sh/sh.c (expand_block_move): Give the target address the
	same mode as the temp reg.
	* config/sh/sh.c (expand_block_move): Use a temp reg for unaligned
	copying.
	2003-06-26  Alexandre Oliva  <aoliva@redhat.com>
	Introduce support for SH4a.
	* config/sh/lib1funcs.asm (ic_invalidate): Use icbi if
	__SH4A__.  Emit 4 4kb blocks and touch all of them otherwise.
	* config/sh/sh.c (sh_fsca_sf2int, sh_fsca_df2int,
	sh_fsca_int2sf): New.
	(sh_init_builtins): Initialize them.
	(print_operand): Support `d'.
	(expand_block_move): Use movua if src is misaligned.
	(memory_movsrc_operand): New.
	* config/sh/sh.h (TARGET_CPU_CPP_BUILTINS): Define __SH4A__
	and one of the SH4 macros.
	(SH4A_BIT, TARGET_SH4A_ARCH, TARGET_SH4A_FP,
	SELECT_SH4A_NOFPU, SELECT_SH4A_SINGLE_ONLY, SELECT_SH4A,
	SELECT_SH4A_SINGLE): New.
	(TARGET_NONE): Add SH4A_BIT.
	(TARGET_SWITCHES): Add 4a-single-only, 4a-single, 4a-nofpu and 4a.
	(SH_ASM_SPEC): Pass -dsp if -m4a-nofpu.
	(sh_fsca_sf2int, sh_fsca_df2int, sh_fsca_int2sf): Declare.
	(OVERRIDE_OPTIONS): Set cpu to CPU_SH4A when appropriate.
	(enum processor_type): Added PROCESSOR_SH4A.
	(PREDICATE_CODES): Add memory_movsrc_operand.
	* config/sh/sh.md: Removed unused variables.
	(attr cpu): Add sh4a.
	(attr type): Add movua, fsrra and fsca.
	(prefetch): New, for SH4.
	(ic_invalidate_line, ic_invalidate_line_sh4a): Use icbi.
	(toggle_sz): Set type to fp.
	(toggle_pr, rsqrtsf2, fsca, sinsf2, cossf2, sindf2, cosdf2): New.
	(movua, extv, extzv): New.
	* config/sh/t-sh: Add multilibs for 4a, 4a-nofpu, 4a-single
	and 4a-single-only.

2004-07-28  Diego Novillo  <dnovillo@redhat.com>

	* tree-optimize.c (init_tree_optimization_passes): Schedule
	pass_may_alias right after the program is renamed into SSA.
	* tree-pass.h (PROP_alias): Define.
	* tree-outof-ssa.c (pass_del_ssa): Require PROP_alias.
	* tree-sra.c (pass_sra): Likewise.
	* tree-ssa-ccp.c (pass_ccp): Likewise.
	* tree-ssa-copyrename.c (pass_rename_ssa_ccp): Likewise.
	* tree-ssa-dce.c (pass_dce): Likewise.
	* tree-ssa-dom.c (pass_dominator): Likewise.
	* tree-ssa-dse.c (pass_dse): Likewise.
	* tree-ssa-forwprop.c (pass_forwprop): Likewise.
	* tree-ssa-loop-ch.c (pass_ch): Likewise.
	* tree-ssa-phiopt.c (pass_phiopt): Likewise.
	* tree-ssa-pre.c (pass_pre): Likewise.
	* tree-tailcall.c (pass_tail_recursion): Likewise.
	* tree-ssa.c (pass_redundant_phi): Likewise.
	* tree-ssa-alias.c (aliases_computed_p): Remove.
	Update all users.
	(init_alias_info): Do not mark all type tags for renaming
	unconditionally.
	Clear may_aliases from every symbol.
	(setup_pointers_and_addressables): If a pointer has not been
	dereferenced and it had a type tag, clear it and mark the old
	tag for renaming.

2004-07-28  Diego Novillo  <dnovillo@redhat.com>

	PR tree-optimization/16705
	* tree-ssa-alias.c (create_global_var): Set DECL_EXTERNAL on
	.GLOBAL_VAR.

2004-07-27  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* expr.c (expand_expr_real_1, case PARM_DECL): Remove obsolete error
	check.

	* gimplify.c (maybe_with_size_expr): If already have WITH_SIZE_EXPR,
	don't make another one.

	PR optimization/15077
	* function.h (struct function): Add field saved_static_chain_decl.
	Fix comment for static_chain_decl.
	* tree-inline.c (save_body): Add new arg and handle static_chain_decl.
	* tree-inline.h (save_body): Add new arg.
	* tree-optimize.c (tree_rest_of_compilation): Handle saving
	static_chain_decl.

2004-07-27  Richard Henderson  <rth@redhat.com>

	* gimplify.c (is_gimple_addr_expr_arg_or_indirect): Remove.
	(gimplify_modify_expr, gimplify_addr_expr, gimplify_expr): Use
	is_gimple_addressable.
	* tree-gimple.c (is_gimple_addressable): Rename from
	is_gimple_addr_expr_arg; accept INDIRECT_REF.
	(is_gimple_lvalue): Don't test INDIRECT_REF directly.
	* tree-gimple.h, tree-sra.c, tree-ssa-loop-im.c: Update for
	rename to is_gimple_addressable.

2004-07-28  Alan Modra  <amodra@bigpond.net.au>

	* config/rs6000/rs6000.c (function_arg_padding): Pad SFmode upwards.

2004-07-27  Richard Henderson  <rth@redhat.com>

	* function.c (assign_stack_local_1): Widen alignment to HOST_WIDE_INT
	before rounding.

2004-07-27  Zack Weinberg  <zack@codesourcery.com>

	* 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.

2004-07-27  Steven Bosscher  <stevenb@suse.de>

	* cfgexpand.c (tree_expand_cfg): Fix comment.

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

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

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

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

2004-07-27  Brian Booth  <bbooth@redhat.com>

	* tree-optimize.c (register_one_dump_file): Update condition that uses
	static_pass_number.
	(dup_pass_1): Replace with...
	(next_pass_1): This.
	(NEXT_PASS): Call next_pass_1.
	(DUP_PASS): Remove.
	(init_tree_optimization_passes): Remove uses of DUP_PASS.
	(execute_one_pass): Update condition that uses
	static_pass_number.
	* tree-pass.h (tree_opt_pass): Declare static_pass_number as a signed
	integer.

2004-07-27  Nick Clifton  <nickc@redhat.com>

	* config/m32r/m32r.c: Include integrate.h in order to get the
	prototype for get_hard_reg_initial_val().

	* config/m32r/m32r.md (m32rpipeline): Remove unused value "m32r"
	and tidy up indentation.
	(final_presence_set): Use absence_set instead, so that if there is
	nothing in the "o" pipe the "s" pipe can be scheduled.

2004-07-27  Diego Novillo  <dnovillo@redhat.com>

	* tree-ssa-alias.c (create_name_tags): Ignore pointers that
	don't have PT_VARS nor PT_MALLOC set.
	Clear name tag from pointers that have not been dereferenced.
	(set_pt_anything, set_pt_malloc): Forward declare.
	* tree-ssa-copy.c (may_propagate_copy): Compare alias sets,
	not type compatibility when determining if a pointer can be
	copy propagated.

2004-07-27  Richard Sandiford  <rsandifo@redhat.com>

	* expr.h (canonicalize_condition, get_condition): Add an int argument.
	* gcse.c (fis_get_condition): Reimplement using get_condition, leaving
	it to check whether the condition is still valid at the jump insn.
	* ifcvt.c (noce_get_condition): Likewise.
	(noce_get_alt_condition): Update call to canonicalize_condition.
	* loop-iv.c (simplify_using_initial_values): Update call to
	get_condition.  Remove FIXME.
	(check_simple_exit): Update call to get_condition.
	* loop-unswitch.c (may_unswitch_on): Likewise.
	* loop.c (check_dbra_loop): Likewise.
	(canonicalize_condition, get_condition): Add an argument to say whether
	the condition must still be valid at INSN.
	(get_condition_for_loop): Update call to get_condition.  Require that
	the condition be valid at INSN.
	* predict.c (estimate_probability): Update call to get_condition.
	Remove unused earliest parameter.
	(expected_value_to_br_prob): Update call to canonicalize_condition.

2004-07-26  Eric Christopher  <echristo@redhat.com>

	* tree-dfa.c (add_referenced_var): Register initializers of global
	variables.

2004-07-26  Paolo Bonzini  <bonzini@gnu.org>

	* config/i386/i386.c (function_arg): Always treat 8-
	and 16-byte wide vectors the same, even if MMX/SSE
	are disabled.
	(contains_128bit_aligned_vector_p): Add comment.

2004-07-26  J"orn Rennecke <joern.rennecke@superh.com>

	* ra.h (enum node_type): Rename to:
	(enum ra_node_type).
	* ra-colorize.c: Likewise.

2004-07-26  Richard Sandiford  <rsandifo@redhat.com>

	* cfgcleanup.c (try_simplify_condjump): Call update_forwarder_flag
	after simplifying the jump.

2004-06-26  Richard Henderson  <rth@redhat.com>

	* calls.c (combine_pending_stack_adjustment_and_call): Make
	preferred_unit_stack_boundary argument unsigned.  Make
	unadjusted_alignment unsigned.
	(expand_call): Make preferred_stack_boundary and
	preferred_unit_stack_boundary variables unsigned.
	* function.c (assign_stack_local_1): Make alignment unsigned.
	* function.h (struct function): Make stack_alignment_needed,
	preferred_stack_boundary unsigned.
	* config/i386/i386.c (ix86_preferred_stack_boundary): Make unsigned.
	(ix86_compute_frame_layout): Make stack_alignment_needed,
	preferred_alignment variables unsigned.
	* config/i386/i386.h (ix86_preferred_stack_boundary): Make unsigned.

2004-07-26  Tom Tromey  <tromey@redhat.com>

	* tree.h: Fix typo in comment.

2004-07-26  Daniel Jacobowitz  <dan@debian.org>

	PR bootstrap/12804
	* ggc-zone.c (struct alloc_chunk): Remove attribute packed.
	(MAX_FREE_BIN_SIZE): Increase on 64-bit targets.
	(ggc_free): Remove incorrect freeing.
	(sweep_pages): Advance PP for large pages.  Fix indentation.

2004-07-26  Richard Sandiford  <rsandifo@redhat.com>

	PR rtl-optimization/16643
	* cfglayout.h (cfg_layout_initialize): Add a flags parameter.
	* cfglayout.c (cfg_layout_initialize): Pass it to cleanup_cfg.
	* basic-block.h (reorder_basic_blocks): Add a flags parameter.
	* cfglayout.c (reorder_basic_blocks): Pass it to cfg_layout_initialize.
	(partition_hot_cold_basic_blocks): Pass 0 to cfg_layout_initialize.
	* function.c (thread_prologue_and_epilogue_insns): Likewise.
	* rtl.h (tracer): Add a flags parameter.
	* tracer.c (tracer): Pass it to cfg_layout_initialise.
	* passes.c (rest_of_handle_stack_regs): Pass 0 to reorder_basic_blocks.
	(rest_of_handle_reorder_blocks): Update calls to tracer and
	reorder_basic_blocks, passing CLEANUP_UPDATE_LIFE if appropriate.
	(rest_of_handle_tracer): Pass 0 to tracer.
	(rest_of_handle_loop2): Pass 0 to cfg_layout_initialize.

2004-07-25  David Edelsohn  <edelsohn@gnu.org>

	PR target/16239
	* config/rs6000/rs6000.md (movdi_internal64): Further disparage
	f->f.

2004-07-24  Nathan Sidwell  <nathan@codesourcery.com>

	* tree.h (BINFO_BASE_ACCESSES): Accesses are a VEC(tree).
	(BINFO_BASE_ACCESS): Adjust.
	(BINFO_BASE_ACCESS_APPEND): New.
	(struct tree_binfo): Make base_accesses a VEC(tree) pointer.
	* dbxout.c (dbxout_type): Adjust binfo access accessing.
	* dwarf2out.c (gen_member_die): Likewise.
	* tree-dump.c (deque_and_dump): Likewise.

2004-07-26  Falk Hueffner  <falk@debian.org>

	* config/alpha/alpha.c (alpha_rtx_cost_data): Tweak int_div
	costs.

2004-07-25  Roger Sayle  <roger@eyesopen.com>

	* config/i386/i386.c (output_fp_compare): Use ffreep to pop top
	value off of the stack if TARGET_USE_FFREEP.

2004-07-26  Bernardo Innocenti  <bernie@develer.com>

	* gengtype.c (oprintf): Replace xrealloc () with XRESIZEVEC ().
	* gengtype-yacc.y: Likewise.  Replace free() with XDELETE ().
	* c-typeck.c (PUSH_SPELLING): Remove redundant NULL-pointer
	check on invocation of XRESIZEVEC ().

2004-07-26  Bernardo Innocenti  <bernie@develer.com>

	* c-common.c (disable_builtin_function): Rename variable n to
	new_disabled_builtin.
	* c-decl.c (duplicate_decls): Rename parameter decl to new_decl.
	Rename local variable old to old_decl.
	* gensupport.c (shift_output_template): Rename parameter old to src.
	* simplify-rtx.c (simplify_replace_rtx): Rename parameter oldx to
	old_rtx and newx to new_rtx.

2004-07-26  Bernardo Innocenti  <bernie@develer.com>

	* Makefile.in (C_PRAGMA_H): New variable to track dependencies
	of c-pragma.h.
	* c-pragma.h (c_lex, c_lex_with_flags): Change returntype to
	enum cpp_ttype.
	* c-lex.c: Likewise.

2004-07-25  Roger Sayle  <roger@eyesopen.com>

	* fold-const.c (constant_boolean_node): Make extern.
	(make_range): Wrap long lines.
	(fold_cond_expr_with_comparison): Remove unnecessary call to
	pedantic_non_lvalue.  Add missing calls to fold_convert.
	(fold_truthop): Add missing calls to fold_convert.
	(fold): Likewise.
	* tree.h (constant_boolean_node): Add prototype here.
	* builtins.c (expand_builtin_strncmp): Add missing calls to
	fold_convert.
	* tree-ssa-dom.c (record_equivalences_from_incoming_edge):
	Call fold_convert and constant_boolean_node to correct types.
	* tree-ssa-forwprop.c (substitute_single_use_vars): Add
	missing call to fold_convert to correct types.

2004-07-26  Niall Douglas  <s_fsfeurope2@nedprod.com>
	    Brian Ryner  <bryner@brianryner.com>

	PR c++/9283
	PR c++/15000
	* c-common.c (c_common_attribute_table): Allow
	handle_visibility_attribute to be called for types.
	(handle_visibility_attribute) When given a type, set the visibility
	bits on the TYPE_NAME.  When given a decl, don't set no_add_attrs
	so that we can check later whether the attribute was present. Added
	warning if attribute applied to non class type.
	* c-decl.c (diagnose_mismatched_decls): Updated rules for merging
	decls and checking that they are consistent.
	* common.opt: Added -fvisibility.
	* c.opt, c-opts.c: Added -fvisibility-inlines-hidden.
	* c-pragma.h, c-pragma.c: Added handle_pragma_visibility().
	* flags.h, tree.h: Added assorted support defines for overall patch
	* opts.c: Added parsing support for -fvisibility.
	* tree.c (build_decl): Set visibility for all decls to be whatever
	is in force at that time.
	* varasm.c (default_binds_local_p_1): Reworked logic determining
	when to make a symbol locally bound.
	* doc/invoke.texi: Added documentation for -fvisibility and
	-fvisibility-inlines-hidden.

2004-07-25  Bernardo Innocenti  <bernie@develer.com>

	* basic-block.h (reorder_block_def): Rename to reorder_block_def_p.
	* c-common.c: Add missing casts from void * to other types.
	* c-decl.c: Likewise.
	* c-format.c: Likewise.
	* c-lex.c: Likewise.
	* c-pragma.c: Likewise.
	* c-typeck.c: Likewise.
	* defaults.h: Likewise.
	* genconstants.c: Likewise.
	* gengtype-lex.l: Likewise.
	* genmodes.c: Likewise.
	* read-rtl.c: Likewise.
	* rtl.c: Likewise.

2004-07-25  Bernardo Innocenti  <bernie@develer.com>

	* bitmap.c: Use type-safe memory allocation macros from libiberty.
	* c-common.c: Likewise.
	* c-decl.c: Likewise.
	* c-lang.c: Likewise.
	* c-lex.c: Likewise.
	* c-opts.c: Likewise.
	* c-parse.in: Likewise.
	* c-typeck.c: Likewise.
	* genconditions.c: Likewise.
	* gengtype-lex.l: Likewise.
	* gengtype-yacc.y: Likewise.
	* gengtype.c: Likewise.
	* genmodes.c: Likewise.
	* gensupport.c: Likewise.
	* read-rtl.c: Likewise.
	* read-rtl.c (read_constants): Use INSERT instead of TRUE in call to
	htab_find_slot().

2004-07-25  Bernardo Innocenti  <bernie@develer.com>

	* c-decl.c (groktypename, groktypename_in_param_context): Rename
	variable typename to type_name.
	* c-lex.c (interpret_float): Likewise.

2004-07-25  Roger Sayle  <roger@eyesopen.com>

	* convert.c (convert_to_real, convert_to_integer,
	convert_to_complex): Replace calls to build with calls to buildN.
	* coverage.c (tree_coverage_counter_ref): Likewise.
	* dojump.c (do_jump): Likewise.
	* dwarf2out.c (loc_descriptor_from_tree): Likewise.
	* emit-rtl.c (component_ref_for_mem_expr,
	set_mem_attributes_minus_bitpos): Likewise.
	* explow.c (update_nonlocal_goto_save_area): Likewise.
	* expmed.c (expand_shift, make_tree, const_mult_add_overflow_p,
	expand_mult_add): Likewise.
	* expr.c (emit_block_move_via_libcall, clear_storage_via_libcall,
	store_constructor, get_inner_reference, expand_expr_real_1,
	try_casesi, try_tablejump): Likewise.
	* function.c (expand_function_start): Likewise.
	* stmt.c (emit_case_bit_tests, expand_end_case_type,
	node_has_low_bound, node_has_high_bound, emit_case_nodes): Likewise.
	* stor-layout.c (place_union_field, layout_type): Likewise.
	* tree.c (substitute_in_expr, tree_fold_gcd): Likewise.
	* varasm.c (copy_constant): Likewise.

2004-07-25  Bernardo Innocenti  <bernie@develer.com>

	* c-common.c: Rename all identifiers named `new'.
	* c-decl.c: Likewise.
	* gensupport.c: Likewise.
	* simplify-rtx.c: Likewise.
	* c-common.c (disable_builtin_function): Replace a call to xmalloc()
	with XNEW().
	* gensupport.c (alter_output_for_insn): Replace two calls to xmalloc()
	with XNEWVEC().

2004-07-25  Joseph S. Myers  <jsm@polyomino.org.uk>

	PR c/15360
	* c-decl.c (start_decl): Do not set DECL_EXTERNAL for initialized
	declarations until after calling pushdecl.
	(grokdeclarator): Set DECL_EXTERNAL for variables based on use of
	"extern" and not on whether the declaration is initialized.

2004-07-25  Daniel Jacobowitz  <dan@debian.org>

	* config.gcc (i[34567]86-*-solaris2*, sparc64-*-solaris2*)
	(sparc-*-solaris2*): Include sol2.o and sol2-protos.h.
	* config/sol2-c.c: Include "tm.h", "tm_p.h", "toplev.h",
	"cpplib.h", "c-pragma.h", "c-common.h".
	(solaris_pragma_align, solaris_pragma_init, solaris_pragma_fini)
	(solaris_register_pragmas): New functions.
	* config/sol2-protos.h: New file.
	* config/sol2.c: New file.
	* config/sol2.h (SOLARIS_ATTRIBUTE_TABLE, ASM_DECLARE_FUNCTION_SIZE)
	(REGISTER_TARGET_PRAGMAS): New macros.
	(solaris_pending_aligns, solaris_pending_inits)
	(solaris_pending_finis): New variables.
	* config/t-sol2 (sol2-c.o): Update dependencies.
	(sol2.o): New rule.
	* config/i386/i386.c (TARGET_INSERT_ATTRIBUTES): Define in terms of
	SUBTARGET_INSERT_ATTRIBUTES.
	(ix86_attribute_table): Include SUBTARGET_ATTRIBUTE_TABLE.
	* config/i386/sol2.h (SUBTARGET_INSERT_ATTRIBUTES)
	(SUBTARGET_ATTRIBUTE_TABLE, ASM_OUTPUT_CALL): Define.
	* config/sparc/elf.h (ASM_DECLARE_FUNCTION_SIZE): Redefine.
	* config/sparc/sp64-elf.h (ASM_DECLARE_FUNCTION_SIZE): Redefine.
	* config/sparc/sol2.h (SUBTARGET_INSERT_ATTRIBUTES)
	(SUBTARGET_ATTRIBUTE_TABLE, ASM_OUTPUT_CALL): Define.
	* config/sparc/sparc.c (sparc_attribute_table): New.
	(TARGET_INSERT_ATTRIBUTES): Define in terms of
	SUBTARGET_INSERT_ATTRIBUTES.
	(TARGET_ATTRIBUTE_TABLE): Define if SUBTARGET_ATTRIBUTE_TABLE
	is defined.
	* doc/extend.texi (Solaris Pragmas): New section.

2004-07-25  Bernardo Innocenti  <bernie@develer.com>

	* c-common.c: Rename all identifiers named `class' to `cl'.
	* c-common.h: Likewise.
	* c-parse.in: Likewise.
	* c-typeck.c: Likewise.
	* genmodes.c: Likewise.
	* real.c: Likewise.
	* real.h: Likewise.
	* recog.c: Likewise.
	* recog.h: Likewise.
	* regrename.c: Likewise.
	* tree.h: Likewise.
	* c-common.c (builtin_function_2): Change type of 5th parameter from
	int to enum built_in_function. Change type of 8th parameter from int
	to bool.
	* c-decl (builtin_function): Replace call to ggc_alloc_cleared ()
	with GGC_CNEW().
	* c-typeck.c (convert_arguments): Change type of formal_prec from
	int to unsigned int.
	* genmodes.c (blank_mode): Make a few negative constants unsigned.
	(complete_all_modes, calc_wider_mode, emit_insn_modes_h,
	emit_mode_name, emit_mode_class, emit_mode_precision, emit_mode_size,
	emit_mode_nunits, emit_mode_wider, emit_mode_mask, emit_mode_inner,
	emit_mode_base_align, emit_class_narrowest_mode): Pass an integer
	iterator to for_all_modes () instead of an enum because enums can't
	be incremented in C++.


2004-07-25  Daniel Jacobowitz  <dan@debian.org>

	* regmove.c (optimize_reg_copy_1): Don't try to replace call-used
	hard registers.

2004-07-25  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* tree-ssa-operands.c (get_stmt_operands, get_expr_operands):
	Handle ARRAY_RANGE_REF like ARRAY_REF.

2004-07-25  Joseph S. Myers  <jsm@polyomino.org.uk>

	* c-typeck.c (digest_init): Don't allow arrays of signed or
	unsigned variants of wchar_t to be initialized by wide string
	constants.  Do allow arrays of enumerated types compatible with
	wchar_t to be initialized by wide string constants.  Refine tests
	distinguishing wide and narrow strings and arrays.  Give specific
	error for arrays of other integer types initialized by string
	constants.
	(output_init_element, process_init_element): Check for
	INTEGRAL_TYPE_P rather than just for INTEGER_TYPE when
	initializing with string constants.

2004-07-25  Richard Henderson  <rth@redhat.com>

	* c-decl.c (start_function): Set DECL_ARTIFICIAL and DECL_IGNORED_P
	on the RESULT_DECL.
	* cgraphunit.c (cgraph_build_static_cdtor): Likewise.
	* integrate.c (copy_decl_for_inlining): Copy DECL_ARTIFICIAL and
	DECL_IGNORED_P to new decl.

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.

2004-07-24  Alexander Kabaev  <kan@freebsd.org>
	    Zack Weinberg  <zack@codesourcery.com

	PR 16684
	* c-decl.c (diagnose_mismatched_decls): Don't issue a
	redundant-declaration warning the first time a builtin is
	declared explicitly.

2004-07-25  Bernardo Innocenti  <bernie@develer.com>

	* tree.h (staticp): Change return type to bool.

2004-07-25  Bernardo Innocenti  <bernie@develer.com>

	* c-common.c (c_staticp): Last episode of the staticp saga.

2004-07-25  Bernardo Innocenti  <bernie@develer.com>

	* c-common.h (c_staticp): Change return type from int to bool.
	* tree.c (staticp): Likewise.
	* langhooks.h (staticp): Likewise.

2004-07-25  Bernardo Innocenti  <bernie@develer.com>

	* langhooks-def.h (lhd_staticp): Change return type from int to
	bool in prototype to match definition.

2004-07-25  Bernardo Innocenti  <bernie@develer.com>

	* system.h (bool, true, false): Don't redefine as preprocessor macros
	in C++.

2004-07-24  Roger Sayle  <roger@eyesopen.com>

	* expmed.c (init_expmed): A signed modulus by a power of two is
	considered cheap if its less than or equal to four instructions.

2004-07-25  Bernardo Innocenti  <bernie@develer.com>

	* ggc.h (GGC_NEW, GGC_CNEW, GGC_NEWVEC, GGC_CNEWVEC, GGC_NEWVAR,
	GGC_CNEWVAR): New macros.

2004-07-25  Bernardo Innocenti  <bernie@develer.com>

	* c-common.c: Convert ATTRIBUTE_UNUSED to ARG_UNUSED in parameter
	lists.
	* c-decl.c: Likewise.
	* c-format.c: Likewise.
	* c-lex.c: Likewise.
	* c-opts.c: Likewise.
	* c-pragma.c: Likewise.
	* c-typeck.c: Likewise.
	* gencheck.c: Likewise.
	* genconditions.c: Likewise.
	* genconfig.c: Likewise.
	* genflags.c: Likewise.
	* gengtype.c: Likewise.
	* gensupport.c: Likewise.
	* ggc-none.c: Likewise.
	* langhooks.c: Likewise.
	* statistics.h: Likewise.
	* stub-objc.c: Likewise.
	* java/decl.c: Likewise.

2004-07-24  Roman Zippel  <zippel@linux-m68k.org>

	* config/m68k/m68k.c (output_scc_di): Fix coding style.
	(symbolic_operand): Fix prototype.
	* config/m68k/m68k.h (PREDICATE_CODES): Add symbolic_operand.
	* config/m68k/m68k.md: Add constants for registers a0 and sp and
	use them, change from the "{...}" syntax to the simpler {...}
	syntax.
	(*cfv4_extendqisi2): Fix destination predicate.
	* config/m68k/m68k-protos.h: Remove various declarations also
	generated via PREDICATE_CODES.

2004-07-23  Mike Stump  <mrs@apple.com>

	* c-typeck.c (convert_for_assignment): Tightened up pointer
	converstions that differ in signedness.

2004-07-23  Zack Weinberg  <zack@codesourcery.com>

	* genmodes.c (make_vector_modes): Mark with ATTRIBUTE_UNUSED.

2004-07-23  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* tree.def (VIEW_CONVERT_EXPR): Change to class 'r'.
	* tree-ssa-operands.c (get_expr_operands, case VIEW_CONVERT_EXPR): New.

	* gimplify.c (gimplify_compound_lval): Check for no handled
	operations, rather than checking for explicit list of nodes.
	(is_gimple_addr_expr_arg_or_indirect): New function.
	(gimplify_addr_expr): Call it and handle INDIRECT_REF; remove
	redundant setting of TREE_INVARIANT.
	(gimplify_expr, case VIEW_CONVERT_EXPR): Call gimplify_compound_lval.
	* tree-gimple.c (is_gimple_addr_expr_arg): Call handled_component_p.

2004-07-23  Diego Novillo  <dnovillo@redhat.com>

	PR tree-optimization/16688
	PR tree-optimization/16689
	* tree-ssa-alias.c (setup_pointers_and_addressables): Remove
	unnecessary initialization of 'tag'.
	(get_tmt_for): Check that the new type tag has the same alias
	set as the pointed-to type.
	(group_aliases): Only regular variables need to be removed
	from the alias set of a name tag.
	* tree-ssa-copy.c (may_propagate_copy): Do not allow copy
	propagation if the two types are not compatible.
	(merge_alias_info): Rename from replace_ssa_names_ann.
	Add more checking.
	(replace_exp_1): If both arguments are SSA_NAMEs, check that
	the propagation can be done.
	Only call merge_alias_info on pointers.
	(propagate_value): Likewise.
	* tree-ssa-copyrename.c: Include langhooks.h.
	(copy_rename_partition_coalesce): Call replace_ssa_name_symbol
	to do the merging.
	Do not coalesce variables with incompatible types.
	(rename_ssa_copies): Call replace_ssa_name_symbol.
	* tree-ssa.c (verify_ssa_name): Verify that the SSA_NAME has
	the same type as the underlying _DECL.
	* tree-ssanames.c (replace_ssa_name_symbol): New function.
	* tree.h (replace_ssa_name_symbol): Declare.

2004-07-23  Richard Henderson  <rth@redhat.com>

	PR c++/16277
	* gimplify.c (gimplify_cond_expr): Gimplify TARGET to a min_lval;
	unshare it properly.
	(gimplify_modify_expr_rhs): Push assignment from a conditional into
	the conditional for all non-register types.

2004-07-23  Richard Henderson  <rth@redhat.com>

	* expr.c (expand_expr_real_1): Don't handle non-local variables.
	* expr.h (fix_lexical_addr): Remove.
	* function.c (NEED_SEPARATE_AP): Remove.
	(fix_lexical_addr): Remove.
	* tree-alias-common.c (get_alias_var_decl): Check TREE_STATIC,
	not null decl_function_context.
	(create_alias_vars): Likewise.
	* tree-cfg.c (make_ctrl_stmt_edges): Don't check for non-local labels.
	(simple_goto_p): Likewise.
	* tree-dfa.c (add_referenced_var): Don't check for non-local variables.
	* tree-ssa-ccp.c (get_default_value): Likewise.
	* tree-tailcall.c (suitable_for_tail_opt_p): Likewise.
	* tree.c (needs_to_live_in_memory): Likewise.
	* tree-flow-inline.h (may_be_aliased): Move...
	* tree-ssa-alias.c (may_be_aliased): ... here.  Enhance check for
	when TREE_STATIC variables may be addressable.

2004-07-24  Jakub Jelinek  <jakub@redhat.com>

	* Makefile.in (site.exp): Add HOSTCC and HOSTCFLAGS to site.exp.

2004-07-23  Zack Weinberg  <zack@codesourcery.com>

	* print-rtl.c (print_rtx <case 'b'>): Don't attempt to print
	bitmap contents if GENERATOR_FILE is defined.
	* Makefile.in (BUILD_RTL): Remove $(BUILD_PREFIX)bitmap.o.
	($(BUILD_PREFIX_1)bitmap.o): Delete rule.

2004-07-23  Joseph S. Myers  <jsm@polyomino.org.uk>

	* c-decl.c (start_function): Form composite type of function types
	rather than copying type from previous prototype declaration.

2004-07-23  Janis Johnson  <janis187@us.ibm.com>

	* config/rs6000/altivec.h (vec_lvewx, vec_lvehx, vec_lvwbx): Remove
	the const qualifier for the second argument in the C++ functions.

	* config/rs6000/altivec.h (vec_stvewx, vec_stvehx, vec_stvebx): Use
	specific pointer types.

	* config/rs6000/altivec.h (vec_vadduwm): (vec_vadduwm, vec_vadduhm,
	vec_vaddubm, vec_vsubuwm, vec_vsubuhm, vec_vsububm): Fix types used
	for vector bool and/or vector pixel, add C++ and C missing support.
	(vec_vaddsws, vec_vaddshs, vec_vaddsbs, vec_vmaxsw, vec_vmaxsh,
	vec_vmaxsb, vec_vmrghw, vec_vmrghh, vec_vmrghb, vec_vmrglw, vec_vmrglh,
	vec_vmrglb, vec_vminsw, vec_vminsh, vec_vminsb, vec_vpkuwum,
	vec_vpkuhum, vec_vspltw, vec_vsplth, vec_vspltb, vec_vsubsws,
	vec_vsubshs, vec_vsubsbs, vec_vupklsh, vec_vupkhsh, vec_vupklsb): Add
	missing C++ and C support for vector bool and/or vector pixel.
	(vec_vadduws, vec_vadduhs, vec_vaddubs, vec_vcmpeqfp, vec_vcmpequw,
	vec_vcmpequh, vec_vcmpequb, vec_vcmpgtfp, vec_vcmpgtsw, vec_vcmpgtuw,
	vec_vcmpgtsh, vec_vcmpgtuh, vec_vcmpgtsb, vec_vcmpgtub, vec_vmaxuw,
	vec_vmaxuh, vec_vmaxub, vec_vminuw, vec_vminuh, vec_vminub,
	vec_vsubuws, vec_vsubuhs, vec_vsububs, vec_vupkhpx, vec_vupklpx): Fix
	C++ and C types used for vector bool and/or vector pixel.
	(vec_st, vec_stl): Add C++ support for vector pixel.
	(vec_unpackh, vec_unpackl, vec_any_ge): Fix C++ support for vector bool.
	(vec_all_ne): Add C++ support for vector pixel.

	* config/rs6000/altivec.h (vec_vcmpgtsh): Fix C++ function name.
	(vec_vmulesb): Add missing C++ function.
	(vec_perm): Fix type of third argument in C++ function.
	(vec_vsum4shs): Fix C++ function name.
	(vec_any_ge): Remove C++ functions for unsupported arg combinations.
	(vec_vcmpgtsw, vec_vcmpgtuw, vec_minsb, vec_vmsummbm): Fix the
	argument passed to the error handler in C macro.
	(vec_nmsub): Remove extra parens around argument names in C macro.
	(vec_packpx): Add missing parens in C macro.

2004-07-22  Paolo Bonzini  <bonzini@gnu.org>

	* machmode.def: Remove vector modes.
	* config/alpha/alpha-modes.def: Add supported vector modes.
	* config/arm/arm-modes.def: Likewise.
	* config/frv/frv-modes.def: Likewise.
	* config/i386/i386-modes.def: Likewise.
	* config/rs6000/rs6000-modes.def: Likewise.
	* config/sh/sh-modes.def: Likewise.

2004-07-23  Matthias Klose  <doko@debian.org>

	* intl.c (gcc_init_libintl): Use PACKAGE for the text domain.
	* configure.ac: Add AC_DEFINE_UNQUOTED for PACKAGE.
	* config.h: Regenerate.
	* configure: Likewise.

2004-07-22  Mark Mitchell  <mark@codesourcery.com>

	* dwarf2out.c (output_call_frame_info): Set SYMBOL_FLAG_LOCAL on
	generated SYMBOL_REFs for labels.
	* config/darwin-protos.h (machopic_validate_stub_or_non_lazy_ptr):
	Change prototype.
	(machopic_stub_name): Remove.
	(machopic_indirection_name): New function.
	(machopic_mcount_stub_name): Likewise.
	(machopic_classify_name): Remove.
	(machopic_function_base_sym): New function.
	(machpoic_classify_symbol): Likewise.
	(machopic_classify_ident): Remove.
	(machopic_define_ident): Likewise.
	(machopic_define_name): Likewise.
	(machopic_name_defined_p): Likewise.
	(machopic_ident_defined_p): Likewise.
	(darwin_strip_name_encoding): Likewise.
	(machopic_define_symbol): New function.
	* config/darwin.c (hashtab.h): Include.
	(machopic_defined_list): Remove.
	(machopic_classify_ident): Likewise.
	(machopic_classify_name): Likewise.
	(machopic_ident_defined_p): Likewise.
	(machopic_define_ident): Likewise.
	(machopic_define_name): Likewise.
	(machopic_symbol_defined_p): New function.
	(machopic_classify_symbol): Likewise.
	(machopic_data_defined_p): Use machopic_classify_symbol.
	(machopic_define_symbol): New function.
	(machopic_function_base_sym): New function.
	(machopic_non_lazy_pointers): Remove.
	(machopic_non_lazy_ptr_name): Likewise.
	(machopic_stubs): Likewise.
	(machopic_stub_name): Likewise.
	(NON_LAZY_POINTER_SUFFIX): New macro.
	(STUB_SUFFIX): Likewise.
	(machopic_indirection): New structure.
	(machopic_indirections): New variable.
	(machopic_indirection_hash): New function.
	(machopic_indirection_eq): Likewise.
	(machopic_indirection_name): Likewise.
	(machopic_mcount_stub_name): New function.
	(machopic_validate_stub_or_non_lazy_pointer): Reimplement to use
	hash table.
	(machopic_indirect_data_reference): Rework to use new functions.
	(machopic_indirect_call_target): Likewise.
	(machopic_legitimize_pic_address): Likewise.
	(machopic_output_indirection): New function.
	(machopic_finish): Use it.
	(machopic_operand_p): Rework to use new functions.
	(darwin_encode_seciton_info): Use SYMBOL_REF_FLAGS.
	(darwin_strip_name_encoding): Remove.
	(update_non_lazy_ptrs): Remove.
	(update_stubs): Likewise.
	(darwin_non_lazy_pcrel): Use new functions.
	* config/darwin.h (ASM_DECLARE_OBJECT_NAME): Likewise.
	(ASM_OUTPUT_LABELREF): Likewise.
	(ASM_OUTPUT_ALIGNED_DECL_LOCAL): Likewise.
	(MACHO_SYMBOL_FLAG_VARIABLE): New macro.
	(MACHO_SYMBOL_FLAG_DEFINED): Likewise.
	(TARGET_STRIP_NAME_ENCODING): Do not use
	darwin_strip_name_encoding.
	(GEN_LAZY_PTR_NAME_FOR_SYMBOL): Do not use
	darwin_strip_name_encoding.
	* config/i386/darwin.h (FUNCTION_PROFILER): Use
	machopic_mcount_stub_name.
	* config/i386/i386.c (x86_output_mi_thunk): Use
	machopic_indirection_name, not machopic_stub_name.
	* config/rs6000/rs6000.c (rs6000_legitimize_reload_address): Use
	machopic_function_base_sym.
	(print_operand): Use machopic_classify_symbol.
	(rs6000_emit_prologue): Use machopic_function_base_sym.
	(output_profile_hook): Do not use machopic_stub_name.
	(macho_branch_isalnds): Do not use darwin_strip_name_encoding.

2004-07-22  Joseph S. Myers  <jsm@polyomino.org.uk>

	PR c/7284
	* fold-const.c (extract_muldiv_1): Do not treat signed left shift
	as multiplication.

2004-07-22  Joseph S. Myers  <jsm@polyomino.org.uk>

	* doc/implement-c.texi: New file.
	* doc/extend.texi (C Implementation): Move to there.
	* doc/gcc.texi: Include implement-c.texi.
	* Makefile.in (TEXI_GCC_FILES): Add implement-c.texi.

2004-07-22  Jason Merrill  <jason@redhat.com>

	* integrate.c (copy_decl_for_inlining): Remove invisible reference
	handling.
	* tree-inline.c (setup_one_parameter): Likewise.

2004-07-22  Brian Booth  <bbooth@redhat.com>

	* tree-ssa-ccp.c (latticevalue): Add UNKNOWN_VAL.
	(substitute_and_fold): Propigate into VUSE operands when possible.
	(visit_phi_node): Handle UNKNOWN_VAL latticevalue.
	(cp_lattice_meet): Handle merging of latticevalues when
	UNKNOWN_VAL is present.
	(visit_stmt): Visit assignments with V_MUST_DEFs.
	(visit_assignment): Gather ccp information for V_MUST_DEF operands.
	(ccp_fold): Deal with RHS' that are constant and virtual.
	(evaluate_stmt): Handle UNKNOWN_VAL likely values.
	(dump_lattice_value): Dump UNKNOWN_VAL latticevalues.
	(initialize): Mark statements with V_MUST_DEFs as VARYING only if the
	V_MUST_DEF operand is VARYING. Fix comment and include VOPS when
	computing immediate uses.
	(set_lattice_value): Disallow a UNKNOWN_VAL->UNDEFINED state
	transition.
	(replace_vuse_in): New function.
	(likely_value): Add check of vuse operands.
	(get_default_value): Set the default value of virtually defined
	variables to UKNOWN_VAL instead of VARYING.

2004-07-22  Richard Henderson  <rth@redhat.com>

	* expr.c (emit_push_insn): Don't use set_mem_attributes.

2004-07-22  Richard Henderson  <rth@redhat.com>

	* tree-ssa-live.c (create_ssa_var_map): Avoid defined-but-not-used
	variables due to conditional compilation.

2004-07-22  Diego Novillo  <dnovillo@redhat.com>

	* tree-into-ssa.c (set_livein_block): Fix typo in comment.
	(rewrite_ssa_into_ssa): Start iterating over SSA names at 1.
	Release SSA names that have been re-renamed.
	* tree-phinodes.c (make_phi_node): Set same TREE_TYPE as the
	variable.
	* tree-ssa-alias.c (init_alias_info): If aliases have been
	computed before, clear existing alias information.
	(create_name_tags): Do no fixup PT_ANYTHING pointers.
	If the new name tag for a pointer is different than the one it
	had before, mark the old tag for renaming.
	(replace_may_alias): New function.
	(group_aliases): Call it.
	(setup_pointers_and_addressables): Always call get_tmt_for.
	(maybe_create_global_var): Don't create .GLOBAL_VAR more than
	once.
	(set_pt_anything): New local function.
	(set_pt_malloc): New local function.
	(merge_pointed_to_info): Don't merge pointed-to variables from
	the original pointer if the destination is pointing to an
	unknown location.
	(add_pointed_to_expr): Call set_pt_anything and set_pt_malloc.
	(add_pointed_to_var): Do not add a variable to the points-to
	set if the pointer is already pointing to anywhere.
	(collect_points_to_info_r): If the defining statement is a PHI
	node, only merge pointed-to information if the argument has
	already been visited.
	(get_tmt_for): Only create a new tag if the pointer didn't
	have one already.
	(dump_alias_info): Emit more information.
	(dump_points_to_info_for): Likewise.
	* tree-ssa-dom.c (redirect_edges_and_update_ssa_graph): Don't
	try to get the annotation of an SSA_NAME.
	* tree-ssa-operands.c (add_stmt_operand): Only check for empty
	alias sets when checking is enabled.
	* tree-ssa-pre.c (need_eh_cleanup): New local variable.
	(eliminate): Mark basic blocks that will need
	EH information cleaned up.
	(init_pre): Split ENTRY_BLOCK->0 if block 0 has more than one
	predecessor.
	Initialize need_eh_cleanup.
	(fini_pre): Call tree_purge_all_dead_eh_edges and
	cleanup_tree_cfg if needed.
	Free need_eh_cleanup.
	* tree-ssa.c (verify_ssa_name): New function.
	(verify_def): Call it.
	Re-arrange to avoid printing too many error messages.
	(verify_use): Likewise.
	(verify_phi_args): Likewise.
	(verify_flow_insensitive_alias_info): New function.
	(verify_flow_sensitive_alias_info): New function.
	(verify_alias_info): New function.
	(verify_ssa): Call verify_alias_info.
	Clear TREE_VISITED on all the SSA_NAMEs before scanning the
	program.
	Re-arrange to avoid printing too many error messages.
	* tree-ssanames.c (make_ssa_name): Clear
	SSA_NAME_IN_FREE_LIST.
	(release_ssa_name): Never release a default definition.
	(release_defs): New function.
	* tree.h: Declare it.
	* tree-ssa-dce.c (remove_dead_stmt): Call it.

2004-07-22  Diego Novillo  <dnovillo@redhat.com>

	* tree-ssa.c (walk_use_def_chains_1): Add new argument IS_DFS.
	If true, do a depth-first search.  Do a breadht-first search,
	otherwise.
	(walk_use_def_chains): Add new argument IS_DFS.
	Update all users.
	* tree-flow.h (walk_use_def_chains): Update prototype.

2004-07-22  Hans-Peter Nilsson  <hp@axis.com>

	* config/cris/cris.md: Tweak formatting.
	(asrandb, asrandw, lsrandb, lsrandw, moversideqi, movemsideqi)
	(mover2side, moverside, movemside, movei, op3, andu): Replace
	live define_peephole:s with define_peephole2 near-equivalents.
	Delete the rest.
	("*mov_sidesisf_biap"): Rename from "*mov_sidesi_biap".  Match all
	word-size modes.
	("*mov_sidesisf", "*mov_sidesisf_biap_mem", "*mov_sidesisf_mem"):
	Similar for "*mov_sidesi", "*mov_sidesi_biap_mem" and
	"*mov_sidesi_mem" respectively.

2004-07-22  Paolo Bonzini  <bonzini@gnu.org>

	* tree-cfg.c (gimplify_val): Move from tree-complex.c.
	(gimplify_build1): Move from tree-complex.c do_unop.
	(gimplify_build2): Move from tree-complex.c do_binop.
	(gimplify_build3): New.
	* tree-complex.c (gimplify_val, do_unop, do_binop): Remove.
	Adjust throughout to call the functions above.
	* tree-flow.h: Declare the functions above.
	* tree-nested.c (gimplify_val): Rename to...
	(tsi_gimplify_val): ... this.

	* Makefile.in (tree_complex.o): Update dependencies.
	(stor-layout.o): Depend on regs.h.
	* c-common.c (handle_vector_size_attribute): Update for
	vector types without corresponding vector modes.
	* expr.c (expand_expr): Treat VECTOR_CST's like CONSTRUCTORS if
	a corresponding vector mode is not available.
	* print-tree.c (print_node): Print nunits for vector types
	* regclass.c (have_regs_of_mode): New.
	(init_reg_sets_1): Initialize it and use it instead
	of allocatable_regs_of_mode.
	* regs.h (have_regs_of_mode): Declare it.
	* stor-layout.c (layout_type): Pick a mode for vector types.
	* tree-complex.c (build_word_mode_vector_type, tree_vec_extract,
	build_replicated_const, do_unop, do_binop, do_plus_minus,
	do_negate, expand_vector_piecewise, expand_vector_parallel,
	expand_vector_addition, expand_vector_operations_1,
	expand_vector_operations, tree_lower_operations,
	pass_lower_vector_ssa, pass_pre_expand): New.
	(expand_complex_operations, pass_lower_complex): Remove.
	* tree-optimize.c (init_tree_optimization_passes): Adjust
	pass ordering for changes in tree-complex.c.
	* tree-pass.h: Declare new passes.
	* tree.c (finish_vector_type): Remove.
	(make_vector_type): New.
	(build_vector_type_for_mode, build_vector_type): Rewritten.
	* tree.def (VECTOR_TYPE): Document where the number of
	subparts is stored.
	* tree.h (TYPE_VECTOR_SUBPARTS): Use TYPE_PRECISION field.
	(make_vector): Remove declaration.

2004-07-21  Richard Henderson  <rth@redhat.com>

	* gimple-low.c (expand_var_p): Don't look at TREE_ADDRESSABLE,
	TREE_THIS_VOLATILE, may_aliases, or optimization level.
	(remove_useless_vars): Dump debugging info.
	(expand_used_vars): Move ...
	* cfgexpand.c (expand_used_vars): ... here.  Make static.
	* tree-flow-inline.h (set_is_used): New.
	(set_default_def): Use get_var_ann.
	* tree-flow.h: Update decls.
	* tree-ssa-live.c (mark_all_vars_used_1, mark_all_vars_used): New.
	(create_ssa_var_map): Use it.
	* tree-ssa.c (set_is_used): Remove.

2004-07-22  Ben Elliston  <bje@au.ibm.com>

	* gdbinit.in: Set a breakpoint on internal_error.

2004-07-21  Richard Henderson  <rth@redhat.com>

	* cfgexpand.c (expand_gimple_tailcall): Fix case where we need
	to create a new basic block.

2004-07-22  Joseph S. Myers  <jsm@polyomino.org.uk>

	PR c/15052
	* c-decl.c (grokdeclarator): Only pedwarn for qualified void
	return type on function definitions.  Move other warnings for
	qualified return type to -Wreturn-type.  Do not condition any such
	warnings on -pedantic.  Update comments.
	(start_function): Only copy function type from previous prototype
	declaration if return types are compatible.
	* c-typeck.c (function_types_compatible_p): Don't condition
	warning for incompatibility of volatile qualifiers on the return
	type on -pedantic.  Update comment.
	* doc/invoke.texi (-Wreturn-type, -Wextra): Update.

2004-07-22  Joseph S. Myers  <jsm@polyomino.org.uk>

	* c-typeck.c (set_init_index): Require designator to be of integer
	type.

2004-07-22  Joseph S. Myers  <jsm@polyomino.org.uk>

	PR c/11250
	* c-parse.in (init): Change to exprtype.
	(primary): Set original_code for STRING to STRING_CST.
	Call maybe_warn_string_init for compound literals.
	(initdcl, notype_initdcl): Call maybe_warn_string_init.
	(initval): Update.
	* c-tree.h (maybe_warn_string_init): New.
	(pop_init_level, process_init_element): Use struct c_expr.
	(struct c_expr): Update comment.
	* c-typeck.c (maybe_warn_string_init): New function.
	(digest_init): Call it.  Additional parameter strict_string.  All
	callers changed.
	(output_init_element): Likewise.
	(struct constructor_stack): Use struct c_expr for
	replacement_value.
	(really_start_incremental_init, push_init_level): Update.
	(pop_init_level): Update.  Return struct c_expr.
	(process_init_level): Update.  Take struct c_expr argument.

2004-07-21  David S. Miller  <davem@nuts.davemloft.net>

	* config/sparc/sparc.c (sparc_rtx_costs): Fix typo in previous
	commit.

2004-07-21  Eric Christopher  <echristo@redhat.com>

	* builtins.c (expand_builtin_setjmp_receiver): Fix comment for code
	removal.
	* c-decl.c (pop_scope): Ditto.
	* calls.c (expand_call): Remove call to current_nesting_level,
	update comment accordingly. Remove calls to expand_start_target_temps
	and expand_end_target_temps.
	* cfgexpand.c (construct_init_block): Remove call to
	expand_start_bindings_and_block.
	(construct_exit_block): Remove call to expand_end_bindings.
	* expr.c (safe_from_p): Remove BIND_EXPR handling.
	(expand_expr_real_1): Ditto. Fix formatting.
	(expand_vars): Delete.
	* stmt.c (POPSTACK): Remove block_stack.
	(stmt_status): Remove x_block_stack.
	(block_stack): Delete.
	(expand_start_bindings_and_block): Ditto.
	(expand_start_target_temps): Ditto.
	(expand_end_target_temps): Ditto.
	(current_nesting_level): Ditto.
	(warn_about_unused_variables): Ditto.
	(expand_end_bindings): Ditto.
	* tree.h: Remove declarations for above.

2004-07-21  Steven Bosscher  <stevenb@suse.de>

	* rtl.h (insn_note): Remove NOTE_INSN_PREDICTION.
	* rtl.c (note_insn_name): Likewise.
	* print-rtl.c (print_rtx): Don't print it.
	* cfgrtl.h (can_delete_note_p): Don't handle it.
	(rtl_delete_block): Likewise.
	* passes.c (rest_of_handle_guess_branch_prob): Remove.
	(rest_of_compilation): Don't call it.
	* predict.c (process_note_predictions, process_note_prediction,
	note_prediction_to_br_prob): Remove.
	* basic-block.c (note_prediction_to_br_prob): Remove prototype.
	* stmt.c (return_prediction): Remove.
	(expand_value_return): Don't call it.  Don't add prediction
	notes for return statements.

2004-07-21  Josef Zlomek  <zlomekj@suse.cz>

	* var-tracking.c (vt_find_locations): Set the in_pending bitmap at
	once.

2004-07-21  Paolo Bonzini  <bonzini@gnu.org>

	* c-common.c (vector_types_convertible_p): Use vector types'
	TYPE_SIZE and TREE_TYPE instead of their mode.
	* convert.c (convert_to_integer): Likewise.
	(convert_to_vector): Likewise.
	* fold-const.c (fold_convert): Likewise.
	* varasm.c (output_constant): Likewise.
	* expr.c (store_constructor): Split ARRAY_TYPE and VECTOR_TYPE.
	Allow a VECTOR_TYPE initializer to be made of several vectors.
	For ARRAY_TYPEs and VECTOR_TYPES, simplify a bit the handling
	of cleared and need_to_clear, and use fold_convert.
	* c-typeck.c (build_binary_op): Do not use RDIV_EXPR for
	integer vectors.

2004-07-20  Richard Henderson  <rth@redhat.com>

	* cfgexpand.c (expand_gimple_cond_expr, expand_gimple_tailcall): Split,
	(expand_gimple_basic_block): out from here.  Renamed from expand_block.

2004-07-20  David S. Miller  <davem@nuts.davemloft.net>

	* config/sparc/sparc.c (sparc_rtx_costs case MULT): Emit
	enormous cost if not TARGET_HARD_MUL.

2004-07-20  Andrew Pinski  <apinski@apple.com>

	PR target/16557
	* config/i386/darwin.h (CC1_SPEC): Move the -g SPECs from ...
	(ASM_SPEC): here.

2004-07-21  Paul brook  <paul@codesourcery.com>

	* config/arm/arm.c (thumb_expand_prologue): Remove bogus GEN_INT.

2004-07-20  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* fold-const.c (operand_equal_p): Temporarily support NULL args.
	(operand_equal_p, case ARRAY_REF): Compare args 2 and 3.
	(operand_equal_p, case COMPONENT_REF): Likewise, for arg 2.

2004-07-20  Zack Weinberg  <zack@codesourcery.com>

	* rtl.h (plus_constant): Delete.
	(plus_constant_wide): Rename to plus_constant.
	(plus_constant_for_output_wide): Delete vestigial prototype.
	(GEN_INT): Remove unnecessary cast.
	* tree.h (build_int_2, size_int_type): Delete.
	(build_int_2_wide): Rename to build_int_2.
	(size_int_wide): Rename to size_int_kind.
	(size_int_type_wide): Rename to size_int_type.
	(size_int, ssize_int, bitsize_int, sbitsize_int): Use size_int_kind.
	Remove unnecessary cast.
	* tree.c (build_int_2_wide): Rename build_int_2; update comment.
	* explow.c (plus_constant_wide): Rename plus_constant; update comment.
	* fold-const.c (size_int_wide): Rename size_int_kind. Use size_int_type.
	(size_int_type_wide): Rename size_int_type.
	(int_const_binop): Use size_int_type.
	* c-lex.c (interpret_integer): Use build_int_2.
	* final.c (split_double): Remove unnecessary casts.
	* tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Use build_int_2.

2004-07-20  Richard Henderson  <rth@redhat.com>

	* gimplify.c (is_gimple_tmp_var): Move to tree-gimple.c.
	(gimplify_compound_lval): Use is_gimple_tmp_reg.
	* tree-gimple.c (is_gimple_tmp_var): Move from gimplify.c.
	(is_gimple_tmp_reg): New.
	* tree-gimple.h (is_gimple_tmp_reg): Declare.

2004-07-20  Richard Henderson  <rth@redhat.com>

	* tree-pretty-print.c (dump_generic_node): Dump
	CALL_EXPR_HAS_RETURN_SLOT_ADDR.

2004-07-20  Frank Ch. Eigler  <fche@redhat.com>

	* tree-mudflap.c (mf_set_options_fndecl): New tree.
	(mudflap_init): Set it.
	(mudflap_register_call): Remove __mf_init call.
	(mudflap_finish_file): Emit call to __mf_init here.  Emit a call to
	to pass "-ignore-reads" option to libmudflap if needed.

2004-07-20  John David Anglin  <dava.anglin@nrc-cnrc.gc.ca>

	PR c++/14607
	* config/pa/pa-hpux10.h (SUPPORTS_ONE_ONLY): Define.
	(MAKE_DECL_ONE_ONLY): Undefine.
	* pa-protos.h (som_text_section_asm_op, one_only_readonly_data_section,
	readonly_data, one_only_data_section, forget_section): New prototypes.
	* pa.c (pa_init_machine_status, som_text_section_asm_op): New
	functions.
	(pa_select_section): Add one-only (COMDAT) support.
	* pa.h (struct machine_function): Define.
	* som.h (ASM_OUTPUT_FUNCTION_PREFIX): Delete.
	(TEXT_SECTION_ASM_OP): Call som_text_section_asm_op.
	(DEFAULT_TEXT_SECTION_ASM_OP, NEW_TEXT_SECTION_ASM_OP,
	ONE_ONLY_TEXT_SECTION_ASM_OP, ONE_ONLY_READONLY_DATA_SECTION_ASM_OP,
	ONE_ONLY_DATA_SECTION_ASM_OP): New defines.
	(EXTRA_SECTIONS): Add in_one_only_readonly_data and in_one_only_data.
	(EXTRA_SECTION_FUNCTIONS): Rework to use individual function macros.
	(READONLY_DATA_FUNCTION, ONE_ONLY_READONLY_DATA_SECTION_FUNCTION,
	ONE_ONLY_DATA_SECTION_FUNCTION, FORGET_SECTION_FUNCTION): New defines
	for EXTRA_SECTION_FUNCTIONS.
	* doc/install.texi: Update binutils requirements.

2004-07-20  Nathan Sidwell  <nathan@codesourcery.com>

	* vec.h (VEC_T_length, VEC_T_index, VEC_T_iterate, VEC_T_truncate,
	VEC_T_replace, VEC_T_quick_insert, VEC_T_safe_insert,
	VEC_T_ordered_remove, VEC_T_unordered_remove): Use unsigned, not
	size_t.
	(struct VEC): Use unsigned for num and alloc.
	* vec.c (struct vec_prefix): Likewise.
	(vec_o_reserve): Adjust.

	* dbxout.c (dbxout_type): Fix printf format.

	* tree.h (binfo_member): Remove.
	* tree.c (binfo_member): Remove.

2004-07-20  Nathan Sidwell  <nathan@codesourcery.com>

	* tree.h: Include vec.h
	(DEF_VEC_P(tree)): New type.
	(BINFO_BASE_BINFOS, BINFO_N_BASE_BINFOS, BINFO_BASE_BINFO): Adjust.
	(BINFO_BASE_APPEND, BINFO_BASE_ITERATE): New.
	(BINFO_LANG_SLOT): Remove.
	(BINFO_SUBVTT_INDEX, BINFO_VPTR_INDEX, BINFO_PRIMARY_BASE_OF): New.
	(struct tree_binfo): Turn base_binfos into a trailing
	VEC(tree). Add vtt_subvtt, vtt_vptr, primary fields.
	(binfo_lang_slots): Remove.
	* tree.c (binfo_lang_slots): Remove.
	(make_tree_binfo_stat): Take a base binfo count, not a
	lang slot count.  Adjust.
	* Makefile.in (TREE_H): Add vec.h
	* alias.c (record_component_aliases): Adjust BINFO access.
	* dbxout.c (dbxout_type): Likewise.
	* dwarf2out.c (gen_member_die): Likewise.
	* sdbout.c (sdbout_one_type): Likewise.
	* tree-dump.c (deque_and_dump): Likewise.
	* config/i386/i386.c (classify_argument,
	contains_128bit_aligned_vector_p): Likewise.
	* config/sh/symbian.c (symbian_export_vtable_and_rtti_p): Likewise.
	* doc/c-tree.texi (Classes): Update BINFO documentation.

2004-07-20  Steven Bosscher  <stevenb@suse.de>

	* c-common.h (check_case_value): Remove prototype.
	(c_add_case_label): Adjust prototype.
	* c-common.c (check_case_value): Make static.
	(check_case_bounds): New function.
	(c_add_case_label): Use it.  Take new argument orig_type.
	* c-typeck.c (struct c_switch): New orig_type field.
	(c_start_case): Set it.
	(do_case): Pass it to c_add_case_label.
	* expr.c (expand_expr_real_1): Don't warn for out-of-bounds
	cases from here.  Add the labels in reverse order.
	* stmt.c (struct case_node): Adjust comment.  Remove balance field.
	(add_case_node): Return nothing, don't check for duplicate cases.
	Insert new case nodes in a list, not in an AVL tree.
	(expand_end_case_type): Don't turn a case tree into a case list.
	(case_tree2list): Remove.
	* tree.h (add_case_node): Adjust prototype.

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.

2004-07-19  Roger Sayle  <roger@eyesopen.com>

	* rtlanal.c (reg_set_p): Add check for regs_invalidated_by_call.

2004-07-19  Jeff Law  <law@redhat.com>

	* tree-ssa-dom.c (single_incoming_edge_ignoring_loop_edges): New.
	(get_eq_expr_value): Use it.  Simplify slightly.

2004-07-19  Maciej W. Rozycki  <macro@linux-mips.org>

	* config/mips/mips.md (mulsidi3_32bit_r4000): Fix the clobber list.
	(umulsidi3_32bit_r4000): Likewise.

2004-07-19  Nathan Sidwell  <nathan@codesourcery.com>

	* vec.h: Propagate location information properly.
	(VEC_T_iterate): Add result pointer parameter.
	(VEC_T_space): New.
	(VEC_T_reserve): Use it.

2004-07-19  Daniel Jacobowitz  <dan@debian.org>

	* Makefile.in (c-format.o): Depend on c-format.h.
	* c-format.h: New file.
	(struct format_char_info): Add CHAIN member.
	* c-format.c: Move some types and constants to c-format.h.
	(format_type_error): Set to -1.
	(struct function_format_info): Use an int for format_type.
	(decode_format_type): Return an int.  Return format_type_error
	on error.
	(print_char_table, asm_fprintf_char_table, gcc_diag_char_table)
	(gcc_diag_char_table, gcc_cdiag_char_table, gcc_cxxdiag_char_table)
	(scan_char_table, time_char_table, monetary_char_table): Initialize
	CHAIN to NULL.
	(n_format_types): New variable.
	(check_format_info_main): Handle CHAIN in format_char_info.
	(handle_format_attribute): Handle TARGET_FORMAT_TYPES and
	TARGET_N_FORMAT_TYPES.
	* config.gcc (i[34567]86-*-solaris2*, sparc64-*-solaris2*)
	(sparc-*-solaris2*): Include config/t-sol2 and config/sol2-c.c.
	* config/sol2-c.c: New file.
	* config/t-sol2: New file.
	* config/sol2.h (TARGET_N_FORMAT_TYPES, TARGET_FORMAT_TYPES): Define.
	* config/sparc/elf.h, config/sparc/sp64-elf.h: Undefine
	TARGET_N_FORMAT_TYPES and TARGET_FORMAT_TYPES.

	* doc/extend.texi (Target Format Checks): New section.
	(Function Attributes): Mention it.
	* doc/invoke.texi: Mention target format checks.
	* doc/sourcebuild.texi: Mention target format checks.
	* dc/tm.texi (Misc): Document TARGET_N_FORMAT_TYPES and
	TARGET_FORMAT_TYPES.

2004-07-19  Andreas Krebbel  <krebbel1@de.ibm.com>

	* config/s390/s390-protos.h (s390_return_address_offset): Prototype
	added.
	* config/s390/s390.c (regclass_map initializer): Register 35 added to
	ADDR_REGS.
	(load_multiple_operation, store_multiple_operation): Removed
	pointless sanity check.
	(s390_decompose_address): Added check for return_address_pointer_rtx.
	(s390_return_addr_rtx): Use return_address_pointer_rtx for count == 0.
	(s390_return_address_offset): New function.
	* config/s390/s390.h (FIRST_PSEUDO_REGISTER): Increased to 36.
	(FRAME_REGNO_P): Added check for register 35.
	(FIXED_REGISTERS, CALL_USED_REGISTERS, CALL_REALLY_USED_REGISTERS,
	REG_ALLOC_ORDER): Appended entry for register 35.
	(REG_CLASS_CONTENTS): Adjusted class masks for register 35.
	(EH_RETURN_HANDLER_RTX): Use return_address_pointer_rtx.
	(RETURN_ADDRESS_POINTER_REGNUM): New macro.
	(ELIMINABLE_REGS, INITIAL_ELIMINATION_OFFSET): Return address pointer
	is eliminable using stack pointer or hard frame pointer.
	(REGISTER_NAMES): Added name for register 35.
	* config/s390/s390.md ("load_multiple", "store_multiple"): Removed
	pointless sanity check.

2004-07-19  Roger Sayle  <roger@eyesopen.com>

	* fold-const.c (tree_expr_nonzero_p): Add function prototype.
	(fold) <EQ_EXPR>: Move tree_expr_nonzero_p optimization from
	fold_relational_const to here, i.e. "(x | 5) == 0" -> false.
	(fold) (UNEQ_EXPR>: Add optimizations for unordered comparisons
	of the form "x op x" where op is UNLE, UNGE, UNEQ or LTGT.
	(fold_relational_const): Tidy up handling of floating point
	comparisons by calling real_compare.  Remove tree_expr_nonzero_p
	transformation; fold_relational_const assumes constant operands.

2004-07-19  Gabriel Dos Reis  <gdr@integrable-solution.net>

	* doc/sourcebuild.texi: Add libcpp, now that CPP has its own
	directory.

2004-07-19  Joseph S. Myers  <jsm@polyomino.org.uk>

	* c-tree.h (struct c_expr): Define.
	(C_SET_EXP_ORIGINAL_CODE): Remove.
	(parser_build_binary_op, build_compound_expr): Update prototypes.
	* c-parse.in (%union): Add exprtype.
	(FUNC_NAME): Mark as ttype.
	(expr, expr_no_commas, cast_expr, unary_expr, primary): Change to
	exprtype.
	(expr): Update.  Define directly in terms of expr_no_commas
	instead of using nonnull_exprlist.
	(nonnull_exprlist, unary_expr, cast_expr, expr_no_commas, primary,
	offsetof_member_designator, typespec_nonreserved_nonattr, init,
	initval, designator, component_declarator,
	component_notype_declarator, enumerator, array_declarator,
	condition, exexpr, switch_statement, stmt_nocomp, stmt,
	nonnull_asm_operands, ivar_declarator, receiver): Update.  Don't
	set C_EXP_ORIGINAL_CODE.  Use TREE_NO_WARNING for assignments
	where appropriate.
	* c-common.h (C_EXP_ORIGINAL_CODE): Remove.
	* c-common.c (c_common_truthvalue_conversion): Don't check
	C_EXP_ORIGINAL_CODE.
	* c-typeck.c (parser_build_binary_op): Use c_expr structures.
	Don't use C_EXP_ORIGINAL_CODE.
	(default_conversion, default_function_array_conversion): Don't use
	C_EXP_ORIGINAL_CODE.  Preserve TREE_NO_WARNING.
	(internal_build_compound_expr): Merge into build_compound_expr.
	(build_compound_expr): Take two operands instead of a TREE_LIST.
	* objc/objc-act.c (get_super_receiver): Update calls to
	build_compound_expr.

2004-07-18  Paolo Bonzini  <bonzini@gnu.org>

	* config/sh/sh.c (sh_use_dfa_interface): Remove.
	(TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE): Set to
	hook_int_void_1.
	* config/sh/sh.md: Extract pipeline descriptions
	into separate files.
	* config/sh/sh1.md: New file, extracted from sh.md.
	* config/sh/sh4.md: New file, extracted from sh.md.
	* config/sh/shmedia.md: New file, extracted from sh.md
	and rewritten using new-style pipeline description.

2004-07-18  Zack Weinberg  <zack@codesourcery.com>

	* config/pa/pa.md: Delete the two remaining define_peephole
	patterns.

2004-07-18  Steven Bosscher  <stevenb@suse.de>
	    Joseph S. Myers  <jsm@polyomino.org.uk>

	* c-common.c (c_common_truthvalue_conversion): Don't warn if
	TREE_NO_WARNING is set.

2004-07-18  Roger Sayle  <roger@eyesopen.com>

	* builtins.c (simplify_builtin_memcmp, simplify_builtin_strcmp,
	simplify_builtin_strncmp): Delete.
	(fold_builtin_memcmp, fold_builtin_strcmp, fold_builtin_strncmp):
	Change argument to accept an arglist instead of an "exp".  Assume
	that the return type is always integer_type_node.  Copy missing
	transformations from their now obsolete simplify_builtin_*
	equivalents.
	(fold_builtin_1): Pass arglist instead of exp to fold_builtin_memcmp,
	fold_builtin_strcmp and fold_builtin_strncmp.
	(simplify_builtin): Call fold_builtin_memcmp, fold_builtin_strcmp
	and fold_builtin_strncmp instead of simplify_builtin_memcmp,
	simplify_builtin_strcmp and simplify_builtin_strncmp respectively.

2004-07-18  Daniel Jacobowitz  <dan@debian.org>

	* Makefile.in (tree-alias-common.o): Update dependencies.

2004-07-17  Sebastian Pop  <pop@cri.ensmp.fr>

	* cfgloop.c (flow_loop_nested_p): Fix comment.

2004-07-17  Jason Merrill  <jason@redhat.com>

	PR c++/16115
	* stor-layout.c (relayout_decl): New fn.
	* tree.h: Declare it.
	(DECL_BY_REFERENCE): New macro.

2004-07-17  Eric Botcazou  <ebotcazou@act-europe.fr>

	* libgcc2.c (__enable_execute_stack): New symbol.
	* libgcc-std.ver (GCC_3.4.2): New version.  Inherit from GCC_3.4
	and declare __enable_execute_stack.
	* mklibgcc.in (lib2funcs): Add _enable_execute_stack.
	* config/netbsd.h (NETBSD_ENABLE_EXECUTE_STACK): ANSIfy.
	* config/sol2.h (TRANSFER_FROM_TRAMPOLINE): Rename into
	ENABLE_EXECUTE_STACK.
	* config/alpha/alpha.c (alpha_initialize_trampoline): Conditionalize
	on ENABLE_EXECUTE_STACK instead of TRANSFER_FROM_TRAMPOLINE.
	* config/alpha/netbsd.h (TRANSFER_FROM_TRAMPOLINE): Rename into
	ENABLE_EXECUTE_STACK.
	* config/alpha/osf.h (TRANSFER_FROM_TRAMPOLINE): Likewise.
	* config/i386/i386.c (x86_initialize_trampoline): Conditionalize
	on ENABLE_EXECUTE_STACK instead of TRANSFER_FROM_TRAMPOLINE.
	* config/i386/netbsd-elf.h (TRANSFER_FROM_TRAMPOLINE): Rename into
	ENABLE_EXECUTE_STACK.
	* config/i386/netbsd.h (TRANSFER_FROM_TRAMPOLINE): Likewise.
	* config/i386/netbsd64.h (TRANSFER_FROM_TRAMPOLINE): Likewise.
	* config/sparc/freebsd.h (TRANSFER_FROM_TRAMPOLINE): Likewise.
	* config/sparc/netbsd-elf.h (TRANSFER_FROM_TRAMPOLINE): Likewise.
	* config/sparc/sparc.c (sparc_initialize_trampoline): Conditionalize
	on ENABLE_EXECUTE_STACK instead of TRANSFER_FROM_TRAMPOLINE.
	(sparc64_initialize_trampoline): Likewise.
	* doc/tm.texi (trampolines): Add ENABLE_EXECUTE_STACK macro.

2004-07-17  Joseph S. Myers  <jsm@polyomino.org.uk>

	* 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.

2004-07-17  Andrew Pinski  <pinskia@physics.uc.edu>

	PR target/16556
	* config/i386/darwin.h (UNLIKELY_EXECUTED_TEXT_SECTION_NAME):
	Remove white space after the backslash.

2004-07-17  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR rtl-optimization/16294
	* resource.c (return_insn_p): New predicate.
	(mark_target_live_regs): Use it.  Special-case return insns.
	(init_resource_info): Use it.  Don't scan the epilogue past
	a return.

2004-07-17  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* loop-init.c (loop_optimizer_init, loop_optimizer_finalize): Do not
	destroy dominance information.
	* passes.c (rest_of_handle_loop2): Free dominance information.
	* tree-cfg.c (cleanup_tree_cfg): Remove unreachable blocks before
	jump threading.
	(thread_jumps): Update dominance information and remove unreachable
	blocks.
	* tree-ssa-phiopt.c (replace_phi_with_stmt): Update dominance
	information and remove the unreachable block.

2004-07-17  Graham Stott  <graham.stott@btinternet.com>

	* emit-rtl.c (reorder_insns): Don't set BB for a BARRIER insn.

2004-07-17  Toon Moene  <toon@moene.indiv.nluug.nl>

	* doc/sourcebuild.texi: Remove libf2c entry.

2004-07-17  Paolo Bonzini  <bonzini@gnu.org>

	* config/i386/i386.md (movv16qi_internal): Fix typo.

2004-07-17  Steven Bosscher  <stevenb@suse.de>

	* final.c (final_scan_insn): Fix broken commit from previous
	patch.

2004-07-17  Joseph S. Myers  <jsm@polyomino.org.uk>

	* c-typeck.c (parser_build_binary_op): Condition warnings for
	X<=Y<=Z on -Wparentheses instead of -Wextra.
	* doc/invoke.texi: Update.  Document that most of -Wparentheses is
	supported for C only.

2004-07-17  Steven Bosscher  <stevenb@suse.de>

	* cfgcleanup.c (try_simplify_condjump): Don't remove line
	notes to avoid unreachable code warnings.
	* toplev.c (backend_init): Don't emit line notes for
	unreachable code warnings.

	* combine.c (distribute_notes): Don't distribute a
	REG_VTABLE_REF note.
	* final.c (final_scan_insn): Don't handle it.
	* rtl.c (reg_note_name): Remove it.
	* rtl.h (enum reg_node): Dito.

	* emit-rtl.c (force_line_numbers, restore_line_number_status):
	Remove.
	* rtl.h (force_line_numbers, restore_line_number_status):
	Remove prototypes.

	* stmt.c (using_eh_for_cleanups_p, using_eh_for_cleanups): Move...
	* tree-eh.c (using_eh_for_cleanups_p): ...here.  Make static.
	(using_eh_for_cleanups): Also moved here.

	* expr.c (expand_expr_real_1) <CASE_LABEL_EXPR>: Die if we see one.
	<SWITCH_EXPR>: Die if we have a non-NULL SWITCH_BODY.  Update calls
	to expand_start_case and add_case_node.
	* stmt.c (struct nesting): Cleanup unused fields condition_code,
	last_unconditional_cleanup, nominal_type, printname, and
	line_number_status.
	(struct fixup_goto): Remove.
	(struct stmt_status): Remove x_goto_fixup_chain field.
	(goto_fixup_chain): Remove.
	(strip_default_case_nodes, group_case_nodes, emit_jump_if_reachable,
	pushcase, pushcase_range): Remove.
	(expand_start_bindings_and_block): Don't set unused fields in
	the nesting stack.
	(expand_start_case, add_case_node): Cleanup unused formal arguments.
	(expand_end_case_type): Don't simplify the case-list.  Use emit_jump
	instead of emit_jump_if_reachable.
	(emit_case_nodes): Likewise.
	* tree-cfg.c (group_case_labels, cleanup_dead_labels): No longer
	static.
	(update_eh_label): Work around left-over exception handing regions.
	* tree-flow.h (group_case_labels, cleanup_dead_labels): Add protos.
	* tree-optimize.c (execute_cleanup_cfg_post_optimizing): New function.
	(pass_cleanup_cfg_post_optimizing): New pass.
	(init_tree_optimization_passes): Run the new pass after all
	optimizations.
	* tree.h (pushcase, pushcase_range): Remove prototypes.
	(expand_start_case, add_case_node): Update prototypes.

2004-07-16  Krister Walfridsson  <cato@df.lth.se>

	* tree-inline.c (estimate_num_insns_1): Correct increase of count.

2004-07-16  Richard Henderson  <rth@redhat.com>

	* builtins.c (std_expand_builtin_va_arg): Remove.
	(expand_builtin_va_arg): Remove.
	* expr.h: Don't declare them.
	* gimplify.c (mark_decls_volatile_r): Remove.
	(copy_if_shared_r): Don't call it.
	* target-def.h: Don't test EXPAND_BUILTIN_VA_ARG.
	* expr.c (expand_expr_real_1): Don't handle VA_ARG_EXPR.
	* gimple-low.c (lower_stmt): Likewise.
	* tree-cfg.c (cfg_remove_useless_stmts_bb): Likewise.
	* tree-gimple.c (is_gimple_tmp_rhs, is_gimple_stmt): Likewise.
	* tree-ssa-operands.c (get_expr_operands): Likewise.
	* doc/tm.texi (TARGET_GIMPLIFY_VA_ARG_EXPR): Don't mention
	EXPAND_BUILTIN_VA_ARG.
	* system.h (EXPAND_BUILTIN_VA_ARG): Poison.
	* config/alpha/alpha.h, config/alpha/unicosmk.h, config/i386/i386.h,
	config/ia64/ia64.h, config/rs6000/rs6000.h, config/s390/s390.h,
	config/sparc/sparc.h (EXPAND_BUILTIN_VA_ARG): Remove.

2004-07-16  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-pre.c (insert_aux): Break out if we hit
	a critical edge.

2004-07-16  Richard Henderson  <rth@redhat.com>

	* basic-block.h (remove_fake_exit_edges): Declare.
	* cfganal.c (remove_fake_predecessors): Rename from
	remove_fake_successors; iterate over predecessors.
	(remove_fake_exit_edges): New.
	* cfgcleanup.c (try_optimize_cfg): Use it.
	* gcse.c (one_pre_gcse_pass, store_motion): Likewise.
	* predict.c (estimate_probability): Likewise.
	(tree_estimate_probability, note_prediction_to_br_prob): Likewise.
	* tree-cfg.c (make_edges): Likewise.
	* tree-ssa-pre.c (fini_pre): Likewise.
	* profile.c (instrument_edges): Don't remove_fake_edges.
	(branch_prob): Do it earlier here.

2004-07-16  Richard Henderson  <rth@redhat.com>

	* tree-ssa-operands.c (get_expr_operands): Fix 2004-07-15
	switchification wrt CONSTRUCTOR.  Document the reason.

2004-07-16  Frank Ch. Eigler  <fche@redhat.com>

	* tree-mudflap.c (mf_file_function_line_tree): Correct typo
	that prevented descriptive __mf_check source location strings.

2004-07-16  Richard Henderson  <rth@redhat.com>

	* tree-def (WITH_SIZE_EXPR): New.
	* explow.c (expr_size, int_expr_size): Handle WITH_SIZE_EXPR.
	* expr.c (expand_expr_real_1): Likewise.
	* gimplify.c (maybe_with_size_expr): New.
	(gimplify_arg, gimplify_modify_expr): Use it.
	(gimplify_modify_expr_to_memcpy): Take size parameter.
	(gimplify_modify_expr_to_memset): Likewise.
	(gimplify_expr): Handle WITH_SIZE_EXPR.
	* tree-alias-common.c (find_func_aliases): Likewise.
	* tree-eh.c (tree_could_trap_p): Likewise.
	(tree_could_throw_p): Likewise.
	* tree-gimple.c (is_gimple_lvalue): Likewise.
	(get_call_expr_in): Likewise.
	* tree-inline.c (estimate_num_insns_1): Likewise.
	(expand_calls_inline): Likewise.
	* tree-nested.c (convert_call_expr): Likewise.
	* tree-pretty-print.c (dump_generic_node): Likewise.
	* tree-sra.c (sra_walk_expr): Likewise.
	* tree-ssa-alias.c (add_pointed_to_expr): Likewise.
	* tree-ssa-ccp.c (get_rhs, set_rhs): Likewise.
	* tree-ssa-operands.c (get_expr_operands): Likewise.
	* tree-tailcall.c (find_tail_calls): Likewise.

	* calls.c (expand_call): Reset old_stack_allocated after
	calling emit_stack_restore.

2004-07-16  Richard Henderson  <rth@redhat.com>

	* langhooks-def.h (LANG_HOOKS_TREE_INLINING_COPY_RES_DECL_FOR_INLINING,
	lhd_tree_inlining_copy_res_decl_for_inlining): Remove.
	* langhooks.c (lhd_tree_inlining_copy_res_decl_for_inlining): Remove.
	* langhooks.h (struct lang_hooks_for_tree_inlining): Remove
	copy_res_decl_for_inlining.

	* tree-inline.c (declare_return_variable): New modify_dest argument.
	Use it as the return value, when possible or manditory.  Handle
	TREE_ADDRESSABLE types.
	(expand_call_inline): Extract MODIFY_EXPR lhs for call.  Simplify
	replacement of CALL_EXPR.

2004-07-16  Richard Henderson  <rth@redhat.com>

	* tree-flow.h (struct var_ann_d): Remove has_hidden_use.
	* gimple-low.c (expand_var_p): Don't check it.
	* tree-ssa-alias.c (setup_pointers_and_addressables): Likewise.
	* tree-ssa-copyrename.c (rename_ssa_copies): Likewise.
	* tree-ssa-operands.c (add_stmt_operand): Likewise.
	* tree-dfa.c (find_hidden_use_vars, find_hidden_use_vars_r): Kill.
	(find_referenced_vars): Don't call them.
	* tree-flow-inline.h (has_hidden_use, set_has_hidden_use): Kill.

2004-07-16  Richard Henderson  <rth@redhat.com>

	* function.c (pass_by_reference): True for all variable sized types.

2004-07-16  Sebastian Pop  <pop@cri.ensmp.fr>

	* Makefile.in (tree-pretty-print.o): Depend on tree-chrec.h.
	* tree-pretty-print.c: Include tree-chrec.h.
	(dump_generic_node): Pretty print SCEV_KNOWN, SCEV_NOT_KNOWN
	and POLYNOMIAL_CHREC nodes.

2004-07-16  Steve Ellcey  <sje@cup.hp.com>

	* builtins.c (expand_builtin_stpcpy): Do not create temporary
	reg with VOIDmode.

2004-07-16  Segher Boessenkool  <segher@kernel.crashing.org>

	* config/rs6000/eabi.asm (__eabi_convert): Fix typo (cmpi vs. cmpwi).

2004-07-16  Andreas Krebbel  <krebbel1@de.ibm.com>

	* config/s390/s390.md: Changed every occurence of BASE_REGISTER
	to BASE_REGNUM.
	* config/s390/s390.c: Likewise.
	* config/s390/s390.h: Likewise.

2004-07-16  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.md (addsi3, adddi3): Remove special handling
	of $sp adds.  Remove REGNO checks from mips16 patterns.

2004-07-16  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.md: Delete outdated comment.

2004-07-16  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.c (get_float_compare_codes): Delete.
	(mips_emit_compare): New function, mostly extracted from
	get_float_compare_codes and gen_conditional_branch.
	(gen_conditional_branch, gen_conditional_move): Use it.

2004-07-16  Segher Boessenkool  <segher@kernel.crashing.org>

	* genautomata.c (add_vect): Speedup by using integers as
	bit-vectors for walking through the comb_vect and finding
	a match.

2004-07-16  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.c (mips_zero_if_equal): Only use XORs if the second
	operand is an uns_arith_operand; use subtraction otherwise.
	* config/mips/mips.md (cmpsi, cmpdi): Allow any nonmemory_operand,
	not just arith_operands.

2004-07-16  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips-protos.h (gen_int_relational): Delete.
	(mips_emit_scc): Declare.
	* config/mips/mips.c (internal_test): Delete.
	(sle_operand, sleu_operand): New functions.
	(map_test_to_internal_test, gen_int_relational): Delete.
	(mips_emit_binary, mips_relational_operand_ok_p)
	(mips_emit_int_relational, mips_zero_if_equal)
	(mips_emit_scc): New functions.
	(gen_conditional_branch): Rework to use mips_emit_int_relational.
	* config/mips/mips.h (PREDICATE_CODES): Add sle_operand and
	sleu_operand.
	* config/mips/mips.md (seq, sne, sgt, sge, slt, sle, sgtu, sgeu)
	(sltu, sleu): Use mips_emit_scc.
	(*sge_[sd]i, *sgeu_[sd]i): New patterns.
	(*sle_[sd]i, *sle_[sd]i_mips16): Use sle_operand.
	(*sleu_[sd]i, *sleu_[sd]i_mips16): Use sleu_operand.

2004-07-16  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.md (*sgt_di_mips16): Fix destination constraint.

2004-07-16  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.md (*seq_[sd]i): Renamed from seq_[sd]i_zero.
	(*sne_[sd]i): Likewise sne_[sd]i_zero.
	(*sgt_[sd]i): ...and sgt_[sd]i.
	(*slt_[sd]i): ...and slt_[sd]i.
	(*sgtu_[sd]i): ...and sgtu_[sd]i.
	(*sltu_[sd]i): ...and sltu_[sd]i.
	(*sleu_[sd]i): ...and sleu_[sd]i_const.
	Name previously unnamed mips16 patterns.  Formatting fixes.

2004-07-16  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.c (cmp_operands): Renamed from branch_cmp.
	(branch_type): Delete.
	(gen_conditional_branch, gen_conditional_move)
	(mips_gen_conditional_trap): Update after name change.  Get the
	comparison mode from cmp_operands[0].
	* config/mips/mips.h (cmp_type, branch_type): Delete.
	(cmp_operands): Renamed from branch_cmp.
	* config/mips/mips.md (cmpsi, cmpdi, cmpsf, cmpdf): Update after
	name change.  Don't set branch_type.
	(seq, sne, sgt, sge, slt, sle, sgtu, sgeu, sltu, sleu): Check the
	mode class of cmp_operands[0] rather than branch_type.  Update after
	name change.

2004-07-16  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.c (mips_rtx_costs): In mips16 code, set the cost
	of 0...255 to 0 when inside a SET.

2004-07-16  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.md: Remove mips16 define_peepholes.

2004-07-16  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-pre.c (init_pre): Connect infinite loops to exit.
	(fini_pre): Remove fake edges.

2004-07-15  Richard Henderson  <rth@redhat.com>

	* tree-ssa-operands.c (get_expr_operands): Use a switch.  Split out...
	(get_indirect_ref_operands, get_call_expr_operands): ... these.

2004-07-15  Nathan Sidwell  <nathan@codesourcery.com>

	* vec.h (VEC_address): New function.

2004-07-14  Jason Merrill  <jason@redhat.com>

	PR middle-end/15885
	* gimplify.c (gimplify_arg): New fn, split out from...
	(gimplify_call_expr): Here.  Special-case BUILT_IN_VA_START.

2004-07-15  Roman Zippel  <zippel@linux-m68k.org>

	* config/m68k/m68k.c (output_move_qimode): Abort on an attempt to
	generate code which is generated by pushqi1 now
	* config/m68k/m68k.h (MOVE_BY_PIECES_P): Remove.

2004-07-15  Roman Zippel  <zippel@linux-m68k.org>

	* combine.c (simplify_set): match the mode of the constant 0 with
	the tested operand to match the compare behaviour and the
	simplify_relational_operation() expectation.

2004-07-15  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/rs6000.md ("bunordered"): Disable for e500.
	("bordered"): Same.

2004-07-15  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/rs6000.md ("*cceq_ior_compare"): Allow
	unconditionally.
	* config/rs6000/spe.md ("e500_cceq_ior_compare"): Remove.

2004-07-15  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.c (mips_adjust_insn_length): Fix handling of
	calls in mips16 code.

2004-07-15  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.md: In the mips16 li/neg splitter, use SImode for
	the destination of the li as well as for the neg.

2004-07-15  Frank Ch. Eigler  <fche@redhat.com>

	g++/15861
	* cgraphunit.c (cgraph_build_static_cdtor): Add priority argument.
	* cgraph.h: Update declaration.
	* c-decl.c (build_cdtor): Update call with default priority.
	* coverage.c (create_coverage): Ditto.
	* tree-mudflap.c (mf_init_fndecl): New tree.
	(mudflap_init): Set it.
	(mudflap_register_call): Arrange to call __mf_init before the first
	__mf_register call.
	(mudflap_finish_file): Mark the mudflap static initializer as extra
	high priority, to beat all C++ static constructors.

2004-07-15  Jeff Law  <law@redhat.com>

	* loop.c (check_insn_for_givs): Restore check for code labels that was
	accidentally deleted by a recent checkin.

2004-07-15  Nathan Sidwell  <nathan@codesourcery.com>

	* vec.h (VEC_T_truncate): Allow truncation of an empty vector.
	(VEC_T_quick_insert, VEC_T_ordered_remove): Fix sizeof(T) thinko.

2004-07-14  Richard Henderson  <rth@redhat.com>

	* print-tree.c (print_node): Fix casts last change.

2004-07-15  Paul Brook	<paul@codesourcery.com>

	* 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.

2004-07-14  Richard Henderson  <rth@redhat.com>

	* print-tree.c (print_node): Handle SSA_NAME.

2004-07-14  James E Wilson  <wilson@specifixinc.com>

	PR target/16325
	* config/mips/mips.h (STARTING_FRAME_OFFSET): When flag_profile_value
	and ! TARGET_64BIT, include REG_PARM_STACK_SPACE.

2004-07-15  Jakub Jelinek  <jakub@redhat.com>

	* expr.c (expand_assignment): Reenable bitfield += optimizations.
	Use alias set 0 for memory, do proper mode calculations and adjust
	address for memories.

2004-07-14  Per Bothner	 <per@bothner.com>

	* input.h: If USE_MAPPED_LOCATION, define separate expanded_location
	structure with extra column field.
	* tree.c (expand_location): Also fill in column field.
	* gengtype-lex.l: Ignore expanded_location typedef, sinze gengtype
	gets confused by the two conditionally-compiled definitions.

2004-07-14  Eric Christopher  <echristo@redhat.com>

	* calls.c (expand_call): Fix typo in comment.

2004-07-14  Steve Ellcey  <sje@cup.hp.com>

	* config/ia64/ia64.c (ia64_expand_compare): Allow ORDERED
	comparision of TFmode.

2004-07-14  Richard Henderson  <rth@redhat.com>

	* 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.

2004-07-14  Mike Stump	<mrs@apple.com>

	* config/darwin.h (WINT_TYPE): Define to be int to match
	system header files.

2004-07-14  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/xtensa.c (function_arg_advance): Check for args
	that must be passed in the stack.
	(xtensa_gimplify_va_arg_expr): Skip special-case padding for small
	arguments if the size is not a constant.

2004-07-14  Per Bothner  <per@bothner.com>

	* c-typeck.c (emit_side_effect_warnings): Use EXPR_HAS_LOCATION
	instead of EXPR_LOCUS in a boolean context, which is always true
	if --enable-mapped-location.
	* stmt.c (warn_if_unused_value): Likewise.  Also use EXPR_LOCATION.

2004-07-14  Richard Henderson  <rth@redhat.com>

	* dominance.c (struct dom_info): Add fake_exit_edge.
	(init_dom_info): Allocate it.
	(free_dom_info): Free it.
	(calc_dfs_tree): Set it.  Handle noreturn and infinite loops
	in two passes.
	(calc_idoms): Honor fake_exit_edge.

2004-07-13  Jason Merrill  <jason@redhat.com>

	* tree-gimple.c (is_gimple_reg_rhs, is_gimple_mem_rhs): New fns.
	(rhs_test_for): New fn.
	(is_gimple_tmp_rhs): Rename from is_gimple_rhs.
	* tree-gimple.h: Declare them.
	* gimplify.c (gimplify_modify_expr): Use the new fns.

2004-07-14  Richard Henderson  <rth@redhat.com>

	* config/arm/arm-protos.h (arm_va_arg): Remove.
	* config/arm/arm.c (arm_va_arg): Remove.
	(arm_init_expanders): Fix alignment of arg_pointer_rtx.
	* config/arm/arm.h (EXPAND_BUILTIN_VA_ARG): Remove.

2004-07-14  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* pa.c (fix_range): New function to mark a range(s) of registers as
	fixed registers.
	(override_options): Call fix_range if the -mfixed-range option string
	is not empty.
	* pa.h (TARGET_OPTIONS): Add -mfixed-range option.
	* doc/invoke.texi (-mfixed-range): Document new option.

2004-07-14  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.c (function_arg_padding): Do not pad SFmode
	for TARGET_64BIT.
	(rs6000_gimplify_va_arg): Use size_int instead of build_int_2.

2004-07-14  Roger Sayle  <roger@eyesopen.com>

	* expmed.c (expand_sdiv_pow2): New function to expand signed division
	by a positive power of two, split out from expand_divmod.  Provide
	an alternate implementation when shifts are expensive.  Lower the
	threshold for using a branchless implementation to BRANCH_COST >= 2.
	(expand_divmod): Call expand_sdiv_pow2 for suitable divisions.

2004-07-14  Paolo Bonzini  <bonzini@gnu.org>

	* tree-dfa.c (make_rename_temp): *Really* work just
	like create_tmp_var if called while outside SSA form.

2004-07-14  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.md ("udivsi3"): Ensure trap is generated
	for division by zero.
	("umodsi3"): Likewise.

2004-07-14  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.c (mips_output_move): When generating mips16 code,
	force loads of negative constants to be split.
	* config/mips/mips.md (*movhi_mips16, *movqi_mips16): Likewise.
	Generalize SImode li/neg splitter to cope with other modes.

2004-07-14  Paolo Bonzini  <bonzini@gnu.org>

	* expmed.c: Remove more references to QUEUED in the comments.
	* expr.c: Likewise.

2004-07-14  Richard Sandiford  <rsandifo@redhat.com>

	Revert:
	2004-07-13  Richard Henderson  <rth@redhat.com>
	* config/mips/mips.c (mips_pass_by_reference): Handle mode sizes
	correctly.

2004-07-14  Paolo Bonzini  <bonzini@gnu.org>

	* tree-dfa.c (make_rename_temp): Work just like
	create_tmp_var if called while outside SSA form.

2004-07-14  Paolo Bonzini  <bonzini@gnu.org>

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

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

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

2004-07-14  Ben Elliston  <bje@au.ibm.com>

	* vec.h: Comment fix.

2004-07-13  Richard Henderson  <rth@redhat.com>

	* 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.

2004-07-14  Richard Henderson  <rth@redhat.com>
	    Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips-protos.h (mips_va_arg): Delete.
	* config/mips/mips.h (EXPAND_BUILTIN_VA_ARG): Delete.
	* config/mips/mips.c: Include tree-gimple.h.
	(TARGET_GIMPLIFY_VA_ARG_EXPR): Define.
	(mips_arg_info): Remove special handling of must_pass_in_stck args.
	(mips_gimplify_va_arg_expr): Rewritten from mips_va_arg.
	(function_arg_pass_by_reference): Return true if must_pass_in_stack.

2004-07-13  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/xtensa.c (xtensa_gimplify_va_arg_expr): Swap
	arguments for COND_EXPR in big-endian adjustment code.

2004-07-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* pa-64.h (ARG_POINTER_REGNUM, STATIC_CHAIN_REGNUM): Delete.
	* pa.h (ARG_POINTER_REGNUM, STATIC_CHAIN_REGNUM): Modify for hppa64.
	* pa32-regs.h (REG_ALLOC_ORDER): Reorder caller-saved registers.
	* pa64-regs.h (REG_ALLOC_ORDER): Likewise.

2004-07-13  Diego Novillo  <dnovillo@redhat.com>

	PR tree-optimization/16443
	* tree-ssa-alias.c: Add more description for
	CALL_CLOBBERED_VARS and ADDRESSABLE_VARS.
	* tree-ssa-operands.c (get_asm_expr_operands): Re-order the
	clobbering of call-clobbered and addressable variables.  If
	there are any before aliases have been computed, add them.

2004-07-13  Diego Novillo  <dnovillo@redhat.com>

	* tree-optimize.c (execute_todo): Flush DUMP_FILE before
	verification.

2004-07-13  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.c (s390_gimplify_va_arg): Use size_int instead
	of build_int_2.  Convert both operands of PLUS_EXPR and MULT_EXPR
	to the same type.

2004-07-13  Per Bothner  <per@bothner.com>

	* collect2.c (main): Handle --no-demangle and --demangle flags.

2004-07-13  Sebastian Pop  <pop@cri.ensmp.fr>

	* Makefile.in (OBJS-common): Add tree-data-ref.o.
	(tree-scalar-evolution.o): Add missing dependences on tree-pass.h flags.h.
	(tree-data-ref.o): New rule.
	* lambda.h: New file.
	* tree-data-ref.c: New file.
	* tree-data-ref.h: New file.
	* tree.c (int_cst_value, tree_fold_gcd): New functions.
	* tree.h (int_cst_value, tree_fold_gcd): Declared here.

2004-07-13  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR target/13926
	* config/sparc/sparc-protos.h (output_ubranch): New prototype.
	* config/sparc/sparc.c (output_ubranch): New function.
	* config/sparc/sparc.md (jump pattern): Use it.

2004-07-13  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR target/16494
	* config/sparc/sparc.c (output_cbranch): Properly guard
	the code handling far branches with TARGET_V9.
	* config/sparc/sparc.md (length attribute): Document the
	side-effect of having a length greater or equal to 3.

2004-07-13  Eric Botcazou  <ebotcazou@libertysurf.fr>
	    Lloyd Parkes  <lloyd@must-have-coffee.gen.nz>

	PR target/15186
	* config/sparc/sol2-bi.h (LINK_ARCH64_SPEC_BASE): Pass
	/usr/ucblib/sparcv9 as -R path when -compat-bsd is specified.

2004-07-13  Eric Botcazou  <ebotcazou@libertysurf.fr>
	    Martin Sebor  <sebor@roguewave.com>

	PR target/12602
	* doc/invoke.texi (SPARC options): Document -threads
	and -pthreads on Solaris.

2004-07-13  Richard Henderson  <rth@redhat.com>

	* builtins.c (std_gimplify_va_arg_expr): Handle types passed
	by reference.
	(ind_gimplify_va_arg_expr): Remove.
	* tree.h (ind_gimplify_va_arg_expr): Remove.
	* config/pa/pa.c (hppa_gimplify_va_arg_expr): Don't use it.
	* config/mmix/mmix.c (mmix_function_arg_pass_by_reference): Allow
	argsp to be null.

	* config/arc/arc.c (arc_gimplify_va_arg_expr): Remove.
	(TARGET_GIMPLIFY_VA_ARG_EXPR): Remove.
	* config/cris/cris.c, config/fr30/fr30.c, config/frv/frv.c,
	config/iq2000/iq2000.c, config/m32r/m32r.c, config/mmix/mmix.c,
	config/mn10300/mn10300.c, config/v850/v850.c: Similarly.

2004-07-13  Richard Henderson  <rth@redhat.com>

	* function.c (pass_by_reference): New.
	(assign_parm_find_data_types): Use it.
	* calls.c (initialize_argument_information): Likewise.
	(emit_library_call_value_1): Likewise.
	* expr.h (FUNCTION_ARG_PASS_BY_REFERENCE): Remove.
	* function.h (pass_by_reference): Declare.

2004-07-13  Richard Henderson  <rth@redhat.com>

	* 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.

2004-07-13  Anthony Heading  <aheading@jpmorgan.com>

	* configure.ac (gcc_cv_as_offsetable_lo10): Fix a typo.
	* configure: Rebuilt.

2004-07-13  Richard Sandiford  <rsandifo@redhat.com>

	* doc/invoke.texi: Remove documentation for MIPS -mrnames option.
	* config/mips/mips.h (mips_reg_names): Don't declare.
	(MASK_NAME_REGS): Delete.  Shuffle other MASK_* values down.
	(TARGET_NAME_REGS): Delete.
	(TARGET_SWITCHES): Remove -mrnames.
	(REGISTER_NAMES): Initialise with the old contents of mips_reg_names[].
	(ADDITIONAL_REGISTER_NAMES): Remove entries for names mentioned
	in REGISTER_NAMES.
	* config/mips/mips.c (mips_reg_names, mips_sw_reg_names): Delete.
	(override_options): Remove handling of TARGET_NAME_REGS.

2004-07-13  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.h (TARGET_*): Boolify.

2004-07-12  Nick Clifton  <nickc@redhat.com>

	* config.gcc: Add sh-*-symbianelf target.
	* config/sh/sh.c: Add new target macros:
	TARGET_ENCODE_SECTION_INFO, TARGET_STRIP_NAME_ENCODING,
	TARGET_CXX_IMPORT_EXPORT_CLASS.
	(sh_file_start): Create a definition of the .directive section.
	(sh_attribute): Add dllimport and dllexport attributes.
	* config/sh/symbian-pre.h: New file.
	* config/sh/symbian-post.h: New file.
	* config/sh/symbian.c: New file. Contains Symbian specific
	functions.
	* config/sh/sh-protos.h: Add prototypes for new functions
	provided by symbian.c.
	* config/sh/t-symbian: New file.
	* doc/extend.texi: Document support for dllimport and dllexport
	attributes by the sh-symbianelf target.

2004-07-12  James E Wilson  <wilson@specifixinc.com>

	* Makefile.in (AR): Use @AR@ not ar.
	(NM): New.
	(AR_FOR_TARGET): Use $(AR) not ar for native.
	(NM_FOR_TARGET): Use $(NM) not nm for native.
	* configure.ac: Add AC_CHECK_PROG calls for NM and AR.
	* configure: Regenerate.

2004-07-12  David S. Miller  <davem@nuts.davemloft.net>

	* config/sparc/sparc.md (ashlsi3): Eliminate const 1
	special case.
	(ashldi3_sp64): Likewise.

2004-07-12  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	PR target/16477
	* pa.c (function_arg): Update comment.
	* pa.h (BLOCK_REG_PADDING): Define.

2004-07-12  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	PR tree-optimization/16461
	* tree-tailcall.c (independent_of_stmt_p): Handle non-SSA name
	arguments of phi nodes.

2004-07-12  Devang Patel  <dpatel@apple.com>

	* doc/invoke.texi (Darwin Options): Document -gused and -gfull.

2004-07-12  Steve Ellcey  <sje@cup.hp.com>

	* 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.

2004-07-12  Vladimir Makarov  <vmakarov@redhat.com>

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

2004-07-12  Richard Henderson  <rth@redhat.com>

	* target.h (struct gcc_target): Move gimplify_va_arg_expr
	next to build_builtin_va_list.
	* target-def.h (TARGET_GIMPLIFY_VA_ARG_EXPR): Update to match.
	* builtins.c (gimplify_va_arg_expr): Likewise.
	* gimplify.c (copy_if_shared_r): Likewise.

2004-07-12  Alexandre Oliva  <aoliva@redhat.com>

	* passes.c (rest_of_decl_compilation): Don't defer call of
	assemble_variable if its DECL_RTL is already set.

2004-07-12  Sebastian Pop  <pop@cri.ensmp.fr>

	* cfgloop.h (struct loop): Add nb_iterations field.
	(current_loops): Declare.
	* tree-chrec.c (chrec_not_analyzed_yet,
	chrec_dont_know, chrec_known, count_ev_in_wider_type,
	chrec_contains_symbols_defined_in_loop): Remove the temporary
	hooks.
	* tree-flow-inline.h (loop_containing_stmt): New function.
	* tree-scalar-evolution.c: Add implementation.
	* tree-scalar-evolution.h: Add declarations.

2004-07-12 Vladimir Makarov <vmakarov@redhat.com>

	PR rtl-optimization/15921
	* Makefile.in (global.o): Add recog.h.

	* global.c (recog.h): Add the include-clause.
	(bb_info): New member earlyclobber.
	(allocate_bb_info, free_bb_info): Initialize/finish the new
	member.
	(earlyclobber_regclass, earlyclobber_regclass_length): The new
	global variables.
	(check_earlyclobber, regclass_intersect,
	mark_reg_use_for_earlyclobber, mark_reg_use_for_earlyclobber_1):
	New functions.
	(calculate_local_reg_bb_info): Calculate value of earlyclobber.
	(make_accurate_live_analysis): Modify pavin.

2004-07-12  Diego Novillo  <dnovillo@redhat.com>

	* tree-cfg.c (find_taken_edge): Statically compute the truth
	value of a predicate comparing an SSA_NAME to itself.

2004-07-12  Roger Sayle  <roger@eyesopen.com>

	* config/rs6000/rs6000.c (rs6000_rtx_costs): Indicate that the
	rs6000 doesn't have shift-and-add or shift-and-sub instructions
	by returning the cost of a multiplication plus an addition.

2004-07-12  Paolo Bonzini  <bonzini@gnu.org>

	PR tree-optimization/14107
	* gimplify.c (gimplify_return_expr): Accept a
	RETURN_EXPR with an error argument.
	* tree-optimize.c (init_tree_optimization_passes):
	Run pass_warn_function_return at -O0.

2004-07-12  Roger Sayle  <roger@eyesopen.com>

	* doc/invoke.texi: Correct -fasynchronous-unwind-tables option
	index entry.

2004-07-12  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.c (mips_use_dfa_pipeline_interface): Delete.
	(TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE): Define to hook_int_void_1.
	* config/mips/3000.md: Add copyright notice.  Remove automota and
	function units; use generic ones instead.  Only define reservations
	for things that are different from generic.md.  Extend each clause
	to include r3900.
	* config/mips/{4000,4100,4300,4600,5000,6000,generic}.md: New files.
	* config/mips/mips.md: Include them. Remove define_function_units.
	(alu, imuldiv): New automata and units.

2004-07-12  Ben Elliston  <bje@au.ibm.com>

	* doc/invoke.texi (Optimize Options): Document -frename-registers
	not being enabled by default at -O3.

2004-07-11  Roger Sayle  <roger@eyesopen.com>

	* fold-const.c (fold) <PLUS_EXPR>: Canonicalize X + -C as X - C for
	floating point additions, to keep real immediate constant positive.
	<MINUS_EXPR>: For floating point subtractions, only transform X - -C
	into X + C, and leave positive real constants as X - C.

2004-07-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* pa.c (hppa_gimplify_va_arg_expr): Remove comment.

2004-07-11  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	PR tree-optimization/15654
	* tree-tailcall.c (eliminate_tail_call): Remove unreachable code.

2004-07-11  Roger Sayle  <roger@eyesopen.com>

	* builtins.c (fold_builtin_fputs): Don't bother converting the
	return type to integer_type_node, as we've already checked that
	the result will be ignored.

	* tree-eh.c (tree_could_trap_p): Add support for -ftrapv such
	that signed addition, subtraction, multiplication, division,
	remainder, negation and absolute value may potentially trap.

	* fold-const.c (fold_ignored_result): New function to strip
	non-side-effecting tree nodes from an expression whose result
	is ignored.
	(fold_convert): Call fold_ignored_result when casting a value
	to VOID_TYPE.
	(omit_one_operand): Call fold_ignored_result on the "omitted"
	operand when building a COMPOUND_EXPR.
	(pedantic_omit_one_operand): Likewise.
	* tree.h (fold_ignored_result): Prototype here.
	* tree-ssa-ccp.c (ccp_fold_builtin): Call fold_ignored_result
	when we're going to ignore the result.

2004-07-11  Richard Henderson  <rth@redhat.com>

	PR tree-opt/16383
	* tree-ssa-ccp.c (fold_stmt_r): Split out...
	* tree.c (fields_compatible_p, find_compatible_field): ... new.
	* tree.h (fields_compatible_p, find_compatible_field): Declare.
	* tree-sra.c (sra_hash_tree): Hash fields by offset.
	(sra_elt_eq): Use fields_compatible_p.
	(generate_one_element_ref): Use find_compatible_field.

2004-07-11  Richard Henderson  <rth@redhat.com>

	PR tree-opt/16422
	* tree-sra.c (generate_one_element_init): New.
	(generate_element_init): Use it.
	(scalarize_init): Push/pop gimplify context around it.
	(find_new_referenced_vars_1, find_new_referenced_vars): New.
	* gimplify.c (gimplify_expr): Allow SSA_NAME.

2004-07-11  Roger Sayle  <roger@eyesopen.com>

	* rtlanal.c (insn_rtx_cost): New function, moved and renamed from
	combine.c's combine_insn_cost.
	* rtl.h (insn_rtx_cost): Prototype here.
	* combine.c (combine_insn_cost): Delete function.
	(combine_validate_cost): Update callers of combine_insn_cost to
	call insn_rtx_cost instead.
	(combine_instructions): Likewise.  Use NONJUMP_INSN_P to avoid
	requesting the rtx_cost of call and/or jump instructions.

	* ifcvt.c (total_bb_rtx_cost): Use insn_rtx_cost instead of calling
	rtx_cost directly.  Don't request/use the cost of call or jump
	instructions.  Return -1 if the cost of any instruction can't be
	determined (or the BB contains a function call).
	(find_if_case_1): Abort transformation if total_bb_rtx_cost returns
	-1 (i.e. can't determine the cost of any instruction or the basic
	block contains a subroutine call).
	(find_if_case_2): Likewise.

2004-07-11  Roger Sayle  <roger@eyesopen.com>

	* rs6000.c (struct processor_costs): Change semantics of fields to
	include the COST_N_INSNS scaling, and update all initializers.
	(rs6000_rtx_costs): Don't use COSTS_N_INSNS on rs6000_cost fields.
	Use COSTS_N_INSNS(1) for NOT, SIGN_EXTEND, ZERO_EXTEND and COMPARE.
	Use rs6000_cost->fp for both FLOAT_TRUNCATE and UNSPEC_FRSP.  When
	optimizing for size, use COSTS_N_INSNS(1) for CALL and IF_THEN_ELSE.

2004-07-11  Joseph S. Myers  <jsm@polyomino.org.uk>

	* LANGUAGES: Remove obsolete information.

2004-07-11  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/linux.h (MD_FALLBACK_FRAME_STATE_FOR): For SIGSEGV and
	SIGBUS signal frames, the PSW address points *to* the faulting
	instruction, not after it.

2004-07-11  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.c (legitimize_tls_address): Handle constant offsets
	added to TLS symbol addresses.

2004-07-11  Richard Henderson  <rth@redhat.com>

	* expmed.c (init_expmed): Use stack-local structures for
	temporary rtl.  Don't recognize shifts.

2004-07-11  Richard Henderson  <rth@redhat.com>

	* expr.c (store_expr): Don't fiddle subreg promotion for types
	with precision smaller than the mode.

2004-07-11  Joseph S. Myers  <jsm@polyomino.org.uk>

	* tree.h (all_types_permanent): Remove.

2004-07-11  Joseph S. Myers  <jsm@polyomino.org.uk>

	* langhooks.h (estimate_num_insns, pushlevel, poplevel, set_block,
	maybe_build_cleanup, update_decl_after_saving): Remove hooks.
	* langhooks.c (lhd_clear_binding_stack): Remove.
	* langhooks-def.h (lhd_clear_binding_stack,
	LANG_HOOKS_MAYBE_BUILD_CLEANUP,
	LANG_HOOKS_UPDATE_DECL_AFTER_SAVING,
	LANG_HOOKS_TREE_INLINING_ESTIMATE_NUM_INSNS, LANG_HOOKS_PUSHLEVEL,
	LANG_HOOKS_POPLEVEL, LANG_HOOKS_SET_BLOCK): Remove.
	(LANG_HOOKS_CLEAR_BINDING_STACK): Define to lhd_do_nothing.
	* system.h (LANG_HOOKS_TREE_INLINING_ESTIMATE_NUM_INSNS,
	LANG_HOOKS_PUSHLEVEL, LANG_HOOKS_SET_BLOCK,
	LANG_HOOKS_MAYBE_BUILD_CLEANUP,
	LANG_HOOKS_UPDATE_DECL_AFTER_SAVING, LANG_HOOKS_POPLEVEL): Poison.
	* tree.h (poplevel): Don't declare.
	* c-lang.c (LANG_HOOKS_CLEAR_BINDING_STACK, LANG_HOOKS_PUSHLEVEL,
	LANG_HOOKS_POPLEVEL, LANG_HOOKS_SET_BLOCK): Remove.
	* objc/objc-lang.c (LANG_HOOKS_CLEAR_BINDING_STACK,
	LANG_HOOKS_PUSHLEVEL, LANG_HOOKS_POPLEVEL, LANG_HOOKS_SET_BLOCK):
	Remove.

2004-07-11  Joseph S. Myers  <jsm@polyomino.org.uk>

	PR tree-optimization/16437
	* c-common.c (shorten_compare): Don't mark result of conversion to
	narrower signed type as overflowing.
	* fold-const.c (decode_field_reference): Determine whether
	signedness comes from outer type using precision rather than size.

2004-07-11  Phil Edwards  <phil@codesourcery.com>

	* configure.ac: Alphabetize --enable-checking list, add
	missing valgrind entry.
	* configure: Regenerate.

2004-07-11  Phil Edwards  <phil@codesourcery.com>

	* doc/install.texi (Testing): Fix syntax in "make check" example.

2004-07-10  James E Wilson  <wilson@specifixinc.com>

	* config/gofast.h (gofast_maybe_init_libfuncs): Use SImode for litodp.

2004-07-10  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	PR rtl-optimization/16001
	* loop-iv.c (iv_number_of_iterations): Prevent copy propagation in
	niter_expr.

2004-07-10  Geoffrey Keating  <geoffk@apple.com>

	* config/darwin.h (LINK_COMMAND_SPEC): Don't call c++filt.

2004-07-10  Steve Kargl  <sgk@troutmask.apl.washington.edu>
	    James Morrison  <phython@gcc.gnu.org>

	* doc/contrib.texi (Contributors): Add gfortran contributors and
	fix a couple of typos.

2004-07-10  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	PR rtl-optimization/15387
	* calls.c (check_sibcall_argument_overlap_1): Handle pointers
	to incoming args space correctly.

2004-07-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* pa.c (output_indirect_call): Only use %r2 as the link register in
	indirect calls with the long PA 2.0 pc-relative branch.

2004-07-10  Daniel Jacobowitz  <dan@debian.org>

	* config/i386/i386.c (override_options): Pick a 64-bit CPU
	for the default tuning if TARGET_64BIT.

2004-07-10  Richard Henderson  <rth@redhat.com>

	* builtins.c (std_gimplify_va_arg_expr): Widen align/boundary
	to HOST_WIDE_INT.  Fold pad-args-down arithmetic.

2004-07-10  Jakub Jelinek  <jakub@redhat.com>

	* expr.h (store_bit_field, extract_bit_field): Remove last argument.
	* expmed.c (store_bit_field, extract_bit_field): Remove last
	argument.
	* builtins.c (expand_builtin_signbit): Adjust callers.
	* optabs.c (expand_vector_binop, expand_vector_unop): Likewise.
	* calls.c (store_unaligned_arguments_into_pseudos): Likewise.
	* ifcvt.c (noce_emit_move_insn): Likewise.
	* stmt.c (expand_return): Likewise.
	* expr.c (emit_group_load, emit_group_store, copy_blkmode_from_reg,
	store_field, expand_expr_real_1): Likewise.

2004-07-10  Richard Henderson  <rth@redhat.com>

	* builtins.c (std_gimplify_va_arg_expr): Fix borked BIT_AND_EXPR.

2004-07-09  Mike Stump  <mrs@apple.com>

	* config/darwin.c (no_dead_strip): Add.
	(HAVE_DEAD_STRIP): Add.
	(darwin_emit_unwind_label): Ensure that we don't dead code strip
	the .eh label.

2004-07-09  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-ssa-loop-im.c: New file.
	* Makefile.in (tree-ssa-loop-im.o): Add.
	* cfgloop.c (superloop_at_depth): New function.
	* cfgloop.h (superloop_at_depth): Declare.
	* common.opt (ftree-lim): New flag.
	* expr.c (array_ref_up_bound): New function.
	* params.def (PARAM_LIM_EXPENSIVE): New parameter.
	* timevar.def (TV_LIM): New timevar.
	* tree-dfa.c (compute_immediate_uses): Respect TDFA_USE flags when
	computing immediate uses of a phi node.
	* tree-flow.h (struct tree_ann_common_d): Add aux field.
	(loop_commit_inserts, for_each_index, tree_ssa_lim): Declare.
	* tree-optimize.c (init_tree_optimization_passes): Add pass_lim.
	* tree-pass.h (pass_lim): Declare.
	* tree-ssa-loop.c (tree_ssa_loop_im, gate_tree_ssa_loop_im): New
	functions.
	(pass_lim): New pass structure.
	* tree-eh.c (tree_could_trap_p): Handle ARRAY_REFs correctly.
	* tree.c (in_array_bounds_p): New function.
	* tree.h (TREE_THIS_NOTRAP): Define also for ARRAY_REFs.
	(in_array_bounds_p, array_ref_up_bound): Declare.
	* doc/invoke.texi (-ftree-lim, --param lim-expensive): Document.
	* doc/passes.texi (tree-ssa-loop-im.c): Document.

2004-07-09  Richard Henderson  <rth@redhat.com>

	* builtins.c (expand_builtin_stpcpy): Don't modify len.

	* tree-ssa-ccp.c (ccp_fold_builtin): Strip conversion exprs
	with prejudice.

2004-07-10  Kelley Cook  <kcook@gcc.gnu.org>

	* flags.h: Delete redundant prototypes that are being generated
	in options.h from common.opt.
	* common.opt: Add in the expository comments formerly in flags.h.

2004-07-09  Jan Beulich  <jbeulich@novell.com>

	* config/i386/i386.c (init_cumulative_args): Set mmx/sse registers
	available for use only when TARGET_MMX/_SSE is set, and check for
	variable argument function if any register count is non-zero.
	(function_arg): Correctly suppress repeated warnings for passing SSE
	vectors are arguments without SSE enabled.
	(ix86_function_arg_boundary): Without SSE enabled, the use of what
	would be SSE register modes does no longer influence the alignment.

2004-07-09  Richard Henderson  <rth@redhat.com>

	* builtins.c (std_gimplify_va_arg_expr): Deny ARGS_GROW_DOWNWARD.
	Always align upward to arg boundary.  Use size_in_bytes/round_up.
	Maintain type-correctness of constants.
	* stor-layout.c (round_up, round_down): Special-case powers of 2.

2004-07-09  David S. Miller  <davem@nuts.davemloft.net>

	* config/sparc/sparc.c (*_costs): Scale instruction costs
	by COSTS_N_INSNS.
	(sparc_rtx_costs): Adjust as appropriate.

2004-07-09  Jan Beulich  <jbeulich@novell.com>

	* config/i386/mm3dnow.h: New.
	* config.gcc: Add mm3dnow.h to extra_headers for i?86 and x86-64.

2004-07-09  Richard Henderson  <rth@redhat.com>

	* simplify-rtx.c (simplify_const_relational_operation): Only
	look at bounds of scalar integers.

2004-07-09  Jan Beulich  <jbeulich@novell.com>

	* config/i386/i386.md (sse2_clflush): Use correct operand for clflush.

2004-07-09  Andrew Pinski  <apinski@apple.com>

	* objc/objc-act.c (build_module_descriptor): Mark UOBJC_MODULES_decl as
	always referenced.
	(synth_forward_declarations): Likewise for UOBJC_CLASS_decl and
	UOBJC_METACLASS_decl.

2004-07-09  James E Wilson  <wilson@specifixinc.com>

	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.

2004-07-09  Jan Beulich  <jbeulich@novell.com>

	* c-typeck.c (build_unary_op): include VECTOR_TYPE in set of codes
	permissible for unary plus.

2004-07-09  Jan Beulich  <jbeulich@novell.com>

	* builtin-types.def (BT_UINT): Rename from BT_UNSIGNED.
	(BT_FN_UINT): Rename from BT_FN_UNSIGNED.
	(BT_FN_PTR_UINT): Rename from BT_FN_PTR_UNSIGNED.
	(BT_ULONG, BT_ULONGLONG, BT_UINTMAX, BT_FN_INT_UINT, BT_FN_INT_ULONG,
	BT_FN_INT_ULONGLONG, BT_FN_INT_INTMAX, BT_FN_INT_UINTMAX): New.
	* builtins.def (BUILTIN_CLZxxx, BUILTIN_CTXxxx, BUILTIN_PARITYxxx,
	BUILTIN_POPCOUNTxxx): Arguments are unsigned.
	(BUILTIN_xxxIMAX): New.
	* builtins.c (expand_builtin): Handle BUILT_IN_FFSIMAX,
	BUILT_IN_CLZIMAX, BUILT_IN_CTZIMAX, BUILT_IN_POPCOUNIMAX, and
	BUILT_IN_PARITYIMAX.

2004-07-09  David S. Miller  <davem@nuts.davemloft.net>

	* config/sparc/sparc.h (processor_costs): Define.
	(sparc_costs): Declare.
	* config/sparc/sparc.c (cypress_costs, supersparc_costs,
	hypersparc_costs, sparclet_costs, ultrasparc_costs,
	ultrasparc3_costs): New.
	(sparc_override_options): Set sparc_costs as appropriate.
	(sparc_rtx_costs): Use sparc_costs instead of messy
	conditionals.

2004-07-09  Steven Bosscher  <stevenb@suse.de>

	* doc/md.texi (Processor pipeline description): Mention that
	the old pipeline description is deprecated.

	* config/rs6000/7450.md (automaton ppc7450): Split up, move
	mciu_7450 function unit to...
	(automaton ppc7450mciu): ...new automaton.

	* haifa-sched.c (insert_schedule_bubbles_p): Remove.
	(schedule_block): Don't consider inserting bubbles.
	(sched_init): Don't initialize DFA bubbles.
	* target-def.h (TARGET_SCHED_INIT_DFA_BUBBLES,
	TARGET_SCHED_DFA_BUBBLE): Remove.
	* target.h (init_dfa_bubbles, dfa_bubble): Remove hooks.
	* doc/tm.texi (TARGET_SCHED_INIT_DFA_BUBBLES,
	TARGET_SCHED_DFA_BUBBLE): Remove documentation.

	* stmt.c (conditional_context): Remove prototype.
	* tree.h (conditional_context): Remove.
	* tree-cfg.c (pre_insert_on_edge): Remove.

	* c-common.h (c_expand_asm_operands): Remove prototype.
	* c-typeck.c (c_expand_asm_operands): Remove.

2004-07-09  Jan Beulich  <jbeulich@novell.com>

	* config/i386/i386.c (classify_argument): Treat V1xx modes the same as
	their base modes. CTImode, TCmode, and XCmode must be passed in memory.
	TFmode (__float128) must be is an SSE/SSEUP pair. V2SImode, V4HImode,
	and V8QI are class SSE. All sufficiently small remaining vector modes
	must be passed in one or two integer registers.
	(ix86_libcall_value): TFmode must be returned in xmm0, XCmode must be
	returned in memory.
	(bdesc_2arg, ix86_init_mmx_sse_builtins): __builtin_ia32_pmuludq and
	__builtin_ia32_pmuludq128 have non-uniform argument and return types
	and must thus be handled explicitly.
	* config/i386/i386.md (*movdi_1_rex64): Add cases for moving between
	MMX and XMM regs.
	(movv8qi_internal, movv4hi_internal, movv2si_internal,
	movv2sf_internal): Permit moving between MMX and XMM registers (since
	MMX areguments and return values are passed in XMM registers).
	(sse2_umulsidi3): Correct type and mode.

2004-07-09  Richard Henderson  <rth@redhat.com>

	* tree-cfg.c (dump_cfg_stats): Fix 64-bit format mismatch errors.

2004-07-09  Eric Christopher  <echristo@redhat.com>

	* config/rs6000/40x.md: Split into two automatons.

2004-07-09  Zack Weinberg  <zack@codesourcery.com>
	    Andrew Pinski  <apinski@apple.com>

	* c-opts.c (c_common_post_options): Force unit-at-a-time mode
	on when we have more than one input file.
	(c_common_parse_file): Restore loop over all input files.
	Clarify diagnostic for -dy when YYDEBUG wasn't defined.

	* c-decl.c (set_type_context): New function.
	(pop_scope): Use it to set context of types.  When we
	encounter a TYPE_DECL, set the context of the attached type too.
	(pop_file_scope): Don't call cpp_undef_all here.
	(diagnose_mismatched_decls): Do not complain about a second
	definition of an 'extern inline' function if it's not in the
	same translation unit.  Do not complain about inline
	declaration after use if the use was in a different
	translation unit.
	(merge_decls): Don't clobber olddecl's DECL_CONTEXT.
	(pushdecl): Do not put DECL_EXTERNAL, !TREE_PUBLIC decls in
	the external scope.
	(pushdecl_top_level): Likewise.
	(grokdeclarator): Clarify what is going on with setting
	DECL_EXTERNAL on function types, a little.
	(c_write_global_declarations): Don't do anything if
	-fsyntax-only or errors have been encountered.

2004-07-09  Zack Weinberg  <zack@codesourcery.com>

	* vec.c, vec.h (vec_assert_fail): Use unsigned int for LINE argument.

2004-07-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	PR target/16459
	* pa.c (output_indirect_call): Use %r2 as the link register when
	calling $$dyncall with a pc-relative branch.

2004-07-08  Gerald Pfeifer  <gerald@pfeifer.com>

	* doc/install.texi (Binaries): Mention OpenPKG.

2004-07-09  Diego Novillo  <dnovillo@redhat.com>

	Fix PR tree-optimization/15555
	* tree-dfa.c (dump_variable): If the variable is a pointer
	SSA_NAME, also dump its points-to information.
	* tree-flow.h (struct ptr_info_def): Add field
	is_dereferenced.
	(dump_points_to_info_for): Declare.
	(debug_points_to_info_for): Declare.
	* tree-optimize.c (init_tree_optimization_passes): Add a
	second alias analysis pass after DOM2.
	Move pass_del_pta to a later spot.
	* tree-ssa-alias.c (compute_points_to_and_addr_escape): Do not
	create a name tags when we find a dereferenced pointer.  Just
	mark the pointer dereferenced.
	(collect_points_to_info_for): Move code to clear points-to
	information to create_name_tags.
	(create_name_tags): New function.
	(compute_flow_sensitive_aliasing): Call it.
	(setup_pointers_and_addressables): Mark type tags for renaming
	here instead of ...
	(create_memory_tag): ... here.
	(merge_pointed_to_info): Do not merge PT_MALLOC attributes.
	(dump_points_to_info_for): Declare extern.
	(debug_points_to_info_for): New function.

2004-07-09  Paolo Bonzini  <bonzini@gnu.org>

	* config/arc/arc.md: Switch to DFA-based scheduler description.
	* config/arc/arc.c: Switch to DFA-based scheduler description.

2004-07-09  Richard Earnshaw  <rearnsha@arm.com>

	* arm/unknown-elf.h (TARGET_DEFAULT): Don't require an APCS frame
	pointer.

2004-07-09  Richard Henderson  <rth@redhat.com>

	* config/xtensa/xtensa-protos.h (xtensa_va_arg): Remove.
	* config/xtensa/xtensa.c (TARGET_GIMPLIFY_VA_ARG_EXPR): New.
	(xtensa_gimplify_va_arg_expr): Rewrite from xtensa_va_arg.
	* config/xtensa/xtensa.h (EXPAND_BUILTIN_VA_ARG): Remove.

	* config/v850/v850-protos.h (v850_va_arg): Remove.
	* config/v850/v850.c (TARGET_GIMPLIFY_VA_ARG_EXPR): New.
	(v850_gimplify_va_arg_expr): Rewrite from v850_va_arg.
	* config/v850/v850.h (EXPAND_BUILTIN_VA_ARG): Remove.
	(FUNCTION_ARG_PASS_BY_REFERENCE): Handle variable size types.
	(FUNCTION_ARG_CALLEE_COPIES): Use FUNCTION_ARG_PASS_BY_REFERENCE.

2004-07-09  Richard Earnshaw  <rearnsha@arm.com>

	PR target/12133
	* arm.c (arm_legitimate_index_p) Allow DFmode for soft-float
	and DImode to use +/-4k offset.

2004-07-09  Richard Henderson  <rth@redhat.com>

	* config/stormy16/stormy16-protos.h (xstormy16_expand_builtin_va_arg):
	Remove.
	* config/stormy16/stormy16.c (TARGET_GIMPLIFY_VA_ARG_EXPR): New.
	(xstormy16_gimplify_va_arg_expr): Rewrite from
	xstormy16_expand_builtin_va_arg.
	* config/stormy16/stormy16.h (EXPAND_BUILTIN_VA_ARG): Remove.

	* config/sparc/sparc-protos.h (sparc_va_arg): Remove.
	* config/sparc/sparc.c (sparc_gimplify_va_arg): Mark static.

	* config/sh/sh-protos.h (sh_va_arg): Remove.
	* config/sh/sh.c (TARGET_GIMPLIFY_VA_ARG_EXPR): New.
	(sh_gimplify_va_arg_expr): Rewrite from sh_va_arg.
	* config/sh/sh.h (EXPAND_BUILTIN_VA_ARG): Remove.

	* config/pa/pa-protos.h (hppa_va_arg): Remove.
	* config/pa/pa.c (TARGET_GIMPLIFY_VA_ARG_EXPR): New.
	(hppa_gimplify_va_arg_expr): Rewrite from hppa_va_arg.
	* config/pa/pa.h (EXPAND_BUILTIN_VA_ARG): Remove.

	* config/mn10300/mn10300-protos.h (mn10300_va_arg): Remove.
	* config/mn10300/mn10300.c (TARGET_GIMPLIFY_VA_ARG_EXPR): New.
	(mn10300_gimplify_va_arg_expr): Rewrite from mn10300_va_arg.
	* config/mn10300/mn10300.h (EXPAND_BUILTIN_VA_ARG): Remove.

2004-07-09  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* config/sparc/sparc.md (return): Rewrite length formula.
	* config/sparc/sparc.c (output_return): Pass 1 as 5th
	argument to final_scan_insn when in a delay slot.
	(output_sibcall): Likewise.

2004-07-09  Richard Earnshaw  <rearnsha@arm.com>

	* arm.c (arm_cpp_interwork): New variable.
	(arm_override_options): Set it if TARGET_INTERWORK was on the command
	line.
	* arm.h (arm_cpp_interwork): Declare it.
	(TARGET_CPU_CPP_BUILTINS): Use it to control definition of
	__THUMB_INTERWORK__ in the preprocessor.

2004-07-09  Nathan Sidwell  <nathan@codesourcery.com>

	* vec.h (VEC_T_alloc): Fix MEM_STAT_DECL pasto.

2004-07-09  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR target/16416
	* config/sparc/sol2-bi.h (OPTION_DEFAULT_SPECS): New macro.
	Override default settings to account for -m32 and -m64.

2004-07-08  Randolph Chung  <tausq@debian.org>

	* pa32-linux.h (MD_FALLBACK_FRAME_STATE_FOR): Define.

2004-07-09  Alexandre Oliva  <aoliva@redhat.com>

	* builtins.c (fold_builtin_strncpy): Make sure len is a constant
	before comparing it as such.

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

	* builtins.c (std_gimplify_va_arg_expr): Hoist valist into a
	temporary.  Use bit arithmetic to align.

2004-07-08  Jerry Quinn  <jlquinn@optonline.net>

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

2004-07-08  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-scalar-evolution.c: New file.
	* tree-scalar-evolution.h: New file.
	* tree-ssa-loop-niter.c: New file.
	* Makefile.in (SCEV_H): New.
	(tree-scalar-evolution.o, tree-ssa-loop-niter.o): Add new files.
	* cfgloop.h (struct loop): Add bounds field.
	* tree-flow.h (struct tree_niter_desc): New type.
	(number_of_iterations_cond, number_of_iterations_exit,
	loop_niter_by_eval, find_loop_niter_by_eval,
	estimate_numbers_of_iterations, can_count_iv_in_wider_type,
	free_numbers_of_iterations_estimates): Declare.
	* tree.h (lower_bound_in_type, upper_bound_in_type): Declare.
	* params.def (PARAM_MAX_ITERATIONS_TO_TRACK): New parameter.
	* doc/invoke.texi (max-iterations-to-track): Document.

2004-07-08  Kaz Kojima  <kkojima@gcc.gnu.org>

	* config/sh/sh.c (sh_va_arg): Initinalize lab_over.
	* config/sh/sh.h (CONST_OK_FOR_J16): Use parentheses.
	(MODE_AFTER): Add cast appropriately.
	* config/sh/sh.md (movdi splitter): Likewise.
	(casesi_worker_2): Add const qualifier appropriately.
	(eh_return): Remove unused variable.
	(insv): Initialize v;

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

	* config/mmix/mmix-protos.h (mmix_expand_builtin_va_arg): Remove.
	* config/mmix/mmix.c (TARGET_GIMPLIFY_VA_ARG_EXPR): New.
	(mmix_gimplify_va_arg_expr): Rewrite from mmix_expand_builtin_va_arg.
	* config/mmix/mmix.h (EXPAND_BUILTIN_VA_ARG): Remove.
	(FRAME_POINTER_REQUIRED): Use current_function_has_nonlocal_label.

	* config/m32r/m32r-protos.h (m32r_va_arg): Remove.
	* config/m32r/m32r.c (TARGET_GIMPLIFY_VA_ARG_EXPR): New.
	(m32r_gimplify_va_arg_expr): Rewrite from m32r_va_arg.
	* config/m32r/m32r.h (EXPAND_BUILTIN_VA_ARG): Remove.

	* config/iq2000/iq2000-protos.h (iq2000_va_arg): Remove.
	* config/iq2000/iq2000.c (TARGET_GIMPLIFY_VA_ARG_EXPR): New.
	(iq2000_gimplify_va_arg_expr): Rewrite from iq2000_va_arg.
	* config/iq2000/iq2000.h (EXPAND_BUILTIN_VA_ARG): Remove.

	* config/frv/frv-protos.h (frv_expand_builtin_va_arg): Remove.
	* config/frv/frv.c (TARGET_GIMPLIFY_VA_ARG_EXPR): New.
	(frv_gimplify_va_arg_expr): Rewrite from frv_expand_builtin_va_arg.
	* config/frv/frv.h (EXPAND_BUILTIN_VA_ARG): Remove.

	* config/i860/i860-protos.h (i860_va_arg): Remove.
	* config/i860/i860.c (TARGET_GIMPLIFY_VA_ARG_EXPR): New.
	(i860_gimplify_va_arg_expr): Rewrite from i860_va_arg.
	* config/i860/i860.h (EXPAND_BUILTIN_VA_ARG): Remove.

2004-05-31  Aaron W. LaFramboise <aaronraolete36@aaronwl.com>

	* system.h: Prototype getpagesize if missing.
	* configure.ac: Add getpagesize to gcc_AC_CHECK_DECLS.
	* configure: Regenerate.
	* config.in: Regenerate.

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

	* config/fr30/fr30-protos.h (fr30_va_arg): Remove.
	* config/fr30/fr30.c (TARGET_GIMPLIFY_VA_ARG_EXPR): New.
	(fr30_gimplify_va_arg_expr): New.
	(fr30_pass_by_reference, fr30_pass_by_value, fr30_va_arg): Remove.
	* config/fr30/fr30.h (EXPAND_BUILTIN_VA_ARG): Remove.

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.

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

	* config/cris/cris-protos.h (cris_expand_builtin_va_arg): Remove.
	* config/cris/cris.c (TARGET_GIMPLIFY_VA_ARG_EXPR): New.
	(cris_gimplify_va_arg_expr): Rewrite from cris_expand_builtin_va_arg.
	* config/cris/cris.h (EXPAND_BUILTIN_VA_ARG): Remove.

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

	* builtins.c (ind_gimplify_va_arg_expr): New.
	* tree.h (ind_gimplify_va_arg_expr): Declare.
	* config/arc/arc.c (arc_gimplify_va_arg_expr): Use it.

2004-07-08  Jan Beulich  <jbeulich@novell.com>

	* expmed.c (extract_bit_field): Correct condition to use vec_extract
	patterns also on vector elements other than the first one.
	* config/i386/i386.md (vec_extractv2df, vec_extractv4sf): Add missing
	break statements.

2004-07-08  Geoffrey Keating  <geoffk@apple.com>

	* config/rs6000/darwin-ldouble.c: Correct reference
	to the Linnainmaa paper.

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

	* config/arc/arc-protos.h (arc_va_arg): Remove.
	* config/arc/arc.c (TARGET_GIMPLIFY_VA_ARG_EXPR): New.
	(arc_gimplify_va_arg_expr): Rewrite from arc_va_arg.
	* config/arc/arc.h (EXPAND_BUILTIN_VA_ARG): Remove.

	* config/c4x/c4x-protos.h (c4x_va_arg): Remove.
	* config/c4x/c4x.c (TARGET_GIMPLIFY_VA_ARG_EXPR): New.
	(c4x_gimplify_va_arg_expr): Rewrite from c4x_va_arg.
	* config/c4x/c4x.h (EXPAND_BUILTIN_VA_ARG): Remove.

2004-07-08  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* pa.md (prefetch_32, prefetch_64): Simplify constraint checks.

2004-07-08  Zack Weinberg  <zack@codesourcery.com>

	* c-decl.c (static_ctors, static_dtors): Make static.
	(pop_file_scope): Call c_common_write_pch and
	cgraph_finalize_compilation_unit here.
	(build_cdtor): Moved here from c-objc-common.c; simplify.
	(c_write_global_declarations_1): Clarify comment.
	(c_write_global_declarations): Close the external scope before
	doing anything else.  Call build_cdtor, cgraph_optimize, and
	mudflap_finish_file here.
	* c-lang.c (finish_file): Don't call c_objc_common_finish_file.
	Clarify comment.
	* c-objc-common.c: No need to include cgraph.h.
	(build_cdtor): Moved to c-decl.c.
	(c_objc_common_finish_file): Delete.
	* c-tree.h: Update to match.
	* objc/objc-act.c (finish_file): Don't call c_objc_common_finish_file.
	(generate_static_references): Set TREE_USED before calling finish_decl.
	Eliminate unnecessary dummy declaration.  Call rest_of_decl_compilation
	on the static_instances_decl.

2004-07-08  Zack Weinberg  <zack@codesourcery.com>

	* c-decl.c (pop_scope): Do not set DECL_CONTEXT on file-scope
	decls when there is only one input translation unit.
	* langhooks.c (lhd_set_decl_assembler_name): Partially revert
	change of 2004-07-05; do not treat declarations with
	DECL_CONTEXT a TRANSLATION_UNIT_DECL specially.
	* opts.c (cur_in_fname): Delete.
	* opts.h: Likewise.
	* tree.c: Revert changes of 2004-07-05; no special treatment
	for TRANSLATION_UNIT_DECLs.
	* Makefile.in (tree.o): Update dependencies.

2004-07-08  Roger Sayle  <roger@eyesopen.com>

	* builtins.c (fold_builtin_strcpy): Merge functionality from
	simplify_builtin_strcpy.  Add additional len argument.  No longer
	static.  Remove function prototype.
	(fold_builtin_strncpy): Likewise integrate functionality from
	simplify_builtin_strncpy.  Add additional slen argument.  No
	longer static.  Remove function prototype.
	(simplify_builtin_strcy, simplify_builtin_strncpy): Delete.
	(simplify_builtin_fputs): Rename to fold_builtin_fputs.  Change
	types of "ignore" and "unlocked" parameters to bool.
	(fold_builtin_1): Add additional ignore argument.  Call renamed
	fold_builtin_fputs to simplify GCC "fputs" and "fputs_unlocked"
	builtins.  Update arguments to fold_builtin_strncpy and
	fold_builtin_strcpy.  Add function prototype.
	(fold_builtin): Add additional Boolean ignore argument to pass
	to fold_builtin_1.
	(simplify_builtin): Call fold_builtin_fputs, fold_builtin_strcpy
	and fold_builtin_strncpy instead of simplify_builtin_fputs,
	simplify_builtin_strcpy and simplify_builtin_strncpy respectively.

	* expr.h (simplify_builtin_fputs, simplify_builtin_strcpy,
	simplify_builtin_strncpy): Delete function prototypes.
	* tree.h (fold_builtin_fputs, fold_builtin_strcpy,
	fold_builtin_strncpy): Add function prototypes here.
	(fold_builtin): Update function prototype with new "bool ignore".

	* tree-ssa-ccp.c (ccp_fold): Update call to fold_builtin.
	(ccp_fold_builtin): Update call to fold_builtin.  Call
	fold_builtin_fputs, fold_builtin_strcpy and fold_builtin_strncpy
	instead of simplify_builtin_fputs, simplify_builtin_strcpy and
	simplify_builtin_strncpy respectively.
	* fold-const.c (fold): Update call to fold_builtin.

2004-07-08  Alexandre Oliva  <aoliva@redhat.com>

	* builtins.c (expand_builtin_stpcpy): Un-simplify decay of stpcpy
	to strcpy.

	* expr.h (FUNCTION_ARG_PARTIAL_NREGS): Default to 0.
	(FUNCTION_ARG_PASS_BY_REFERENCE): Likewise.
	(FUNCTION_ARG_CALLEE_COPIES): Likewise.
	* calls.c: Remove ifdefs of macros above.
	* functions.c: Likewise.
	* expr.c: Likewise.

2004-07-08  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* config/sparc/sparc.md (UNSPECV_GOTO_V9): Delete.
	(arch attribute): Delete.
	(current_function_calls_alloca attribute): Rename into calls_alloca.
	(calls_eh_return): New attribute.
	(leaf_function): Likewise.
	(length attribute): Fix formula for sibcalls.
	(return insn): Correctly compute the 'length' attribute.
	(do_builtin_setjmp_setup): Adjust use of current_function_calls_alloca.

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

	* tree-cfg.c (make_exit_edges): Use get_call_expr_in.
	(remove_useless_stmts_1, is_ctrl_altering_stmt): Likewise.
	(tree_block_ends_with_call_p, need_fake_edge_p): Likewise.
	* tree-eh.c (lower_eh_constructs_1): Likewise.
	* tree-sra.c (sra_walk_modify_expr): Likewise.
	* tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
	(eliminate_unnecessary_stmts): Likewise.
	* tree-ssa-dse.c (dse_optimize_stmt): Likewise.
	* tree-tailcall.c (optimize_tail_call): Likewise.
	* tree-ssa-ccp.c (get_rhs, set_rhs): Reorg to use switch.

2004-07-08  Paolo Bonzini  <bonzini@gnu.org>
	    Jakub Jelinek  <jakub@redhat.com>

	* config/i386/i386.c (override_options): Enable
	SSE prefetches with -mtune, as long as we are
	compiling for i686 or higher.  All i686 processors
	accept SSE prefetches as NOPS, some i586's don't.

2004-07-08  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR target/10567
	* config/sparc/sparc.md (update_return): Honor flag_delayed_branch.

2004-07-08  Diego Novillo  <dnovillo@redhat.com>

	* tree-ssa-operands.c (get_asm_expr_operands): Fix thinkos in
	the handling of clobbering ASM_EXPRs.

2004-07-08  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR target/16430
	* config/sparc/sparc.c (function_value): In 64-bit mode,
	return the aggregates larger than 16 bytes like unions.

2004-07-08  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR target/16199
	* config/sparc/sparc.c (sparc_emit_set_symbolic_const64): When
	'temp' is zero, generate new pseudos as needed and emit the
	sequence of insns in single-assignment form.  Resync comments
	with code.
	(sparc_emit_set_const64): Pass zero as 'temp' argument to above
	function before reload.

2004-07-08  Nathan Sidwell  <nathan@codesourcery.com>

	* vec.c (vec_assert_fail): Remove duplicate 'function'.

	* vec.c (vec_p_reserve, vec_o_reserve): Allocation is signed.

	* vec.h (VEC_alloc, VEC_embedded_size, VEC_embedded_init):
	Allocation is signed.
	(VEC_reserve): Return flag, allocation is signed.

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

	* tree-ssa-ccp.c (fold_stmt): Get type directly from
	OBJ_TYPE_REF_OBJECT.

2004-07-08  Joseph S. Myers  <jsm@polyomino.org.uk>
	    Neil Booth  <neil@daikokuya.co.uk>

	PR c/2511
	PR c/3325
	* c-decl.c (finish_struct): Ensure bit-fields are given the
	correct type.
	* c-common.c (c_common_signed_or_unsigned_type): For C, require
	the precision to match as well as the mode.
	* expr.c (reduce_to_bit_field_precision): New function.
	(expand_expr_real_1): Reduce expressions of bit-field type to
	proper precision.
	* langhooks.h (reduce_bit_field_operations): New hook.
	* langhooks-def.h (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS):
	Define.
	* c-lang.c, objc/objc-lang.c
	(LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS): Define.
	* objc/objc-act.c (check_ivars): Convert types to bit-field types
	before checking.
	* tree.c (build_nonstandard_integer_type): New function.
	* tree.h (build_nonstandard_integer_type): New prototype.
	* tree-ssa.c (tree_ssa_useless_type_conversion_1): Don't treat
	conversions between integer and boolean types as useless.

2004-07-08  Paolo Bonzini  <bonzini@gnu.org>

	* c-common.c (c_common_nodes_and_builtins): Do not
	create __builtin_ptrdiff_t and __builtin_size_t.

2004-07-08  Andrew Pinski  <apinski@apple.com>

	* Makefile.in (libbackend.o): Add -combine to the gcc
	command line.

2004-07-08  Nick Clifton  <nickc@redhat.com>

	* config/stormy16/t-stormy16 (TARGET_LIBGCC2_CFLAGS): Define.
	Set to -Os.

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

	* except.c (expand_eh_region_start, expand_eh_region_end,
	expand_eh_handler, expand_eh_region_end_cleanup,
	expand_start_all_catch, expand_start_catch, expand_end_catch,
	expand_end_all_catch, expand_eh_region_end_allowed,
	expand_eh_region_end_must_not_throw, expand_eh_region_end_throw,
	expand_eh_region_end_fixup): Remove.
	* stmt.c (struct nesting): Remove stack_level, innermost_stack_block,
	cleanups, outer_cleanups, label_chain, exception_region.
	(struct goto_fixup): Remove stack_level, cleanup_list_list.
	(struct label_chain): Remove.
	(struct stmt_status): Remove x_stack_block_stack.
	(stack_block_stack, expand_goto_internal, expand_fixup, expand_fixups,
	fixup_gotos, save_stack_pointer, expand_decl_cleanup,
	expand_decl_cleanup_eh, expand_cleanups, start_cleanup_deferral,
	end_cleanup_deferral, last_cleanup_this_contour,
	containing_blocks_have_cleanups_or_stack_level,
	any_pending_cleanups): Remove.
	(expand_null_return_1): Take no arguments.
	(expand_label, expand_naked_return, expand_return,
	expand_start_bindings_and_block, expand_end_bindings, expand_decl,
	expand_anon_union_decl, expand_start_case, pushcase, pushcase_range,
	expand_end_case_type): Don't use any of them.
	* calls.c (expand_call): Likewise.
	* dojump.c (do_jump): Likewise.
	* function.c (expand_function_end): Likewise.
	* expr.c (store_expr, expand_expr_real_1): Likewise.
	(safe_from_p): Don't handle WITH_CLEANUP_EXPR, CLEANUP_POINT_EXPR.
	(expand_expr_real_1): Don't handle WITH_CLEANUP_EXPR,
	CLEANUP_POINT_EXPR, TARGET_EXPR, TRY_CATCH_EXPR, CATCH_EXPR,
	EH_FILTER_EXPR, TRY_FINALLY_EXPR, GOTO_SUBROUTINE_EXPR.
	* fold-const.c (fold_checksum_tree): Use first_rtl_op.
	* gengtype.c (adjust_field_tree_exp): Remove rtl op handling.
	* gimplify.c (gimplify_cleanup_point_expr): Renumber operands
	for WITH_CLEANUP_EXPR.
	(gimple_push_cleanup): Likewise.
	* integrate.c (copy_decl_for_inlining): Don't DECL_TOO_LATE.
	* print-tree.c (print_node): Likewise.
	* tree-pretty-print.c (dump_generic_node): Remove GOTO_SUBROUTINE_EXPR.
	* tree.c (first_rtl_op): Always just TREE_CODE_LENGTH.
	(has_cleanups): Remove GOTO_SUBROUTINE_EXPR.
	* tree.def (WITH_CLEANUP_EXPR): Remove op1 and op2.
	(GOTO_SUBROUTINE_EXPR): Remove.
	* tree.h (WITH_CLEANUP_EXPR_RTL): Remove.
	(DECL_TOO_LATE): Remove.
	* except.h, tree.h: Update decls.

2004-07-08  Paolo Bonzini  <bonzini@gnu.org>

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

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

2004-07-08  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR bootstrap/16326
	* reorg.c: Revert 2004-06-30 change.
	(find_end_label): If HAVE_epilogue and !HAVE_return,
	return 0 instead of creating a label at the end of the insn chain.
	(optimize_skip): Account for the failure mode of find_end_label.
	(fill_simple_delay_slots): Likewise.
	(fill_slots_from_thread): Likewise.
	(relax_delay_slots): Likewise.

2004-07-08  Diego Novillo  <dnovillo@redhat.com>

	* tree-flow.h (addressable_vars): Declare.
	* tree-ssa-alias.c (addressable_vars): Define.
	(setup_pointers_and_addressables): Add addressable variables
	to addressable_vars.
	* tree-ssa-operands.c (get_stmt_operands): Move
	handling of ASM_EXPRs ...
	(get_asm_expr_operands): ... here.
	When the ASM_EXPR clobbers memory, also clobber addressable
	variables.
	* tree-ssa.c (init_tree_ssa): Initialize addressable_vars.
	(delete_tree_ssa): Reset addressable_vars.

2004-07-07  Jan Beulich  <jbeulich@novell.com>
	    Richard Henderson  <rth@redhat.com>

	* varasm.c (assemble_variable): Use assemble_zeros for
	zero-initialized variables.
	(categorize_decl_for_section): Honor flag_zero_initialized_in_bss
	for SECCAT_BSS and SECCAT_TBSS.

2004-07-07  Jan Beulich  <jbeulich@novell.com>

	* varasm.c (asm_output_bss): Don't declare unless BSS_SECTION_ASM_OP.

	* expmed.c (emit_store_flag): Also special-case double-word
	(in-)equality comparison against -1.

	* config/i386/i386.c (ix86_gimplify_va_arg): Don't need temporary for
	passing arguments the containers for which are registers.

	* calls.c (emit_library_call_value_1): Use mode of function parameter
	rather than that of argument since constants have none.

2004-07-08  Alexandre Oliva  <aoliva@redhat.com>

	Introduce H8SX support.
	* expr.c (expand_strcpy): Renamed and moved to...
	* builtins.c (expand_movstr): ... here.  Tweak.
	(expand_builtin_strcpy): Adjust.  Use movstr if len can't be
	computed or has side effects.
	(expand_builtin_stpcpy): Likewise.  Use strcpy if return value is
	unused, or if mempcpy fails.  Adjust the return value in the
	latter case.  Use movstr if everything else fails.
	* doc/md.texi (movstr): Document.
	(movmemM, clrmemM): Fix explanation of memory block operands.
	* config/h8300/h8300.md (stpcpy): Renamed to...
	(movstr): ... this.  Adjust.
	2004-07-07  Alexandre Oliva  <aoliva@redhat.com>
	* config/h8300/h8300.md: Rename movstr*, except for movstrict*, to
	movmem* and clrstr* to clrmem*.
	2004-06-27  Alexandre Oliva  <aoliva@redhat.com>
	* config/h8300/h8300.c (h8300_reg_class_from_letter): Map 'D' to
	GENERAL_REGS, always.
	(h8300_swap_into_er6, h8300_swap_into_er6): Handle the case of
	getting the stack pointer as addr.
	* config/h8300/h8300.h (PREDICATE_CODES): Remove constant rtxes
	from general_operand_dst.
	* config/h8300/h8300.md (movmd_internal_normal): New, normal-mode
	variant of...
	(movmd_internal): ... this.  Add modes to operands.  Disparage `D'
	instead of requiring it to match only before reload.
	(stpcpy_internal_normal): New, normal-mode variant of...
	(stpcpy_internal): ... this.  Add modes to operands.  Disparage
	`D' instead of requiring it to match only before reload.
	* config/h8300/h8300-protos.h (h8300_legitimate_address_p): Add
	mode argument.
	* config/h8300/h8300.h (GO_IF_LEGITIMATE_ADDRESS): Pass it to...
	* config/h8300/h8300.c (h8300_legitimate_address_p): Pass it to
	h8300_get_index.
	* config/h8300/h8300.md (attr type): Add call.
	(attr can_delay): If type is call, set it no.
	(call, call_value): Set type to call.
	2004-06-21  Alexandre Oliva  <aoliva@redhat.com>
	* config/h8300/h8300.md (logicalhi3_sn, logicalsi3_sn): New.
	2004-06-16  Alexandre Oliva  <aoliva@redhat.com>
	* tree.c (get_narrower): Don't narrow integral types into
	non-integral types.
	* config/h8300/h8300.c (h8300_expand_epilogue): Initialize
	frame_size *before* the first use.
	* config/h8300/h8300.md (movstrictqi): Reintroduce post-increment
	on input.
	(peephole2): Don't widen instructions that push SP.  Move
	decrement of SP to the end of all stm-generating peepholes.
	2003-07-24  Richard Sandiford  <rsandifo@redhat.com>
	* config/h8300/h8300.md (insv): Prefer to use AND to clear a bitfield
	and OR to set it to all ones.
	2003-07-24  Richard Sandiford  <rsandifo@redhat.com>
	* config/h8300/h8300.md (can_delay): Default to "no" for bit branches.
	(call, call_value): Set can_delay to "no".
	2003-07-22  Richard Sandiford  <rsandifo@redhat.com>
	* config/h8300/h8300.md (extzv): Make subreg check more robust.
	2003-07-21  Richard Sandiford  <rsandifo@redhat.com>
	* config/h8300/h8300.md (*brabit): Remove.
	* config/h8300/h8300.md (*brabc, *brabs): Remove mode from
	zero_extract.  Use bit_memory_operand as the predicate for
	operand 1 and 'WU' as the constraint.  Check the difference
	between the base length and the final one when deciding which
	type of branch to use.
	2003-07-21  Richard Sandiford  <rsandifo@redhat.com>
	* config/h8300/h8300.md (extzv): Remove mode from operands 0 and 1.
	Use convert_move to extend the result for TARGET_H8300SX.  Check
	for QImode memory references.  Optimize the case where the
	destination is a paradoxical subreg.
	2003-07-21  Richard Sandiford  <rsandifo@redhat.com>
	* config/h8300/h8300.md (*movsf_h8sx): Add an r <- G alternative.
	* config/h8300/h8300.md (andqi): Remove bclr from h8sx version.
	2003-07-21  Richard Sandiford  <rsandifo@redhat.com>
	* config/h8300/h8300.md: Include mova.md
	(length_table): Add mova and mova_zero.
	* config/h8300/h8300.c (print_operand): Handle '%o'.  Print a length
	after all constant addresses for '%R', '%X', '%T' and '%S'.
	(h8300_mova_length): New function.
	(h8300_insn_length_from_table): Use it to handle mova and mova_zero.
	* config/h8300/t-h8300 (mova.md): Generate from genmova.sh.  Add to
	dependencies for s-config, etc.
	* config/h8300/gemova.sh: New file.
	* config/h8300/mova.md: Generated.
	2003-07-20  Alexandre Oliva  <aoliva@redhat.com>
	* config/h8300/h8300.c (h8300_bitfield_length): New.
	(nibble_operand): Adjust.
	(h8300_binary_length): Handle conditional binary op.
	(h8300_insn_length_from_table): Handle bitfield and bitbranch.
	* config/h8300/h8300.h: Change constraints W# and Y# to P#>X and
	P#<X, respectively.  The original P is now IP4>X.  Introduced P#>0
	and P#<0, unused so far.  W and Y are now prefixes to multi-letter
	constraints.  WU is introduced as a variant of U that requires a
	mem, and is therefore considered an EXTRA_MEMORY_CONSTRAINT.
	* config/h8300/h8300.md (attr type): Added bitbranch.
	(attr length_table): Added bitfield and bitbranch.
	(attr length): Compute bitbranch length.
	(andqi): Separate pattern for H8300SX.  Use bfld for loading the
	least-significant bit of a byte.
	(brabit, brabc, brabs): New.
	(insv, extzv): Emit bfst and bfld on H8300SX.
	(bfld, bfst, seq, sne): New.
	(bstzhireg, cmpstz, bstz, bistz): New.
	(cmpcondbset, condbset, cmpcondbclr, condbclr): New.
	(cmpcondbsetreg, condbsetreg, cmpcondbclrreg, condbclrreg): New.
	2003-07-11  Richard Sandiford  <rsandifo@redhat.com>
	* config/h8300/h8300.c (h8sx_binary_memory_operator): New function.
	(h8sx_unary_memory_operator): New function.
	* config/h8300/h8300.h (EXTRA_MEMORY_CONSTRAINT): Disable.
	(PREDICATE_CODES): Add h8sx_{unary,binary}_memory_operator.
	* config/h8300/h8300.md: Add peepholes to combine reloads and
	arithmetic insns.
	2003-07-10  Richard Sandiford  <rsandifo@redhat.com>
	* config/h8300/h830.md (cmpqi): Use 'i' rather than 'n' in constraints.
	(*cmphi_h8300hs, *addqi3, *addhi3_h8sx, subhi3): Likewise.
	(and?i, ior?i, xor?i): Likewise.
	2003-07-10  Richard Sandiford  <rsandifo@redhat.com>
	* config/h8300/h8300.c: Move enums and prototypes to head of file.
	Various whitespace fixes.
	(h8300_constant_length): New function, split out from...
	(h8300_displacement_size): ...here.  Rename h8300_displacement_length.
	(h8300_classify_operand): Use IN_RANGE.
	(h8300_classify_operand): Use h8300_constant_length.
	(h8300_short_move_mem_p): Tighten size check.
	(h8sx_mergeable_memrefs_p): Tighten equality check.
	2003-06-30  Richard Sandiford  <rsandifo@redhat.com>
	* config/h8300/h8300.h (TARGET_CPU_CPP_BUILTINS): Define __H8300SX__
	for -msx.
	* config/h8300/crti.asm: Use .h8300sx or .h8300sxn for -msx code.
	* config/h8300/crtn.asm: Likewise.
	* config/h8300/lib1funcs.asm: Likewise.  Use 32-bit pointers
	if __H8300SX__ is defined.
	2003-06-27  Richard Sandiford  <rsandifo@redhat.com>
	* config/h8300/h8300-protos.h (h8300_get_index): Add mode parameter.
	* config/h8300/h8300.h (GO_IF_LEGITIMATE_ADDRESS): Update accordingly.
	(GO_IF_MODE_DEPENDENT_ADDRESS): Treat POST_DEC, PRE_INC and indexed
	addresses as mode-dependent.
	* config/h8300/h8300.c (print_operand_address): Update call to
	h8300_get_index.
	(h8300_get_index): Take a mode argument.  Rework to fix an
	earlier misunderstanding.
	2003-06-26  Richard Sandiford  <rsandifo@redhat.com>
	* config/h8300/h8300.c (zero_extendqisi2): Force the source operand
	into a register if TARGET_H8300SX.
	(*zero_extendqisi2_h8300hs, *extendqisi2_h8300): Disable for
	TARGET_H8300SX.  Also disable related define_splits.
	(*zero_extendqisi2_h8sx, *extendqisi2_h8sx): New patterns.
	2003-06-23  Richard Sandiford  <rsandifo@redhat.com>
	* config/h8300/h8300.c (h8300_rtx_costs): Add h8sx handling.
	2003-06-20  Richard Sandiford  <rsandifo@redhat.com>
	* config/h8300/h8300.h (OK_FOR_Z): New macro.
	(EXTRA_CONSTRAINT_STR): Check it.
	* config/h8300/h8300.c (h8300_classify_operand): Accept null
	class arguments.
	(h8300_insn_length_from_table): Handle LENGTH_TABLE_MOV_IMM4.
	* config/h8300/h8300.md (length_table): Add mov_imm4.
	(movqi, movhi): Add Z <- W4 alternatives to h8sx patterns.
	2003-06-20  Richard Sandiford  <rsandifo@redhat.com>
	* genattrtab.c (write_eligible_delay): Allow candidate_insn to
	be a label.
	* config/h8300/h8300.h (DELAY_SLOT_LENGTH): New macro.
	* config/h8300/h8300.c (h8300_reorg): New function.
	(TARGET_MACHINE_DEPENDENT_REORG): Define.
	* config/h8300/h8300.md (length): Subtract the length of the
	delay slot from (pc) when checking the range of forward branches.
	(delay_slot, can_delay): New attributes.
	(define_delay): Add bra/s handling.
	(movmd_internal, return_h8sx, *return_1): Set can_delay to no.
	(jump): Add delayed-branch handling.
	2003-06-17  Richard Sandiford  <rsandifo@redhat.com>
	* expr.c (expand_strcpy): New function.
	* builtins.c (expand_builtin_strcpy): Fall back on expand_strcpy.
	(expand_builtin_stpcpy): Likewise.
	* config/h8300/h8300-protos.h (h8sx_split_movmd): Remove.
	(h8300_swap_into_er6, h8300_swap_out_of_er6): Declare.
	* config/h8300/h8300.c (h8300_reg_class_from_letter): Tweak 'd'
	handling to improve register allocation for -fno-omit-frame-pointer.
	(h8sx_split_movmd): Delete, moving er6 handling into...
	(h8300_swap_into_er6, h8300_swap_out_of_er6): ...these new functions.
	* config/h8300/h8300.md (UNSPEC_STPCPY): New unspec constant.
	(movmd): Add calls to copy_rtx.
	(movmd_internal): In the second alternative, allow the initial and
	final destination registers to be different .  Update the splitter
	accordingly.  Call h8300_swap_into_er6 and h8300_swap_out_of_er6
	instead of h8sx_split_movmd.
	(stpcpy, movsd): New expanders.
	(movsd_internal): New define_insn.
	2003-06-13  Richard Sandiford  <rsandifo@redhat.com>
	* config/h8300/h8300-protos.h (h8300_reg_class_from_letter): Declare.
	(h8sx_emit_movmd, h8sx_split_movmd): Declare.
	* config/h8300/h8300.h (reg_class): Add COUNTER_REGS, SOURCE_REGS
	and DESTINATION_REGS.
	(REG_CLASS_NAMES, REG_CLASS_CONTENTS): Update accordingly.
	(REGNO_REG_CLASS): Map er4, er5 and er6 to the new classes.
	(REG_CLASS_FROM_LETTER): Use h8300_reg_class_from_letter.
	(h8300_move_ratio): Declare.
	(MOVE_RATIO): Use it.
	* config/h8300/h8300.c (h8300_move_ratio): New variable.
	(h8300_init_once): Initialize it.
	(h8300_reg_class_from_letter): New function.
	(print_operand): Add an 'm' prefix for printing ".b", ".w" or ".l".
	(h8sx_emit_movmd, h8sx_split_movmd): New functions.
	* config/h8300/h8300.md (UNSPEC_MOVMD): New unspec constant.
	(COUNTER_REG, SOURCE_REG, DESTINATION_REG): New register constants.
	(movstrsi, movmd): New expanders.
	(movmd_internal): New insn.
	2003-06-06  Richard Sandiford  <rsandifo@redhat.com>
	* config/h8300/h8300.h (EXTRA_MEMORY_CONSTRAINT): Define.
	2003-06-04  Richard Sandiford  <rsandifo@redhat.com>
	* config/h8300/elf.h (LINK_SPEC): Use -m h8300sxnelf for -msx -mn.
	* config/h8300/h8300.c (asm_file_start): Use .h8300sxn likewise.
	2003-06-03  Richard Sandiford  <rsandifo@redhat.com>
	* config/h8300/h8300.c (nibble_operand): Fix warning.
	* config/h8300/h8300.md (movstricthi): Set adjust_length to no.
	(movsi_h8sx): Likewise here and the normal h8sx movhi pattern.
	(movsf_h8300h): Disable for TARGET_H8300SX.
	2003-06-03  Richard Sandiford  <rsandifo@redhat.com>
	* config/h8300/h8300.h (PREDICATE_CODES): Add h8300_ldm_parallel,
	h8300_stm_parallel and h8300_return_parallel.
	* config/h8300/h8300.c (h8300_push_pop, h8300_stack_offset_p,
	h8300_ldm_stm_regno, h8300_ldm_stm_parallel, h8300_ldm_parallel,
	h8300_stm_parallel, h8300_return_parallel): New functions.
	(h8300_expand_prologue): Don't enforce ldm/stm register alignment
	if TARGET_H8300SX.  Use h8300_push_pop.
	(h8300_expand_epilogue): Likewise.  Try to merge the return insn
	and final pop when generating h8sx code.  Always emit some form
	of return insn.
	* config/h8300/h8300.md: Don't enforce register alignment in
	stm peepholes if TARGET_H8300SX.
	(ldm_h8300s, stm_h8300s, return_h8sx): New patterns.
	(ldm_h8300s_[234], stm_h8300_[234]): Disable.
	(epilogue): Expect h8300_expand_epilogue to emit a return insn.
	2003-06-03  Richard Sandiford  <rsandifo@redhat.com>
	* config/h8300/t-h8300 (MULTILIB_OPTIONS): Add a -msx multilib.
	(MULTILIB_DIRNAMES): Add a directory for it.
	(MULTILIB_MATCHES): Delete.
	2003-05-28  Richard Sandiford  <rsandifo@redhat.com>
	* final.c (walk_alter_subreg): Handle addresses with subregs
	inside a ZERO_EXTEND or AND.
	* config/h8300/h8300-protos.h (h8300_get_index): Declare.
	* config/h8300/h8300.h (INDEX_REG_CLASS): Set to GENERAL_REGS
	if TARGET_H8300SX.
	(GO_IF_LEGITIMATE_ADDRESS): Use h8300_get_index.
	* config/h8300/h8300.c (print_operand_address): Handle @(dd,RnL.b),
	@(dd,Rn.w) and @(dd,ERn.L).
	(h8300_displacement_size): Take the whole address as argument.
	(h8300_classify_operand, h8300_short_move_mem_p): Adjust accordingly.
	2003-05-28  Richard Sandiford  <rsandifo@redhat.com>
	* config/mips/mips-protos.h (h8300_operands_match_p): Declare.
	(h8sx_mergeable_memrefs_p): Declare.
	* config/h8300/h8300.h (HAVE_POST_DECREMENT): Define to TARGET_H8300SX.
	(HAVE_PRE_INCREMENT): Likewise.
	(GO_IF_LEGITIMATE_ADDRESS): Accept pre/post increment/decrement
	addresses for TARGET_H8300SX,
	* config/h8300/h8300.c (print_operand_address): Deal with PRE_INC
	and POST_DEC.
	(movb_length_table, movl_length_table): New tables.
	(movw_length_table): Define to movb_length_table.
	(h8300_displacement_size): New, split out from...
	(h8300_classify_address): ...here.  Handle pre/post inc/dec.
	(h8300_short_immediate_length): Allow H8OP_MEM_COMPLEX operands.
	(h8300_insn_length_from_table): Add cases for movb, movw and movl.
	(h8sx_mergeable_memrefs_p, h8300_operands_match_p): New functions.
	(output_plussi): Use add.l #xx:3,Rn and sub.l #xx:3,Rn for h8sx.
	(compute_plussi_length, compute_plussi_cc): Update accordingly.
	(h8sx_unary_shift_operator): Get the mode from the operator.
	(binary_shift_operator): Likewise.
	* config/h8300/h8300.md: If a peephole2 applies gen_lowpart to
	a memory reference, check whether the reference is offsettable.
	(length_table): Add movb, movw and movl.
	(movqi): Add new h8sx pattern.  Don't force one operand to be a
	register when generating h8sx code.
	(movhi, movsi, movsf): Likewise.
	(movstrictqi): Use the length_table attribute.
	(movstricthi): Likewise.  Add h8sx alternative for mov.w #xx:3,Rn.
	(addqi3): Split into a define_expand and define_insn.  Don't accept
	memory operands in the expander.  Use h8300_operands_match_p to
	check for matching operands in the define_insn.
	(subqi3, negqi2, one_cmplqi2): Likewise.
	(add[hs]i3): Don't accept memory operands in the expander.  Likewise
	in any patterns that are unused in h8sx code.  In the h8sx patterns,
	use h8300_operands_match_p to check whether operands match.
	(sub[hs]i3, and[hi]3, ior[hs]i3, xor[hs]i3, neg[hsi]3,
	one_cmpl[hs]i3): Likewise.
	(andqi3, iorqi3, xorqi3): Likewise.  Don't call fix_bit_operand
	in the expander.
	2003-05-23  Richard Sandiford  <rsandifo@redhat.com>
	* config/h8300/h8300-protos.h (expand_a_shift): Return a bool.
	(h8300_insn_length_from_table): Add a second parameter.
	(output_h8sx_shift): Declare.
	* config/h8300/h8300.h (OK_FOR_W, OK_FOR_Y): New macros.
	(EXTRA_CONSTRAINT): Replace with...
	(EXTRA_CONSTRAINT_STR): ...this.  Use OK_FOR_W and OK_FOR_Y.
	(CONSTRAINT_LEN): Define, returning 2 for 'W' and 'Y'.
	(PREDICATE_CODES): Add entries for h8sx_unary_shift_operator
	and h8sx_binary_shift_operator.
	* config/h8300/h8300.c (two_insn_adds_subs_operand): Return false
	for TARGET_H8300SX.
	(bit_operand): Replace use of EXTRA_CONSTRAINT with OK_FOR_U.
	(bit_memory_operand, fix_bit_operand): Likewise.
	(h8300_length_table_for_insn): Remove.
	(h8300_classify_operand): Fix check for 16-bit operands in 32-bit
	instructions.
	(h8300_short_immediate_length, h8300_binary_length): New functions.
	(h8300_insn_length_from_table): Add an opcodes parameter.  Rework.
	(output_plussi): Use sub to add negative constants.
	(compute_plussi_length): Adjust accordingly.
	(h8sx_single_shift_type): New enum.
	(h8sx_single_shift, h8sx_unary_shift_operator,
	h8sx_binary_shift_operator, output_h8sx_shift): New functions.
	(expand_a_shift, expand_a_rotate): Emit nothing if the shift is a
	single h8sx instruction.  Return false in this case.
	* config/h8300/h8300.md (length_table): Add short_immediate.
	(length): Pass the operand array to h8300_insn_length_from_table.
	(adjust_length): Assume "no" for insns with a length_table attribute.
	(*cmphi_h8300hs, cmpsi): Add alternatives for #xx:3.
	(*addhi3_h8300hs): Don't use for h8sx.
	(*addhi3_h8sx): New pattern, with alternatives for add.w #xx:3
	and sub.w #xx:3.
	(ashl[qhs]i3, lshr[qhs]i3, ashr[qhs]i3, rotl[qhs]i3): Change operand
	1's predicate to nonimmediate_operand.  Only skip default expansion
	if expand_a_shift or expand_a_rotate returns true.  Add new patterns
	for single h8sx shift instructions.
	2003-05-22  Alexandre Oliva  <aoliva@redhat.com>
	* config/h8300/h8300.c (nibble_operand): Split out of...
	(reg_or_nibble_operand): ... this.
	* config/h8300/h8300.h (PREDICATE_CODES): Added nibble_operand.
	* config/h8300/h8300.md: (mulqihi3, mulhisi3, umulqihi3,
	umulhisi3): Introduce expand, and introduce separate insns for
	sign- or zero-extended REG and already-extended CONST_INT.
	2003-05-20  Richard Sandiford  <rsandifo@redhat.com>
	* config/h8300/h8300.c (h8300_unary_length): Fix miscounting.
	* config/h8300/h8300.md (subqi3): Generalize for h8sx.
	(subhi3): Likewise.  Don't accept immediates for operand 1.
	Remove the early clobber from second alternative of the h8300s pattern.
	(subsi3): Generalize for h8sx.  Force operand 2 into a register
	on plain h8300 targets.
	(subsi3_h8300): Use h8300_dst_operand for consistency with expander.
	(subsi3_h8300h): Generalize for h8sx.
	(one_cmplqi2, one_cmplhi2, one_cmplsi2): Likewise.
	2003-05-19  Alexandre Oliva  <aoliva@redhat.com>
	* config/h8300/h8300.c (reg_or_nibble_operand): New.
	* config/h8300/h8300.h (PREDICATE_CODES): Adjust.
	(TARGET_H8300SXMUL): New.
	(CONST_OK_FOR_P): New.
	(CONST_OK_FOR_LETTER_P): Adjust.
	* config/h8300/h8300.md (mulqihi3, mulhisi3, umulqihi3,
	umulhisi3): Accept 4-bit immediate on H8SX.
	(mulhi3, mulsi3, smulsi3_highpart, umulsi3_highpart): New.
	(udivsi3, divhi3, udivsi3, divsi3): New.
	2003-05-19  Richard Sandiford  <rsandifo@redhat.com>
	* config/h8300/h8300-protos.h (h8300_insn_length_from_table): Declare.
	* config/h8300/h8300.h (OK_FOR_Q): New macro.
	(EXTRA_CONSTRAINT): Use it to check the 'Q' constraint.
	(PREDICATE_CODES): Add h8300_src_operand and h8300_dst_operand.
	Add ADDRESSOF to the bit_operand entry.
	* config/h8300/h8300.c (h8300_dst_operand): New predicate.
	(h8300_src_operand): Likewise.
	(bit_operand): Check nonimmediate_operand rather than general_operand.
	Accept any nonimmediate_operand in h8sx code.
	(h8300_and_costs): Initialize operands[1].
	(h8300_rtx_costs) <AND>: Return false if the operands aren't valid.
	(h8300_operand_class): New enum.
	(h8300_length_table): New typedef.
	(addb_length_table, addw_length_table, addl_length_table,
	logicl_length_table): New tables.
	(logicb_length_table, logicw_length_table): New macros.
	(h8300_classify_operand, h8300_length_from_table,
	h8300_length_table_for_insn, h8300_unary_length,
	h8300_insn_length_from_table): New functions.
	(output_plussi): Only use adds and subs for register destinations.
	Disable redundant clause.
	(compute_plussi_cc): Likewise.
	(compute_plussi_length): Likewise.  Use h8300_length_from_table
	to work out the length of an insn.
	(output_logical_op): Only use narrower immediate instructions
	if the destination is a register.
	(compute_logical_op_cc): Likewise.
	(compute_logical_op_length): Likewise.  Use h8300_length_from_table.
	(h8300_adjust_insn_length): Tighten check for reg<->mem moves.
	* config/h8300/h8300.md (length_table): New attribute.
	(length): When an instruction has a length_table attribute, use
	h8300_insn_length_from_table to calculate its default length.
	(cmpqi): Use h8300_dst_operand for the first operand and
	h8300_src_operand for the second.
	(cmphi, *cmphi_h8300hs, cmpsi, negqi2, neghi2, neghi2_h8300h, negsi2,
	negsi2_h8300h, addqi3, addhi3, *addhi3_h8300, *addhi3_h8300hs, addsi3,
	addsi_h8300, addsi_h8300h, andhi3, andsi3, iorhi3,
	iorsi3, xorhi3, xorsi3): Likewise.
	(andqi3): Use h8300_src_operand for operand 2.  Adjust the condition
	so that it allows any combination of operands for TARGET_H8300SX.
	(iorqi3, xorqi3): Likewise.
	(cmpqi): Use the length_table attribute.
	(*cmphi_h8300hs, cmpsi, addqi, *addhi3_h8300hs, andqi3, iorqi3,
	xorqi3, negqi2, neghi2_h8300h, negsi2_h8300h): Likewise.
	(cmpqi): Add 'Q' constraint.
	(*cmphi_h8300hs, cmpsi, addqi, *addhi3_h8300hs, addsi_h8300h, andqi3,
	iorqi3, xorqi3, negqi2, neghi2_h8300h, negsi2_h8300h): Likewise.
	2003-05-14  Richard Sandiford  <rsandifo@redhat.com>
	* config/h8300/h8300.h (MASK_H8300SX): New macro.
	(TARGET_H8300S): True for both -ms and -msx.
	(TARGET_H8300SX): New macro.
	(TARGET_SWITCHES): Add entries for -msx and -mno-sx.
	* config/h8300/h8300.c (asm_file_start): Write .h8300sx for -msx.
	* config/h8300/elf.h (LINK_SPEC): Use -m h8300sxelf for -msx.
	* config/h8300/t-h8300 (MULTILIB_MATCHES): Use -ms multilibs for -msx.
	[Temporary change.]
	2003-02-28  Alexandre Oliva  <aoliva@redhat.com>
	* config/h8300/h8300.h (SIZE_TYPE, PTRDIFF_TYPE): Use short with
	16-bit pointers and 32-bit ints.
	* config/h8300/h8300.h (LEGITIMATE_CONSTANT_P): Accept
	CONST_DOUBLE with mode no wider than SImode.
	* config/h8300/h8300.md (extendqisi2_h8300): Add constraints for
	output operand.
	2003-02-27  Alexandre Oliva  <aoliva@redhat.com>
	* config/h8300/h8300.c (general_operand_src): Match CONSTANT_P_RTX
	or SUBREG thereof.
	* config/h8300/h8300.h (PREDICATE_CODES): Adjust.
	2003-02-22  Alexandre Oliva  <aoliva@redhat.com>
	* config/h8300/h8300.c (dosize): Truncate sign * size to Pmode.

2004-05-28  Aaron W. LaFramboise <aaronraolete36@aaronwl.com>

	* config.gcc (i[34567]86-*-mingw32*): Enable threads by default.

2004-07-07  Per Bothner  <per@bothner.com>

	* flow.c (attempt_auto_inc): Remove now-redundant PUT_CODE.

2004-07-07  Mike Stump  <mrs@apple.com>

	* darwin.h (ASM_OUTPUT_LABELREF): Fix -fno-leading-underscore.
	* darwin.c (machopic_non_lazy_ptr_name, machopic_stub_name)
	(machopic_finish): Likewise.

2004-07-07  Richard Henderson  <rth@redhat.com>

	* tree-ssa-dom.c (simplify_switch_and_lookup_avail_expr): Look
	through any value-preserving cast.

2004-07-07  Alexandre Oliva  <aoliva@redhat.com>

	* function.c (assign_parm_find_data_types): Call
	FUNCTION_ARG_PASS_BY_REFERENCE only if it's defined.

2004-07-07  Steven Bosscher  <stevenb@suse.de>

	* tree-cfg.c (group_case_labels): Remove case labels that have
	the same target as the default case.

2004-07-07  Steven Bosscher  <stevenb@suse.de>

	* tree-inline.c (optimize_inline_calls): Set DECL_INLINED_FNS
	regardless of DECL_LANG_SPECIFIC being present or not.
	* tree.h (DECL_NUM_STMTS): Purge.

2004-07-07  Andrew Pinski  <apinski@apple.com>

	* configure: Regenerate with the right autoconf.

2004-07-07  David Edelsohn  <edelsohn@gnu.org>

	* ifcvt.c (total_bb_rtx_cost): New function.
	(find_if_case_1): Compare rtx_cost of basic block to cost of
	BRANCH_COST insns.
	(find_if_case_2): Same.

2004-07-07  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR target/10567
	* config/sparc/sparc.c (load_pic_register): Honor flag_delayed_branch.
	(output_return): Likewise.
	(output_sibcall): Abort if !flag_delayed_branch.
	(sparc_function_ok_for_sibcall): Return 0 if !flag_delayed_branch.
	(emit_and_preserve): New function.
	(sparc_output_mi_thunk): Use it.  Honor flag_delayed_branch.  Emit an
	indirect jump to the thunked-to function if !flag_delayed_branch.
	* config/sparc/sparc.md (delayed_branch): New attribute.
	(load_pcrel_sym): Honor flag_delayed_branch.  Use above
	attribute to compute the length of the insn.
	(goto_handler_and_restore): Likewise.

2004-07-07  Andrew Pinski  <apinski@apple.com>

	PR tree-optimization/15777
	* fold-const.c (fold_single_bit_test): Fold the x^1 expression.

	* expr.c (expand_expr_real_1): Fix formating.
	BUFFER_REF and IN_EXPR are dead.
	* fold-const.c (non_lvalue): BUFFER_REF is dead.
	* tree-inline.c (estimate_num_insns_1): Likewise.
	* tree-pretty-print.c (dump_generic_node): BUFFER_REF,
	IN_EXPR, SET_LE_EXPR, and CARD_EXPR are dead.
	* tree.def (BUFFER_REF, IN_EXPR, SET_LE_EXPR, CARD_EXPR): Kill.

2004-07-07  H.J. Lu  <hongjiu.lu@intel.com>

	* collect2.c (dump_file): Don't call cplus_demangle if
	HAVE_LD_DEMANGLE is defined.
	(main): Pass "--demangle" to ld if no_demangle is not 0 and
	HAVE_LD_DEMANGLE is defined. Don't set current_demangling_style
	if HAVE_LD_DEMANGLE is defined.

	* configure.ac (--with-demangler-in-ld): Added
	(HAVE_LD_DEMANGLE): Define if ld supports --demangle when
	--with-demangler-in-ld is used.
	* config.in: Regenerated.
	* configure: Likewise.

2004-07-07  Roger Sayle  <roger@eyesopen.com>

	* config/rs6000/rs6000.c (struct processor_costs): Add new fields
	for simple floating point operations "fp", double precision
	multiplication "dmul", and single and double precision division
	"sdiv" and "ddiv".  Update all CPU variant tables as appropriate.
	(ppc630_cost): New table split from ppc620_cost, to distinguish
	differences in floating point latencies.
	(rs6000_override_options): Use ppc630_cost for PROCESSOR_PPC630.
	(rs6000_rtx_costs): Add support for single and double precision
	floating point addition, subtraction, multiplication, division,
	fused-multiply-add, fused-multiply-sub, negation, absolute value
	and negative absolute value.  Tweak MEM case to use prefered idiom.

2004-07-07  Richard Henderson  <rth@redhat.com>

	* tree-flow-inline.h (may_propagate_copy): Move...
	* tree-ssa-copy.c (may_propagate_copy): ... here.  Fail if we
	attempt to copy between types requiring conversion.
	* tree-flow.h (may_propagate_copy): Update decl.
	* tree-ssa-dom.c (cprop_operand): Tidy redundant tests.

2004-07-07  Jakub Jelinek  <jakub@redhat.com>

	* config/i386/i386.c (override_options): Don't set x86_prefetch_sse
	from -mtune= option.

2004-07-07  Alexandre Oliva  <aoliva@redhat.com>

	* builtins.c: Rename movstr*, except for movstrict*, to
	movmem* and clrstr* to clrmem*.
	* expr.c: Likewise.
	* expr.h: Likewise.
	* genopinit.c: Likewise.
	* integrate.c: Likewise.
	* local-alloc.c: Likewise.
	* optabs.c: Likewise.
	* optabs.h: Likewise.
	* config/alpha/alpha.h: Likewise.
	* config/alpha/alpha.md: Likewise.
	* config/arm/arm-protos.h: Likewise.
	* config/arm/arm.c: Likewise.
	* config/arm/arm.md: Likewise.
	* config/avr/avr.md: Likewise.
	* config/c4x/c4x.c: Likewise.
	* config/c4x/c4x.md: Likewise.
	* config/frv/frv.md: Likewise.
	* config/i386/i386-protos.h: Likewise.
	* config/i386/i386.c: Likewise.
	* config/i386/i386.h: Likewise.
	* config/i386/i386.md: Likewise.
	* config/i860/i860.c: Likewise.
	* config/i860/i860.md: Likewise.
	* config/ip2k/ip2k.md: Likewise.
	* config/ip2k/libgcc.S: Likewise.
	* config/ip2k/t-ip2k: Likewise.
	* config/m32r/m32r.c: Likewise.
	* config/m32r/m32r.md: Likewise.
	* config/mcore/mcore.md: Likewise.
	* config/mips/mips.c: Likewise.
	* config/mips/mips.md: Likewise.
	* config/ns32k/ns32k.c: Likewise.
	* config/ns32k/ns32k.h: Likewise.
	* config/ns32k/ns32k.md: Likewise.
	* config/pa/pa.c: Likewise.
	* config/pa/pa.md: Likewise.
	* config/pdp11/pdp11.h: Likewise.
	* config/pdp11/pdp11.md: Likewise.
	* config/rs6000/rs6000.c: Likewise.
	* config/rs6000/rs6000.md: Likewise.
	* config/s390/s390-protos.h: Likewise.
	* config/s390/s390.c: Likewise.
	* config/s390/s390.md: Likewise.
	* config/sh/lib1funcs.asm: Likewise.
	* config/sh/sh.c: Likewise.
	* config/sh/sh.md: Likewise.
	* config/sh/t-sh: Likewise.
	* config/sparc/sparc.h: Likewise.
	* config/vax/vax.md: Likewise.
	* config/xtensa/xtensa.c: Likewise.
	* config/xtensa/xtensa.md: Likewise.
	* doc/invoke.texi: Likewise.
	* doc/md.texi: Likewise.
	* doc/rtl.texi: Likewise.

2004-07-07  Richard Sandiford  <rsandifo@redhat.com>

	PR target/16407
	* config/mips/mips-protos.h (mips_declare_common_object): Declare.
	* config/mips/mips.c (mips_declare_common_object): New function,
	mostly split out from...
	(mips_output_aligned_decl_common): ...here.
	* config/mips/mips.h (ASM_OUTPUT_LOCAL): Remove in favor of...
	(ASM_OUTPUT_ALIGNED_LOCAL): ...this new definition.
	* config/mips/iris6.h (ASM_OUTPUT_ALIGNED_LOCAL): Undefine this
	rather than ASM_OUTPUT_LOCAL.  Call mips_declare_common_object.

2004-07-07  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	PR c/16392
	* function.c (assign_parms): Fix typo from previous change.

2004-07-07  Jason Merrill  <jason@redhat.com>

	PR c++/15815
	* doc/extend.texi (C++ Interface): Correct information and
	discourage use.

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.

2004-07-06  Kazuhiro Inaoka  <inaoka.kazuhiro@renesas.com>

	PR target/1679.
	* config/m32r/m32r.c (m32r_function_symbol): New function:
	Generate a symbol name RTX with the correct m32r specific flags
	set.
	(block_move_call): Use new function to generate correct symbol.
	* config/m32r/m32r-protos.h: Add prototype for new funcion.
	* config/m32r/m32r.h (INITIALIZE_TRAMPOLINE): Use the new
	function.

2004-07-07  Nathan Sidwell  <nathan@codesourcery.com>

	* tree.h (TYPE_BINFO_OFFSET, TYPE_BINFO_VTABLE,
	TYPE_BINFO_VIRTUALS, TYPE_BINFO_BASETYPES,
	TYPE_BINFO_BASETYPE): Remove.
	(BINFO_BASETYPES, BINFO_N_BASETYPES, BINFO_BASETYPE): Rename
	to ...
	(BINFO_BASE_BINFOS, BINFO_N_BASE_BINFOS, BINFO_BASE_BINFO): ...
	here.
	(BINFO_BASEACCESSES, BINFO_BASEACCESS): Rename to ...
	(BINFO_BASE_ACCESSES, BINFO_BASE_ACCESS): ... here.
	(BINFO_INHERITANCE_CHAIN): Redocument as it is actually used.
	(struct tree_binfo): Rename base_types to base_binfos.
	* alias.c (record_component_aliases): Adjust BINFO macros.
	* dbxout.c (dbxout_type): Likewise.
	* dwarf2out.c (gen_member_die): Likewise.
	* sdbout.c (sdbout_one_type): Likewise.
	* tree-dump.c (deque_and_dump): Likewise.
	* config/i386/i386.c (classify_argument,
	contains_128bit_aligned_vector_p): Likewise.

2004-07-07  Nick Clifton  <nickc@redhat.com>

	* config/fr30/fr30.c (fr30_setup_incoming_varargs): Change
	arguments to match TARGET_SETUP_INCOMING_VARARGS prototype.

2004-07-07  Nathan Sidwell  <nathan@codesourcery.com>

	* vec.h: Fix the example use.

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

	* langhooks-def.h (LANG_HOOKS_GIMPLE_BEFORE_INLINING): Remove.
	* langhooks.h (struct lang_hooks): Remove gimple_before_inlining.
	* tree-inline.c (copy_body_r, setup_one_parameter,
	initialize_inlined_parameters, expand_call_inline,
	declare_inline_vars): Don't check it.
	(expand_calls_inline): Remove old version, rename new version
	from gimple_expand_calls_inline.
	* tree-optimize.c (execute_gimple): Remove.
	(pass_gimple): Don't run anything.

2004-07-06  Joseph S. Myers  <jsm@polyomino.org.uk>

	* doc/sourcebuild.texi: Use semicolons instead of commas in
	section title.

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

	* tree-sra.c (struct sra_walk_fns): Revert 2004-07-05 change.
	(sra_walk_modify_expr, scan_init): Likewise.
	(generate_element_zero): Check visited before scanning children.
	(generate_element_init): Set visited on error.
	(scalarize_init): Handle generate_element_init failure similar
	to use_block_copy.

2004-07-06  Joseph S. Myers  <jsm@polyomino.org.uk>

	* toplev.h (NO_FRONT_END_DIAG, ATTRIBUTE_GCC_FE_DIAG): Define.
	(warning, error, pedwarn, sorry): Use ATTRIBUTE_GCC_FE_DIAG.

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

	* config/i386/i386.c (legitimize_pic_address): Make static.
	(legitimize_address): Handle CONST with TLS operand.
	(ix86_expand_move): Don't call legitimize_pic_address directly.
	* config/i386/i386-protos.h (legitimize_pic_address): Remove.

2004-07-06  Roger Sayle  <roger@eyesopen.com>

	* ifcvt.c (struct noce_if_info): Add a Boolean b_unconditional field.
	(noce_try_sign_mask): Tweak rtx_cost check if t is evaluated anyway.
	(noce_process_if_block): Initialize if_info.b_unconditional if insn_b
	is currently executed unconditionally, i.e. not in "else_bb".

2004-07-06  Steven Bosscher  <stevenb@suse.de>

	* 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.

2004-07-06  Daniel Berlin  <dberlin@dberlin.org>

	* dojump.c (do_jump): REFERENCE_EXPR is dead.
	* expr.c (expand_expr_real_1): Ditto.
	* tree-inline.c (estimate_num_insns_1): Ditto.
	* tree-pretty-print.c (dump_generic_node): Ditto.
	(op_symbol): Ditto.
	* tree.def: Ditto.

2004-07-06  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-pre.c (reference_node_pool): New pool.
	(find_or_generate_expression): Class 'r' is okay too.
	(create_value_expr_from): Ditto.
	(add_to_sets): LHS should not include vuses.
	(eliminate): Ditto.
	(compute_avail): Reverse ordering of tests.
	Valuize INDIRECT_REF as well.

2004-07-06  Richard Sandiford  <rsandifo@redhat.com>

	PR rtl-optimization/16380
	* loop.c (check_dbra_loop): Sink comparison instructions if they
	do something other than set cc0.

2004-07-06  James E Wilson  <wilson@specifixinc.com>

	* doc/interface.texi (longjmp and automatic variables): Delete
	paragraph recommending taking the address of a variable.

2004-07-06  Nathan Sidwell  <nathan@codesourcery.com>

	* vec.h (VEC_embedded_alloc): Remove.
	(VEC_embedded_size, VEC_embedded_init): New.
	(VEC_alloc, VEC_reserve, VEC_safe_push, VEC_safe_insert): Add
	MEM_STAT_INFO.
	(VEC_truncate): New.
	(vec_p_reserve, vec_o_reserve): Add MEM_STAT_DECL.
	(vec_embedded_alloc): Remove.
	* vec.c (vec_p_reserve, vec_o_reserve): Add MEM_STAT_DECL, adjust.
	(vec_embedded_alloc): Remove.

2004-07-06  Mark Mitchell  <mark@codesourcery.com>

	* Makefile.in (langhooks.o): Do not depend on gt-langhooks.h.
	(gt-langhooks.h): Remove.

2004-07-06  George Helffrich <george@gly.bris.ac.uk>

	* xcoffout.h (DBX_FINISH_SYMBOL): Fix typo.

2004-07-06  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* config/sparc/sparc.c (get_pc_symbol): Rename into
	add_pc_to_pic_symbol.
	(get_pc_symbol_name): Rename into add_pc_to_pic_symbol_name.
	(load_pic_register): Account for previous changes.
	Use reg_names.  Don't create the label twice.
	* config/sparc/sparc.md (UNSPEC_GET_PC): Rename into
	UNSPEC_LOAD_PCREL_SYM.
	(get_pc): Rename into load_pcrel_sym.  Add predicate to
	operands.  Remove condition.

2004-07-06  Nathan Sidwell  <nathan@codesourcery.com>

	* dbxout.c (dbxout_type): Don't test whether the binfo slot of
	RECORD, UNION & QUAL_UNION is actually a binfo.

	* tree.h (TREE_VIA_VIRTUAL): Rename to ...
	(BINFO_VIRTUAL_P): ... here. Require TREE_BINFO only.
	(BINFO_MARKED, BINFO_FLAG_[16]): New binfo flags.
	* dbxout.c (dbxout_type): Use BINFO_VIRTUAL_P.
	* dwarf2out.c (add_data_member_location_attribute): Likewise.
	(gen_inheritance_die): Likewise.
	* tree-dump.c (deque_and_dump): Likewise.
	* doc/c-tree.texi (Binfos): Add under reconstruction note.

2004-07-06  Steven Bosscher  <stevenb@suse.de>

	* config/mcore/mcore.c (TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE):
	Define.
	* config/mcore/mcore.md: Model memory latency with a simple DFA
	pipeline description instead of a define_function_unit.

2004-07-05  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* langhooks-def.h (LANG_HOOKS_TREE_INLINING_VAR_MOD_TYPE_P): Extra arg.
	* langhooks.h (var_mod_type_p): Likewise.
	* c-decl.c (finish_decl): Add extra arg to variably_modified_type_p.
	* expr.c (count_type_elements): Properly handle return from
	array_type_nelts and properly test for overflow.
	* gimplify.c (gimplify_init_constructor): Properly handle return
	from array_type_nelts.
	(gimplify_addr_expr): Remove redundant clear of TREE_SIDE_EFFECTS.
	* integrate.c (copy_decl_for_inlining): Correct comments.
	* tree-inline.c (remap_decl): Update comments, remove dead code,
	and copy DECL_FIELD_OFFSET and DECL_QUALIFIER, if they exist.
	(remap_type): Only remap if variably modified by vars in function
	being inlined.
	(copy_body_r): Use compatible_type langhooks to see when can fold.
	(setup_one_parameter): Don't remap type.
	(inline_forbidden_p_1): Add arg to variably_modified_type_p.
	* tree.c (recompute_tree_invarant_for_addr_expr): Properly
	compute TREE_INVARIANT for decl case.
	(find_var_from_fn): New function.
	(variably_modified_type_p): Add arg and call new function.
	* tree.h (variably_modified_type_p): Add extra arg.

2004-07-05  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* config/sparc/sparc.md (nonlocal_goto): Remove disabled code.
	(goto_handler_and_restore_v9): Delete disabled insn.
	(goto_handler_and_restore_v9_sp64): Likewise.

2004-07-05  Roger Sayle  <roger@eyesopen.com>

	* calls.c (load_register_parameters): Call expand_shift instead
	of expand_binop with ashl_optab (or other shift optab) directly.
	* expr.c (emit_group_load, emit_group_store): Likewise.
	* function.c (assign_parm_setup_block): Likewise.
	* stmt.c (shift_return_value): Likewise.

2004-07-05  Jakub Jelinek  <jakub@redhat.com>

	* expr.c (expand_assignment): Disable the bitfield += optimizations.

2004-07-05  Joseph S. Myers  <jsm@polyomino.org.uk>

	* doc/sourcebuild.texi: Revert previous patch.

2004-07-05  Joseph S. Myers  <jsm@polyomino.org.uk>

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

2004-07-05  Richard Henderson  <rth@redhat.com>

	* function.c (assign_parm_setup_reg): Properly rename variables in
	FUNCTION_ARG_CALLEE_COPIES section.

2004-07-05  Zack Weinberg  <zack@codesourcery.com>

	* tree-mudflap.c: Include cgraph.h.
	(mf_init_extern_trees): Rename to mudflap_init.  Export.
	Rewrite to create synthetic declarations instead of looking
	up declarations from mf-runtime.h.
	(mf_make_builtin, mf_make_cache_struct_type): New functions.
	(mf_cache_shift_decl, mf_cache_mask_decl, mf_unregister_fndecl):
	Correct commentary.
	(execute_mudflap_function_decls, mudflap_register_call):
	Don't call mf_init_extern_trees.
	(mudflap_finish_file): Use cgraph_build_static_cdtor.

	* tree-mudflap.h: Update prototypes.
	* c-mudflap.c: Delete file.
	* c-common.c: Include tree-mudflap.h.
	(c_common_nodes_and_builtins): Call mudflap_init if appropriate.
	* Makefile.in: Remove all references to c-mudflap.o.
	Update dependencies.

2004-07-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* pa.md (prefetch, prefetch_32, prefetch_64): Only allow short
	displacements with the spatial-locality cache-control completer.

2004-07-05  Zack Weinberg  <zack@codesourcery.com>

	* langhooks.c: Don't include gt-langhooks.h.
	(var_labelno): Delete.
	(lhd_set_decl_assembler_name): Do not append a distinguishing
	number to file-scope internal-linkage declarations for the first
	input file, even if they have DECL_CONTEXT set.  Use DECL_UID of
	the declaration itself (if at block scope), or its containing
	TRANSLATION_UNIT_DECL (if at file scope) for the distinguishing
	number.

	* opts.c (cur_in_fname): New global.
	* opts.h: Declare it.
	* tree.c: Include opts.h.
	(make_node_stat): If creating a TRANSLATION_UNIT_DECL, give it
	DECL_UID equal to cur_in_fname.
	(copy_node_stat): Do not change DECL_UID when copying a
	TRANSLATION_UNIT_DECL.
	(build_common_tree_nodes): Adjust next_decl_uid to reserve the
	range 0 .. num_in_fnames-1 for TRANSLATION_UNIT_DECLs.

	* c-decl.c (c_static_assembler_name): Delete.
	* c-tree.h (c_static_assembler_name): Delete prototype.
	* c-lang.c, objc/objc-lang.c: Don't override
	LANG_HOOKS_SET_DECL_ASSEMBLER_NAME.

	* Makefile.in (tree.o): Update dependencies.
	(GTFILES): Remove langhooks.c.

2004-07-05  Roger Sayle  <roger@eyesopen.com>

	* fold-const.c (fold) <TRUNC_MOD_EXPR>: Optimize unsigned modulus
	by a power of two into a bit-wise AND, i.e. "X % C" as "X & (C-1)".
	Normalize "X % C" as "X % -C" for signed modulus and negative C.
	Optimize "X % -Y" as "X % Y" for signed modulus.
	<EQ_EXPR>: Recursively call "fold" when transforming "(X % Y) == 0"
	into "((unsigned) X % Y) == 0".

2004-07-05  Joseph S. Myers  <jsm@polyomino.org.uk>

	* sourcebuild.texi (Config Fragments): Use @comma{} in
	cross-reference to section title.

2004-07-05  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* tree.h (DECL_SEEN_IN_BIND_EXPR_P): New macro.
	* gimplify.c (gimple_add_tmp_var, gimplify_bind_expr): Use it.
	(gimplify_target_expr, gimplify_expr): Likewise.
	(copy_if_shared_r): No longer need special case for BIND_EXPR.
	(unshare_body, unvisit_body): Only look at nested if BODY_P is
	whole function.
	(gimplify_compound_lval): See if we can strip any useless conversion.
	(gimplify_modify_expr, gimplify_modify_expr_to_memcpy): Take size
	from RHS, not LHS.
	(gimplify_modify_expr_to_memset): Likewise.
	(gimplify_expr, case CONSTRUCTOR): Handle use as statement.
	* tree-inline.c (setup_one_parameter): Use DECL_SEEN_IN_BIND_EXPR_P.
	(declare_inline_vars): Likewise.
	(walk_type_fields): New function.
	(walk_tree): Use it.
	* tree-nested.c (create_tmp_var_for): Show seen in BIND_EXPR.

	* tree-sra.c (struct sra_walk_fns): Init function now returns bool.
	(sra_walk_modify_expr): Allow init function to fail.
	(scan_init): Now returns bool.
	(generate_element_init): If can't understand INIT, return false.
	(scalarize_init): Return false if generate_element_init does.

	* tree-pretty-print.c (dump_generic_node, case ARRAY_TYPE): Properly
	print bounds.

	* expr.c (expand_expr_real_1, case SWITCH_EXPR): Don't check against
	bounds if bounds aren't constant.

	* tree-cfg.c (verify_expr): Use CHECK_OP in binary case.

	* function.c, langhooks-def.h, langhooks.h: Move max_size hook
	to type hooks; remove bogus PARAMS.

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

	* c-tree.h (TYPE_ACTUAL_ARG_TYPES): Use TYPE_LANG_SLOT_1.
	* dwarf2out.c (add_data_member_location_attribute): Check for
	TREE_BINFO.
	* tree.c (tree_node_kinds): Add "binfos".
	(binfo_lang_slots): New.
	(make_node_stat): Add TREE_BINFO.
	(make_tree_binfo_stat): New.
	(tree_node_structure): Add TREE_BINFO.
	* tree.def (TREE_BINFO): New.
	* tree.h (REC_OR_UNION_CHECK): Rename to ...
	(RECORD_OR_UNION_CHECK): ... here.
	(NOT_RECORD_OR_UNION_CHECK): New.
	(TRE_VIA_VIRTUAL): Allow TREE_LIST or TREE_BINFO.
	(TYPE_FIELDS, TYPE_METHODS, TYPE_VFIELD): Adjust for
	RECORD_OR_UNION_CHECK.
	(TYPE_BINFO): Use RECORD_OR_UNION_CHECK.
	(TYPE_LANG_SLOT_1): New.
	(BINFO_TYPE, BINFO_OFFSET, BINFO_VTABLE, BINFO_VIRTUALS,
	BINFO_BASETYPES, TYPE_BINFO_BASETYPES, BINFO_VPTR_FIELD,
	BINFO_BASEACCESSES, BINFO_INHERITANCE_CHAIN): Adjust.
	(BINFO_ELTS): Remove.
	(BINFO_LANG_SLOT): New.
	(struct tree_binfo): New.
	(binfo_lang_slots): Declare.
	(enum tree_node_structure_enum): Add TS_BINFO.
	(union tree_node): Add binfo.
	(make_tree_binfo_stat): Declare.
	(make_tree_binfo): New.
	(enum tree_node_kind): Add binfo_kind.

	* objc/objc-act.c (start_class, objc_declare_protocols,
	start_protocols): Use TYPE_LANG_SLOT_1.
	* objc/objc-act.h (CLASS_BINFO_ELTS, PROTOCOL_BINFO_ELTS): Rename
	to ...
	(CLASS_LANG_SLOT_ELTS, PROTOCOL_LANG_SLOT_ELTS): ... here.
	(CLASS_IVARS, CLASS_RAW_IVARS, CLASS_STATIC_TEMPLATE,
	CLASS_CATEGORY_LIST, CLASS_PROTOCOL_LIST, CLASS_OWN_IVARS,
	PROTOCOL_LIST, PROTOCOL_FORWARD_DECL): Use TYPE_LANG_SLOT_1.

2004-07-05  Steven Bosscher  <stevenb@suse.de>

	* rtl.h (struct rtx_def): Remove the integrated flag.
	Use the return_val flag for MEM_SCALAR_P.
	Reshuffle and update flags in CLEAR_RTX_FLAGS.

2004-07-05  Richard Sandiford  <rsandifo@redhat.com>

	PR target/16357
	* config/mips/mips.c (mips_block_move_straight): Pass BLKmode memrefs
	to mips_expand_unaligned_load, mips_expand_unaligned_store, and
	move_by_pieces.

2004-07-05  Josef Zlomek  <zlomekj@suse.cz>

	* var-tracking.c: Fix some comments.
	(frame_stack_adjust): New.
	(vt_stack_adjustments): Init stack_adjust of entry block to
	minus stack adjustment of function prologue.
	(adjust_stack_reference): Do not adjust if adjustment == 0.
	(compute_bb_dataflow): Use plus_constant instead of gen_rtx_PLUS.
	(emit_notes_in_bb): Likewise.
	(vt_add_function_parameters): Do not adjust locations of
	function arguments.
	(vt_initialize): Compute the stack adjustment of function
	prologue and offset the initial "location" of frame_base_decl
	from the stack pointer after prologue.

2004-07-04  Richard Henderson  <rth@redhat.com>

	* function.c (struct assign_parm_data_all): New.
	(struct assign_parm_data_one): New.
	(assign_parms_initialize_all, assign_parms_augmented_arg_list,
	assign_parm_find_data_types, assign_parms_setup_varargs,
	assign_parm_find_entry_rtl, assign_parm_is_stack_parm,
	assign_parm_find_stack_rtl, assign_parm_adjust_entry_rtl,
	assign_parm_adjust_stack_rtl, assign_parm_setup_block_p,
	assign_parm_setup_block, assign_parm_setup_reg,
	assign_parm_setup_stack, assign_parms_unsplit_complex): Split from ...
	(assign_parms): ... here.

2004-07-04  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-pre.c (bb_value_sets): phi_gen, tmp_gen, new_sets
	now are bitmap_set_t's.
	(bitmap_insert_into_set): No point in inserting the value if
	it's invariant.
	(bitmap_set_contains): New function.
	(bitmap_set_replace_value): Add comment on why we do it
	this way.
	(set_contains): Removed.
	(bitmap_set_subtract_from_value_set): New name of
	set_subtract now that it's arguments are two different
	types of sets.
	Update callers.
	(bitmap_find_leader): Change algorithm used.
	(find_or_generate_expression): Update use of functions for new
	bitmap sets.
	(create_expression_by_pieces): Ditto.
	(insert_aux): Ditto.
	(insert): Ditto.
	(add_to_sets): Ditto.
	(init_pre): Ditto.
	(execute_pre): Ditto.
	(compute_avail): Ditto.
	Also ignore virtual phis.

2004-07-04  Richard Sandiford  <rsandifo@redhat.com>

	* combine.c (simplify_comparison): Fix comment typo.

2004-07-04  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* config/sparc/sparc.c (SIBCALL_SLOT_EMPTY_P): Rename
	into LEAF_SIBCALL_SLOT_RESERVED_P after negation.
	(eligible_for_sibcall_delay): Adjust use of SIBCALL_SLOT_EMPTY_P.
	(output_restore): Change parameter from 'insn' to 'pat'.
	(output_return): Adjust call to output_restore.
	(output_sibcall): Adjust use of SIBCALL_SLOT_EMPTY_P.
	Adjust call to output_restore.

2004-07-04  Neil Booth  <neil@duron.akihabara.co.uk>

	* config/netbsd.h (NETBSD_OS_CPP_BUILTINS_COMMON): Define __unix__
	and assert system is bsd.

2004-07-04  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.h (MASK_DEBUG_C, TARGET_DEBUG_C_MODE): Delete.
	(TARGET_SWITCHES): Remove -mdebugc.
	* config/mips/mips.md (seq, sne, sgt, sge, slt, sle, sgtu, sgeu)
	(sltu, sleu): Remove TARGET_DEBUG_C_MODE handling.
	(seq_[sd]i, sne_[sd]i, sge_[sd]i, sle_[sd]i_reg, sgeu_[sd]i)
	(sle_[sd]i_reg): Delete.

2004-07-04  Steven Bosscher  <stevenb@suse.de>

	* config/iq2000/iq2000.c (TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE):
	Define.
	* config/iq2000/iq2000.md: Translate old pipeline description to an
	equivalent new one.

2004-07-04  Roger Sayle  <roger@eyesopen.com>

	* tree-ssa-ccp.c (set_rhs): Change function to return a bool.
	Ensure the replacement rhs is valid gimple before performing
	the substitution.  Return false if these sanity checks fail.
	(fold_stmt): Only set changed to true, if set_rhs returns true.
	(execute_fold_all_builtins): Only call modify_stmt if set_rhs
	succeeds.

2004-07-04  Richard Henderson  <rth@redhat.com>

	PR c/16348
	* c-typeck.c (c_finish_loop): Don't clear cond for cond_is_first loops.

2004-07-04  Mark Mitchell  <mark@codesourcery.com>

	* configure.ac (ranlib_flags): New variable.
	* Makefile.in (RANLIB_FLAGS): New variable.
	(libbackend.a): Use it.
	* configure: Regenerated.

2004-07-04  Roger Sayle  <roger@eyesopen.com>

	* ifcvt.c (noce_try_sign_mask): Call emit_store_flag to generate
	a "sign mask" instead of using ashr_optab directly.

2004-07-04  Neil Booth  <neil@duron.akihabara.co.uk>

	* doc/cpp.texi: Don't document what we do for ill-formed expressions.
	* doc/cppopts.texi: Clarify processing of command-line defines.

2004-07-04  Gerald Pfeifer  <gerald@pfeifer.com>

	* doc/contrib.texi (Contributors): Adjust link for GNU Classpath.

2004-07-04  Richard Henderson  <rth@redhat.com>

	* 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.

2004-07-03  Richard Henderson  <rth@redhat.com>

	* 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.

2004-07-03  Richard Henderson  <rth@redhat.com>

	PR tree-optimization/16341
	* tree-sra.c (sra_walk_function): Increment to next stmt before
	processing the current stmt.
	(sra_insert_after): Always use BSI_SAME_STMT.

2004-07-03  Richard Henderson  <rth@redhat.com>

	* tree-ssa-dom.c (simplify_rhs_and_lookup_avail_expr): Don't fold
	fp plus with minus.

2004-07-03  Joseph S. Myers  <jsm@polyomino.org.uk>

	* tree.c (type_hash_eq): Allow TYPE_MIN_VALUE which compares equal
	with tree_int_cst_equal.

2004-07-03  Andreas Schwab  <schwab@suse.de>

	* 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.

2004-07-03  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* tree-inline.c (initialize_inlined_parameters): Pass proper function
	context to gimplify_body.
	(walk_tree): Don't walk into types twice.
	(walk_tree, case POINTER_TYPE): Deal with mutually recursive pointers.

	* tree-sra.c (generate_element_init): Remove any useless conversions.

	* gimplify.c (gimplify_conversion): Remove stripping useless
	conversions from here.
	(gimplify_expr): Put it here, in place of call to STRIP_MAIN_TYPE_NOPS.
	(gimplify_modify_expr_to_memcpy, gimplify_variable_sized_compare):
	Unshare before substituting PLACEHOLDER_EXPR.
	(gimplify_modify_expr_to_memset): Likewise.
	Pass address of TO to memset, not TO itself.
	(gimplify_init_constructor): Make copy of OBJECT so we have it each
	time we make an expression (to match a PLACEHOLDER_EXPR).

	* tree-ssa.c (tree_ssa_useless_type_conversion): Also look at
	VIEW_CONVERT_EXPR and NON_LVALUE_EXPR.
	* tree-ssa-ccp.c (fold_stmt): Call just STRIP_USELESS_TYPE_CONVERSION.
	* tree-ssa-dom.c (local_fold): Likewise.

	* langhooks-def.h (LANG_HOOKS_TYPE_MAX_SIZE): New langhook.
	* langhooks.h (strct lang_hooks): New field type_max_size.
	* function.c (assign_temp): Call it.

2004-07-03  Steven Bosscher  <stevenb@suse.de>

	* config/sh/sh.c (sh_use_dfa_interface): Add TARGET_SH1.
	* config/sh/sh.md: Convert the SH1 pipeline description to
	a DFA model.

2004-07-02  Zack Weinberg  <zack@codesourcery.com>

	* c-decl.c (struct c_binding): Remove contour field; add
	depth, invisible, nested fields.
	(B_IN_SCOPE, B_IN_CURRENT_SCOPE, B_IN_FILE_SCOPE)
	(B_IN_EXTERNAL_SCOPE): New convenience macros.
	(bind): Add invisible and nested arguments. Initialize
	new fields of struct c_binding; adjust loop scanning for
	insertion point.
	(free_binding_and_advance): Clear structure with memset.
	(pop_scope): Adjust to match.  Set DECL_CONTEXT on everything
	in file scope, even if it's in external scope too.
	(pushdecl): Adjust to match.  Create invisible file-scope
	declarations for block-scope forward declarations of static functions.
	(pushtag, warn_if_shadowing, pushdecl_top_level, implicitly_declare)
	(undeclared_variable, lookup_label, declare_label, define_label)
	(lookup_tag, lookup_name, lookup_name_in_scope, builtin_function)
	(c_make_fname_decl, store_parm_decls_newstyle, identifier_global_value)
	(store_parm_decls_oldstyle): Adjust to match.
	(diagnose_mismatched_decls): Correct handling of linkage clashes.
	(merge_decls): No need to copy C_DECL_IN_EXTERNAL_SCOPE.

	* c-tree.h (C_DECL_IN_EXTERNAL_SCOPE): Delete.
	(C_DECL_DECLARED_BUILTIN, C_DECL_REGISTER): Slide down one.

2004-07-02  Richard Henderson  <rth@redhat.com>

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

2004-07-03  Joseph S. Myers  <jsm@polyomino.org.uk>

	* doc/bugreport.texi, doc/configterms.texi, doc/contrib.texi,
	doc/contribute.texi, doc/cpp.texi, doc/cppinternals.texi,
	doc/extend.texi, doc/install.texi, doc/invoke.texi, doc/md.texi,
	doc/portability.texi, doc/tree-ssa.texi, doc/trouble.texi: Avoid
	some first-person references and patronizing comments.  Based on
	printed manual.
	* doc/invoke.texi: Don't reference fortran@gnu.org.
	* doc/trouble.texi (Warning when a non-void function value is
	ignored): Rewrite.  From Russ Allbery and Chris Devers.

2004-07-02  Daniel Berlin  <dberlin@dberlin.org)

	* tree-ssa-pre.c (bitmap_set_t): New.
	(bb_value_sets): avail_out is now a bitmap_set_t.
	(bitmap_find_leader): New function.
	(bitmap_value_insert_into_set): Ditto.
	(bitmap_set_copy): Ditto.
	(bitmap_value_replace_in_set): Ditto.
	(bitmap_set_contains_value): Ditto.
	(bitmap_set_new): Ditto.
	(bitmap_set_pool): New pool.
	(find_or_generate_expression): Use bitmap_ functions on AVAIL sets.
	(insert_aux): Ditto.
	(add_to_sets): Ditto.
	(compute_avail): Ditto
	(eliminate): Ditto.
	(init_pre): Ditto.
	(fini_pre): Ditto.
	(execute_pre): Ditto.

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

	* config/rs6000/rs6000.c (struct processor_costs): New structure
	used to hold instruction latencies/sizes for processor types.
	(rs6000_cost): New global variable pointing to current CPU's costs.
	(rs6000_override_options): Initialize rs6000_cost to point to the
	appropriate cost table based upon rs6000_cpu and optimize_size.
	(rs6000_rtx_costs): Use rs6000_cost to avoid hardcoding processor
	timings inline.

2004-07-02  Richard Henderson  <rth@redhat.com>

	* expmed.c (make_tree): Don't use SET_DECL_RTL.

2004-07-02  Steven Bosscher  <stevenb@suse.de>

	* tree-flow.h (bb_ann_d): Remove ephi_nodes field.

2004-07-01  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.c (struct machine_function): Add gp_save_rtx.
	(alpha_gp_save_rtx): Use assign_stack_local instead of
	gen_mem_addressof.

2004-07-01  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.c (struct alpha_rtx_cost_data): Add int_div.
	(alpha_rtx_cost_data): Update to match.
	(alpha_rtx_cost_size): New.
	(alpha_rtx_costs): Honor optimize_size.

2004-07-01  Richard Henderson  <rth@redhat.com>

	* 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.

2004-07-01  Richard Henderson  <rth@redhat.com>

	* tree.def (RTL_EXPR): Remove.
	* c-typeck.c (lvalue_p): Don't handle it.
	* expr.c (safe_from_p): Likewise.
	(expand_expr_real_1): Likewise.
	* fold-const.c (non_lvalue, operand_equal_p, fold): Likewise.
	(fold_checksum_tree, tree_expr_nonnegative_p): Likewise.
	* gengtype.c (adjust_field_tree_exp): Likewise.
	* stmt.c (warn_if_unused_value): Likewise.
	* tree-gimple.c (recalculate_side_effects): Likewise.
	* tree-pretty-print.c (dump_generic_node): Likewise.
	* tree.c (make_node_stat, first_rtl_op, unsave_expr_1): Likewise.
	(unsafe_for_reeval, stabilize_reference, build1_stat): Likewise.
	* tree.h (RTL_EXPR_SEQUENCE, RTL_EXPR_RTL, RTL_EXPR_ALT_RTL): Remove.

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

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

2004-07-02  Kazu Hirata  <kazu@cs.umass.edu>

	* ifcvt.c, modulo-sched.c, tree-alias-common.c, tree-sra.c,
	tree-ssa-copy.c, tree-ssa-dom.c, tree-ssa-pre.c: Fix comment
	typos.

2004-07-02  Aaron W. LaFramboise <aaronraolete36@aaronwl.com>

	* gcc.c (STANDARD_STARTFILE_PREFIX_1): Define.
	(STANDARD_STARTFILE_PREFIX_2): Define.
	(standard_startfile_prefix_1): Initialize to
	STANDARD_STARTFILE_PREFIX_1.
	(standard_startfile_prefix_2): Initialize to
	STANDARD_STARTFILE_PREFIX_2.
	* config/i386/mingw32.h (MD_STARTFILE_PREFIX): Remove.
	(STANDARD_STARTFILE_PREFIX_1): Define.
	(STANDARD_STARTFILE_PREFIX_2): Define.
	* doc/tm.texi (STANDARD_STARTFILE_PREFIX_1): Document.
	(STANDARD_STARTFILE_PREFIX_2): Document.

2004-07-01  Richard Henderson  <rth@redhat.com>

	* tree-sra.c (sra_walk_expr): Don't maybe_lookup_element_for_expr
	in order to disable scalarization.  Instead set a flag and wait
	for a candidate decl.

2004-07-01  Joseph S. Myers  <jsm@polyomino.org.uk>

	* doc/cppinternals.texi, doc/install.texi, doc/invoke.texi,
	doc/md.texi, doc/sourcebuild.texi, doc/tm.texi, doc/trouble.texi:
	Use terminology "testsuite" and "enumerated".

2004-07-01  Richard Henderson  <rth@redhat.com>

	* dwarf2out.c (reg_save): Use INVALID_REGNUM.
	(dwarf2out_reg_save, dwarf2out_return_save): Likewise.
	(initial_return_save): Likewise.
	(flush_queued_reg_saves): Remap register numbers.
	(dwarf2out_return_reg): Likewise.

2004-07-01  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* gimplify.c (gimplify_one_sizepos): Don't do anything if any VAR_DECL.

	* tree-pretty-print.c (dump_generic_node, case ARRAY_REF): Use
	access functions for lower bound and element size and only output
	if lower bound nonzero or element size not same as that of type.
	(dump_generic_node, case COMPONENT_REF): Use access func. for offset.

2004-07-01  Paolo Bonzini  <bonzini@gnu.org>

	* c-pretty-print.c (pp_c_postfix_expression): Fix pasto.

2004-07-01  Per Bothner  <per@bothner.com>

	* final.c (final): Fix typo reported by Aaron W. LaFramboise.

2004-07-01  Jakub Jelinek  <jakub@redhat.com>

	* expr.c (expand_assignment): Optimize bitfld += cst for 1 bit
	bitfields as well.  STRIP_NOPS from src operand and PLUS_EXPR's
	first operand.  Don't optimize if the bitfield is volatile.

2004-07-01  Paolo Bonzini  <bonzini@gnu.org>

	* c-pretty-print.c (pp_c_postfix_expression): Handle
	floating-point comparison operators.
	(pp_c_expression): Pass floating-point comparison
	operators to pp_c_postfix_expression.

2004-07-01  Roger Sayle  <roger@eyesopen.com>

	* simplify-rtx.c (simplify_binary_operation) <PLUS, MINUS>: Use
	rtx_cost instead of "had_mult" to determine whether the transformed
	expression is cheaper than the original.

2004-07-01  Jerry Quinn  <jlquinn@optonline.net>

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

2004-07-01  Steven Bosscher  <stevenb@suse.de>

	* stmt.c (check_seenlabel): Remove.
	(pushcase, pushcase_range, expand_end_case_type): Don't call it.

2004-07-01  Richard Henderson  <rth@redhat.com>

	* function.h (struct function): Remove x_function_call_count.
	(function_call_count): Remove.
	* calls.c (expand_call): Don't set it.
	* integrate.c (copy_rtx_and_substitute): Likewise.

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

2004-07-01  Joseph S. Myers  <jsm@polyomino.org.uk>

	PR c/1027
	* c-lang.c (c_initialize_diagnostics): Move from here ...
	* c-objc-common.c: ... to here.  Include "c-pretty-print.h".
	(c_tree_printer): Use pretty-printer to format %T.
	* c-pretty-print.c (pp_c_specifier_qualifier_list): Include space
	before '*' if not C++.
	(pp_c_direct_abstract_declarator): Don't try to print array upper
	bound for flexible array members.
	* c-tree.h: Include "diagnostic.h".
	(c_initialize_diagnostics): Declare.
	* objc/objc-lang.c (LANG_HOOKS_INITIALIZE_DIAGNOSTICS): Define.
	* c-format.c (format_type_warning): New function.  Improve
	diagnostics for incorrect format argument types.
	(check_format_types): Use it.  Add two parameters.  Use the
	TYPE_MAIN_VARIANT of wanted_type.
	(check_format_info_main): Pass new parameters to
	check_format_types.
	(struct format_wanted_type): Update comment.

2004-07-01  Nick Clifton  <nickc@redhat.com>

	* target.h (struct gcc_target): Add new field to struct cxx:
	import_export_class.
	* target-def.h (TARGET_CXX): Initialise the new field.
	(TARGET_CXX_IMPORT_EXPORT_CLASS): Provide a default value for
	the new field.
	* doc/tm.texi: Document the new target hook.

2004-07-01  Paolo Bonzini  <bonzini@gnu.org>

	* builtins.c (fold_builtin_classify): Fix typo.

2004-07-01  Richard Henderson  <rth@redhat.com>

	* function.c (identify_blocks, identify_blocks_1): Remove.
	* function.h (identify_blocks): Remove.
	* rtl.h (NOTE_INSN_BLOCK_BEG): Update comment.

2004-07-01  Paolo Bonzini  <bonzini@gnu.org>

	* builtins.c (fold_builtin_classify): New.
	(fold_builtin_unordered_cmp): Fix commentary.
	(fold_builtin): Use it.
	* builtins.def: Define builtins for isnan,
	isnanf, isnanl, finite, finitef, finitel,
	isinf, isinff, isinfl.

2004-07-01  Richard Henderson  <rth@redhat.com>

	* function.h (struct function): Remove dont_emit_block_notes.
	* gimple-low.c (lower_function_body): Don't set it.
	* cfgexpand.c (expand_block): Don't check it.
	* cfglayout.c (insn_locators_initialize): Likewise.
	* expr.c (expand_expr_real, expand_expr_real_1): Likewise.
	* passes.c (rest_of_compilation): Likewise.
	* stmt.c (expand_start_bindings_and_block): Likewise.
	(expand_end_bindings): Likewise.

2004-07-01  Richard Henderson  <rth@redhat.com>

	* cgraph.h (cgraph_build_static_cdtor): Declare.
	* cgraphunit.c (cgraph_build_static_cdtor): New.
	* c-objc-common.c (build_cdtor): Use it.
	* coverage.c (create_coverage): Likewise.
	* libfuncs.h (LTI_gcov_init, gcov_init_libfunc): Remove.
	* optabs.c (init_optabs): Don't set gcov_init_libfunc.

2004-06-30  Roger Sayle  <roger@eyesopen.com>

	* expmed.c (expand_shift): Consider expanding LSHIFT_EXPR by a
	constant as a sequence of additions depending upon the rtx_costs.
	(synth_mult): Update the "observed" cost of a shift, based upon
	the above optimization.

2004-06-28  Geoffrey Keating  <geoffk@apple.com>
	    Andreas Tobler  <a.tobler@schweiz.ch>

	PR 15813
	* dwarf2out.c (reg_save): Output DW_CFA_same_value when a
	register is saved in itself.
	(initial_return_save): If the return address is a register,
	it's already there, don't bother to mention it in the CFI.
	(struct queued_reg_save): Add field saved_reg.
	(struct reg_saved_in_data): New.
	(regs_saved_in_regs): New.
	(num_regs_saved_in_regs): New.
	(queue_reg_save): Add extra parameter to specify register saved
	in register.  Remove duplicate entries from queue.  Add comment
	for function.
	(flush_queued_reg_saves): Handle registers saved in registers.
	Update regs_saved_in_regs.  Add comment for function.
	(clobbers_queued_reg_save): Add comment for function.  Allow
	for regs_saved_in_regs.
	(reg_saved_in): New.
	(dwarf2out_frame_debug_expr): Handle saving registers in other
	registers.
	(dwarf2out_frame_debug): Reset regs_saved_in_regs.
	* unwind-dw2.c (execute_cfa_program): Correct handling of
	DW_CFA_same_value.  Add FIXME comment about incorrect implementation
	of DW_CFA_restore_extended.
	* config/rs6000/rs6000.c (rs6000_emit_prologue): Let
	dwarf2out_frame_debug_expr see instructions that save registers
	in other registers or save those other registers in memory.

	* unwind-dw2.c (DWARF_FRAME_REGISTERS): Move to unwind-dw2.h.
	(_Unwind_FrameState): Likewise.
	* unwind-dw2.h: New.
	* Makefile.in (LIB2ADDEHDEP): Add unwind-dw2.h.
	* config/rs6000/darwin-fallback.c: New file.
	* config/rs6000/darwin.h (MD_FALLBACK_FRAME_STATE_FOR): Define.
	* config/rs6000/t-darwin (LIB2FUNCS_EXTRA): Add darwin-fallback.o.

2004-07-01  Alan Modra  <amodra@bigpond.net.au>

	* config/rs6000/rs6000.c (rs6000_mixed_function_arg): Rewrite.
	(function_arg): Use rs6000_arg_size rather than CLASS_MAX_NREGS in
	calculating gpr size for altivec.  Simplify and correct
	rs6000_mixed_function_arg calls.  Call rs6000_mixed_function_arg
	for ABI_V4 gpr case too.  Fix off-by-one error in long double
	reg test.  Generate the correct PARALLEL to handle long double
	for ABI_AIX 32-bit.  Use this for -m32 -mpowerpc64 fpr case too.
	(function_arg_partial_nregs): Align before calculating regs left.
	Don't return info on partial fprs when we need info on gprs.
	Correct long double fpr off-by-one error.

2004-06-30  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* pa-protos.h (prefetch_operand): Add prototype.
	* pa.c (prefetch_operand): New function.
	* pa.h (prefetch_operand): Add to PREDICATE_CODES.
	* pa.md (prefetch, prefetch_32, prefetch_64): New prefetch patterns.

2004-06-30  Richard Henderson  <rth@redhat.com>

	* function.h (struct function): Remove x_whole_function_mode_p.
	* c-decl.c (store_parm_decls): Don't set it.
	* tree-optimize.c (tree_rest_of_compilation): Likewise.
	* passes.c (rest_of_compilation): Don't check it.
	* stmt.c (expand_fixup): Likewise.
	* function.c (fixup_var_refs_insn): Remove unused variable.

2004-06-30  Richard Henderson  <rth@redhat.com>

	* tree.h (immediate_size_expand): Delete.
	* stor-layout.c (immediate_size_expand): Delete.
	(variable_size): Don't look at it.
	* c-decl.c (push_parm_decl): Don't frob immediate_size_expand.
	(start_function): Likewise.
	* cfgexpand.c (construct_exit_block): Likewise.
	* function.c (init_function_start, expand_function_end): Likewise.
	* tree-optimize.c (tree_rest_of_compilation): Likewise.

2004-06-30  Richard Henderson  <rth@redhat.com>

	* gimplify.c (gimplify_compound_lval): Take fallback argument
	instead of want_lvalue.
	(gimplify_call_expr): Take want_value argument instead of test
	function.  Gimplify arguments to val only if reg_type; otherwise
	allow lvalue forms.
	(gimplify_expr): Update gimplify_compound_lval and gimplify_call_expr
	calls.
	* tree-gimple.c: Update GIMPLE grammer.  Use true/false not 1/0.
	Tidy commentary globally.
	(get_call_expr_in): Remove RETURN_EXPR handling.  Tidy.
	* tree-gimple.h (is_gimple_call_addr): Mark extern.

	* gimplify.c (gimplify_modify_expr_to_memcpy): Fix typo.

2004-06-30  Richard Henderson  <rth@redhat.com>

	* tree-gimple.c (right_assocify_expr): Kill
	(rationalize_compound_expr): Kill.
	* tree-gimple.h: Likewise.
	* tree-inline.c (expand_call_inline): Don't call it.

	* function.h (struct function): Remove x_last_parm_insn,
	inl_last_parm_insn.
	(last_parm_insn): Remove.
	* function.c (free_after_compilation): Don't clear them.
	(fixup_var_refs_insn, assign_parms): Don't set them.

	* function.c, rtl.h (get_first_nonparm_insn): Remove.

2004-06-30  Joseph S. Myers  <jsm@polyomino.org.uk>

	* c-common.h (check_function_format): Remove first parameter.
	* c-format.c (format_check_context): Remove status.
	(check_format_info, check_format_info_main,
	maybe_read_dollar_number, avoid_dollar_number,
	finish_dollar_format_checking, check_format_types,
	check_function_format): Remove first parameter.  Don't use
	status_warning.
	(check_format_arg): Don't use status_warning.
	(status_warning): Remove.
	* c-common.c (check_function_arguments): Update call to
	check_function_format.

2004-06-30  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* config/sparc/sparc-protos.h (output_cbranch): Constify return
	value.
	(output_v9branch): Likewise.
	(sparc_v8plus_shift): Likewise.  Rename into output_v8plus_shift.
	* config/sparc/sparc.c (output_cbranch): Constify return value.
	Prettify output for delay slots.
	(output_v9branch): Likewise.
	(sparc_v8plus_shift): Constify return value.  Rename into
	output_v8plus_shift.
	* config/sparc/sparc.md (ashldi3_v8plus): Adjust call to
	sparc_v8plus_shift.
	(ashrdi3_v8plus): Likewise.
	(lshrdi3_v8plus): Likewise.
	(call_address_struct_value_sp32): Prettify output for delay slots.
	(call_symbolic_struct_value_sp32): Likewise.
	(call_address_untyped_struct_value_sp32): Likewise.
	(call_symbolic_untyped_struct_value_sp32): Likewise.

2004-06-30  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* common.opt (ftree-loop-optimize): New flag.
	* tree-flow.h (kill_redundant_phi_nodes): Declare.
	* tree-optimize.c (init_tree_optimization_passes): Add pass_loop.
	* tree-pass.h (pass_loop_init, pass_loop_done): Declare.
	* tree-ssa-loop.c (current_loops): New variable.
	(tree_loop_optimizer_init, gate_loop, tree_ssa_loop_init,
	tree_ssa_loop_done): New functions.
	(pass_loop, pass_loop_init, pass_loop_done): New passes.
	* tree-ssa.c (kill_redundant_phi_nodes): Export.
	* doc/invoke.texi (-ftree-loop-optimize): Document.

2004-06-30  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-ssa-loop-ch.c: New file.
	* Makefile.in (tree-ssa-loop-ch.o): Add.
	(tree-into-ssa.o): Add GGC_H dependency.
	* tree-cfg.c (tree_duplicate_bb): Copy virtual arguments.
	* tree-flow.h (rewrite_into_ssa): Declaration changed.
	(rewrite_ssa_into_ssa, compute_global_livein, duplicate_ssa_name):
	Declare.
	* tree-into-ssa.c: Include ggc.h.
	(struct def_blocks_d): Add phi_blocks field.
	(struct mark_def_sites_global_data): Add names_to_rename field.
	(struct ssa_name_info): New.
	(compute_global_livein): Export.
	(set_def_block, insert_phi_nodes, mark_def_sites, set_livein_block,
	insert_phi_nodes_1, rewrite_finalize_block, insert_phi_nodes_for,
	register_new_def, get_reaching_def, def_blocks_free,
	get_def_blocks_for, rewrite_into_ssa): Modified to work with
	rewrite_ssa_into_ssa.
	(get_ssa_name_ann, get_phi_state, set_phi_state, get_current_def,
	set_current_def, ssa_mark_def_sites_initialize_block,
	ssa_mark_phi_uses, ssa_mark_def_sites, duplicate_ssa_name,
	ssa_register_new_def, ssa_rewrite_initialize_block,
	ssa_rewrite_phi_arguments, ssa_rewrite_finalize_block,
	ssa_rewrite_stmt, rewrite_ssa_into_ssa, rewrite_all_into_ssa): New
	functions.
	(pass_build_ssa): Call rewrite_all_into_ssa.
	* tree-optimize.c (execute_todo, execute_one_pass,
	tree_rest_of_compilation): Allocate vars_to_rename only once.
	* tree-ssa-dom.c (tree_ssa_dominator_optimize): Provide parameter
	to rewrite_into_ssa.
	* tree-ssa-loop.c (should_duplicate_loop_header_p,
	mark_defs_for_rewrite, duplicate_blocks, do_while_loop_p,
	copy_loop_headers, gate_ch, pass_ch): Moved to tree-ssa-loop-ch.c.
	Use rewrite_ssa_into_ssa.
	* tree-ssa-operands.c (copy_virtual_operands): New function.
	* tree-ssa-operands.h (copy_virtual_operands): Declare.
	* tree.h (struct tree_ssa_name): Add aux field.
	(SSA_NAME_AUX): New macro to access it.

2004-05-28 Aaron W. LaFramboise <aaronraolete36@aaronwl.com>

	* prefix.c (lookup_key): Cast buffer to LPBYTE.

2004-06-30  Per Bothner  <per@bothner.com>

	Conditionally compile support for --enable-mapped_location.
	* input.h: #include line-map.h for source_location typedef.
	(BUILTINS_LOCATION, UNKNOWN_LOCATION, expand_location,
	LOCATION_FILE, LOCATION_LINE): New macros and functions.
	(expanded_location, source_locus): New typedefs.
	(push_srcloc): Change parameter list if USE_MAPPED_LOCATION.
	* rtl.def (NOTE, ASM_OPERANDS): Modify specifcation, if
	USE_MAPPED_LOCATION.
	* rtl.h (NOTE_DELETED_LABEL_NAME): New macro.
	(NOTE_SOURCE_LOCATION, NOTE_EXPNDED_LOCATION, SET_INSN_DELETED):
	New conditional macros.
	(ASM_OPERANDS_SOURCE_FILE, ASM_OPERANDS_SOURCE_LINE): Replace
	by ASM_OPERANDS_SOURCE_LOCATION if USE_MAPPED_LOCATION.
	* tree.h (EXPR_LOCATION, SET_EXPR_LOCATION, EXPR_HAS_LOCATION,
	EXPR_LOCUS, SET_EXPR_LOCUS, EXPR_FILENAME, EXPR_LINENO,
	DECL_IS_BUILTIN): New macros, most depending on USE_MAPPED__LOCATION.
	(tree_exp): Change type of locus to use new source_locus typedef.
	* tree.c (build1_stat): Use SET_EXPR_LOCATION.
	(annotate_with_locus, annotate_with_file_line): Conditionalize.
	(expand_location): New function.
	* toplev.c (unknown_location): New static, when USE_MAPPED_LOCATION.
	(push_srcloc, pop_loc): Adjust parameter handling.
	(process_options): Don't set input_filename by itself.
	(lang_dependent_init): Save, set input_location to <built-in>.
	(warn_deprecated_use): Use expand_location.

	* basic-block.h (struct edge_def): Use new source_locus typedef.
	* c-common.c (fname_decl): Update save/clear/store of input_location.
	(c_do_switch_warnings): Update for USE_MAPPED_LOCATION case.
	* c-decl.c: Likewise.
	* c-dump.c (dump_stmt): Likewise.
	* c-gimplify.c (c-gimplify.c): Generalize using SET_EXPR_LOCATION.
	* c-lex.c (cb_line_change): If USE_MAPPED_LOCATION use token's	src_loc
	to set input_location direction, rather than using linemap_lookup.
	(fe_file_change, cb_def_pragma): Again use source_location directly.
	* c-opts.c (saved_lineno): Remove static variable.
	(c_common_post_options, c_common_init): Don't bothner to save,
	clear and restore input_Location - now handled by lang_dependent_init.
	* function.c (init_function_start): Use new DECL_IS_BUILTIN macro.
	* xcoffout.c (xcoff_assign_fundamental_type_number): Likewise.
	* tree-mudflap.c (mf_file_function_line_tree): Take a location_t
	rather than a pointer to one.  Use expand_location.
	(mf_varname_tree): Use expand_location.
	* tree-dump.c: Use expand_location on DECL_SOURCE_LOCATION.
	* coverage.c: Likewise.
	* print-tree.c: Likewise.
	* c-aux-info.c (gen_aux_info_record): Likewise.
	* c-parse.in: Use SET_EXPR_LOCATION macro.
	* gimple-low.c: Likewise.
	* tree-mudflap.c: Likewise.
	* gimplify.c: Likewise.  Also use EXPR_LOCATION and EXPR_HAS_LOCATION.
	* c-ppoutput.c: Use new source_location typedef instead of fileline.
	* c-semantics.c: Use new macros.
	* c-typeck.c: Likewise.
	* cfgexpand.c: Handle USE_MAPPED_LOCATION case for function_end_locus.
	* cfglayout.c (insn_locators_initialize): Const cleanup.  New macros.
	* cfgrtl.c (delete_insn): Use new NOTE_DELETED_LABEL_NAME macro.
	* print-rtl.c (print_rtx): Likewise.
	* emit-rtl.c: Don't clear NOTE_SOURCE_FILE if USE_MAPPED_LOCATION.
	* combine.c: Use new SET_INSN_DELETED macro.
	* flow.c: Likewise.
	* haifa-sched.c: Likewise.
	* ifcvt.c: Likewise.
	* recog.c: Likewise.
	* reload1.c: Likewise.
	* diagnostic.c: Use expand_location macro.
	* pretty-print.c (pp_base_format_text): Likewise.
	* profile.c: Likewise.
	* dwarf2out.c: Likewise.  Also use expand_location, DECL_IS_BUILTIN.
	* dwarf2out.c (dwarf2out_decl: Use BUILTINS_LOCATION.
	* emit-rtl.c (emit_line_note): Simplify if USE_MAPPED_LOCATION.
	(force_next_line_note, insn_emit): Handle USE_MAPPED_LOCATION case.
	* final.c (final): Likewise.
	* haifa-sched.c: Likewise.
	* integrate.c: Likewise.
	* jump.c: Likewise.
	* rtl-error.c: Likewise.
	* stmt.c (check_seenlabel): Likewise.
	* tree-pretty-print.c: Likewise.
	* gengtype-lex.l: Temporary kludge to avoid duplicate typedef.
	* gengtype.c: Update for now typdefs in input.h.  More kludges.
	* modulo-sched.c (sms_schedule): Use NOTE_EXPANDED_LOCATION macro.
	* ra-debug.c (ra_print_rtl): Likewise.
	* sched-rgn.c: Likewise.
	* sched-vis.c: Likewise.
	* rtl.h (gen_rtx_ASM_OPERANDS): Redefine if USE_MAPPED_LOCATION.
	* stmt.c (expand_asm_operands): Adjust calls to gen_rtx_ASM_OPERANDS.
	* tree-cfg.c: Use new macros and typedefs.
	* tree-flow-inline.h: Likewise.

2004-06-30  Richard Sandiford  <rsandifo@redhat.com>
	    Eric Christopher  <echristo@redhat.com>

	* config/mips/3000.md: Improve description.

2004-06-30  Paul Brook  <paul@codesourcery.com>

	* config/arm/cirrus.md (cirrus_arm_movdi, cirrus_movsf_hard_insn,
	cirrus_movdf_hard_insn): Set pool ranges for coprocessor loads.

2004-06-30  Sebastian Pop  <pop@cri.ensmp.fr>

	* Makefile.in (OBJS-common): Add tree-chrec.o.
	(tree-chrec.o): New rule.
	(GTFILES): Add tree-chrec.h.
	* gengtype.c (open_base_files): Add tree-chrec.h.
	* tree-chrec.c: New file.
	* tree-chrec.h: New file.
	* tree.def (SCEV_KNOWN, SCEV_NOT_KNOWN, POLYNOMIAL_CHREC): New nodes.

2004-06-30  Roger Sayle  <roger@eyesopen.com>

	* combine.c: Include "output.h" to define dump_file.
	(uid_insn_cost, last_insn_cost): New global variables.
	(combine_insn_cost): New function to estimate cost of an insn.
	(combine_validate_cost): New function to determine whether a
	try_combine replacement sequence is cheaper than the original.
	(combine_instructions): Allocate and populate uid_insn_cost
	array at the start of the combine pass, and deallocate it after.
	(try_combine): Check combine_validate_cost to determine whether
	a "recombination" should be rejected as being more expensive.
	* Makefile.in (combine.o): Add dependency upon output.h.

2004-06-30  Roger Sayle  <roger@eyesopen.com>

	* config/rs6000/rs6000.c (rs6000_rtx_costs) <MINUS_EXPR>: Handle
	subtractions identically to additions, always COSTS_N_INSNS (1).

2004-06-30  J"orn Rennecke <joern.rennecke@superh.com>

	* expmed.c (expand_smod_pow2): Fix sign of mask.

2004-06-29  Diego Novillo  <dnovillo@redhat.com>

	* tree-ssa-pre.c (phi_trans_add): Use is_gimple_min_invariant
	to check for constants.
	(set_remove): Likewise.
	(value_replace_in_set): Likewise.
	(find_leader): Likewise.
	* tree-vn.c (set_value_handle): Likewise.
	(vn_lookup): Likewise.
	(vn_lookup_or_add): Likewise.

2004-06-30  Eric Botcazou  <ebotcazou@libertysurf.fr>

	RTL prologue/epilogue for SPARC
	* config/sparc/sparc-protos.h (sparc_emitting_epilogue): Delete.
	(sparc_skip_caller_unimp): Likewise.
	(load_pic_register): Likewise.
	(leaf_return_peephole_ok): Likewise.
	(compute_frame_size): Rename into sparc_compute_frame_size.
	(sparc_expand_prologue): New prototype.
	(sparc_expand_epilogue): Likewise.
	(output_return): Likewise.
	(eligible_for_epilogue_delay): Rename into eligible_for_return_delay.
	* config/sparc/sparc.h (INITIAL_ELIMINATION_OFFSET): Adjust call to
	compute_frame_size.  Move comment up.
	(DELAY_SLOTS_FOR_EPILOGUE): Delete.
	(ELIGIBLE_FOR_EPILOGUE_DELAY): Likewise.
	(EPILOGUE_USES): Return true for %g1 if the function uses EH return.
	* config/sparc/sparc.md (UNSPECV_SAVEW): New constant.
	(type attribute): Add 'return' and 'savew'.
	(eligible_for_return_delay): New attribute.
	(return): New delay_slot.
	(sibcall_epilogue): Call sparc_expand_epilogue.
	(prologue): Likewise.  Move up.
	(save_register_window): New expander.
	(save_register_windowsi): New pattern.
	(save_register_windowdi): Likewise.
	(epilogue): New expander.
	(return_internal): New pattern.
	(Return peepholes): Delete.
	* config/sparc/sparc.c (SIBCALL_SLOT_EMPTY_P): New macro.
	(sparc_emitting_epilogue): Delete.
	(sparc_skip_caller_unimp): Likewise.
	(sparc_sr_alias_set): New global variable.
	(frame_base_name): Delete.
	(frame_base_reg): New global variable.
	(sparc_override_options): Get new alias set for save/restore.
	(leaf_return_peephole_ok): Delete.
	(eligible_for_epilogue_delay): Rename into eligible_for_return_delay.
	Factor out code into eligible_for_restore_insn_delay.
	(eligible_for_restore_insn_delay): New function extraced from above.
	Use IN_UNCOND_BRANCH_DELAY_TRUE instead of IN_BRANCH_DELAY_TRUE.
	(eligible_for_sibcall_delay): Use SIBCALL_SLOT_EMPTY_P.
	Factor out code into eligible_for_restore_insn_delay.
	(load_pic_register): Make static.  Remove check.
	(save_regs): Delete.
	(restore_regs): Likewise.
	(compute_frame_size): Rename into sparc_compute_frame_size.
	Rename leaf_function into leaf_function_p.
	(build_big_number): Delete.
	(save_or_restore_regs): New function.
	(emit_save_regs): Likewise.
	(emit_restore_regs): Likewise.
	(emit_stack_pointer_increment ): Likewise.
	(emit_stack_pointer_decrement): Likewise.
	(sparc_expand_prologue): Likewise.
	(sparc_function_prologue): Rename into sparc_asm_function_prologue.
	Remove all code to emit instructions.
	(sparc_expand_epilogue): New function.
	(sparc_function_epilogue): Rename into sparc_asm_function_epilogue.
	Remove all code to emit instructions.
	(output_restore): New function.
	(output_return): Likewise.
	(output_sibcall): Factor out code into output_restore.
	(print_operand): Adjust for frame_base_reg.
	* target.h (struct gcc_target): New field 'late_rtl_prologue_epilogue'.
	* target-def.h (TARGET_LATE_RTL_PROLOGUE_EPILOGUE): New define.
	(TARGET_INITIALIZER): Add it.
	* passes.c (rest_of_compilation): Set the conditional predicate
	'current_function_uses_only_leaf_regs' before sched2.  If target
	has 'late_rtl_prologue_epilogue', emit RTL prologue/epilogue right
	before sched2.
	* reorg.c (return_insn_p): New predicate.
	(find_end_label): Use it.
	(relax_delay_slots): Do not thread an unconditional jump that points
	to the end return label.
	* doc/tm.texi (Registers) <Leaf Functions>: Clarify the validity
	domain of 'current_function_uses_only_leaf_regs'.
	(Stack and Calling) <Function Entry>: Document new target hook
	TARGET_LATE_RTL_PROLOGUE_EPILOGUE.

2004-06-30  Jakub Jelinek  <jakub@redhat.com>

	* simplify-rtx.c (simplify_binary_operation): Simplify
	((A & N) + B) & M -> (A + B) & M if M is pow2 minus 1 constant and
	N has at least all bits in M set as well.

	PR tree-optimization/15310
	* expr.c (expand_assignment): Optimize += or -= on a bit field in
	most significant bits.

2004-06-30  Steven Bosscher  <stevenb@suse.de>

	* config/c4x/c4x.md: Fix comment.

2004-06-30  Akos Kiss  <akiss@inf.u-szeged.hu>

	* arm.md (cond_return_inverted): Add "length" attribute.

2004-06-29  Per Bothner  <per@bothner.com>

	* config/i386/winnt.c (i386_pe_encode_section_info): Smash rtlname's
	XSTR in place, so we don't lose SYMBOL_REF_DECL info.

2004-06-29  Zack Weinberg  <zack@codesourcery.com>

	* config/ia64/hpux.h: Target does too support thread-local storage.

2004-06-29  Zack Weinberg  <zack@codesourcery.com>

	* combine.c (distribute_notes): Don't look at global_regs for
	pseudos.

2004-06-29  Richard Henderson  <rth@redhat.com>

	* gimplify.c (gimplify_modify_expr_rhs): Move immediately before
	gimplify_modify_expr.
	(gimplify_init_constructor): Likewise.  Gimplify the null
	CONSTRUCTOR assignment.
	(gimplify_modify_expr_to_memcpy): New.
	(gimplify_modify_expr_to_memset): New.
	(gimplify_modify_expr): Use them.

2004-06-29  Roman Zippel <zippel@linux-m68k.org>

	* web.c (union_defs): use all defs of an instruction to create a
	union with a read/write use

2004-06-29  Richard Henderson  <rth@redhat.com>

	PR middle-end/16216
	* builtins.c (gimplify_va_arg_expr): Check for valist being
	an error_mark_node.

2004-06-29  Jakub Jelinek  <jakub@redhat.com>

	PR target/16195
	* config/rs6000/rs6000.c (rs6000_conditional_register_usage): Make
	r30 fixed if TARGET_TOC && TARGET_MINIMAL_TOC.
	(first_reg_to_save): Pretend call_used_regs[30] is 0 if
	TARGET_TOC && TARGET_MINIMAL_TOC.
	(rs6000_emit_prologue, rs6000_emit_epilogue): Likewise.

2004-06-29  J"orn Rennecke <joern.rennecke@superh.com>

	Fix gcc.dg/builtin-apply2.c failures:
	* sh.h (TARGET_VARARGS_PRETEND_ARGS): Define.
	* sh.c (extra_push): Delete.
	(sh_expand_prologue): Don't do extra stack adjustment for
	current_function_pretend_args_size if it comes from varargs setup.
	Use TARGET_VARARGS_PRETEND_ARGS.  Don't set extra_push.
	(sh_expand_epilogue): Don't use extra_push.
	(sh_setup_incoming_varargs): Set pretend_arg_size when necessary.

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

	* expmed.c (expand_smod_pow2): Provide alternate implementations
	that avoid conditional jumps, and choose between them based upon
	the target's rtx_costs.

2004-06-29  Andrew Pinski  <apinski@apple.com>

	* tree-sra.c: Include expr.h for definition of MOVE_RATIO.
	* Makefile.in (tree-sra.c): Update dependencies.

2004-06-29  Richard Henderson  <rth@redhat.com>

	* tree-sra.c: Rewrite from scratch.  Handle nested aggregates.

2004-06-29  Nathan Sidwell  <nathan@codesourcery.com>

	* vec.h (VEC_T_safe_push, VEC_T_safe_insert): Tweak for when
	size_t is bigger than int.

2004-06-29  Paul Brook  <paul@codesourcery.com>

	* target-def.h (TARGET_CXX_GET_COOKIE_SIZE,
	TARGET_CXX_COOKIE_HAS_SIZE): Define.
	(TARGET_CXX): Use them.
	* target.h (struct gcc_target): Add cxx.get_cookie_size and
	cxx.cookie_has_size.
	* targhooks.c (default_cxx_get_cookie_size): New fucntion.
	* targhooks.h (default_cxx_get_cookie_size): Add prototype.
	* config/arm/arm.c (TARGET_CXX_GET_COOKIE_SIZE,
	TARGET_CXX_COOKIE_HAS_SIZE): Define.
	(arm_get_cookie_size, arm_cookie_has_size): New functions.
	* Make-lang.in (cp/init.o): Add dependency on $(TARGET_H).
	* doc/tm.texi: Document TARGET_CXX_GET_COOKIE_SIZE and
	TARGET_CXX_COOKIE_HAS_SIZE.

2004-06-29  J"orn Rennecke <joern.rennecke@superh.com>

	* cfglayout.c (fixup_reorder_chain): Don't do anything for
	e_fall->dest == EXIT_BLOCK_PTR.

2004-06-28  Richard Henderson  <rth@redhat.com>

	* tree-cfg.c (verify_stmt): Add last_in_block parameter.  Verify
	that eh stmts can throw.
	(verify_stmts): Update verify_stmt call.
	(tree_purge_dead_eh_edges, tree_purge_all_dead_eh_edges): New.
	* tree-eh.c (remove_stmt_from_eh_region): New.
	(lower_eh_constructs): Fix throw_stmt_table delete routine.
	(tree_could_trap_p): Match may_trap_p.
	(maybe_clean_eh_stmt): New.
	* tree-flow.h: Update decls.
	* tree-ssa-ccp.c (pass_ccp): Add TODO_verify_stmts.
	(substitute_and_fold): Clean eh edges.
	* tree-ssa-dce.c (mark_control_dependent_edges_necessary): Handle
	empty basic blocks.
	* tree-ssa-dom.c (need_eh_cleanup): New.
	(tree_ssa_dominator_optimize): Allocate it.  Cleanup eh edges.
	(optimize_stmt): Cleanup eh stmts; set need_eh_cleanup.

2004-06-29  Alan Modra  <amodra@bigpond.net.au>

	* function.c (assign_parms): Don't abort with zero size stack
	parm failing the PARM_BOUNDARY check.

2004-06-28  Diego Novillo  <dnovillo@redhat.com>

	* common.opt (ftree-fre): New flag.
	* flags.h (flag_tree_fre): Declare.
	* opts.c (decode_options): Set.
	* timevar.def (TV_TREE_FRE): Define.
	* tree-flow-inline.h (may_propagate_copy): Re-arrange for
	readability.  Handle destinations that are not SSA_NAMEs.
	* tree-flow.h (struct ptr_info_def): Move from tree.h
	(cprop_into_stmt, cprop_into_successor_phis): Remove.
	(vn_compute, vn_lookup_or_add, vn_add, vn_lookup): Add
	vuse_optype parameter.
	* tree-pass.h (pass_fre): Declare.
	* tree-ssa-copy.c (cprop_operand): Move to tree-ssa-dom.c
	(cprop_into_stmt): Likewise.
	(cprop_into_successor_phis): Likewise.
	* tree-ssa-dom.c (eliminate_redundant_computations): Fix
	argument ordering in call to may_propagate_copy.
	* tree-ssa-pre.c (is_undefined_value): Assume hard registers
	to be always defined.
	(add_to_sets): New local function.
	(create_value_expr_from): New local function.
	(compute_avail): Call them.
	(eliminate): Don't ignore statements with virtual operands.
	(init_pre): New local function.
	(fini_pre): New local function.
	(execute_pre): Call them.
	Add argument DO_FRE.  Don't do insertion if DO_FRE is true.
	(do_pre): New function.
	(do_fre): New function.
	(gate_fre): New function.
	(pass_fre): Declare.
	* tree-ssa.c (init_tree_ssa): Don't call vn_init.
	(delete_tree_ssa): Don't call vn_delete.
	* tree-vn.c (val_expr_pair_d): Add documentation.
	(vn_compute): Add VUSES argument to incorporate in computing
	hash values.  Update all callers.
	(expressions_equal_p): Call operand_equal_p with
	OEP_PURE_SAME.
	(vn_add): Add VUSES argument.  Update all callers.
	(vn_lookup): Likewise.
	(vn_lookup_or_add): Likewise.
	* doc/invoke.texi: Document -ftree-fre and -fdump-tree-fre.

2004-06-28  Steven Bosscher  <stevenb@suse.de>

	* config/m32r/m32r.c (m32r_sched_odd_word_p, m32r_adjust_cost,
	m32r_sched_init, m32r_sched_reorder, m32r_variable_issue): Remove.
	(TARGET_SCHED_ADJUST_COST, TARGET_SCHED_VARIABLE_ISSUE,
	TARGET_SCHED_INIT, TARGET_SCHED_REORDER): Don't define.
	* config/m32r/m32r.md: Rewrite the pipeline description as a DFA.

2004-06-28  Richard Henderson  <rth@redhat.com>

	* tree.def (REALPART_EXPR, IMAGPART_EXPR): Change class to 'r'.
	* fold-const.c (operand_equal_p <case 'r'>): Add REALPART_EXPR,
	IMAGPART_EXPR.
	* tree-dump.c (dequeue_and_dump): Handle REALPART_EXPR and
	IMAGPART_EXPR explicitly.
	* tree-inline.c (estimate_num_insns_1): Don't handle REALPART_EXPR
	and IMAGPART_EXPR specially.
	* tree.c (build1_stat): Copy TREE_THIS_VOLATILE into class 'r'.

2004-06-28  J"orn Rennecke <joern.rennecke@superh.com>

	* config.gcc (sh*-*elf*): Remove dead assignment of sh_multilibs.

2004-06-28  Joseph S. Myers  <jsm@polyomino.org.uk>

	* builtins.def (execl, execlp, execle, execv, execvp, execve,
	fork): Change to DEF_EXT_LIB_BUILTIN.

2004-06-28  Roger Sayle  <roger@eyesopen.com>

	* expmed.c (expand_smod_pow2): New function to expand signed
	remainder by a constant power of 2, such as "x % 16".
	(expand_divmod): Call new expand_smod_pow2 when appropriate.
	Minor corrections to comments, e.g. wrapping long lines.

2004-06-28  Ulrich Weigand  <uweigand@de.ibm.com>

	* Makefile.in (vec.o): Fix dependencies.

2004-06-28  Andreas Tobler <a.tobler@schweiz.ch>

	* Makefile.in: Fix parallel make dependency problem on vec.o.

2004-06-28  Dhananjay Deshpande  <dhananjayd@kpitcummins.com>

	PR target/14041
	* config/h8300/h8300.h (ASM_OUTPUT_ALIGNED_BSS): Define.

2004-06-28  Nathan Sidwell  <nathan@codesourcery.com>

	* tree.h (tree_check_failed): Make varadic.
	(tree_not_check_failed): New prototype.
	(tree_check2_failed, tree_check3_failed,
	tree_check4_failed, tree_check5_failed): Remove.
	(TREE_CHECK, TREE_CHECK2, TREE_CHECK3, TREE_CHECK4,
	TREE_CHECK5): Adjust.
	(TREE_NOT_CHECK, TREE_NOT_CHECK2, TREE_NOT_CHECK3, TREE_NOT_CHECK4,
	TREE_NOT_CHECK5): New.
	(TREE_VEC_ELT_CHECK, PHI_NODE_ELT_CHECK, TREE_OPERAND_CHECK_CODE,
	TREE_RTL_OPERAND_CHECK): Adjust.
	* tree.c (tree_check_failed): Make varadic.
	(tree_not_check_failed): New.
	(tree_check2_failed, tree_check3_failed,
	tree_check4_failed, tree_check5_failed): Remove.

2004-06-28  Ulrich Weigand  <uweigand@de.ibm.com>

	* combine.c (can_combine_p): Do not prevent building insns that use
	and clobber the same fixed hard register.
	(reg_dead_at_p): Likewise.

2004-06-28  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* tree-sra.c (is_sra_candidate_ref): Remove second arg; all callers
	changed.
	(is_sra_candidate_complex_ref): New function.
	(scalarize_modify_expr): Call it and check for LHS also.

	* tree-pretty-print.c (dump_function_declaration): New.
	(dump_generic_node, case FUNCTION_TYPE): Call it.
	(dump_generic_node, case RECORD_TYPE): Don't output dup semicolon.
	(dump_generic_node, case DECL_EXPR): New case.
	(dump_generic_node, case PLACEHOLDER_EXPR): Handle.
	(print_declaration): Handle type and function declarations.

	* tree-nested.c (create_tmp_var_for): Allow ARRAY_TYPE.
	(convert_nonlocal_reference, convert_local_reference): Properly
	convert nest of handled component references.

2004-06-28  Nathan Sidwell  <nathan@codesourcery.com>

	* vec.h, vec.c: New, type safe vector API.
	* Makefile.in (OBJS-common): Add vec.o.
	(vec.o): New target.
	(gengtype-lex.o): Depend on vec.h.

2004-06-28  Paolo Bonzini  <bonzini@gnu.org>

	* fold-const.c (fold_cond_expr_with_comparison): Add ARG1
	parameter.  Use it instead of ARG00 to produce the result.

2004-06-28  Alexandre Oliva  <aoliva@redhat.com>

	* config/mn10300/mn10300-protos.h (legitimate_address_p): Declare.
	* config/mn10300/mn10300.c (legitimate_address_p): New.  Test that
	index is legitimate, compared with code moved from...
	* config/mn10300/mn10300.h (GO_IF_LEGITIMATE_ADDRESS): here.
	(REG_STRICT): Define, according to REG_OK_STRICT.
	(REGNO_IN_RANGE_P, REGNO_DATA_P, REGNO_ADDRESS_P, REGNO_SP_P,
	REGNO_EXTENDED_P, REGNO_AM33_P, REGNO_FP_P): Introduce strict
	argument.
	(REGNO_STRICT_OK_FOR_BASE_P, REGNO_STRICT_OK_FOR_BIT_BASE_P,
	REGNO_STRICT_OK_FOR_INDEX_P): New.
	(REGNO_OK_FOR_BASE_P, REG_OK_FOR_BASE_P, REGNO_OK_FOR_BIT_BASE_P,
	REG_OK_FOR_BIT_BASE_P, REGNO_OK_FOR_INDEX_P, REG_OK_FOR_INDEX_P,
	RTX_OK_FOR_BASE_P): Use them.

2004-06-28  Ben Elliston  <bje@au.ibm.com>

	* doc/cfg.texi (Basic Blocks): Define dominators.

2004-06-27  Andrew Pinski  <pinskia@physics.uc.edu>

	PR c++/16205
	* c-common.c (warn_for_collisions_1): Warn for only decls which
	have a name.

	PR c++/15145
	* c.opt (Wsequence-point): Enable for C++ and ObjC++.

	PR c/14963
	* c-decl.c (start_decl): Check for null types.

2004-06-27  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.c (rs6000_legitimate_offset_address_p):
	Accept TOC addresses.

2004-06-27  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390-protos.h (s390_load_got): Update prototype.
	* config/s390/s390.c (struct machine_function): Add member base_reg.
	(s390_decompose_address): Accept UNSPEC_LTREF.  Simplify logic.
	(s390_split_branches): Annotate late pool references.
	(annotate_constant_pool_refs): New function.
	(find_constant_pool_ref): Work on annotated pool references.
	(replace_constant_pool_ref): Likewise.  Use explicit base.
	(replace_ltrel_base): Use explicit base.
	(s390_mainpool_start): Reflect main_pool pattern change.
	(s390_mainpool_finish): Use base register from main_pool.
	Update calls to replace_ltrel_base and replace_constant_pool_ref.
	(s390_chunkify_start): Use base_reg from struct machine_function.
	(s390_chunkify_finish): Remove base_reg argument.  Update calls
	to replace_ltrel_base and replace_constant_pool_ref.
	(s390_reorg): Don't decide upon base register.  Update calls.
	(s390_load_got): Remove MAYBE_DEAD handling.  Do not emit insns
	but return sequence instead.
	(s390_emit_prologue): Decide upon base register to use.  Annotate
	all literal pool references.  Adapt to main_pool pattern change.
	Update s390_load_got call; move MAYBE_DEAD handling here.
	(s390_emit_epilogue): Annotate late literal pool references.
	Remove barrier before register restore instruction.
	* config/s390/s390.md (UNSPEC_LTREF): New constant.
	("builtin_setjmp_receiver"): Update s390_load_got call.
	("main_pool"): Explicitly reference base register.

2004-06-27  Roger Sayle  <roger@eyesopen.com>

	* fold-const.c (fold) <BIT_IOR_EXPR>: Optimize ~X|X and X|~X as -1.
	<BIT_XOR_EXPR>: Optimize ~X|X and X|~X as -1.
	<BIT_AND_EXPR>: Optimize ~X&X and X&~X as 0.
	<TRUTH_AND_EXPR, TRUTH_ANDIF_EXPR>: Optimize !X&&X and X&&!X as false.
	<TRUTH_OR_EXPR, TRUTH_ORIF_EXPR>: Optimize !X||X and !X||X as true.
	<TRUTH_XOR_EXPR>: Optimize !X^X and X^X! as true.  Now that
	TRUTH_XOR_EXPR is a commutative tree code, don't test whether arg0
	is a constant.

2004-06-26  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* c-common.c (c_safe_from_p, c_walk_subtrees): Deleted.
	* c-common.def (DECL_STMT): Remove.
	* c-common.h (DECL_STMT_DECL): Deleted.
	(COMPOUNT_LITERAL_EXPR_DECL): Use DECL_EXPR_DECL.
	(c_safe_from_p, c_walk_subtrees): Deleted.
	* c-decl.c, c-parse.in, c-pretty-print.c: DECL_STMT now DECL_EXPR.
	* c-dump.c (c_dump_tree, case DECL_STMT): Deleted.
	* c-gimplify.c (gimplify_decl_stmt): Deleted.
	(gimplify_compound_literal_expr): Use DECL_EXPR_DECL
	and gimplify_and_add.
	(c_gimplify_expr, case DECL_EXPR): New case.
	(c_gimplify_expr, case DECL_STMT): Deleted.
	* c-lang.c (LANG_HOOKS_SAFE_FROM_P): Likewise.
	(LANG_HOOKS_TREE_INLINING_WALK_SUBTREES): Likewise.
	* expr.c (safe_from_p, case 's'): New case.
	* gimplify.c (gimplify_decl_expr): New function.
	(gimplify_expr, case DECL_EXPR): New case.
	* tree-inline.c (walk_tree): Walk into all fields of a type and
	decl only if they are in a DECL_EXPR.
	(mark_local_for_remap_r): Minor code cleanup.
	* tree-outof-ssa.c (discover_nonconstant_array_refs_r): Add else.
	* tree.c (has_cleanups, case DECL_EXPR): New case.
	* tree.def (DECL_EXPR): New code.
	* tree.h (DECL_EXPR_DECL): New macro.

	* objc/objc-lang.c (LANG_HOOKS_SAFE_FROM_P): Deleted.

2004-06-26  Andrew Pinski  <pinskia@physics.uc.edu>

	PR 13334
	* doc/install.texi: Document non-standard CFLAGS and bootstrap
	failures and warnings.

2004-06-26  Andrew Haley  <aph@redhat.com>

	* emit-rtl.c (set_mem_attributes_minus_bitpos): Check
	TREE_THIS_NOTRAP when setting MEM_NOTRAP_P.
	* tree-eh.c (tree_could_trap_p): Check TREE_THIS_NOTRAP.
	* tree.h (TREE_THIS_NOTRAP): New.

2004-06-26  Kaz Kojima  <kkojima@gcc.gnu.org>

	* genattrtab.c (write_test_expr): Put a unsigned cast before
	the first operand for GEU, GTU, LEU and LTU.

2004-06-26  Kazu Hirata  <kazu@cs.umass.edu>

	* c-typeck.c, cfgexpand.c, ddg.c, ddg.h, df.c, fold-const.c,
	gcov.c, gimplify.c, modulo-sched.c, passes.c, tree-cfg.c,
	tree-mudflap.c, tree-nrv.c, tree-outof-ssa.c, tree-ssa-dom.c,
	tree-ssa-dse.c, tree-ssa-operands.c, tree-ssa-pre.c,
	tree-tailcall.c: Fix comment typos.  Follow spelling
	conventions.

2004-06-25  Eric Christopher  <echristo@redhat.com>

	* config/mips/mips.md: Add back scheduling exclusion info.

2004-06-25  Roger Sayle  <roger@eyesopen.com>

	* ifcvt.c (seq_contains_jump): Delete function.
	(end_ifcvt_sequence): Replace call to seq_contains_jump with an
	inline test for a jump instruction in the existing "insn" loop.
	(block_fallthru): Document function.

2004-06-25  Philip Blundell  <philb@gnu.org>

	PR wrong-code/15089
	* loop.c (scan_loop): Do not move user-specified register
	assignments.

2004-06-25  DJ Delorie  <dj@redhat.com>

	* c-common.h (warn_cast_qual, warn_missing_format_attribute,
	warn_pointer_arith, warn_missing_prototypes, warn_parentheses,
	warn_missing_braces, warn_sign_compare, warn_long_long,
	warn_redundant_decls, warn_float_equal, warn_char_subscripts,
	warn_conversion, warn_format_y2k, warn_format_extra_args,
	warn_format_zero_length, warn_format_nonliteral,
	warn_format_security, mesg_implicit_function_declaration,
	warn_bad_function_cast, warn_traditional,
	warn_declaration_after_statement, warn_strict_prototypes,
	warn_missing_declarations, warn_nested_externs,
	warn_sequence_point, warn_init_self, warn_div_by_zero,
	warn_implicit_int, warn_nonnull, warn_old_style_definition,
	warn_selector, warn_undeclared_selector, warn_protocol,
	warn_abi, warn_invalid_offsetof, warn_ctor_dtor_privacy,
	warn_overloaded_virtual, warn_nonvdtor, warn_reorder,
	warn_synth, warn_pmf2ptr, warn_ecpp, warn_sign_promo,
	warn_old_style_cast, warn_nontemplate_friend,
	warn_deprecated): Remove explicit declarations.
	* c-common.c: Likewise, remove explicit definitions.
	* c-opts.c: Likewise, remove explicit assignments.
	* c.opts: Likewise, add implicit declare/define/assign.

2004-06-25  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* gimplify.c (lookup_tmp_var): Set TREE_READONLY in is_formal case.
	(build_addr_expr_with_type): Deleted.
	(build_addr_expr): Deleted; callers changed to build_fold_addr_expr.
	(gimplify_compound_lval): Make two passes over reference nest.

	* tree-nested.c (build_addr): Merge real/imagpart with
	handled_component_p.
	(convert_nonlocal_reference, convert_local_reference): Process extra
	args to COMPONENT_REF and ARRAY_REF.
	* tree-outof-ssa.c (discover_nonconstant_array_refs_r): Check for
	lower bound and field offset being constant.

2004-06-25  Mark Mitchell  <mark@codesourcery.com>

	PR wrong-code/16129
	* alias.c (get_alias_set): Adjust setting of
	DECL_POINTER_ALIAS_SET for pointers to aggregates.

2004-06-24  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* tree-inline.c (remap_type): Arrange to have just one pointer type
	for each type, mode, and 'can alias' value.
	(setup_one_parameter): Remap type when making VAR_DECL for PARM_DECL.
	(estimate_num_insns_1): Minor code reformatting.
	(inline_forbidden_p_1): Likewise; add; missing return statement.

2004-06-25  Roger Sayle  <roger@eyesopen.com>

	PR middle-end/15825
	* ifcvt.c (unshare_ifcvt_sequence): Rename to end_ifcvt_sequence.
	Use get_isns and end_sequence instead of accepting a seq argument.
	Scan the instruction sequence for unrecognizable or jump insns.
	(noce_try_move, noce_try_store_flag, noce_try_store_flag_constants,
	noce_try_addcc, noce_try_store_flag_mask, noce_try_cmove,
	noce_try_cmove_arith, noce_try_minmax, noce_try_abs,
	noce_try_sign_mask): Use end_ifcvt_sequence to factor common code.

2004-06-24  Jeff Law  <law@redhat.com>

	* gimplify.c (gimplify_compound_lval): Reset TREE_SIDE_EFFECTS
	after gimplifying the innermost component.

2004-06-25  Richard Sandiford  <rsandifo@redhat.com>

	PR target/16176
	* config/mips/mips.c (mips_expand_unaligned_load): Use a temporary
	register for the destination of the lwl or ldl.

2004-06-25  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* tree-dfa.c (get_virtual_var): Merge real/imaginary parts with
	handled_component_p handling.
	* tree-gimple.c (get_base_address): Likewise and fix typo that
	caused both recursion and looping.

	* tree-cfg.c (verify_expr): Add macro CHECK_OK.
	Properly test for nest of handled_components in LHS context.

2004-06-25  Devang Patel  <dpatel@apple.com>

	* doc/tree-ssa.texi: Document info about MODIFY_EXPR's type

2004-06-25  Paul Brook  <paul@codesourcery.com>

	* target-def.h (TARGET_CXX_GUARD_TYPE, TARGET_CXX_GUARD_MASK_BIT,
	TARGET_CXX): Define.
	(TARGET_INITIALIZER): Use TARGET_CXX.
	* target.h (struct gcc_target): Add struct cxx.
	* targhooks.h (default_cxx_guard_type): Add prototype.
	* targhooks.c (default_cxx_guard_type): New function.
	* config/arm/arm.c (TARGET_CXX_GUARD_TYPE, TARGET_CXX_GUARD_MASK_BIT):
	Define.
	(arm_cxx_guard_type, arm_cxx_guard_mask_bit): New functions.
	* doc/tm.texi: Document TARGET_CXX_GUARD_TYPE and
	TARGET_CXX_GUARD_MASK_BIT.

2004-06-25  Devang Patel  <dpatel@apple.com>

	* config/rs6000/darwin.h (CC1_SPEC): Handle -gused and -gfull.
	* config/i386/darwin.h (CC1_SPEC): Same.

2004-06-25  Mark G. Adams  <mark.g.adams@sympatico.ca>

	* dbxout.h: Add include guards

2004-06-25  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __ARM_EABI__.

2004-06-25  Richard Earnshaw  <rearnsha@arm.com>

	* arm.c (arm_arch4t): New variable.
	(arm_override_options): Initialize it.  If compiling for armv5 or
	higher clear TARGET_INTERWORK.
	(output_call): Abort if called for armv5.  Use BX if it's available.
	(output_call_mem): Use BLX if available and ensure that all armv5
	code is interworking safe.
	(output_return_instruction): Always use BX in preference to MOV if
	it's available.
	(arm_output_epilogue): Likewise.
	(arm_final_prescan_insn): Never conditionally call a subroutine
	on armv5.
	* arm.h (arm_arch4t): Declare.
	* arm.md (call_reg_armv5, call_value_reg_armv5): New.
	(call_reg_arm, call_value_reg_arm): Renamed from call_reg and
	call_value_reg respectively.
	(call_reg_thumb_v5, call_value_reg_thumb_v5): New.
	(call_reg_thumb, call_value_reg_thumb): Renamed from call_indirect
	and call_value_indirect respectively.

2004-06-25  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.c (reg_or_const_float_1_operand): Reimplement
	in terms of const_float_1_operand.

2004-06-25  Richard Sandiford  <rsandifo@redhat.com>

	PR target/16144
	* config/mips/mips.md (divsf, divdf): Don't FAIL if the first operand
	is 1.0; force it into a register instead.

2004-06-25  Bernardo Innocenti  <bernie@develer.com>

	* config/m68k/m68k.h: Restore valid comment removed by mistake with
	the recent m68k comments cleanup.

2004-06-24  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* c-gimplify.c (gimplify_for_stmt): Use gimplify_and_add.
	* gimplify.c (internal_get_tmp_var, gimplify_return_expr): Likewise.
	(gimplify_loop_expr, gimplify_init_constructor): Likewise.
	(gimplify_self_mod_expr, gimplify_cond_expr): Likewise.

	PR/16131
	* gimplify.c (voidify_wrapper_expr): Allow TARGET_EXPR.

	* gimplify.c: Remove unneeded forward declarations.

	* gimplify.c (append_to_compound_expr): Deleted.
	* tree-gimple.h (append_to_compound_expr): Deleted.

	* fold-const.c (fold_addr_expr_with_type): Look through all
	valid LHS modifiers to find a base to mark addressable.

	* tree.h (debug_find_tree): Add declaration.
	* tree-inline.c (debug_find_tree): Remove extern declaration.

2004-06-24  Eric Christopher  <echristo@redhat.com>

	* config/rs6000/rs6000.md: Apply change mistakenly
	deleted with 2004-06-22 patch.

2004-06-24  Richard Henderson  <rth@redhat.com>

	* c-decl.c (c_in_iteration_stmt, c_in_case_stmt): Remove.
	(c_break_label, c_cont_label): New.
	(start_function): Update initializations.
	(c_push_function_context): Update saves.
	(c_pop_function_context): Update restores.
	* c-parse.in: Update expected conflicts.
	(stmt_count, compstmt_count): Remove.  Remove all updates.
	(if_prefix, simple_if, do_stmt_start): Remove.
	(lineno_labeled_stmt): Remove.
	(lineno_labels): New.
	(c99_block_lineno_labeled_stmt): Use it.
	(lineno_stmt, lineno_label): Don't clear EXPR_LOCUS before calling
	annotate_with_locus.
	(select_or_iter_stmt): Replace by ...
	(condition, if_statement_1, if_statement_2, if_statement,
	start_break, start_continue, while_statement, do_statement,
	for_cond_expr, for_incr_expr, for_statement, switch_statement): New.
	(stmt): Split out ...
	(stmt_nocomp): ... this.  Use c_finish_bc_stmt, c_finish_goto_label,
	c_finish_goto_ptr.
	* c-semantics.c (add_stmt): Don't add line numbers to labels.
	* c-tree.h: Update prototypes.
	(struct language_function): Remove x_in_iteration_stmt, x_in_case_stmt;
	add x_break_label, x_cont_label, x_switch_stack.
	(c_switch_stack): Declare.
	* c-typeck.c (c_finish_goto_label, c_finish_goto_ptr): New.
	(c_finish_return): Return the statement.
	(c_switch_stack): Rename from switch_stack; export.
	(if_elt, if_stack, if_stack_space, if_stack_pointer): Remove.
	(c_begin_if_stmt, c_finish_if_cond, c_finish_then, c_begin_else,
	c_finish_else): Remove.
	(c_finish_if_stmt): Rewrite to perform the entire operation.
	(c_begin_while_stmt, c_finish_while_stmt_cond, c_finish_while_stmt,
	c_begin_for_stmt, c_finish_for_stmt_init, c_finish_for_stmt_cond,
	c_finish_for_stmt_incr, c_finish_for_stmt): Remove.
	(c_finish_loop): New.
	(c_finish_bc_stmt): New.
	(c_finish_expr_stmt): Return the statement.  Split out...
	(c_process_expr_stmt): ... this.  Don't add locus to error marks.
	* gimplify.c (gimplify_cond_expr): Accept NULL type statements.
	* tree-gimple.c (is_gimple_stmt): Likewise.
	* tree-pretty-print.c (dump_generic_node <COND_EXPR>): Likewise.
	(print_struct_decl): Delete empty compound statement.
	* objc/objc-act.c (objc_build_throw_stmt): Return the statement.
	* objc/objc-act.h: Update decl.

2004-06-24  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* tree-pretty-print.c (dump_generic_node, case TYPE_DECL):
	Don't look at TYPE_METHODS unless RECORD_TYPE or UNION_TYPE.

2004-06-24  Andrew Pinski  <apinski@apple.com>

	* objc-act.c (build_objc_method_call): Save the lookup_object
	so we do not call it twice.

2004-06-24  Richard Henderson  <rth@redhat.com>

	* tree-ssa-dom.c (real_avail_expr_hash): New.
	(tree_ssa_dominator_optimize): Use it in the htab.

2004-06-24  Frank Ch. Eigler  <fche@redhat.com>

	* tree-mudflap.c (mx_register_decls): Add third (type) argument
	to synthesized __mf_unregister call.

2004-06-24  Roger Sayle  <roger@eyesopen.com>

	PR middle-end/15239
	* expmed.c (expand_mult): Remove artificial restriction on the
	maximum cost of a synthetic multiplication sequence.

2004-06-24  Eric Christopher  <echristo@redhat.com>

	* combine.c (distribute_notes): Don't delete sets to
	global register variables.

2004-06-24  Jakub Jelinek  <jakub@redhat.com>

	* config/i386/i386.md (ffsdi2, clzdi2): New expanders.
	(ffs_rex64): New splitter.
	(ffsdi_1, ctzdi2, bsr_rex64): New instructions.

2004-06-24  Andrew Pinski  <apinski@apple.com>

	* config/darwin7.h (MATH_LIBRARY): Remove.
	(LIB_SPEC): Define.
	* config/darwin.h (MATH_LIBRARY): Define always to empty.
	(LIB_SPEC): Only define if not already defined.

2004-06-24  Revital Eres  <eres@il.ibm.com>

	* loop-iv.c (iv_analyze, simple_set_p): Support for identifying
	shifts of induction variable.
	(iv_shift): New function.

2004-06-24  Richard Henderson  <rth@redhat.com>

	* gimplify.c (gimplify_body): Watch for body vanishing.

2004-06-24  Jeff Law  <law@redhat.com>

	* tree-ssa-dom.c (record_dominating_conditions): New function.
	(dom_opt_finalize_block, get_eq_expr_value): Use it.

2004-06-24  Richard Sandiford  <rsandifo@redhat.com>

	* calls.c (shift_returned_value): Fix handling of non-integer
	TYPE_MODEs.

2004-06-24  Ulrich Weigand  <uweigand@de.ibm.com>

	* c-decl.c (finish_function): Do not check for DEFAULT_MAIN_RETURN.
	* system.h (DEFAULT_MAIN_RETURN): Poison.
	* doc/tm.texi (DEFAULT_MAIN_RETURN): Remove documentation.

2004-06-24  Ben Elliston  <bje@au.ibm.com>

	* doc/cfg.texi (Edges): Fix typo.

2004-06-24  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (arm_output_epilogue): Remove excess checks.

2004-06-23  Andrew Pinski  <apinski@apple.com>

	PR middle-end/15988
	* fold-const.c (fold_convert): Types which are compatible
	can be converted with only a NOP_EXPR.

2004-06-24  Alan Modra  <amodra@bigpond.net.au>

	* calls.c (expand_call): Call INIT_CUMULATIVE_ARGS earlier, and
	pass raw n_named_args to it.
	* targhooks.c: Formatting.
	(hook_bool_CUMULATIVE_ARGS_false): Correct comment.

2004-06-23  Richard Henderson  <rth@redhat.com>

	* c-gimplify.c (gimplify_decl_stmt): Push gimplify_one_sizepos inside
	non-constant size check.  Gimplify the type too.  Tidy building
	BUILT_IN_STACK_ALLOC call.

2004-06-23  Roger Sayle  <roger@eyesopen.com>

	* c-common.c (expand_unordered_cmp): Delete.
	(expand_tree_builtin): Delete.
	* c-common.h (expand_tree_builtin): Delete function prototype.
	* c-typeck.c (build_function_call): Don't call expand_tree_builtin.

2004-06-23  Richard Henderson  <rth@redhat.com>

	* gimplify.c (gimplify_compound_lval): Don't set ARRAY_REF or
	COMPONENT_REF variable fields unless they're non-constant.

2004-06-23  Robert Millan  <robertmh@gnu.org>

	* config.gcc: Merge kfreebsd*-gnu with linux* and add knetbsd*-gnu.
	* config/i386/linux.h: Allow overriding of LINK_EMULATION,
	  DYNAMIC_LINKER and register names in sc_ structure.
	* config/kfreebsd-gnu.h: New. kfreebsd-gnu followup for linux.h.
	* config/i386/kfreebsd-gnu.h: New. Ditto for i386-kfreebsd-gnu.
	* config/knetbsd-gnu.h: New. Ditto for knetbsd-gnu.
	* config/i386/knetbsd-gnu.h: New. Ditto for i386-knetbsd-gnu.

	* config/kfreebsdgnu.h: Remove.
	* config/t-kfreebsd-gnu: Likewise.
	* config/i386/kfreebsdgnu.h: Likewise.

2004-06-23  Eric Christopher  <echristo@redhat.com>

	* fold-const.c (make_range): Cleanup type checking through function.
	Remove orig_type. Replace with checks to exp_type and arg0_type.
	Clarify comment when converting from unsigned to signed.

2004-06-23  Eric Christopher  <echristo@redhat.com>

	* config/mips/mips.c (mips_use_dfa_pipeline_interface): Add R3000.
	* config/mips/mips.md: Remove R3000 scheduling description.
	* config/mips/3000.md: New file.

2004-06-23  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390-protos.h (s390_emit_compare): Add prototype.
	(s390_emit_jump): Likewise.
	* config/s390/s390.c (s390_emit_compare): New function.
	(s390_emit_jump): Likewise.
	* config/s390/s390.md ("beq", "bne", "bgt", "bgtu", "blt", "bltu",
	"bge", "bgeu", "ble", "bleu", "bunordered", "bordered", "buneq",
	"bungt", "bunlt", "bunge", "bunle", "bltgt"): Use s390_emit_compare
	and s390_emit_jump.
	("cjump"): Remove, replace by ...
	("*cjump_64", "*cjump_31"): ... these insns.  Improve length default.
	("icjump", "*icjump_64", "*icjump_31"): Likewise.
	("trap"): Fix type attribute.
	("conditional_trap"): Use s390_emit_compare.
	("doloop_si"): Remove, replace by ...
	("doloop_si64", "doloop_si31"): ... these new insn_and_split.
	Merge existing splitter into insn_and_split.  Improve length default.
	("doloop_di"): Merge with existing splitter into insn_and_split.
	("doloop"): Adapt.
	("jump"): Convert to expander.  Use s390_emit_jump.
	("*jump_64", "*jump_31"): New insns.  Improve length default.

2004-06-23  Wu Yongwei  <adah@sh163.net>

	* gthr-win32.h (__GTHREAD_MUTEX_INIT_DEFAULT): Adjust.
	(__gthr_i486_lock_cmp_xchg): New inline assembly function.
	(__GTHR_W32_InterlockedCompareExchange): New macro to choose a
	suitable function for interlocked compare-and-exchange.
	(__gthread_mutex_trylock): Use
	__GTHR_W32_InterlockedCompareExchange.
	(__gthread_mutex_init_function, __gthread_mutex_lock,
	__gthread_mutex_trylock, __gthread_mutex_unlock): Adjust the
	initial counter value to work correctly under Windows 95.
	* config/i386/gthr-win32.c: Adjust include order.
	Define __GTHREAD_I486_INLINE_LOCK_PRIMITIVES before including
	gthr-win32.h.
	(__gthr_win32_mutex_init_function, __gthr_win32_mutex_lock,
	__gthr_win32_mutex_trylock, __gthr_win32_mutex_unlock): Adjust
	to match inline versions in gthr-win32.h.

2004-06-23  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.c (rs6000_use_dfa_pipeline_interface): Delete.
	(TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE): Redefine a hook_int_void_1.
	(insvdi_rshift_rlwimi_p): New function.
	* config/rs6000/rs6000.md (insvdi_internal2/3): New patterns.
	(extendsfdf2): Convert to define_insn_and_split.
	* config/rs6000/rs6000-protos.h (insvdi_rshift_rlwimi_p): Prototype.

2004-06-23  Andrew Pinski  <apinski@apple.com>

	* c-typeck.c (composite_type, <case ARRAY_TYPE>): Abort if we have
	type qualifiers at all.
	If both of the type domains are null and the new element type is
	the same as one of the, return the one which the element type.
	matches.
	Do not call qualify_type on the new type.

2004-06-23  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.h (DEFAULT_MAIN_RETURN): Remove.

2004-06-23  Roger Sayle  <roger@eyesopen.com>

	* convert.c (strip_float_extension): Skip both NOP_EXPR and
	CONVERT_EXPR floating point extensions.

2004-06-23  Diego Novillo  <dnovillo@redhat.com>

	* Makefile.in (tree-vn.o): New.
	(tree-ssa-pre.o): Don't depend on RTL_H.
	* tree-dfa.c (find_referenced_vars): Don't call init_tree_ssa.
	* tree-flow.h (struct var_ann_d): Remove field expr_set.
	(add_to_value, expressions_equal_p, get_value_handle, vn_compute,
	vn_lookup_or_add, vn_add, vn_lookup, vn_init, vn_delete): Declare.
	* tree-optimize.c (execute_init_datastructures): New local function.
	(pass_init_datastructures): New local variable.
	(init_tree_optimization_passes): Sequence pass_init_datastructures.
	* tree-pretty-print.c (MASK_POINTER): Remove.
	(dump_generic_node): Handle VALUE_HANDLE.
	* tree-ssa-pre.c: Move all value numbering routines to tree-vn.c.
	Update callers to use new function names.
	Use VALUE_HANDLE_ID and VALUE_HANDLE_EXPR_SET instead of
	variable annotations.
	* tree-ssa.c (init_tree_ssa): Call vn_init.
	(delete_tree_ssa): Call vn_delete.
	* tree-vn.c: New file.
	* tree.c (tree_size): Handle VALUE_HANDLE.
	(tree_node_structure): Likewise.
	(iterative_hash_expr): Likewise.
	* tree.def (VALUE_HANDLE): New code.
	* tree.h (struct tree_value_handle): New.
	(VALUE_HANDLE_ID): Define.
	(VALUE_HANDLE_EXPR_SET): Define.
	(enum tree_node_structure_enum): Add TS_VALUE_HANDLE.
	(union tree_node): Add struct tree_value_handle.

2004-06-23  Andrew Pinski  <apinski@apple.com>

	* c-typeck.c (composite_type):
	<case POINTER_TYPE>: Build a qualified type of
	the new type.
	<case ARRAY_TYPE>: Likewise.
	<case FUNCTION_TYPE>: Likewise.

2004-06-23  Pat Haugen  <pthaugen@us.ibm.com>

	PR optimization/15633
	* value-prof.c (divmod_fixed_value_transform): Compute probability
	of taking optimal path and pass along to gen_ routine.
	(mod_pow2_value_transform): Same.
	(mod_subtract_transform): Same.
	(gen_divmod_fixed_value): Add new probability parameter.
	Add probability to newly created jump.
	(gen_mod_pow2): Same.
	(gen_mod_subtract): Same.

2004-06-23  Richard Earnshaw  <rearnsha@arm.com>

	* PR target/15948
	* arm.md (bicsi3_cbranch): Add alternative to handle tying operands
	one and two.

2004-06-23  Richard Earnshaw  <rearnsha@arm.com>

	PR target/15927
	* arm.h (THUMB_SECONDARY_OUTPUT_RELOAD_CLASS): Don't need a secondary
	reload if CLASS is BASE_REGS.

2004-06-23  Richard Sandiford  <rsandifo@redhat.com>

	* gengtype-yacc.y (option): Avoid use of non-constant struct
	initializer.

2004-06-23  Nathan Sidwell  <nathan@codesourcery.com>

	* doc/extend.texi (Function Attributes): Alphabetize.

2004-06-23  Richard Henderson  <rth@redhat.com>

	* c-gimplify.c (gimplify_decl_stmt): Update gimplify_type_sizes call.
	Use gimplify_and_add.
	* c-typeck.c (c_finish_if_stmt): Use NULL instead of empty stmt.
	* gimplify.c (build_and_jump, gimplify_exit_expr,
	gimplify_init_constructor, gimplify_save_expr, gimple_push_cleanup,
	gimplify_stmt, gimplify_expr): Likewise.
	(shortcut_cond_expr): Handle NULL arms of COND_EXPR.
	(gimplify_statement_list): Remove NULL entries.
	(gimplify_to_stmt_list): Handle NULL results.
	(gimplify_type_sizes): Add list_p argument.
	(gimplify_one_sizepos): Don't use internal pre/post queue.
	* tree-gimple.h (gimplify_type_sizes): Update.

2004-06-22  Eric Christopher  <echristo@redhat.com>

	* config/rs6000/rs6000.md (*insvsi_internal5/6): New patterns.

2004-06-22  Pat Haugen  <pthaugen@us.ibm.com>

	* cfghooks.c (make_forwarder_block): Decrement count on fallthru edge
	when redirecting back edges.

	* cfghooks.c (split_block): Call make_single_succ_edge so that edge
	count/probability are set correctly.

2004-06-22  Richard Henderson  <rth@redhat.com>

	* c-typeck.c (emit_side_effect_warnings): Ignore error marks.
	(c_finish_stmt_expr): Likewise.

	* config/i386/i386.c (TARGET_STRUCT_VALUE_RTX): New.
	(ix86_return_in_memory): Move SSE vector return warning ...
	(ix86_struct_value_rtx): ... here.  New.

2004-06-22  Richard Henderson  <rth@redhat.com>

	* tree.def (VTABLE_REF): Remove.
	(OBJ_TYPE_REF): New.
	(TRY_CATCH_EXPR, TRY_FINALLY_EXPR): Set type 's'.
	* expr.c (expand_expr_real_1): Replace VTABLE_REF with OBJ_TYPE_REF.
	* fold-const.c (non_lvalue): Likewise.
	* gimplify.c (gimplify_expr): Likewise.
	(gimplify_call_expr): Use is_gimple_call_addr.
	* langhooks-def.h (LANG_HOOKS_FOLD_OBJ_TYPE_REF): New.
	* langhooks.h (fold_obj_type_ref): New.
	* tree-gimple.c (is_gimple_call_addr): New.
	* tree-gimple.h (is_gimple_call_addr): Declare.
	* tree-inline.c (inlinable_function_p): Fix merge error.
	(estimate_num_insns_1): Replace VTABLE_REF with OBJ_TYPE_REF.
	* tree-pretty-print.c (dump_generic_node): Likewise.
	(print_call_name): Handle OBJ_TYPE_REF.
	* tree-ssa-ccp.c (fold_stmt): Fold OBJ_TYPE_REF.
	* tree-ssa-operands.c (get_expr_operands): Handle OBJ_TYPE_REF.
	* tree.h (OBJ_TYPE_REF_EXPR): New.
	(OBJ_TYPE_REF_OBJECT, OBJ_TYPE_REF_TOKEN): New.
	* doc/c-tree.texi (VTABLE_REF): Remove.
	* objc/objc-act.c (build_objc_method_call): Build an OBJ_TYPE_REF.

2004-06-22  Richard Henderson  <rth@redhat.com>

	PR middle-end/16026
	* function.c (assign_parms): Don't abort for overaligned PARALLEL.

2004-06-22  Joseph S. Myers  <jsm@polyomino.org.uk>

	* Makefile.in (distclean): Don't try to remove empty directories.

2004-06-22  Richard Sandiford  <rsandifo@redhat.com>

	PR target/15869
	* config/mips/mips.c (mips_avoid_hazards): Call split_all_insns_noflow.

2004-06-22  Alexandre Oliva  <aoliva@redhat.com>

	* config/mn10300/mn10300.md (movdi, movdf): Use high/low for movu
	operands.

2004-06-22  Dale Johannesen  <dalej@apple.com>

	* config/rs6000/rs6000.c (legitimate_offset_address_p): Make
	global, rename rs6000_legitimate_offset_address_p.
	(rs6000_legitimate_address_p): Adjust calls to it.
	(lmw_operation): Ditto.
	(stmw_operation): Ditto.
	* config/rs6000/rs6000-protos.h: Declare it.
	* config/rs6000/rs6000.md (*movdf_hardfloat32): Use it
	instead of offsettable_memref_p.

2004-06-22  Dale Johannesen  <dalej@apple.com>

	* config/rs6000/rs6000.c (rs6000_legitimate_address): Disallow
	[reg+reg] mode for TFmode memory accesses.
	(rs6000_eliminate_indexed_memrefs): New.
	(rs6000_emit_move): Call preceding for TImode and TFmode.

2004-06-22  Paolo Bonzini  <bonzini@gnu.org>

	* tree-cfg.c (pass_warn_function_return): It needs
	CFG, not SSA.

2004-06-22  Nathan Sidwell  <nathan@codesourcery.com>

	* doc/invoke.texi (Machine Dependent Options): Alphabetize.
	(Submodel Options): Likewise.

2004-06-21  Andrew Pinski  <apinski@apple.com>

	Radar #: 3701874
	* c-decl.c (push_file_scope): Return early if we already
	have a file scope.

2004-06-21  Geoffrey Keating  <geoffk@apple.com>

	* c-opts.c (c_common_handle_option): Handle -fpch-preprocess.
	* c-common.h (flag_pch_preprocess): Declare.
	(c_common_pch_pragma): Likewise.
	* c-common.c (flag_pch_preprocess): New.
	* c-pch.c (c_common_read_pch): Support -fpreprocess-only.
	(c_common_pch_pragma): New.
	* c-ppoutput.c (cb_read_pch): New.
	(init_pp_output): Support -fpch-preprocess.
	* c-pragma.c (init_pragma): Support #pragma GNUC pch_preprocess.
	* c.opt (fpch-preprocess): New.
	* gcc.c (cpp_options): When save-temps, pass -fpch-preprocess.
	* doc/cppopts.texi: Document -fpch-preprocess.
	* doc/invoke.texi (Precompiled Headers): Mention that
	-fpreprocessed is safe for PCH.  Mention that if an option is
	listed as safe that doesn't mean it does what you expect.

2004-06-22  Ben Elliston  <bje@au.ibm.com>

	* tree-ssa.c (ssa_redirect_edge): Correct leading comment.

2004-06-21  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

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

2004-06-21  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	PR rtl-optimization/14782
	* pa.c (emit_move_sequence): Use SFmode for 4-byte modes when doing
	the address checks for secondary reloads for loads from and stores
	to floating-point registers.
	* pa.h (EXTRA_CONSTRAINT, case T): Use SFmode for 4-byte modes
	in the address check.  Move work around for ELF32 targets to
	GO_IF_LEGITIMATE_ADDRESS.
	(GO_IF_LEGITIMATE_ADDRESS): Require constant offsets to be
	correctly aligned for DImode loads and stores.  Don't allow long
	SFmode displacements on ELF32.

2004-06-21  Richard Henderson  <rth@redhat.com>

	PR rtl-opt/16114
	* cse.c (merge_equiv_classes): Also rehash in response to
	delete_reg_equiv changes.
	(rehash_using_reg): Don't exclude REGs from rehashing.

2004-06-21  Richard Henderson  <rth@redhat.com>

	* c-common.def (RETURN_STMT): Remove.
	* c-common.h (RETURN_STMT_EXPR): Remove.
	(c_expand_return, build_return_stmt): Remove.
	(c_common_stmt_codes): Remove RETURN_STMT.
	* c-dump.c (dump_next_stmt): Remove.
	(c_dump_tree): Remove RETURN_STMT.
	* c-decl.c (finish_function): Use c_finish_return.
	* c-parse.in (stmt): Likewise.
	* c-gimplify.c (gimplify_return_stmt): Remove.
	(c_gimplify_expr): Remove RETURN_STMT.
	* c-pretty-print.c (pp_c_statement): Likewise.
	* c-semantics.c (build_return_stmt): Remove.
	* c-tree.h (c_finish_return): Declare.
	* c-typeck.c (c_finish_return): Rename from c_expand_return.
	Return void.  Build RETURN_EXPR directly.
	* tree-dump.h (dump_next_stmt): Remove.

2004-06-21  Zack Weinberg  <zack@codesourcery.com>

	* c-decl.c (start_function): Don't call make_decl_rtl.  Don't
	look at TREE_ADDRESSABLE of symbol name.

2004-06-21  Kelley Cook  <kcook@gcc.gnu.org>

	PR target/15551
	* config/i386/i386.md: Change UNSPEC_STACK_PROBE to UNSPECV_STACK_PROBE.
	(allocate_stack_worker): Make unspec_volatile.
	(allocate_stack_worker_rex64): Likewise.
	(allocate_stack_worker_postreload): Likewise.
	(allocate_stack_worker_rex64_postreload): Likewise.

2004-06-21  Daniel Berlin  <dberlin@dberlin.org>

	Fix PR optimization/15982
	* tree-ssa-pre.c: Update a few comments and todos to
	reflect constants change.
	(get_value_handle): Constants now value number to themselves.
	(lookup): Constants lookup to themselves.
	(add_to_value): Adjust to always be on.
	(set_contains_value): Adjust for constants change.
	(find_leader): Ditto.
	(phi_translate): 'r' nodes are never ANTIC right now.
	(valid_in_set): Ditto.
	(get_expr_set): New function.
	(find_or_generate_expression): New function, broken out from
	insert_aux.
	(create_expression_by_pieces): Ditto, plus additional
	machinery to handle complex values.
	(compute_avail): Remove dead RETURN_EXPR handling.

2004-06-21  Steven Bosscher  <stevenb@suse.de>

	* config/i386/i386.c: Include insn-codes.h
	* config/i386/i386.h (FLAGS_REG, FPSR_REG, DIRFLAG_REG): Don't
	define here.
	* config/i386/i386.md (BP_REG, SP_REG, FLAGS_REG, FPSR_REG,
	DIRFLAG_REG): New define_constants.  Use them everywhere.

2004-06-21  Kaz Kojima  <kkojima@gcc.gnu.org>

	* config/sh/t-linux (MULTILIB_OPTIONS): Remove.

2004-06-21  J"orn Rennecke <joern.rennecke@superh.com>

	* sh.h (SUPPORT_SH1, SUPPORT_SH2E, SUPPORT_SH4): Conditionally define.
	(SUPPORT_SH4_SINGLE): Likewise.
	(TARGET_SWITCHES): Break out switches for cpu subtargets:
	(TARGET_SWITCH_SH1, TARGET_SWITCH_SH2, TARGET_SWITCH_SH2E): Define.
	(TARGET_SWITCH_SH3, TARGET_SWITCH_SH3E): Likewise.
	(TARGET_SWITCH_SH4_SINGLE_ONLY, TARGET_SWITCH_SH4_SINGLE): Likewise.
	(TARGET_SWITCH_SH4_NOFPU, TARGET_SWITCH_SH4): Likewise.
	(TARGET_SWITCH_SH5_64MEDIA, TARGET_SWITCH_SH5_64MEDIA_NOFPU): Likewise.
	(TARGET_SWITCHES_SH5_32MEDIA): Likewise.
	(TARGET_SWITCHES_SH5_32MEDIA_NOFPU): Likewise.
	(SELECT_SH5_64, SELECT_SH5_64_NOFPU): Rename to:
	(SELECT_SH5_64MEDIA, SELECT_SH5_64MEDIA_NOFPU)
	(SELECT_SH5_32, SELECT_SH5_32_NOFPU): Rename to:
	(SELECT_SH5_32MEDIA, SELECT_SH5_32MEDIA_NOFPU).
	(SH_MULTILIB_CPU_DEFAULT, MULTILIB_DEFAULTS): Define.
	(ASM_ISA_SPEC_DEFAULT, ASM_ISA_DEFAULT_SPEC): Likewise.
	* sh64.h (ASM_SPEC, LINK_DEFAULT_CPU_EMUL): Don't redefine.
	(TARGET_DEFAULT): Likewise.
	* config/sh/t-elf: Amend comment.
	* config/sh/t-1e, config/sh/t-mlib-sh1: New files.
	* config/sh/t-mlib-sh2, config/sh/t-mlib-sh2e: Likewise.
	* config/sh/t-mlib-sh3, config/sh/t-mlib-sh3e: Likewise.
	* config/sh/t-mlib-sh4, config/sh/t-mlib-sh4-nofpu: Likewise.
	* config/sh/t-mlib-sh4-single: Likewise.
	* config/sh/t-mlib-sh4-single-only: Likewise.
	* config/sh/t-mlib-sh5-32media: Likewise.
	* config/sh/t-mlib-sh5-32media-nofpu: Likewise.
	* config/sh/t-mlib-sh5-64media: Likewise.
	* config/sh/t-mlib-sh5-64media-nofpu: Likewise.
	* config/sh/t-mlib-sh5-compact: Likewise.
	* config/sh/t-mlib-sh5-compact-nofpu: Likewise.
	* config/sh/t-sh: (MULTILIB_ENDIAN): Add mb.
	(MULTILIB_CPUS): Define.
	(MULTILIB_OPTIONS): Use MULTILIB_CPUS.
	(MULTILIB_MATCHES): Use some shell code to calculate it.
	(MULTILIB_EXCEPTIONS): Change to ml/m1.
	* config/sh/elf.h (SUBTARGET_ASM_ISA_SPEC): Use ASM_ISA_DEFAULT_SPEC.
	* config/sh/netbsd-elf.h: Update code which sets TARGET_VERSION_CPU.
	(LINK_DEFAULT_CPU_EMUL): Don't redefine.
	(NO_PROFILE_COUNTERS): Define to 1.
	* config/sh/t-netbsd (MULTILIB_OPTIONS): Don't append to.
	(MULTILIB_DIRNAMES, MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Don't zap.
	* config/sh/t-netbsd-sh5-64 (MULTILIB_OPTIONS): Don't redefine.
	(MULTILIB_MATCHES): Don't zap.
	(MULTILIB_DIRNAMES): Use MULTILIB_RAW_DIRNAMES.
	* config/sh/t-sh64 (MULTILIB_OPTIONS): Don't redefine.
	(MULTILIB_MATCHES, MULTILIB_EXCEPTIONS): Don't zap.
	(MULTILIB_RAW_DIRNAMES): Define.
	(MULTILIB_DIRNAMES): Use it.
	* config.gcc: Also set cpu_type / need_64bit_hwint for sh[be]*-*-*.
	(sh*linux configurations): Merge into:
	(sh*elf / sh*kaos configurations).  Support --with-endian, --with-cpu,
	--with-multilib-list options.  Support sh-superh-elf configuration.
	(sh*-netbsd*): Use SELECT_SH* macros.
	(supported_defaults): sh[123456ble]-*-* | sh-*-* support "cpu".
	Merge sh*-*-netbsd* configurations into sh-elf configurations.
	* config/sh/t-netbsd-sh5, config/sh/t-be, config/sh/t-le: Delete.
	* config/sh/t-monolib: Likewise.

2004-06-21  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.h (ARM_LEGITIMIZE_RELOAD_ADDRESS): Soft-float need
	not imply FPA.

2004-06-21  Roger Sayle  <roger@eyesopen.com>

	* fold-const.c (operand_equal_p): Pass flags in recursive calls for
	binary and relational operations.  Add support for TRUTH_ANDIF_EXPR,
	TRUTH_ORIF_EXPR, TRUTH_AND_EXPR, TRUTH_OR_EXPR and TRUTH_XOR_EXPR.
	* tree.c (commutative_tree_code): Also list UNORDERED_EXPR,
	ORDERED_EXPR, UNEQ_EXPR, LTGT_EXPR, TRUTH_AND_EXPR, TRUTH_OR_EXPR
	and TRUTH_XOR_EXPR.

2004-06-21  Paolo Bonzini  <bonzini@gnu.org>

	* rtlanal.c (may_trap_p): Mark LTGT as trapping.

2004-06-21  Joseph S. Myers  <jsm@polyomino.org.uk>

	* tree-alias-common.h (struct tree_alias_ops): Change ip and
	ip_partial to unsigned int.

2004-06-21  Richard Henderson  <rth@redhat.com>

	* c-common.c (verify_sequence_points): Export.
	(c_expand_expr_stmt): Move to c-typeck.c.
	* c-common.h (c_expand_expr_stmt): Remove.
	(verify_sequence_points): Declare.
	* c-mudflap.c (mflang_flush_calls): Use c_finish_expr_stmt.
	* c-parse.in (for_init_stmt, stmt): Likewise.
	* c-tree.h (c_finish_expr_stmt): Declare.
	(c_tree_expr_nonnegative_p): Remove.
	* c-typeck.c (c_tree_expr_nonnegative_p): Remove.
	(build_conditional_expr, build_binary_op): Use tree_expr_nonnegative_p.
	(emit_side_effect_warnings): New.
	(c_finish_expr_stmt): Rename from c_expand_expr_stmt.  Use it.
	(c_finish_stmt_expr): Work without EXPR_STMT.  Handle eh regions.
	Use emit_side_effect_warnings.
	(push_cleanup): Copy STATEMENT_LIST_STMT_EXPR.
	* fold-const.c (tree_expr_nonnegative_p): Handle TARGET_EXPR.
	* gimplify.c (gimplify_modify_expr): Don't discard TARGET_EXPR
	with void initializer.
	(gimplify_target_expr): Handle void BIND_EXPR initializer.
	* tree-inline.c (estimate_num_insns_1): Fix type lookup for
	INIT_EXPR and MODIFY_EXPR.
	* objc/objc-act.c (build_module_descriptor): Use add_stmt
	instead of c_expand_expr_stmt.

2004-06-21  Paolo Bonzini  <bonzini@gnu.org>

	* fold-const.c (fold_cond_expr_with_comparison):
	New function, extracted from fold.
	(fold): Extract code to fold A op B ? A : C, use
	it to fold A op B ? C : A.  Really optimize
	A & N ? N : 0 where N is a power of two.  Avoid
	relying on canonicalization and recursion for
	foldings of COND_EXPR to happen.

2004-06-20  David Ayers  <d.ayers@inode.at>

	* objc/objc-act.h (get_object_reference): Rename to
	get_protocol_reference.
	(super_type): Rename to objc_super_type.
	(selector_type): Rename to objc_selector_type.
	(id_type): Rename to objc_id_type.
	(instance_type): Rename to objc_instance_type.
	(protocol_type): Rename to objc_protocol_type.
	(IS_ID): Update reference to id_type.
	* objc/objc-act.c (get_object_reference): Rename to
	get_protocol_reference; add documentation; update references to
	id_type.
	(lookup_method_in_protocol_list): Rename class_meth to
	is_class; add documentation.
	(finish_message_expr): Rename is_class to class_tree.
	(synth_module_prologue, objc_is_object_ptr, objc_build_exc_ptr,
	next_sjlj_build_try_catch_finally, objc_begin_catch_clause,
	build_next_objc_exception_stuff, get_arg_type_list,
	build_objc_method_call): Update references to id_type.
	(synth_module_prologue, build_objc_symtab_template,
	build_selector_reference_decl, build_selector,
	build_selector_translation_table, build_typed_selector_reference,
	get_arg_type_list, synth_self_and_ucmd_args, get_arg_type_list,
	synth_self_and_ucmd_args): Update references to selector_type.
	(build_private_template, build_ivar_reference):	Update references
	to instance_type.
	(synth_module_prologue, build_protocol_reference,
	build_protocol_expr, start_protocol): Update references to
	protocol_type.
	(synth_module_prologue, get_arg_type_list, build_objc_method_call):
	Update references to super_type.
	* c-parse.in: (typespec_nonreserved_nonattr): Update
	references to get_object_reference.
	* objc/objc-tree.def: Add C mode identifier sequence.

2004-06-20  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* loop-invariant.c: New file.
	* Makefile.in (loop-invariant.o): New.
	* cfgloop.h (global_cost_for_size, init_set_costs,
	move_loop_invariants): Declare.
	* cfgloopanal.c (seq_cost, init_set_costs, global_cost_for_size): New
	functions.
	(avail_regs, res_regs, small_cost, pres_cost, spill_cost): New
	variables.
	* common.opt (floop-optimize2, fmove-loop-invariants): New options.
	* loop-init.c (loop_optimizer_init): Call init_set_costs.
	* passes.c (rest_of_handle_loop2): Call move_loop_invariants.
	(rest_of_compilation): Check flag_loop_optimize2.
	* toplev.c (process_options): Handle flag_loop_optimize2.
	* doc/invoke.texi (-floop-optimize2, -fmove-loop-invariants): Document.
	* doc/passes.texi (loop-invariant.c): Document.

2004-06-20  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-ssa-pre.c (compute_antic): Keep BB_VISITED flag zeroed.

2004-06-20  Richard Henderson  <rth@redhat.com>

	* stmt.c (warn_if_unused_value): Add locus argument.
	* tree.h (warn_if_unused_value): Update decl.
	* c-typeck.c (internal_build_compound_expr): Update call.
	* c-gimplify.c (gimplify_expr_stmt): Likewise.

2004-06-20  Andrew Pinski  <pinskia@physics.uc.edu>

	PR middle-end/16089
	* builtins.c (entry_of_function): Move to ...
	* cfgrtl.c (entry_of_function): Here and make non-static.
	* integrate.c (emit_initial_value_sets): Use entry_of_function.
	* rtl.h (entry_of_function): Prototype.

2004-06-20  Roger Sayle  <roger@eyesopen.com>

	* config/i386/i386.c (pentium4_cost): Increase "lea" cost from 1 to 3.
	(ix86_rtx_costs) <ASHIFT, PLUS>: Consider ix86_cost->lea even when
	TARGET_DECOMPOSE_LEA.

2004-06-20  Richard Henderson  <rth@redhat.com>

	* c-common.h (add_decl_stmt): Move to cp-tree.h.
	* c-decl.c (finish_decl): Don't use add_decl_stmt.
	* c-parse.in: Likewise.
	* c-gimplify.c (gimplify_expr_stmt): Don't build CLEANUP_POINT_EXPR.
	(gimplify_c_loop, gimplify_return_stmt, gimplify_decl_stmt): Likewise.
	* c-semantics.c (add_decl_stmt): Move to cp/semantics.c.

2004-06-20  Richard Henderson  <rth@redhat.com>

	* c-common.def (IF_STMT, CLEANUP_STMT): Move to cp-tree.def.
	* c-common.h (IF_COND, THEN_CLAUSE, ELSE_CLAUSE, CLEANUP_BODY,
	CLEANUP_EXPR, CLEANUP_DECL): Move to cp-tree.h.
	(c_common_stmt_codes): Remove IF_STMT, CLEANUP_STMT.
	* c-dump.c (c_dump_tree): Move IF_STMT, CLEANUP_STMT to cp_dump_tree.
	* c-pretty-print.c (pp_c_statement): Similarly.
	* c-gimplify.c (gimplify_cleanup_stmt, gimplify_cleanup_stmts,
	gimplify_if_stmt): Move to cp-gimplify.c.
	(c_genericize, c_gimplify_expr): Don't call them.
	* c-semantics.c (push_cleanup): Move to cp/semantics.c.
	* c-typeck.c (push_cleanup): New.
	(c_begin_if_stmt, c_finish_if_cond, c_finish_then, c_finish_else,
	c_finish_if_stmt): Use COND_EXPR.
	* tree.h (CLEANUP_EH_ONLY): Update documentation.

2004-06-20  Zack Weinberg  <zack@codesourcery.com>

	* c-common.h (has_c_linkage): New interface.
	* c-cppbuiltin.c: Include target.h.
	(c_cpp_builtins): Define __PRAGMA_REDEFINE_EXTNAME and
	__PRAGMA_EXTERN_PREFIX when appropriate.
	* c-pragma.c: Include target.h.
	Document clarified semantics of symbol-renaming #pragmas.
	(handle_pragma_redefine_extname, handle_pragma_extern_prefix)
	(maybe_apply_renaming_pragma): Rewrite according to clarified
	semantics.  Always recognize, but do not necessarily execute.
	(init_pragma): Unconditionally register symbol-renaming pragmas.
	* system.h: Poison HANDLE_PRAGMA_REDEFINE_EXTNAME
	and HANDLE_PRAGMA_EXTERN_PREFIX.
	* target.h (struct gcc_target): Add handle_pragma_redefine_extname
	and handle_pragma_extern_prefix flags.
	* target-def.h: Add defaults for TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME
	and TARGET_HANDLE_PRAGMA_EXTERN_PREFIX.
	* Makefile.in (c-pragma.o, c-cppbuiltin.o): Update dependencies.
	* config/sol2.h: Define TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME,
	not HANDLE_PRAGMA_REDEFINE_EXTNAME.
	(TARGET_OS_CPP_BUILTINS): No need to define __PRAGMA_REDEFINE_EXTNAME.
	(TRANSFER_FROM_TRAMPOLINE): Prototype mprotect.
	* config/alpha/osf.h: Define TARGET_HANDLE_PRAGMA_EXTERN_PREFIX,
	not HANDLE_PRAGMA_EXTERN_PREFIX.
	(TARGET_OS_CPP_BUILTINS): No need to define __PRAGMA_EXTERN_PREFIX.
	* doc/extend.texi (Solaris Pragmas, Tru64 Pragmas): Combine
	into one section "Symbol-Renaming Pragmas"; clarify; document
	adjusted semantics.

	* builtins.c (expand_builtin): Do not issue error for a builtin
	with no special case code and no DECL_ASSEMBLER_NAME; just do the
	library call.
	* c-decl.c (builtin_function): Don't call make_decl_rtl.
	* c-objc-common.c (has_c_linkage): Stub implementation.
	* cgraphunit.c (cgraph_expand_function)
	(cgraph_remove_unreachable_nodes): Don't clear DECL_ARGUMENTS.

2004-06-19  Roger Sayle  <roger@eyesopen.com>

	* builtins.c (fold_builtin_unordered_cmp): Take an EXP argument
	instead of both an ARGLIST and a result TYPE.  Handle these C99
	comparison functions as "polymorphic" builtins.  Also handle
	lowering of BUILT_IN_ISUNORDERED to an UNORDERED_EXPR tree node.
	(fold_builtin_1): Update calls to fold_builtin_unordered_cmp.
	Move handling of BUILT_IN_ISUNORDERED from here to there.

2004-06-19  Richard Henderson  <rth@redhat.com>

	* c-common.c, c-common.h (lang_gimplify_stmt): Remove.
	* c-gimplify.c: Remove unnecessary prototypes.
	(c_gimplify_stmt): Merge into ...
	(c_gimplify_expr): ... here.  Don't play with prep_stmt.
	* c-semantics.c (prep_stmt): Remove.
	* gimplify.c (annotate_one_with_locus): Break out from ...
	(annotate_all_with_locus): ... here.
	(gimplify_expr): Add locus to expressions even if pre/post queues
	are not present.

2004-06-19  Richard Henderson  <rth@redhat.com>

	PR target/15941
	* function.c (assign_parms): If not padding upward or intentionally
	forcing upward padding, take offset_rtx into account when determining
	the alignment for stack_parm.

2004-06-19  Richard Henderson  <rth@redhat.com>

	PR target/15550
	* ifcvt.c (noce_try_move): Recognize all generated instructions.

2004-06-19  Jan Hubicka  <jh@suse.cz>

	* function.c (free_after_compilation): Do not free computed_goto_common*.
	* function.h (struct function): Kill computed_goto_common*.
	* stmt.c (expand_computed_goto): Do not commonize the computed gotos.
	* tree-cfg.c (disband_implicit_edges): Do not forward across the
	commonized computed goto.

2004-06-19  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* doc/invoke.texi: Remove obsolete comment regarding PA 2.0 support
	in binutils.

2004-06-19  Andrew Pinski  <apinski@apple.com>

	PR c++/15721
	* toplev.c (wrapup_global_declarations): Do not check
	TREE_SYMBOL_REFERENCED of the DECL_ASSEMBLER_NAME but check
	cgraph_varpool_node's needed field.

2004-06-19  Jan Hubicka  <jh@suse.cz>
	    Steven Bosscher  <stevenb@suse.de>

	CFG transparent RTL expansion:
	* Makefile.in (cfgexpand.o): New object file.
	(builtins.o): Add dependency on basic-block.h
	* builtins.c: Include basic-block.h
	(entry_of_function): New function.
	(expand_builtin_apply_args, expand_builtin_saveargs): Use it.
	* cfgexpand.c: New file.
	* expr.c (execute_expand, pass_expand): Kill.
	* pass.c (rest_of_compilation): Do not build CFG unless called from
	coverage code.
	* tree-cfg.c (delete_tree_cfg): Rename to..
	(delete_tree_cfg_annotations): ... this one; Do not remove the CFG itself.
	* tree-flow.h (delete_tree_cfg_annotations): Declare.
	(dleete_tree_cfg): Kill.
	* tree-optimize.c (execute_rebuild_bind, pass_rebuild_bind): Kill.
	(execute_del_cfg): Rename to...
	(execute_free_datastructures): This one...
	(pass_del_cfg): Rename to...
	(pass_free_datastructures): ... this one; Do not kill PROP_cfg.
	(init_tree_optimization_passes): Make cfg build and profiling to happen
	unconditionally.

2004-06-19  Steven Bosscher  <stevenb@suse.de>

	* tree-mudflap.c (mf_decl_cache_locals): Skip labels before
	inserting the cache variables.

	* tree-mudflap.c: Include headers to make basic_block available.
	Move functions around such that related functions are near each
	other.  Add prototypes for all static functions.  Add comments
	briefly explaining what IR the mudflap1 and mudflap2 work on and
	what they do.
	(mudflap_function_decls): Rename to execute_mudflap_function_decls.
	(mudflap_function_ops): Rename to execute_mudflap_function_ops.
	(pass_mudflap_1, pass_mudflap_2): Update.
	(mf_decl_cache_locals): Make it work on the CFG instead of the saved
	function tree.
	(mf_build_check_statement_for): Make it work on the CFG.
	(mf_xform_derefs_1): Likewise.  Cleanup code style.
	(mf_xform_derefs): Likewise.

2004-06-19  Jan Hubicka  <jh@suse.cz>

	* tree-cfg.c (label_to_block): Invent the label destination for
	undefined labels.
	(cleanup_dead_labels): Update table in the case label_to_block added
	new label.

2004-06-18  Richard Henderson  <rth@redhat.com>

	PR c++/16036
	* gimple-low.c (lower_function_body): Generate return statement for
	fall off the end of the function here ...
	* tree-cfg.c (make_edges): ... instead of here.
	* gimplify.c (gimplify_return_expr): Mark return temp TREE_NO_WARNING.

2004-06-18  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* tree-ssa.c (raise_value): Removed.
	(get_eq_name, check_phi_redundancy): New functions.
	(kill_redundant_phi_nodes): Use standard ssa minimalization algorithm.

2004-06-18  Roger Sayle  <roger@eyesopen.com>

	* fold-const.c (fold) <UNORDERED_EXPR, ORDERED_EXPR, UNLT_EXPR,
	UNLE_EXPR, UNGT_EXPR, UNGE_EXPR, UNEQ_EXPR, LTGT_EXPR>: Add
	constant folding for unordered comparison tree nodes.  If both
	operands are real constants, call fold_relational_const.  If either
	operand is a NaN, evaluate the other for side-effects and return a
	constant.  Optimize (double)float1 CMP (double)float2 into the
	equivalent float1 CMP float2.
	(nondestructive_fold_binary_to_constant) <UNORDERED_EXPR,
	ORDERED_EXPR, UNLT_EXPR, UNLE_EXPR, UNGT_EXPR, UNGE_EXPR, UNEQ_EXPR,
	LTGT_EXPR>: Call fold_relational_const for constant operands.
	(fold_relational_const): Add support for unordered comparison tree
	nodes.  Don't constant fold "ordered" floating point comparisons
	against NaN if when flag_trapping_math is set.

2004-06-19  Jakub Jelinek  <jakub@redhat.com>

	* fold-const.c (build_range_check): If !in_p and recursive call
	fails, exit immediately.  If high - low overflows and etype is
	a signed type, retry with unsigned etype.
	(merge_ranges): If !in0_p and !in1_p, handle even range2 adjacent
	to range1 at TYPE_MAX_VALUE and TYPE_MIN_VALUE.

2004-06-18  Richard Henderson  <rth@redhat.com>

	* c-gimplify.c (gimplify_condition): Remove.
	(gimplify_c_loop, gimplify_if_stmt, gimplify_switch_stmt): Don't
	call it.

2004-06-18  Richard Henderson  <rth@redhat.com>

	* tree-eh.c (decide_copy_try_finally): Fix scaling of copy and
	switch estimates.

2004-06-18  Andrew Pinski  <pinskia@physics.uc.edu>

	* config/i386/darwin.h (HOT_TEXT_SECTION_NAME): Define.
	(NORMAL_TEXT_SECTION_NAME): Define.
	(UNLIKELY_EXECUTED_TEXT_SECTION_NAME): Define.
	(SECTION_FORMAT_STRING): Define.

2004-06-18  Steven Bosscher  <stevenb@suse.de>

	* config/xtensa/xtensa.c
	(TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE): Define.
	* xtensa.md: Replace the old pipeline description with a DFA model.

2004-06-18  Steven Bosscher  <stevenb@suse.de>
	    Ulrich Weigand <Ulrich.Weigand@de.ibm.com>

	* config/s390/s390.md: Remove the generic pipeline description.
	* config/s390/2064.md: Make all insn reservations apply to
	the z900, g5 and g6.
	* config/s390/s390.c (s390_use_dfa_pipeline_interface): Remove.
	(TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE):
	Define to hook_int_void_1.
	(s390_adjust_cost): Cleanup.  Don't check address dependency here.
	(s390_first_cycle_multipass_dfa_lookahead): Always return 4.

2004-06-18  Daniel Berlin  <dberlin@dberlin.org>
			Diego Novillo  <dnovillo@redhat.com>

	* tree-dfa.c (create_var_ann): tree_ann -> tree_ann_t.
	(create_stmt_ann): Ditto.
	(create_tree_ann): New function.
	(create_cst_ann): Remove.
	(create_expr_ann): Ditto.

	* tree-flow-inline.h (cst_ann): Remove.
	(get_cst_ann): Ditto.
	(get_expr_ann): Ditto.
	(expr_ann): Ditto.
	(get_tree_ann): New function.
	(tree_ann): Ditto.
	(ann_type): tree_ann -> tree_ann_t.
	* tree-flow.h (tree_ann_type): CST_ANN, EXPR_ANN removed.
	(struct cst_ann_d): Removed.
	(struct expr_ann_d): Ditto.
	(union tree_ann_d): Removed cst and expr.
	(tree_ann): Renamed to tree_ann_t.
	* tree-ssa-ccp.c (set_rhs): tree_ann -> tree_ann_t.
	* tree-ssa-pre.c (get_value_handle): Rewrite for single common
	annotation.
	(set_value_handle): Ditto.
	(phi_translate): Ditto.
	* tree-tailcall.c (adjust_return_value): tree_ann -> tree_ann_t.

2004-06-18  Kaz Kojima  <kkojima@gcc.gnu.org>

	* config/sh/t-linux64: New file.
	* config.gcc: Add it to tmake_file for sh64*-*-linux*.

2004-06-18  Paolo Bonzini  <bonzini@gnu.org>

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

2004-06-17  Roger Sayle  <roger@eyesopen.com>

	* fold-const.c (constant_boolean_node): Handle boolean_type_node
	directly, return either boolean_true_node or boolean_false_node.

2004-06-18  Kelley Cook  <kcook@gcc.gnu.org>

	* opts.sh: Delete.  Break out generated code to next four files.
	* opt-gather.awk: New file.
	* optc-gen.awk: New file.
	* opth-gen.awk: New file.
	* opt-functions.awk: New common file.
	* Makefile.in: Update for above.
	* configure.ac: Update comment.
	* configure: Regenerate.

2004-06-17  Richard Henderson  <rth@redhat.com>

	* c-common.c (flag_objc_sjlj_exceptions): New.
	* c-common.h (flag_objc_sjlj_exceptions): Declare.
	* c-opts.c (c_common_handle_option): Set it.
	(c_common_post_options): Handle interation of different
	objective-c exception and runtime switches.
	* c-decl.c (c_eh_initialized_p): New.
	(finish_decl): Use it instead of local eh_initialized_p.
	* c-parse.in (nested_function, notype_nested_function): Record
	the result of compstmt.
	(compstmt_or_error): Likewise.
	(compstmt): Don't add_stmt the result.
	(stmt): Don't return anything.  Rewrite objc try and sync rules.
	(objc_try_stmt, objc_catch_list): Remove.
	(objc_catch_block, objc_finally_block): Remove.
	(objc_catch_prefix, objc_catch_clause, objc_opt_catch_list): New.
	(objc_try_catch_clause, objc_finally_clause): New.
	(objc_try_catch_stmt): Rewrite.
	* c-tree.h (c_eh_initialized_p): Declare.
	* c-opt (fobjc-sjlj-exceptions): New.
	* except.c (output_function_exception_table): Don't call cgraph
	on non-decls.
	* objc/objc-act.c (UTAG_EXCDATA_VAR, UTAG_CAUGHTEXC_VAR,
	UTAG_RETHROWEXC_VAR, UTAG_EVALONCE_VAR, struct val_stack,
	catch_count_stack, exc_binding_stack, if_nesting_count,
	blk_nesting_count, objc_enter_block, objc_exit_block,
	objc_declare_variable, val_stack_push, val_stack_pop,
	objc_build_try_enter_fragment, objc_build_extract_expr,
	objc_build_try_exit_fragment, objc_build_extract_fragment,
	objc_build_try_prologue, objc_build_try_epilogue,
	objc_build_catch_stmt, objc_build_catch_epilogue,
	objc_build_finally_prologue, objc_build_finally_epilogue,
	objc_build_try_catch_finally_stmt, objc_build_synchronized_prologue,
	objc_build_synchronized_epilogue): Remove.
	(objc_create_temporary_var, struct objc_try_context, cur_try_context,
	objc_eh_runtime_type, objc_init_exceptions, objc_build_exc_ptr,
	next_sjlj_build_try_exit, next_sjlj_build_enter_and_setjmp,
	next_sjlj_build_exc_extract, next_sjlj_build_catch_list,
	next_sjlj_build_try_catch_finally, objc_begin_try_stmt,
	objc_begin_catch_clause, objc_finish_catch_clause,
	objc_build_finally_clause, objc_finish_try_stmt,
	objc_build_synchronized): New.
	(objc_is_object_id, objc_is_class_id): New.
	(objc_comptypes): Use them.
	(build_next_objc_exception_stuff): Break NeXT sjlj out from
	build_objc_exception_stuff.
	(synth_module_prologue): Update to match.
	(objc_build_throw_stmt): Use cur_try_context to decide if
	we're in a @catch.
	* objc/objc-act.h: Update prototypes.
	(OCTI_EXCEPTION_BLK_STACK, objc_exception_block_stack): Remove.

2004-06-17  Andrew Pinski <apinski@apple.com>

	* c-typeck.c (tagged_types_tu_compatible_p <case UNION_TYPE>):
	Use TYPE_FIELDS instead of TYPE_VALUES.

2004-06-17  Jason Merrill  <jason@redhat.com>

	PR c++/16015
	* gimplify.c (gimplify_target_expr): Handle void initializer.
	* expr.c (expand_expr_real_1) [TARGET_EXPR]: Likewise.
	* doc/c-tree.texi (Expression trees): Update TARGET_EXPR
	and AGGR_INIT_EXPR.

2004-06-17  Roger Sayle  <roger@eyesopen.com>

	* fold-const.c (fold_relational_const): Use constant_boolean_node.

2004-06-17  Jan Hubicka  <jh@suse.cz>

	PR target/15433
	* i386.md (SSE SF cmov 0 splitter): The conditional is VOIDmode; fix
	operand numbering in the output template.
	(SSE DF cmov 0 splitter): The conditional is VOIDmode.

2004-06-17  Jan Hubicka  <jh@suse.cz>

	* except.c (can_throw_internal): Recognize RESX expresisons.

2004-06-17  Jan Hubicka  <jh@suse.cz>

	* cfgbuild.c (make_edges): Do not use label_value_list.
	(find_basic_blocks_1): Do not collect label_value_list.
	(find_sub_basic_blocks): Update call of make_edges.

2004-06-17  Andrew MacLeod  <amacleod@redhat.com>

	* tree-cfg.c (tree_make_forwarder_block): Use SET_PHI_RESULT.
	* tree-flow-inline.h (get_use_op_ptr): Return a use_operand_p.
	(get_use_from_ptr, get_def_from_ptr): New.  Return operand pointers.
	(get_def_op_ptr): Return a def_operand_p instead of a 'tree *'.
	(get_v_may_def_result_ptr): Return a def_operand_p.
	(get_v_may_def_op_ptr, get_vuse_op_ptr): Return a use_operand_p.
	(get_v_must_def_op_ptr): Return a def_operand_p.
	(get_phi_result_ptr): New.  Return a pointer to the result of a PHI.
	(get_phi_arg_def_ptr): New.  Return a pointer to an argument of a PHI.
	(phi_element_for_edge): Remove.
	* tree-flow.h (propagate_value, replace_exp): Change prototype.
	(propagate_tree_value): Add new prototype.
	(phi_element_for_edge): Remove prototype.
	* tree-into-ssa.c (mark_def_sites): Use new operand types.
	(prepare_operand_for_rename): Split into two functions.
	(prepare_use_operand_for_rename): Prepare use operands.
	(prepare_def_operand_for_rename): Prepare def operands.
	(rewrite_stmt): Use new operand types.
	(rewrite_operand): Use new operand types, change parameter type.
	* tree-outof-ssa.c (replace_variable): Split into two functions.
	(replace_use_variable): Rewrite uses.
	(replace_def_variable): Rewrite defs.
	(rewrite_trees, rewrite_vars_out_of_ssa): Use new operand types.
	* tree-phinodes.c (make_phi_node, resize_phi_node): Use new types.
	(add_phi_arg, remove_phi_arg_num): Use new operand types.
	* tree-ssa-ccp.c (substitute_and_fold): Use new operand types.
	(ccp_fold, replace_uses_in): Use new operand types.
	* tree-ssa-copy.c (replace_ssa_names): Rename to replace_ssa_names_ann
	and no longer set the value, change parameter type.
	(replace_exp_1): Use new operand types.
	(propagate_value): Change parameter type, use new operand types.
	(propagate_tree_value): Propagate_value without SSA operands.
	(replace_exp, cprop_operand, cprop_into_stmt): Use new operand types.
	(cprop_into_successor_phis): Use new operand types.
	* tree-ssa-dom.c (thread_across_edge): Use new operand types.
	(eliminate_redundant_computations): Use new operand types.
	* tree-ssa-dse.c (fix_phi_uses): Use new operand_types.
	(fix_stmt_v_may_defs): Use new operand_types.
	* tree-ssa-live.c (create_ssa_var_map): Use new operand_types.
	(build_tree_conflict_graph): Use new operand_types.
	* tree-ssa-loop.c (duplicate_blocks): Use PHI_ARG_DEF_FROM_EDGE.
	* tree-ssa-operands.c (struct freelist_d): Remove.
	(check_optype_freelist, add_optype_freelist): Remove.
	(allocate_def_optype, allocate_use_optype, allocate_v_may_def_optype,
	allocate_vuse_optype, allocate_v_must_def_optype): Call ggc_alloc.
	(free_uses, free_defs, free_vuses, free_v_may_defs, free_v_must_defs):
	Call ggc_free instead of add_optype_freelist.
	(init_ssa_operands, fini_ssa_operands): Remove free list code.
	(finalize_ssa_defs, finalize_ssa_uses): Set new use/def operands.
	* tree-ssa-operands.h (struct def_optype_d): Change underlying type.
	(struct use_optype_d): Change underlying type.
	(def_operand_p, use_operand_p): New types for pointers to operands.
	(USE_OP, DEF_OP, V_MAY_DEF_RESULT, V_MAY_DEF_OP, VUSE_OP,
	V_MUST_DEF_OP): Use new pointer type instead of dereferencing directly.
	(USE_FROM_PTR, DEF_FROM_PTR): New macros to "dereference" operand
	pointer types.
	(SET_USE, SET_DEF): New macros to set operands from their pointer.
	(SET_USE_OP, SET_DEF_OP, SET_V_MAY_DEF_RESULT, SET_V_MAY_DEF_OP,
	SET_VUSE_OP, SET_V_MUST_DEF_OP): New SET routines for operands.
	(PHI_RESULT_PTR, PHI_RESULT, SET_PHI_RESULT): Macros to manage the
	PHI result as an operand.
	(PHI_ARG_DEF_PTR, PHI_ARG_DEF, SET_PHI_ARG_DEF, PHI_ARG_DEF_FROM_EDGE,
	PHI_ARG_DEF_PTR_FROM_EDGE): Macros to manage the PHI arguments.
	* tree-ssa-pre.c (eliminate): Call propagate_tree_value.
	* tree-tailcall.c (independent_of_stmt_p, propagate_through_phis): Use
	PHI_ARG_DEF_FROM_EDGE.
	* tree.h (PHI_RESULT): Renamed to PHI_RESULT_TREE.
	(PHI_ARG_DEF): Renamed to PHI_ARG_DEF_TREE.

2004-06-17  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	PR tree-optimization/15991
	* tree-cfg.c (tree_block_label): Export.
	* tree-flow-inline.h (bsi_after_labels): New function.
	* tree-flow.h (bsi_after_labels, tree_block_label): Declare.
	* tree-ssa.c (propagate_into_addr): New function.
	(replace_immediate_uses): Handle propagation of pointer constants.
	(raise_value): Do not restrict propagation of pointer constants.
	* tree-ssanames.c (duplicate_ssa_name): New function.
	* tree.h (duplicate_ssa_name): Declare.

2004-06-17  David Ayers  <d.ayers@inode.at>

	* c-parse.in: Unify Objective-C token names.

2004-06-17  Zack Weinberg  <zack@codesourcery.com>

	Bug 14610
	* Makefile.in (min-insn-modes.o): Correct dependencies.
	* real.c (encode_ieee_extended, decode_ieee_extended): Always
	produce/consume 12-byte little-endian Intel format.
	(encode_ieee_extended_128, decode_ieee_extended_128): Delete.
	(encode_ieee_extended_motorola, decode_ieee_extended_motorola)
	(encode_ieee_extended_intel_96, decode_ieee_extended_intel_96)
	(encode_ieee_extended_intel_128, decode_ieee_extended_intel_128):
	New functions which convert between 12-byte little-endian Intel
	format and the desired format.
	(ieee_extended_motorola_format, ieee_extended_intel_96_round_53_format)
	(ieee_extended_intel_96_format, ieee_extended_intel_128_format):
	Update.

2004-06-17  Zack Weinberg  <zack@codesourcery.com>

	* expmed.c (expand_mult_const): In sanity check, compare only
	the bits of val and val_so_far that are significant in the
	result mode.

2004-06-17  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-pre.c: Update comments.
	(val_expr_pair_eq): Factor code from here.
	(expr_pred_trans_eq): and here.
	(expressions_equal_p): To here.
	(print_value_set): Print value for expression.
	(phi_trans_lookup): Rename some variables.
	(lookup): Ditto.
	(value_exists_in_set_bitmap): Ditto.
	(value_remove_from_set_bitmap): Ditto.
	(value_insert_into_set_bitmap): Ditto.

2004-06-17  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390-modes.def (CCL3mode): New machine mode.
	* config/s390/s390.c (s390_match_ccmode_set): Support CCL3mode.
	(s390_alc_comparison, s390_slb_comparison): Likewise.
	(s390_branch_condition_mask): Likewise.
	* config/s390/s390.md ("*subdi3_cc2", "*subdi3_cconly2"): New.
	("*subsi3_cc2", "*subsi3_cconly2"): New.

	* config/s390/s390.h (PREDICATE_CODE): Accept SIGN_EXTEND and
	ZERO_EXTEND for s390_alc_comparison and s390_slb_comparison.
	* config/s390/s390.c (s390_alc_comparison, s390_slb_comparison):
	Handle SIGN_EXTEND and ZERO_EXTEND.

	* config/s390/s390-protos.h (s390_expand_addcc): New prototype.
	* config/s390/s390.c (s390_expand_addcc): New function.
	* config/s390/s390.md ("adddicc", "addsicc"): New expanders.
	("*sconddi", "*scondsi", "*sconddi_neg", "*scondsi_neg"): New insns.
	("sltu", "sgtu", "sleu", "sgeu"): New expanders.

2004-06-17  Ben Elliston  <bje@au.ibm.com>

	* tree-alias-common.c: Add whitespace.
	* tree-inline.c: Correct comment about this file's purpose.
	* tree-optimize.c: Likewise.
	* tree-tailcall.c: Likewise.

	* tree-alias-ander.h: Add standard top-of-file comment.
	* tree-alias-common.h: Likewise.
	* tree-alias-type.h: Likewise.

2004-06-16  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-pre.c (compute_avail): Value number uses as well.
	Strip useless type conversions.
	Casts have to be treated slightly different than normal unaries.

2004-06-16  Richard Henderson  <rth@redhat.com>

	* c-common.def (COMPOUND_STMT): Remove.
	* c-common.c (finish_fname_decls): Don't look through it.
	* c-typeck.c (c_tree_expr_nonnegative_p): Likewise.
	* c-common.h (COMPOUND_BODY): Remove.
	(c_common_stmt_codes): Remove COMPOUND_STMT.
	* c-dump.c (c_dump_tree): Likewise.
	* c-gimplify.c (c_gimplify_stmt): Likewise.
	* c-pretty-print.c (pp_c_statement): Likewise.
	* tree.h (DECL_SAVED_TREE): Update commentary.
	* doc/c-tree.texi (ASM_EXPR): Rename from ASM_STMT.
	(CASE_LABEL_EXPR): Rename from CASE_LABEL.
	(GOTO_EXPR): Rename from GOTO_STMT.
	(GOTO_FAKE_P): Remove.
	(COMPOUND_STMT): Remove.
	(HANDLER): Update wrt COMPOUND_STMT.
	(STMT_EXPR): Likewise.
	(LABEL_EXPR): Rename from LABEL_STMT.
	(SCOPE_STMT): Remove.
	* objc/objc-act.c (objc_build_try_catch_finally_stmt): Don't look
	through COMPOUND_STMT.

2004-06-16  Richard Henderson  <rth@redhat.com>

	* c-common.h (c_begin_if_stmt, c_begin_while_stmt,
	c_finish_while_stmt_cond): Remove decls.
	* c-parse.in (if_prefix): Don't save c_begin_if_stmt result.
	* c-typeck.c (c_begin_if_stmt): Return void.
	(c_begin_else): Tidy.  Save stmt_count.
	* c-tree.h (c_begin_if_stmt): Update decl.

	* objc/objc-act.c (objc_build_try_enter_fragment,
	objc_build_extract_fragment, objc_build_try_epilogue,
	objc_build_catch_stmt, objc_build_catch_epilogue,
	objc_build_finally_prologue, objc_build_finally_epilogue): Update
	for if builder function changes.

2004-06-16  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.c (struct machine_function): New member
	last_restore_gpr.
	(s390_frame_info): Add BASE_USED and RETURN_ADDR_USED parameters.
	Do not modify machine->save_return_addr_p or regs_ever_live.
	Fill in machine->last_restore_gpr.
	(s390_optimize_prolog): Use s390_frame_info to compute registers
	to save/restore, remove duplicated code.
	(s390_arg_frame_offset): Use s390_frame_info to compute frame
	size, remove duplicated code.
	(s390_emit_prologue): Adapt s390_frame_info call.  Update
	machine->save_return_addr_p and regs_ever_live.
	(s390_emit_epilogue): Use machine->last_restore_gpr instead of
	machine->last_save_gpr.

2004-06-16  Richard Henderson  <rth@redhat.com>

	* c-parse.in (if_stmt_locus): Remove.
	(if_prefix): Increment stmt_count; pass it to c_finish_if_cond.
	(select_or_iter_stmt): Move empty if warnings to c-typeck.c.
	* c-typeck.c (if_elt): Sort by expected size.  Rename locus to
	empty_locus.  Add stmt_count, saw_else.
	(c_begin_if_stmt): Push if_stack here.
	(c_finish_if_cond): Rename from c_expand_end_cond.  Record stmt_count.
	(c_finish_then, c_finish_else): Record empty_locus.
	(c_begin_else): Rename from c_expand_start_else.  Record stmt_count.
	(c_finish_if_stmt): Rename from c_expand_end_cond.  Warn for empty
	if or else body.
	* c-tree.h: Update prototypes.

2004-06-16  Steven Bosscher  <stevenb@suse.de>

	* tree.h (PHI_CHAIN): New.
	* (tree-cfg.c, tree-dfa.c, tree-flow-inline.h, tree-into-ssa.c,
	tree-outof-ssa.c, tree-phinodes.c, tree-pretty-print.c,
	tree-ssa-alias.c, tree-ssa-ccp.c, tree-ssa-dom.c, tree-ssa-dse.c,
	tree-ssa-live.c, tree-ssa-loop.c, tree-ssa-phiopt.c, tree-ssa-pre.c,
	tree-ssa.c, tree-tailcall.c): Use PHI_CHAIN instead of TREE_CHAIN
	when traversing a list of PHI_NODEs.

2004-06-16  Bernardo Innocenti  <bernie@develer.com>

	PR target/13292
	* config/m68k/m68k.h (TARGET_SWITCHES): Don't remove MASK_68040_ONLY
	on -msoft-float.
	(TARGET_FLT_EVAL_METHOD): Don't advertise extended precision for
	68040 and soft-float.
	* config/m68k/m68k.md (truncdfsf2): Explicitly require TARGET_68881
	in the TARGET_68040_ONLY case.

2004-06-16 Peter Barada  <peter@the-baradas.com>

	* config/m68k/m68k.md (movsi_cfv4): New pattern to allow mov3q.
	(movsi_cf): Make named, don't match TARGET_CFV4.
	(pushexthisi_const): Use mov3q if possible.
	(extendhisi2, cvf4_extendhisi2): Split extendhisi2 pattern
	to special case mvz.w for ColdFire V4.
	(extendqisi2, cvf4_extendqisi2): Split extendhisi2 pattern
	to special case mvz.b for ColdFire V4.
	(udivmodhi4, divmodhi4): Use mvz to zero extend arg for
	divide.
	(iorsi3, xorsi3, andsi3): Use bitfield instructions if possible.
	* config/m68k/m68k.c(valid_mov3q_const): New function.
	(const_method): SWAP is valid for ColdFire.
	(MULL_COST, MULW_COST): Fix costs for ColdFire V3/V4.
	* config/m68k/m68k-protos.h (valid_mov3q_const): Prototype here.

2004-06-16  Richard Henderson  <rth@redhat.com>

	* c-common.def (CASE_LABEL): Remove.
	* c-common.c (c_add_case_label): Use CASE_LABEL, not CASE_LABEL_DECL.
	(match_case_to_enum_1): Likewise.
	* c-common.h (c_common_stmt_codes): Remove CASE_LABEL.
	* c-dump.c (c_dump_tree): Likewise.
	* c-gimplify.c (c_gimplify_stmt): Likewise.
	* c-pretty-print.c (pp_c_statement): Likewise.
	* c-semantics.c (build_case_label): Use CASE_LABEL_EXPR.
	* tree.h (CASE_LOW): Update commentary.

2004-06-16  Richard Henderson  <rth@redhat.com>

	* c-common.def (ASM_STMT): Remove.
	* c-common.h (c_common_stmt_codes): Remove ASM_STMT.
	* c-dump.c (c_dump_tree): Likewise.
	* c-gimplify.c (c_gimplify_stmt): Likewise.
	* c-pretty-print.c (pp_c_statement): Likewise.
	* c-typeck.c (build_asm_expr): Use ASM_EXPR.
	* tree.h: Fix commentary.

2004-06-16  Richard Henderson  <rth@redhat.com>

	* c-common.def (GOTO_STMT, LABEL_STMT): Remove.
	* c-common.c (c_add_case_label): Use LABEL_EXPR.
	* c-common.h (GOTO_FAKE_P, LABEL_STMT_LABEL): Remove.
	(c_common_stmt_codes): Remove GOTO_STMT, LABEL_STMT.
	* c-dump.c (c_dump_tree): Likewise.
	* c-gimplify.c (c_gimplify_stmt): Likewise.
	* c-pretty-print.c (pp_c_statement): Likewise.
	* c-parse.in (stmt): Use GOTO_EXPR.
	(label): Use LABEL_EXPR.
	* c-semantics.c (build_stmt): Set TREE_TYPE to void.
	* tree-inline.c (copy_body_r): Don't build empty BLOCKs.

2004-06-16  J"orn Rennecke <joern.rennecke@superh.com>

	* cfgcleanup.c (try_simplify_condjump): Update test to make
	sure we have a conditional branch around am unconditional branch.

2004-06-16  Daniel Berlin  <dberlin@dberlin.org>

	* tree-cfg.c (pass_split_crit_edge): Give it a name and a dump file.

2004-06-16  Dale Johannesen  <dalej@apple.com>

	* loop.c (loop_givs_reduce): Avoid miscompilation of
	loops entered at bottom.

2004-06-16  J"orn Rennecke <joern.rennecke@superh.com>

	* cfglayout.c (fixup_reorder_chain): Handle case where the
	destination of E_FALL is EXIT_BLOCK_PTR.

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.

2004-06-16  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	PR tree-optimization/15993
	* tree-ssa-dom.c (thread_across_edge): Do not thread edge if its
	destination is unchanged.

2004-06-16  Andreas Jaeger  <aj@suse.de>

	* doc/install.texi (Configuration): Update description for
	--enable-version-specific-runtime-libs.

2004-06-16  Paolo Bonzini  <bonzini@gnu.org>

	* doc/install.texi: boehm-gc now uses automake 1.8.5.

2004-06-16  Paolo Bonzini  <bonzini@gnu.org>

	* toplev.h (rest_of_compilation): Adjust prototype.

2004-06-16  Paolo Bonzini  <bonzini@gnu.org>

	* coverage.c: Remove argument to rest_of_compilation.
	* expr.c (execute_expand, set_save_expr_context, pass_expand): New.
	* passes.c (rest_of_compilation): Remove argument.
	(pass_rest_of_compilation): New.
	(rest_of_handle_final, rest_of_handle_delay_slots,
	rest_of_handle_stack_regs, rest_of_handle_variable_tracking
	rest_of_handle_machine_reorg, rest_of_handle_regrename
	rest_of_handle_sched, rest_of_handle_sched2, rest_of_handle_gcse2
	rest_of_handle_regmove, rest_of_handle_tracer
	rest_of_handle_if_conversion, rest_of_handle_if_after_combine
	rest_of_handle_web, rest_of_handle_branch_prob
	rest_of_handle_value_profile_transformations, rest_of_handle_cfg
	rest_of_handle_addressof, rest_of_handle_jump_bypass
	rest_of_handle_life, rest_of_handle_cse, rest_of_handle_cse2):
	Check that the two arguments are actually superfluous.
	* tree-optimize.c (register_dump_files): Add properties argument.
	Track validity of passes.  Only initialize dump files for
	tree-based passes.  Store the full set of provided passes in
	the pass.
	(init_tree_optimization_passes): Register pass_expand and
	pass_rest_of_compilation.
	(execute_one_pass): Do not track the presence of required properties
	here.  Set in_gimple_form.  Do not update current_properties.
	(current_properties): Remove.
	(set_save_expr_context): Remove.
	(tree_rest_of_compilation): Do not set in_gimple_form.  Do not
	expand to RTL here, and do not call rest_of_compilation.  Push
	GGC context even before gimplification.
	* tree-pass.h (PROP_rtl, PROP_trees): New flags.
	(pass_expand, pass_rest_of_compilation): Declare.

2004-06-15  Jeff Law  <law@redhat.com>

	* fold-const.c (swap_tree_comparison): No longer static.
	(tree_swap_operands_p): Similarly.  Return true if both operands
	are SSA_NAMEs and the first operand has a higher version number than
	the second operand.
	* tree.h (swap_tree_comparison): Prototype.
	(tree_swap_operands_p): Prototype.
	* tree-ssa-operands.c (get_expr_operands): For commutative
	operators and relational comparisons, canonicalize the
	order of the operands.

2004-06-15  Richard Henderson  <rth@redhat.com>

	* c-common.c (lang_gimplify_stmt): Remove next_p argument.
	(if_elt, if_stack, if_stack_space, c_expand_start_cond, c_finish_then,
	c_expand_end_cond, c_expand_start_else, c_finish_else, c_begin_if_stmt,
	c_begin_while_stmt, c_finish_while_stmt_cond): Move to c-typeck.c.
	(finish_fname_decls, fname_decl): Use statement_lists.
	(c_expand_expr_stmt): Don't set last_expr_type.
	(c_type_hash): Fix indentation.
	(c_safe_from_p): Don't follow TREE_CHAIN.
	(c_tree_chain_matters_p): Remove.
	* c-common.def (SCOPE_STMT): Remove.
	(CLEANUP_STMT): Redefine to contain its own body.
	* c-common.h (struct stmt_tree_s): Remove x_last_stmt,
	x_last_expr_type, x_last_expr_filename, x_scope_stmt_stack.
	Add x_cur_stmt_list.
	(last_tree, last_expr_type, last_expr_filename, RECHAIN_STMTS): Remove.
	(cur_stmt_list): New.
	(STATEMENT_LIST_STMT_EXPR): New.
	(SCOPE_BEGIN_P, SCOPE_END_P, SCOPE_STMT_BLOCK, SCOPE_NULLIFIED_P,
	SCOPE_NO_CLEANUPS_P, SCOPE_PARTIAL_P, NEW_FOR_SCOPE_P): Remove.
	(CLEANUP_BODY): New.
	(CLEANUP_DECL): Move to operand 2.
	(c_common_stmt_codes): Remove SCOPE_STMT.
	(COMPOUND_STMT_NO_SCOPE, COMPOUND_STMT_BODY_BLOCK): Remove.
	* c-decl.c (c_scope_stmt_stack, current_scope_stmt_stack): Remove.
	(c_push_function_context, c_pop_function_context): Don't save it.
	(finish_decl): Set TREE_USED on the decl for a cleanup.
	Use push_cleanup.
	(store_parm_decls): Use statement lists.
	(finish_function): Remove compstmt rule workaround.  Use statement
	lists.  Call finish_fname_decls after finalizing the body.
	(c_begin_compound_stmt): Move to c-typeck.c.
	* c-dump.c (c_dump_tree): Remove SCOPE_STMT.
	* c-gimplify.c (gimplify_cleanup_stmt, gimplify_cleanup_stmts): New.
	(c_genericize): Invoke them.
	(c_gimplify_stmt): Don't look through TREE_CHAIN.  Kill SCOPE_STMT.
	(c_build_bind_expr): Export.
	(gimplify_block, gimplify_cleanup): Remove.
	(gimplify_condition): Use gimplify_stmt.
	(gimplify_for_stmt): Remove FOR_INIT_STMT chaining hack.
	(gimplify_if_stmt): Remove recursion hack.
	(c_gimplify_expr): Remove STMT_EXPR handling.
	(stmt_expr_last_stmt, gimplify_stmt_expr): Remove.
	(is_last_stmt_of_scope): Remove.
	* c-lang.c (LANG_HOOKS_TREE_INLINING_TREE_CHAIN_MATTERS_P): Remove.
	* c-mudflap.c (mflang_flush_calls): Use c_begin_compound_stmt,
	c_end_compound_stmt.
	* c-objc-common.c (build_cdtor): Likewise.
	* c-parse.in (primary): Use c_finish_stmt_expr.
	(push_scope, pop_scope): Remove.
	(c99_block_start, compstmt_start): Use c_begin_compound_stmt.
	(c99_block_end, compstmt): Use c_end_compound_stmt.
	(c99_block_lineno_labeled_stmt): Likewise.
	(compstmt_primary_start): Use c_begin_stmt_expr.
	(simple_if, select_or_iter_stmt): Update calls to stmt builders.
	(do_stmt_start): Fill in body directly.
	(lineno_stmt): Avoid setting lineno on constants.
	* c-pretty-print.c (pp_c_statement): Handle STATEMENT_LIST.
	Remove SCOPE_STMT.
	* c-semantics.c (begin_stmt_tree): Remove.
	(push_stmt_list, re_push_stmt_list, pop_stmt_list): New.
	(add_stmt): Use statement lists.
	(add_scope_stmt, finish_stmt_tree): Remove.
	(push_cleanup): New.
	* c-tree.h: Move some decls from c-common.h.
	* c-typeck.c (c_tree_expr_nonnegative_p): Simplify for statement lists.
	(do_case, c_finish_case): Likewise.
	(c_finish_then): Take body for then as argument.
	(c_finish_else): Similarly.
	(c_begin_for_stmt, c_finish_for_stmt_init, c_finish_for_stmt_cond,
	c_finish_for_stmt_incr, c_finish_for_stmt): New.
	(c_begin_stmt_expr, c_finish_stmt_expr): New.
	(c_begin_compound_stmt): Do scope management.
	(c_end_compound_stmt): New.
	* fold-const.c (tree_expr_nonnegative_p): Fix BIND_EXPR.
	* gimplify.c (voidify_wrapper_expr): Accept temporary argument.
	Look through exception handling constructs.
	(gimplify_bind_expr): Accept temporary argument.
	(gimplify_target_expr): Special case BIND_EXPR bodies.
	(gimplify_expr): Handle fallback == fb_none like a statement.
	* langhooks-def.h (LANG_HOOKS_TREE_INLINING_TREE_CHAIN_MATTERS_P): Kill.
	* langhooks.c (lhd_tree_inlining_tree_chain_matters_p): Remove.
	* langhooks.h (tree_chain_matters_p): Remove.
	* stub-objc.c (objc_clear_super_receiver): New.
	* tree-gimple.h (voidify_wrapper_expr): Update decl.
	(append_to_statement_list, append_to_statement_list_force): Move
	to tree-iterator.h.
	* tree-inline.c (expand_call_inline): Update call.
	(clone_body): Use statement lists.
	(walk_tree): Don't check tree_chain_matters_p.
	(copy_tree_r): Likewise.
	* tree-iterator.c (alloc_stmt_list): Clear lang bits.
	(tsi_link_before, tsi_link_after): Set TREE_SIDE_EFFECTS properly.
	* tree-iterator.h (append_to_statement_list,
	append_to_statement_list_force): Moved from tree-gimple.h.
	* tree-pretty-print.c (dump_generic_node): Clean up TARGET_EXPR dump.
	* objc/objc-act.c (build_module_descriptor): Use c_begin_compound_stmt.
	(objc_enter_block): Likewise.
	(objc_exit_block): Use c_end_compound_stmt.
	(objc_build_try_enter_fragment): Add #error and comment for
	rewriting for OBJCPLUS.
	(objc_build_extract_fragment, objc_build_try_epilogue,
	objc_build_catch_stmt, objc_build_finally_prologue,
	objc_build_finally_epilogue): Update for C statement builders.
	* objc/objc-lang.c (LANG_HOOKS_TREE_INLINING_TREE_CHAIN_MATTERS_P):
	Remove.

2004-06-15  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* df.c (df_reg_clobber_gen): Removed.
	(df_bb_rd_local_compute, df_insn_refs_record, df_rd_local_compute):
	Make more effective for hard regs.
	* ra-build.c (livethrough_conflicts_bb): Check contains_call.

2004-06-15  Alexandre Oliva  <aoliva@redhat.com>

	* c-pragma.h (c_lex_string_translate): Change type to int.
	* c-parse.in: Change all assignments of c_lex_string_translate
	to true and false to 1 and 0.
	* c-lex.c (c_lex_string_translate): Likewise.
	(lex_string): Convert string without translation in the -1
	case.

2004-06-15  Mark G. Adams  <mark.g.adams@sympatico.ca>

	* convert.h: Add include guards

2004-06-15  Daniel Berlin  <dberlin@dberlin.org>

	* tree-flow-inline.h: Document all functions.

2004-06-15  Daniel Berlin  <dberlin@dberlin.org>

	* tree-flow-inline.h (stmt_ann): Remove use of is_essa_node.
	* tree-dfa.c (create_stmt_ann): Ditto.
	* tree-pretty-print.c (dump_generic_node): Remove E* node handling.
	* tree-inline.c (estimate_num_insns_1): Ditto.
	* tree.c (tree_size): Ditto.
	(make_node_stat): Ditto.
	(tree_node_structure): Ditto.
	(ephi_node_elt_check_failed): Remove.
	(is_essa_node): Ditto.
	* tree.def (EPHI_NODE): Ditto.
	(EEXIT_NODE): Ditto.
	(EUSE_NODE): Ditto.
	(EKILL_NODE): Ditto.
	* tree.h (EREF_NODE_CHECK): Remove.
	(EPHI_NODE_ELT_CHECK): Ditto.
	(struct tree_eref_common): Ditto.
	(struct tree_euse_node): Ditto.
	(struct ephi_arg_d): Ditto.
	(struct tree_ephi_node): Ditto.
	(ephi_node_elt_check_failed): Remove prototype.
	(is_essa_node): Ditto.
	(enum tree_node_structure_enum): Remove TS_E*_NODE.
	(union tree_node): Remove E*_NODE uses.

2004-06-15  Jerry Quinn  <jlquinn@optonline.net>

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

2004-06-15  Chris Demetriou  <cgd@broadcom.com>

	* config/mips/linux.h (ASM_PREFERRED_EH_DATA_FORMAT): Remove
	definition.
	* config/mips/linux64.h (ASM_PREFERRED_EH_DATA_FORMAT): Remove
	#undef and #if 0'd definition.

2004-06-15  J"orn Rennecke <joern.rennecke@superh.com>

	* combine.c (distribute_notes): Comment typo fix.

2004-06-15  Roger Sayle  <roger@eyesopen.com>

	* expmed.c (synth_mult): Mask bits of the multiplier to the
	machine mode of the multiplication.  Don't consider shifts
	by more than (or equal to) the width of the operation's mode.

2004-06-15  Paolo Bonzini  <bonzini@gnu.org>

	* doc/install.texi: Yet another update for autoconf
	and automake versions.

2004-06-15  Paolo Bonzini  <bonzini@gnu.org>

	* function.h (struct function): Remove cannot_inline field.
	(current_function_cannot_inline): Remove.
	* passes.c (rest_of_compilation): Reset DECL_DEFER_OUTPUT.
	Simplify conditionals to ignore warn_return_type.
	* tree-optimize.c (tree_rest_of_compilation): Do not reset
	DECL_DEFER_OUTPUT.
	* objc/objc-act.c (build_module_descriptor, finish_method_def):
	Do not set current_function_cannot_inline.

2004-06-15  J"orn Rennecke <joern.rennecke@superh.com>

	* cfglayout.c (fixup_reorder_chain): Handle case where the
	destination of E_TAKEN is EXIT_BLOCK_PTR.

2004-06-15  Diego Novillo  <dnovillo@redhat.com>

	* tree-ssa-copy.c (cprop_into_successor_phis): Fix typo.

2004-06-15  Paolo Bonzini  <bonzini@gnu.org>

	* fold-const.c (operand_equal_p): Update comment.

2004-06-15  Kazuhiro Inaoka  <inaoka.kazuhiro@renesas.com>

	* config/m32r/m32r.h (RETURN_ADDR_RTX): Define.
	(INCOMING_RETURN_ADDR_RTX): Define.
	* config/m32r/m32r-protos.h (m32r_return_addr): Added.
	* config/m32r/m32r.c (m32r_exppand_prologue): Changed for
	__builtin_return_address(0).
	(m32r_return_addr): Added for __builtin_return_address(0).
	(m32r_reload_lr): Ditto.

	* longlong.h: Fix macros for m32r add_ssaaaa and sub_ddmmss.

2004-06-15  Paolo Bonzini  <bonzini@gnu.org>

	* doc/install.texi (Prerequisites): Update libbanshee,
	fastjar, libcpp, libjava/libltdl entries to
	automake 1.8.5.

2004-06-15  Eric Botcazou  <ebotcazou@act-europe.fr>
	    Olivier Hainque  <hainque@act-europe.fr>

	* function.c (fixup_var_refs): Also adjust the start of sequence
	after fixing up the insns.

2004-06-15  Giovanni Bajo  <giovannibajo@gcc.gnu.org>

	* gccbug.in: Update optimization -> tree-optimization/rtl-optimization.

2004-06-14  Benjamin Kosnik  <bkoz@redhat.com>

	* doc/install.texi (Prerequisites): Update libstdc++ entry to
	automake 1.8.5.

2004-06-14  Eric Christopher  <echristo@redhat.com>

	* config/s390/s390.h (TARGET_SWITCHES): Change -mtpf (-mno-tpf)
	to -mtpf-trace (-mno-tpf-trace).
	* doc/invoke.texi (S/390 and zSeries Options): Add tpf option
	documentation.

2004-06-14  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* real.c: Fix bit count in head comment.

2004-06-14  Jeff Law  <law@redhat.com>

	* tree-ssa.c (kill_redundant_phi_nodes): More correctly handle
	PHIs where the destination or an argument is marked with
	SSA_NAME_OCCURS_IN_ABNORMAL_PHI.

2004-06-14  Jakub Jelinek  <jakub@redhat.com>

	PR middle-end/15945
	* simplify-rtx.c (simplify_binary_operation): Don't optimize out
	Inf + -Inf, Inf - Inf, Inf / Inf and 0 * Inf if flag_trapping_math.

2004-06-14  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* opts.sh (var_args): Fix regexp.

2004-06-14  Jakub Jelinek  <jakub@redhat.com>

	PR target/15178
	* config/i386/sol2.h (ASM_OUTPUT_DEF_FROM_DECLS): Define.

2004-06-14  Paul Brook  <paul@codesourcery.com>

	* dwarf2out.c (output_call_frame_info): Support dwarf3 cie entries.

2004-06-14  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* Makefile.in (FLAGS_H): New.
	(flags.h): Replace by FLAGS_H.
	* c.opt: Document Var, VarExists, Init and Report attributes.
	* common.opt: Fill the values of the attributes.
	* diagnostic.c (flag_fatal_errors): Do not define.
	* except.c (flag_non_call_exceptions): Do not define.
	* flags.h: Include options.h.  Remove declarations conflicting with
	the automatically defined ones.
	* opts.c: Remove automatically defined variables.
	(handle_option): Perform default initialization.
	(common_handle_option): Do not handle options covered by the
	default initialization.
	* opts.h (struct cl_option): Add flag_var, has_set_value and set_value
	fields.
	(CL_REPORT): New.
	* opts.sh: Generate variable declarations, handle CL_REPORT.
	* toplev.c: Remove automatically defined variables.
	(f_options): Removed.
	(print_switch_values): Use cl_options instead of f_options.
	* toplev.h (version_flag): Declaration removed.

2004-06-14  Ian Lance Taylor  <ian@wasabisystems.com>

	* config/sparc/sparc.h: Correct comment about availability of
	little endian option.

	* config.gcc: Remove sparc64-*-aout*.
	* config/sparc/sparc.c (sparc_aout_select_rtx_section): Remove.
	* config/sparc/sp64-aout.h: Remove.
	* config/sparc/aout.h: Remove.

2004-06-14  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.c: Include "tree-gimple.h".
	(s390_gimplify_va_arg): New function.
	(TARGET_GIMPLIFY_VA_ARG_EXPR): Define.
	(s390_va_arg): Remove.
	* config/s390/s390-protos.h (s390_va_arg): Remove.
	* config/s390/s390.h (EXPAND_BUILTIN_VA_ARG): Call abort ().

2004-06-14  J"orn Rennecke <joern.rennecke@superh.com>

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

2004-06-14  Alan Modra  <amodra@bigpond.net.au>

	* config/rs6000/rs6000.h (ASM_CPU_SPEC): Handle -mpowerpc64 and -mcpu
	for power5 and rs64a.  Correct condition for default.  Correct power3,
	620, 630, 7400, 7450, G4, 970 and G5 -mcpu entries.  Add -many.

2004-06-13  Steven Bosscher <stevenb@suse.de>

	* gcse.c (hash_scan_set, hash_scan_insn, mark_set, mark_oprs_set):
	Revert previous change, don't use CALL_P.

2004-06-13  Jason Merrill  <jason@redhat.com>

	* tree.h: Move std_gimplify_va_arg_expr protoype here.
	* tree-gimple.h: From here.

2004-06-13  Daniel Berlin  <dberlin@dberlin.org>

	Fix PR tree-optimization/15979
	Fix PR tree-optimization/15981
	* tree-ssa-pre.c (insert_aux): Fix faulty logic so that we don't
	try to insert values undefined along some path.

2004-06-13  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-pre.c (add_to_value): is_gimple_min_invariant things
	are available everywhere too.

2004-06-13  Andrew Pinski  <pinskia@physics.uc.edu>

	* fold-const.c (fold_checksum_tree <case 't'>): Only
	look at TREE_VALUES if the EXPR is an ENUMERAL_TYPE.
	Only look at TYPE_MIN_VALUE and TYPE_MAX_VALUE if
	EXPR is an INTEGERAL_TYPE or a scalar float type.

2004-06-13  Diego Novillo  <dnovillo@redhat.com>

	* tree-sra.c (tree_sra): Update documentation.

2004-06-13  Joseph S. Myers  <jsm@polyomino.org.uk>

	* c-typeck.c (comptypes, tagged_types_tu_compatible_p,
	function_types_compatible_p, type_lists_compatible_p): Remove
	flags parameter.
	* c-tree.h (comptypes): Likewise.
	(COMPARE_STRICT): Remove.
	* c-decl.c, c-lang.c, c-parse.in, c-typeck.c, objc/objc-act.c: All
	callers changed.

2004-06-13  Eric Christopher  <echristo@redhat.com>

	* c-decl.c (diagnose_mismatched_decls): Improve error message.
	Remove unused code.
	* c-typeck.c (comptypes): Add location in standard we're checking.

2004-06-13  Kaz Kojima  <kkojima@gcc.gnu.org>

	* config/sh/libgcc-std.ver: Add __unorddf2 and __unordsf2 with
	version 3.3.4.

2004-06-12  Roger Sayle  <roger@eyesopen.com>

	* expmed.c (shift_cost, shiftadd_cost, shiftsub_cost): Additionally
	index by machine mode.
	(init_expmed): Initialize shift_cost, shiftadd_cost and shiftsub_cost
	tables inside the loop over machine modes.
	(synth_mult, expand_mult_highpart_optab, expand_mult_highpart,
	expand_divmod): Index shift*_cost by the appropriate machine mode.

2004-06-12  Eric Christopher  <echristo@redhat.com>

	* config/s390/s390.h: Rename TARGET_TPF to TARGET_TPF_PROFILING.
	* config/s390/s390.md: Ditto.
	* config/s390/s390.c: Ditto.
	(s390_frame_info): Conditionalize frame and setup info on
	TARGET_TPF_PROFILING.
	(s390_arg_frame_offset): Ditto.

2004-06-12  Roger Sayle  <roger@eyesopen.com>

	* fold-const.c (omit_two_operands): New function.
	* tree.h (omit_two_operands): Prototype here.
	* builtins.c (fold_builtin_unordered_cmp): New function to lower
	C99 unordered comparison builtins to the appropriate tree nodes.
	(fold_builtin_1): Use fold_builtin_unordered_cmp to lower
	BUILT_IN_ISGREATER, BUILT_IN_ISGREATEREQUAL, BUILT_IN_ISLESS,
	BUILT_IN_ISLESSEQUAL and BUILT_IN_ISLESSGREATER.  Manually lower
	BUILT_IN_ISUNORDERED comparisons to an UNORDERED_EXPR tree node.
	(simplify_builtin_memcmp, simplify_builtin_strncmp,
	simplify_builtin_strncat, simplify_builtin_strspn): Use the new
	omit_two_operands function to build the required COMPOUND_EXPRs.

2004-06-12  Steven Bosscher <stevenb@suse.de>,
	    Andreas Jaeger  <aj@suse.de>

	* gcse.c (record_set_info): Use predicates like REG_P.
	(mems_conflict_for_gcse_p): Likewise.
	(load_killed_in_block_p): Likewise.
	(hash_expr_1): Likewise.
	(insert_set_in_table): Likewise.
	(gcse_constant_p): Likewise.
	(hash_scan_set): Likewise.
	(hash_scan_insn): Likewise.
	(canon_list_insert): Likewise.
	(record_last_mem_set_info): Likewise.
	(record_last_set_info): Likewise.
	(compute_hash_table_work): Likewise.
	(mark_set): Likewise.
	(mark_clobber): Likewise.
	(mark_oprs_set): Likewise.
	(compute_transp): Likewise.
	(find_avail_set): Likewise.
	(cprop_insn): Likewise.
	(do_local_cprop): Likewise.
	(cprop): Likewise.
	(find_implicit_sets): Likewise.
	(find_bypass_set): Likewise.
	(bypass_conditional_jumps): Likewise.
	(insert_insn_end_bb): Likewise.
	(pre_insert_copy_insn): Likewise.
	(compute_transpout): Likewise.
	(next_ls_expr): Likewise.
	(invalidate_any_buried_refs): Likewise.
	(compute_ld_motion_mems): Likewise.
	(reg_set_info): Likewise.
	(reg_clear_last_set): Likewise.
	(find_moveable_store): Likewise.
	(compute_store_table): Likewise.
	(find_loads): Likewise.
	(store_killed_in_insn): Likewise.
	(insert_insn_start_bb): Likewise.
	(reg_set_between_after_reload_p): Likewise.
	(reg_used_between_after_reload_p): Likewise.
	(is_jump_table_basic_block): Likewise.
	(gcse_after_reload): Likewise.
	(hash_scan_set_after_reload): Likewise.
	(compute_hash_table_after_reload): Likewise.

2004-06-12  Steven Bosscher  <stevenb@suse.de>

	* rtl.h (MEM_P, NONJUMP_INSN_P, CALL_INSN_P): New predicates.
	(INSN_P): Don't look at the rtx code class, just explicitly
	check for one of the tree RTX_INSN codes.

2004-06-11  Zack Weinberg  <zack@codesourcery.com>

	* c-typeck.c (default_function_array_conversion): Use
	build_pointer_type not TYPE_POINTER_TO.

2004-06-11  Zack Weinberg  <zack@codesourcery.com>

	* configure.ac: Don't invoke ACX_HEADER_STDBOOL.
	* configure, config.in: Regenerate.
	* system.h: Unconditionally define bool as unsigned char,
	BOOL_BITFIELD as unsigned int.
	* domwalk.h: Use BOOL_BITFIELD.

2004-06-12  Andreas Jaeger  <aj@suse.de>

	* libgcc-std.ver: Add __unorddf2 and __unordsf2 with version 3.3.4.
	* libgcc-darwin.ver: Likewise.

2004-06-12  Peter Jakubek  <peter@laseranimation.com>

	* reload.c (find_reloads): Force reload for pseudo registers on big
	endian machines.

2004-06-11  Steven Bosscher <stevenb@suse.de>

	* tree-ssa-dce.c (mark_control_dependent_edges_necessary):
	Don't try to mark anything control dependent on the entry or
	exit blocks.

2004-06-11  Daniel Berlin  <dberlin@dberlin.org>

	Fix Bug 15899
	Fix Bug 15460
	* tree.h (SSA_NAME_VALUE): New macro.
	(struct tree_ssa_name): Add value_handle member.
	* tree-ssa-pre.c: Replaced.
	* tree-flow.h (tree_ann_type): Add CST_ANN, EXPR_ANN.
	(struct cst_ann_d): New.
	(struct expr_ann_d): New.
	(union tree_ann_d): Add cst_ann, expr_ann.
	* tree-dfa.c (create_cst_ann): New function.
	(create_expr_ann): Ditto.
	* tree-flow-inline.h (cst_ann): New function.
	(expr_ann): Ditto.
	(get_cst_ann): Ditto.
	(get_expr_ann): Ditto..

2004-06-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* pa.c (pa_hpux_init_libfunc): Add support for unord_optab.
	* pa/quadlib.c (enum qfcmp_magic): Define magic values for call to
	_U_Qfcmp library function.
	(_U_Qfltgt, _U_Qfunle, _U_Qfunlt, _U_Qfunge, _U_Qfungt, _U_Qfuneq,
	_U_Qfunord, _U_Qford): Add more TFmode builtin compare functions.

	* pa.c (legitimize_pic_address): Use UNSPEC_DLTIND14R to identify
	unspec used for loading address from DLT.
	* pa.md: Define constants for the uses of UNSPEC and UNSPEC_VOLATILE.
	Change all users of UNSPEC and UNSPEC_VOLATILE to use new constants.
	Don't use short code sequence when loading the address of a nonlocal
	label.
	(nonlocal_goto): New expander.
	(indirect_goto): New jump pattern for nonlocal gotos.
	(short_jump): Remove extra whitespace.
	(builtin_longjmp): Clobber memory and hard frame pointer.  Restore
	frame pointer via virtual_stack_vars_rtx when we have a nonlocal goto
	pattern.

2004-06-11  Roger Sayle  <roger@eyesopen.com>

	* expmed.c (synth_mult): Add an additional MODE argument for the
	machine mode of the multiplication.  Update recursive calls.  Use
	mode instead of word_mode for determining operation costs.
	(choose_mult_variant): Update calls to synth_mult with "mode".

2004-06-11  Richard Henderson  <rth@redhat.com>

	* tree-ssa-operands.c (get_stmt_operands): Clear makes_aliased_loads
	and makes_aliased_stores.

2004-06-11  Andrew Pinski  <pinskia@physics.uc.edu>

	* doc/install.text (--enable-shared): Fix typo.

2004-06-11  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.c (alpha_gimplify_va_arg_1): Remove post_p
	argument.  Use internal post for call to gimplify_expr.  Tidy
	rounded type size computation.
	(alpha_gimplify_va_arg): Use get_formal_tmp_var and
	get_initialized_tmp_var.

2004-06-11  Andrew Pinski  <pinskia@physics.uc.edu>

	* doc/install.texi (--enable-shared): Update libobjc's shared library
	status.  Remove reference to libf2c.

2004-06-11  Jason Merrill  <jason@redhat.com>

	* 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.

2004-06-11  J"orn Rennecke <joern.rennecke@superh.com>

	PR 15886:
	* sh.h (ALLOCATE_INITIAL_VALUE): Use return_address_pointer_rtx.

2004-06-11  Joseph S. Myers  <jsm@polyomino.org.uk>

	* doc/install.texi (Prerequisites): Update documentation of
	required versions of autoconf and automake.  Remove mention of
	libf2c.

2004-06-11  Jason Merrill  <jason@redhat.com>

	* config/sparc/sparc.c (sparc_gimplify_va_arg): New fn.
	(TARGET_GIMPLIFY_VA_ARG_EXPR): Define.

2004-06-11  Jerry Quinn  <jlquinn@optonline.net>

	* typeclass.h: Add GPL plus exception license.  Add include
	guard.

2004-06-10  Jason Merrill  <jason@redhat.com>

	* gimplify.c (gimplify_modify_expr): Don't force a temporary
	of an aggregate_value_p type.

2004-06-10  Jeff Law  <law@redhat.com>

	* fold-const.c (fold_inf_compare): Avoid creating non-gimple
	code when we are in gimple form.

2004-06-10  Diego Novillo  <dnovillo@redhat.com>

	* Makefile.in (tree-ssanames.o): Depend on TREE_FLOW_H.
	* tree-flow.h (ssa_names, num_ssa_names, ssa_name): Declare.
	(highest_ssa_version): Remove.
	* tree-outof-ssa.c (new_temp_expr_table): Replace
	highest_ssa_version with num_ssa_names.
	(dump_replaceable_exprs): Likewise.
	(rewrite_vars_out_of_ssa): Likewise.
	* tree-ssa-ccp.c (initialize): Likewise
	* tree-ssa-copyrename.c (rename_ssa_copies): Likewise.
	* tree-ssa-dce.c (tree_dce_init): Likewise.
	* tree-ssa-dom.c (tree_ssa_dominator_optimize): Likewise.
	* tree-ssa-live.c (create_ssa_var_map): Likewise.
	(dump_var_map): Likewise.
	* tree-ssa.c (verify_ssa): Likewise.
	(kill_redundant_phi_nodes): Likewise.
	Do not build a local array of SSA_NAMEs.  Use the ssa_names table.
	* tree-ssanames.c: Include tree-flow.h
	(ssa_names): New varray.
	(init_ssa_names): Initialize ssa_names.
	Reserve the first slot of the ssa_names table.
	(make_ssa_name): Push the newly created SSA_NAME into ssa_names.
	Assign version numbers using num_ssa_names.

2004-06-10  Joseph S. Myers  <jsm@polyomino.org.uk>

	* doc/sourcebuild.texi (Front End): Add details of more
	installation documentation required.

2004-06-10  Brian Booth  <bbooth@redhat.com>

	* doc/tree-ssa.texi: Remove references to VDEF and add descriptions
	of V_MAY_DEF and V_MUST_DEF.
	* tree-dfa.c (dfa_stats_d): Add num_v_must_defs and rename
	num_vdefs to num_v_may_defs.
	(compute_immediate_uses_for_stmt): Rename occurences of vdef
	to v_may_def.
	(redirect_immediate_uses): Ditto.
	(dump_dfa_stats): Ditto. Also added code to dump num_v_must_defs.
	(collect_dfa_stats_r): Rename occurences of vdef to v_may_def.
	Also add code to sum up the number of v_must_defs.
	(vdefs_disappeared_p): Replace with...
	(v_may_defs_disappeared_p): This.
	(v_must_defs_disappeared_p): New function.
	(mark_new_vars_to_rename): Rename occurences of vdef to v_may_def.
	Also add code to mark new variables found in V_MUST_DEFs for
	renameing.
	* tree-flow.h (stmt_ann_d): Add v_must_def_ops and replace
	vdef_ops to v_may_def_ops.
	(get_vdef_ops): Replace with...
	(get_v_may_def_ops): This.
	* tree-flow-inline.h (get_vdef_ops): Replace with...
	(get_v_may_def_ops): This.
	(get_v_must_def_ops): New function.
	(get_vdef_result_ptr): Replace with...
	(get_v_may_def_result_ptr): This.
	(get_vdef_op_ptr): Ditto with...
	(get_v_may_def_op_ptr); This.
	(get_v_must_def_op_ptr): New function.
	* tree-into-ssa.c (mark_def_sites): Rename occurences of vdef
	to v_may_def. Also add code to mark statements with
	V_MUST_DEFs as definition sites.
	(rewrite_stmt): Rename occurences of vdef to v_may_def. Also
	add code to register new V_MUST_DEFs made by the statement.
	* tree-outof-ssa.c (VIRTUAL_PARTITION): Update comments.
	(check_replaceable): Rename occurences of vdef to v_may_def. Also
	add check for V_MUST_DEFs.
	(find_replaceable_in_bb): Ditto.
	* tree-pretty-print.c (dump_vops): Rename occurences of vdef
	to v_may_def. Also add code to dump V_MUST_DEFs.
	* tree-sra.c (mark_all_vdefs): Replace with...
	(mark_all_v_may_defs): This.
	(mark_all_v_must_defs): New function.
	(create_scalar_copies): Replace call to mark_all_vdefs with
	calls to mark_all_v_may_defs and mark_all_v_must_defs.
	(scalarize_structures): Rename occurences of vdef to v_may_def.
	Also add a check for V_MUST_DEFs.
	(scalarize_modify_expr): Rename occurences of vdef to v_may_def.
	* tree-ssa-alias.c (global_var): Update comment.
	(compute_may_aliases): Ditto.
	(compute_points_to_and_addr_escape): Rename occurences of vdef
	to v_may_def. Also add code to mark variables in V_MUST_DEF
	operands as being written to.
	(group_aliases): Update comment.
	(maybe_create_global_var): Ditto.
	* tree-ssa.c (verify_ssa): Rename occurences of vdef to v_may_def.
	Also add a check for V_MUST_DEFs on GIMPLE registers.
	(replace_immediate_uses): Rename occurences of vdef to v_may_def.
	* tree-ssa-ccp.c (visit_stmt): Rename occurences of vdef
	to v_may_def. Also add code to mark all V_MUST_DEF operands
	VARYING.
	(initialize): Ditto.
	(set_rhs): Rename occurences of vdef to v_may_def. Also add
	code to update SSA_NAMEs in V_MUST_DEFs.
	* tree-ssa-copy.c (cprop_into_stmt): Rename occurences of vdef
	to v_may_def.
	* tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Rename
	occurences of vdef to v_may_def. Also add code to mark statements
	with V_MUST_DEFs as necessary.
	(propagate_necessity): Rename occurences of vdef to v_may_def.
	* tree-ssa-dom.c (redirect_edges_and_update_ssa_graph): Rename
	occurences of vdef to v_may_def. Also add code to mark operands
	in V_MUST_DEFs for renaming.
	(eliminate_redundant_computations): Rename occurences of vdef
	to v_may_def.
	(record_equivalences_from_stmt): Rename occurences of vdef
	to v_may_def. Also add code to record VUSEs for V_MUST_DEFs.
	(optimize_stmt): Remove unnesessary variable vdefs. Update
	comment.
	(register_definitions_for_stmt): Rename occurences of vdef
	to v_may_def. Also add code to register definitions made with
	V_MUST_DEFs.
	* tree-ssa-dse.c (fix_stmt_vdefs): Replace with...
	(fix_stmt_v_may_defs): This.
	(fix_phi_uses): Rename occurences of vdef to v_may_def.
	(dse_optimize_stmt): Ditto.
	* tree-ssa-live.c (create_ssa_var_map): Rename occurences of vdef
	to v_may_def. Also add code to mark V_MUST_DEF operands as being
	used in virtual operators.
	* tree-ssa-loop.c (mark_defs_for_rewrite): Rename occurences of
	vdef to v_may_def. Also add code to mark V_MUST_DEF operands for
	renaming.
	* tree-ssa-operands.c (opf_kill_def): New flag for killing
	definitions.
	(build_vdefs): Renamed to...
	(build_v_may_defs): This.
	(build_v_must_defs): New variable.
	(voperands_d): Add v_must_def_ops and replace vdef_ops with
	v_may_def_ops.
	(append_vdef): Replace with...
	(append_v_may_def): This.
	(append_v_must_def): New function.
	(NUM_FREE): Increment for V_MUST_DEF
	(optype_freelist): Increment its size for V_MUST_DEF
	(allocate_vdef_optype): Replace with...
	(allocate_v_may_def_optype): This.
	(allocate_v_must_def_optype): New function.
	(free_vdefs): Replace with...
	(free_v_may_defs): This.
	(free_v_must_defs): New function.
	(remove_vdefs): Replace with...
	(remove_v_may_defs): This.
	(remove_v_must_defs): New function.
	(init_ssa_operands): Rename occurences of vdef to v_may_def. Also
	add code to initialize build_v_must_defs.
	(finalize_ssa_vdefs): Replace with...
	(finalize_ssa_v_may_defs): This.
	(finalize_ssa_vuses): Rename occurences of vdef to v_may_def.
	(finalize_ssa_v_must_defs): New function.
	(finalize_ssa_stmt_operands): Replace call to finalize_ssa_vdefs
	with calls to finalize_ssa_v_may_defs and finalize_ssa_v_must_defs.
	(verify_start_operands): Rename occurences of vdef to v_may_def.
	Also add check for build_v_must_defs.
	(get_stmt_operands): Rename occurences of vdef to v_may_def.
	Also add code to handle V_MUST_DEFs and to use opf_kill_def for
	killing definitions.
	(get_expr_operands): Update comment and use opf_kill_def for
	killing definitions.
	(add_stmt_operand): Replace code that appends VDEFs with code
	that appends V_MUST_DEFs when opf_kill_def is set and V_MAY_DEFs
	otherwise.
	(add_call_clobber_ops): Update comments.
	* tree-ssa-operands.h (vdef_optype_d): Replace with...
	(v_may_def_optype_d): This.
	(v_must_def_optype_d): New structure.
	(VDEF_OPS): Replace with...
	(V_MAY_DEF_OPS): This.
	(STMT_VDEF_OPS): Same with...
	(STMT_V_MAY_DEF_OPS): This.
	(NUM_VDEFS): And...
	(NUM_V_MAY_DEFS): This.
	(VDEF_RESULT_PTR): As well as...
	(V_MAY_DEF_RESULT_PTR): This.
	(VDEF_RESULT): Same goes for...
	(V_MAY_DEF_RESULT): This.
	(VDEF_OP_PTR): And...
	(V_MAY_DEF_OP_PTR): This.
	(VDEF_OP): And...
	(V_MAY_DEF_OP): This.
	(V_MUST_DEF_OPS): New macro.
	(STMT_V_MUST_DEF_OPS): Ditto.
	(NUM_V_MUST_DEFS): Ditto.
	(V_MUST_DEF_OP_PTR): Ditto.
	(V_MUST_DEF_OP): Ditto.
	(remove_vdefs): Replace signature with...
	(remove_v_may_defs): This.
	(remove_v_must_defs): New function signature.
	* tree-ssa-pre.c (subst_phis): Replace call to remove_vdefs
	with calls to remove_v_may_defs and remove_v_must_defs.
	(process_left_occs_and_kills): Rename occurences of vdef to v_may_def.
	Also add code that marks left occurences of operands in V_MUST_DEFs.
	* tree-tailcall.c (find_tail_calls): Rename occurences of vdef
	to v_may_def. Also add check for V_MUST_DEFs.
	(eliminate_tail_call):Rename occurences of vdef to v_may_def.

2004-06-10  Vladimir Makarov  <vmakarov@redhat.com>

	PR target/15653
	* haifa-sched.c (schedule_block): Finish cycle after issuing asm
	insn.

2004-06-10  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR web/15263
	* doc/install.texi: Remove superfluous linebreak.

2004-06-10  Roger Sayle  <roger@eyesopen.com>

	* builtins.c (expand_builtin): Fall back to library function call for
	conj, conjf, conjl, creal, crealf, creall, cimag, cimagf and cimagl.
	(fold_builtin_1): Lower built-ins BUILT_IN_CONJ{,F,L} to CONJ_EXPR,
	BUILT_IN_CREAL{,F,L} to REALPART_EXPR, and BUILT_IN_CIMAG{,F,L} to
	IMAGPART_EXPR respectively.

2004-06-10  J"orn Rennecke <joern.rennecke@superh.com>

	* sh.c (dump_table): New argument start.  Changed caller.
	(fixup_mova): New function.
	(find_barrier): Use it.
	(sh_reorg): Likewise.  Check for CODE_FOR_casesi_worker_2.
	If the label a mova refers to is above the mova itself, change
	the mova into a load.
	* sh.md (*casesi_worker): Rename to:
	(casesi_worker_1).
	(casesi_worker_2): New insn.

2004-06-10  Jason Merrill  <jason@redhat.com>

	* 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.

2004-06-10  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* Makefile.in (df.o): Remove fibheap dependency.
	* df.h: Do not include sbitmap.h.
	(struct ref): New field "data".
	(DF_REF_DATA): New accessor macro.
	(struct df): Field "dom" removed.
	(df_analyze_subcfg): New function.
	(transfer_function_sbitmap, transfer_function_bitmap): Replaced by ...
	(transfer_function): ... new type.
	(iterative_dataflow_sbitmap, iterative_dataflow_bitmap): Replaced by ...
	(iterative_dataflow): ... new function.
	(enum set_representation, struct dataflow): New.
	* df.c: Do not include fibheap.h.

	(df_reg_def_chain_clean, df_reg_use_chain_clean,
	(df_bb_table_realloc, df_analyse_subcfg, free_reg_ref_chain,
	prune_to_subcfg, df_bb_modify): New functions.
	(df_bitmaps_alloc, df_reg_def_chain_create, df_reg_use_chain_create,
	df_refs_update, df_reg_table_realloc, df_ref_create,
	df_bb_reg_def_chain_create, df_bb_reg_use_chain_create,
	df_bb_rd_local_compute, df_bb_ru_local_compute, df_bb_lr_local_compute,
	df_analyse_1, df_insn_modify): Support analysing only a part of the cfg.

	(dataflow_set_a_op_b, dataflow_set_copy): New functions.
	(df_rd_transfer_function, df_ru_transfer_function,
	df_lr_transfer_function): Type of bitmaps changed to void *.
	(hybrid_search_bitmap, hybrid_search_sbitmap): Merge into ...
	(hybrid_search): ... new function.
	(iterative_dataflow_bitmap, iterative_dataflow_sbitmap): Merge into ...
	(iterative_dataflow): ... new function. Avoid use of fibheaps for
	a worklist.  Do not process basic blocks unnecessarily.

2004-06-10  Roger Sayle  <roger@eyesopen.com>

	* fold-const.c (fold_abs_const): Make extern.
	* tree.h (fold_abs_const): Prototype here.
	* builtins.c (fold_builtin_fabs): New function to transform
	fabs, fabsf and fabsl builtins into ABS_EXPR tree nodes.
	(fold_builtin_abs): New function to transform abs, labs, llabs
	and imaxabs builtins into ABS_EXPR tree nodes.
	(expand_builtin): Fall back to a function call for abs, labs,
	llabs and imaxabs builtins that survive constant folding.
	(fold_builtin_1): Call fold_builtin_fabs for FABS, FABSF and
	FABSL, and fold_builtin_abs for ABS, LABS, LLABS and IMAXABS.

2004-06-10  Jakub Jelinek  <jakub@redhat.com>

	* config/ia64/unwind-ia64.c (uw_frame_state_for): Don't assume a
	leaf function without unwind info at RP 0.

2004-06-10  Jakub Jelinek  <jakub@redhat.com>

	PR c++/14791
	* tree.h (enum tree_index): Add TI_FILEPTR_TYPE.
	(fileptr_type_node): Define.
	* tree.c (build_common_tree_nodes_2): Initialize
	fileptr_type_node to ptr_type_node.
	* c-common.c (c_common_nodes_and_builtins): For C++, make
	fileptr_type_node a distinct type copy.
	* builtin-types.def (BT_FILEPTR, BT_FN_INT_CONST_STRING_FILEPTR,
	BT_FN_INT_INT_FILEPTR, BT_FN_INT_FILEPTR_CONST_STRING_VALIST_ARG,
	BT_FN_SIZE_CONST_PTR_SIZE_SIZE_FILEPTR,
	BT_FN_INT_FILEPTR_CONST_STRING_VAR): Add.
	(BT_FN_INT_CONST_STRING_PTR, BT_FN_INT_INT_PTR,
	BT_FN_SIZE_CONST_PTR_SIZE_SIZE_PTR, BT_FN_INT_PTR_CONST_STRING_VAR,
	BT_FN_INT_PTR_CONST_STRING_VALIST_ARG): Remove.
	* builtins.def (BUILT_IN_FPRINTF, BUILT_IN_FPRINTF_UNLOCKED,
	BUILT_IN_FPUTC, BUILT_IN_FPUTC_UNLOCKED, BUILT_IN_FPUTS,
	BUILT_IN_FPUTS_UNLOCKED, BUILT_IN_FSCANF, BUILT_IN_FWRITE,
	BUILT_IN_FWRITE_UNLOCKED, BUILT_IN_VFPRINTF, BUILT_IN_VFSCANF): Use
	the above *FILEPTR* types instead of *PTR*.

2004-06-09  Daniel Berlin <dberlin@dberlin.org>

	* tree-ssa.c (verify_ssa): Verify that vdefs/makes_aliased_stores
	match.

2004-06-09  Roger Sayle  <roger@eyesopen.com>

	* fold-const.c (fold_not_const): New function.
	(fold) <ABS_EXPR>: Don't bother testing wins.
	(fold) <BIT_NOT_EXPR>: Call fold_not_const.
	(nondestructive_fold_unary_to_constant) <BIT_NOT_EXPR>: Likewise.

2004-06-09  Richard Henderson  <rth@redhat.com>

	PR middle-end/15228
	* function.c (assign_parms): Always set_mem_align with the computed
	FUNCTION_ARG_BOUNDARY.  Don't clear stack_parm if !STRICT_ALIGNMENT.

2004-06-09  Richard Henderson  <rth@redhat.com>

	PR opt/15108
	* tree-tailcall.c (find_tail_calls): Don't check early for
	tail_recursion failure.

2004-06-09  Diego Novillo  <dnovillo@redhat.com>

	Move SSA_NAME annotations into tree_ssa_name.

	* tree-dfa.c (create_ssa_name_ann): Remove.
	* tree-flow-inline.h (ssa_name_ann, get_ssa_name_ann): Remove.
	* tree-flow.h (enum tree_ann_type): Remove SSA_NAME_ANN.
	(struct ssa_name_ann_d): Remove.
	(union tree_ann_d): Update.
	(ssa_name_ann_t): Remove.
	* tree-ssa-alias.c: (get_ptr_info): New local function.
	Replace references to ssa_name_ann_t with struct ptr_info_def.
	* tree-ssa-operands.c (get_expr_operands): Likewise.
	* tree.h (SSA_NAME_PTR_INFO): Define.
	(struct ptr_info_def): Declare.
	(struct tree_ssa_name): Add field 'ptr_info'.

2004-06-09  Danny Smith  <dannysmith@users.sourceforge.net>

	* config/i386/winnt.c (i386_pe_output_labelref): Correct
	misplaced ')'.

2004-06-09  Steven Bosscher  <stevenb@suse.de>

	* config/i386/k6.md: Rewrite using the DFA model.
	* config/i386/i386.c (ix86_adjust_cost): Don't increase the
	cost of load-operation insns for the K6.
	(ia32_use_dfa_pipeline_interface): Add TARGET_K6.
	(ia32_multipass_dfa_lookahead): Likewise.

2004-06-09  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.c (alpha_gimplify_va_arg_1,
	alpha_gimplify_va_arg, TARGET_GIMPLIFY_VA_ARG_EXPR): New.

2004-06-09  Richard Henderson  <rth@redhat.com>

	* expmed.c (emit_store_flag): Cope with FLOAT_STORE_FLAG_VALUE.

2004-06-09  Geoffrey Keating  <geoffk@apple.com>

	* Makefile.in (CPPLIB_H): Put files in order of inclusion.
	(CPP_ID_DATA_H): New.
	(gtype-desc.o): Update dependencies.
	(GTFILES): Use CPP_ID_DATA_H.

2004-06-09  Mark Mitchell  <mark@codesourcery.com>

	Revert:
	PR c++/15815
	2004-06-07  Mark Mitchell  <mark@codesourcery.com>
	* doc/extend.texi: Deprecate #pragma interface and #pragma
	implementation.

2004-06-09  David S. Miller  <davem@nuts.davemloft.net>

	* config/sparc/sparc.h (MOVE_RATIO): New definition.

2004-06-09  Richard Henderson  <rth@redhat.com>

	* basic-block.h (struct edge_def): Add goto_locus.
	* tree-cfg.c (make_goto_expr_edges): Set it.
	(disband_implicit_edges): Use it.
	* tree-pretty-print.c (dump_implicit_edges): Print it.

2004-06-08  Anil Paranjpe <anilp1@kpitcummins.com>

	* h8300.md (ldm_h8300s_4): Fix condition for expander.

2004-06-08  Jason Merrill  <jason@redhat.com>

	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/ia64/ia64.c (TARGET_GIMPLIFY_VA_ARG_EXPR): Define.
	(ia64_gimplify_va_arg): New fn.
	* config/rs6000/rs6000.c (rs6000_gimplify_va_arg): New fn.
	(TARGET_GIMPLIFY_VA_ARG_EXPR): Define.
	* alias.c (get_varargs_alias_set): Just return 0 for now.

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

2004-06-09  Andrew Pinski  <pinskia@physics.uc.edu>

	* tree-complex.c (expand_complex_comparison): Use fold_convert instead
	of convert.
	* tree-inline.c (setup_one_parameter): Likewise.
	* tree-sra.c (csc_build_component_ref): Likewise.
	* tree-ssa-ccp.c (ccp_fold): Likewise.
	* tree-ssa-copy.c (cprop_operand): Likewise.
	* tree-ssa-dom.c (simplify_rhs_and_lookup_avail_expr): Likewise.
	* tree-tailcall.c (tree_optimize_tail_calls_1): Likewise.

2004-06-09  J"orn Rennecke <joern.rennecke@superh.com>

	PR rtl-optimization/15521:
	* sched-int.h (in_post_call_group_p): Change type to enum.
	* sched-deps.c (sched_analyze_insn):
	(sched_analyze): When in_post_call_group_p is post_call_initial,
	don't add a dependency, but still set SCHED_GROUP_P and CANT_MOVE,
	and also reset in_post_call_group_p to post_call.
	(sched_analyze): When the previous basic block ended in a CALL_INSN,
	initialize in_post_call_group_p as post_call_initial.
	(init_deps): initialize in_post_call_group_p to not_post_call.

2004-06-09  Arnaud Charlet  <charlet@act-europe.fr>

	PR ada/6637
	* doc/install.texi: List ada, libada as options to --enable-shared

2004-06-09  Paolo Bonzini  <bonzini@gnu.org>

	* aclocal.m4 (gcc_AC_PROG_LN): Remove.
	(gcc_AC_CHECK_DECLS): Use AH_TEMPLATE to generate
	config.in entries.
	* configure.ac: Call ACX_PROG_LN, falling back to $LN_S
	if hard links are not available.
	* configure: Regenerate.
	* config.in: Regenerate.

2004-06-08  Per Bothner  <per@bothner.com>

	* configure.ac: New --enable-mapped-location sets USE_MAPPED_LOCATION.

2004-06-08  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* toplev.c (floor_log2_wide): Correct casts for 64-bit hosts.
	Correct formatting.

2004-06-08  James E Wilson  <wilson@specifixinc.com>

	PR target/15790
	* config/i386/i386-coff.h (ASM_OUTPUT_ALIGN): Define.

2004-06-08  Andrew Pinski  <pinskia@physics.uc.edu>

	* fold-const.c (fold_convert): Treat OFFSET_TYPE like
	POINTER_TYPE and INTEGER_TYPE.

2004-06-08  Bernardo Innocenti  <bernie@develer.com>

	* modulo-sched.c: Compile only when INSN_SCHEDULING is
	defined.

2004-06-08  Jeff Law  <law@redhat.com>

	* doc/contrib.texi: Add entries for Stefan Olsson and
	Ola Ronnerup.

2004-06-08  DJ Delorie  <dj@redhat.com>

	* toplev.c (floor_log2_wide): Replace loop with faster bit
	operations.
	(exact_log2_wide): Define in terms of the above.
	* toplev.h (floor_log2): Use _builtin_clz family of builtins if
	available.

2004-06-08  Andrew Pinski  <pinskia@physics.uc.edu>

	* config/rs6000/rs6000.c (print_operand, <case 'z'>):
	Make sure that we are in INDIRECT mode when getting the
	stub name.

2004-06-08  Anil Paranjpe <anilp1@kpitcummins.com>

	* h8300.md (extendqisi2_h8300): Add constraints.
	(ldm_h8300s_4_normal): Fix typo.

2004-06-08  Richard Henderson  <rth@redhat.com>

	* gimple-low.c (struct lower_data): Replace the_return_label and
	one_return_stmt with return_statements.
	(lower_function_body): Process the entire list of return_statements.
	(lower_return_expr): Check source value before unifying return_exprs.
	* gimplify.c (gimplify_return_expr): Force the use of a temporary
	for !aggregate_value_p.
	* tree-gimple.c: Update RETURN_EXPR grammer.

2004-06-08  Vladimir Makarov  <vmakarov@redhat.com>

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

2004-06-08  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	PR rtl-optimization/15717
	* config/i386/i386.c (legitimate_constant_p): Do not allow
	x - symbol_ref.

2004-06-08  Alexandre Oliva  <aoliva@redhat.com>

	* gimplify.c (copy_if_shared_r): Revert:
	2004-05-21  Richard Henderson  <rth@redhat.com>
	* gimplify.c [...] Don't mark VA_ARG_EXPRs volatile here.

2004-06-07  Roger Sayle  <roger@eyesopen.com>

	* expmed.c (add_cost, neg_cost, sdiv_pow2_cheap, smod_pow2_cheap):
	Make arrays indexed by machine mode.  Rename negate_cost to neg_cost.
	(init_expmed): Initialize these cost arrays as appropriate.
	(store_bit_field, extract_bit_field): Correct whitespace.
	(synth_mult, choose_mult_variant, expand_mult, expand_mult_highpart,
	expand_mult_highpart_optab, expand_divmod): Update uses of add_cost,
	neg_cost, sdiv_pow2_cheap, smod_pow2_cheap to index with mode,
	word_mode or compute_mode as appropriate.

2004-06-07  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR target/15783
	* config/sparc/sparc.c (function_arg_union_value): Add 'mode'
	parameter.  Enumerate the registers inside the PARALLEL.
	(function_arg): Adjust call to function_arg_union_value.
	(function_value): Likewise.

	* config/sparc/sparc.c (sparc_function_epilogue): Properly format.

2004-06-07  Roger Sayle  <roger@eyesopen.com>

	* real.c (real_copysign): New function to implement libm's copysign.
	* real.h (real_copysign): Prototype here.
	* fold-const.c (tree_expr_nonnegative_p): The result of sqrt, sqrtf
	and sqrtl can be negative, as sqrt(-0.0) = -0.0.  Correct whitespace.
	* builtins.c (fold_builtin_isascii, fold_builtin_toascii,
	fold_builtin_isdigit): Add function prototypes.
	(fold_builtin_copysign): New function to fold copysign, copysignf
	and copysignl.  Optimize copysign(x,x) as x.  Evaluate copysign of
	constant arguments at compile-time using real_copysign.  Fold
	copysign(X,Y) as fabs(X) if Y is always non-negative.
	(fold_builtin_1): Correct minor whitespace/style issues.  Call
	fold_builtin_copysign for BUILT_IN_COPYSIGN{,F,L}.

2004-06-07  J"orn Rennecke <joern.rennecke@superh.com>

	* tree.c (iterative_hash_expr): Use real_hash.

2004-06-07  Joseph S. Myers  <jsm@polyomino.org.uk>

	PR c/14765
	* c-parse.in (compstmt_primary_start): Set last_expr_type to
	NULL_TREE.

2004-06-07  Mark Mitchell  <mark@codesourcery.com>

	PR c++/15815
	* doc/extend.texi: Deprecate #pragma interface and #pragma
	implementation.

2004-06-07  Alexandre Oliva  <aoliva@redhat.com>

	PR middle-end/15666
	* c-decl.c (finish_decl): Use change_decl_assembler_name for the
	builtin decl as well.

2004-06-07  Roger Sayle  <roger@eyesopen.com>

	PR c/14649
	* c-typeck.c (require_constant_value, require_constant_elements):
	Move declarations to the top of the file.
	(build_function_call): If we require a constant value, fold with
	fold_initializer.  If the result is a constant, and the function
	wasn't called using __builtin_foo, issue a pedantic warning.
	(build_unary_op): If we require a constant value, fold tree with
	fold_initializer.
	(build_binary_op): Use require_constant_value to determine whether
	to call fold or fold_initializer.

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

	* gimple-low.c (struct lower_data): Add the_return_label and
	one_return_stmt.
	(lower_function_body): Initialize and use them.
	(lower_return_expr): New.
	(lower_stmt): Call it.
	* gimplify.c (gimplify_return_expr): Force the argument to be either
	null or a result_decl.
	* tree-gimple.c: Update gimple grammer to match.
	* tree-ssa-copyrename.c (copy_rename_partition_coalesce): Deny
	coalescing of result_decls.

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

	PR rtl-opt/15193
	* expmed.c (extract_bit_field): Fix vector_extract return.

	* config/i386/i386.md (negv4sf2): New pattern.

2004-06-07  Mark Mitchell  <mark@codesourcery.com>

	PR c++/15337
	* c-common.c (c_sizeof_or_alignof_type): Use more detailed error
	message.

2004-06-06  Paolo Bonzini  <bonzini@gnu.org>

	* config.in: Regenerate.

2004-06-06  Steven Bosscher  <stevenb@suse.de>

	* tree-cfg.c (tree_verify_flow_info): Make sure that labels in
	SWITCH_LABELS are always sorted.

2004-06-06  Steven Bosscher  <stevenb@suse.de>

	* hooks.c (hook_int_void_1): New generic hook.
	* hooks.h (hook_int_void_1): Add prototype.
	* config/c4x/c4x.c (TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE):
	Define to hook_int_void_1.
	* config/c4x/c4x.md: Replace dummies for the old pipeline model
	with dummies for the new one.

2004-06-06  Roger Sayle  <roger@eyesopen.com>

	* tree.h (lvalue_or_else): Delete function prototype.
	* c-typeck.c (lvalue_or_else): Make static.  Add static prototype.

2004-06-06  Stephane Carrez  <stcarrez@nerim.fr>

	PR target/14542
	* config/m68hc11/m68hc11.md (move peephole2): Emit a use note to avoid
	a live change of a register after peephole replacement.

2004-06-06  Joseph S. Myers  <jsm@polyomino.org.uk>

	PR c/13519
	* c-typeck.c (composite_type, common_pointer_type): New functions.
	(common_type): Split parts into composite_type and
	common_pointer_type.  Ensure that arithmetic operations return
	unqualified types without attributes.  Don't make composite type
	of signed enum and compatible integer be unsigned.
	(build_conditional_expr, build_binary_op): Use
	common_pointer_type.
	* c-decl.c (merge_decls): Use composite_type.
	* c-tree.h (composite_type): Declare.

2004-06-06  Stephane Carrez  <stcarrez@nerim.fr>

	PR target/14457
	* config/m68hc11/m68hc11.c (splitable_operand): New predicate.
	* config/m68hc11/m68hc11-protos.h (splitable_operand): Declare.
	* config/m68hc11/m68hc11.h (PREDICATE_CODES): Register it.
	(inhibit_libc): Must define.
	* config/m68hc11/m68hc11.md ("movhi_const0"): Use splitable_operand.
	("*andhi3_gen", "iorhi3", "*iorhi3_gen"): Likewise.
	("xorhi3"): Likewise.

2004-06-06  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* cgraphunit.c (cgraph_decide_inlining): Adjust dump lines in
	always_inline pass.

2004-06-05  David S. Miller  <davem@nuts.davemloft.net>

	* config/sparc/linux.h (TARGET_C99_FUNCTIONS): Set.
	* config/sparc/linux64.h (TARGET_C99_FUNCTIONS): Likewise.

2004-06-05  Bernardo Innocenti  <bernie@develer.com>

	* regclass.c (init_reg_sets): Check for missing registers in target
	initializer macros FIXED_REGISTERS and CALL_USED_REGISTERS.

2004-06-05  Zack Weinberg  <zack@codesourcery.com>

	* Makefile.in (MKDEPS_H): New shorthand.
	(c-opts.o): Update dependencies.
	* c-opts.c: Include mkdeps.h.
	(handle_deferred_opts): Use cpp_get_deps and deps_add_target,
	not cpp_add_dependency_target.

2004-06-05  Steven Bosscher  <stevenb@suse.de>

	* config/v850/v850.c (v850_use_dfa_pipeline_interface): New.
	* config/v850/v850.md: Convert to DFA scheduler description.

2004-06-05  Tobias Schlueter  <tobias.schlueter@physik.uni-muenchen.de>

	PR fortran/15478
	* doc/install.texi: Document GMP as prerequisite. Document
	--with-gmp and --with-gmp-dir configure options.
	* fortran/gfortran.texi: Remove section "Compiling and testing",
	remove TOC reference to it.

2004-06-05  Graham Stott  <graham.stott@btinternet.com>

	* combine.c(simplify_shift_const): Check shift amount is a
	CONST_INT.

2004-06-05  Danny Smith  <dannysmith@users.sourceforge.net>

	* toplev.c (init_asm_output): Add explicit 'b' to mode when
	opening asm_out_file.
	* c-pch.c (c_common_write_pch): Remove unnecessary fflush before
	reading asm_out_file. Replace fflush after reading asm_out_file
	with fseek.
	* hosthooks-def.h (HOST_HOOKS_GT_PCH_ALLOC_GRANULARITY): Define
	default and add to HOST_HOOKS_INITIALIZER.
	* hosthooks.h (gt_pch_alloc_granularity): Declare hook function.
	* ggc-common.c (default_gt_pch_alloc_granularity): New function.
	(gt_pch_save): Use host_hooks.gt_pch_alloc_granularity
	to set mmi.offset padding.
	 * config.gcc (i[34567]86-*-mingw32*): Set target_gtfiles to
	$(srcdir)/config/i386/winnt.c.
	(i[34567]86-*-pe | i[34567]86-*-cygwin*): Likewise.
	(i[34567]86-*-uwin*): Likewise.
	*i[34567]86-*-interix3*): Likewise.
	* config.host (i[34567]86-*-mingw32*): Set out_host_hook_obj.
	* config/i386/host-mingw32.c: New file.
	* config/i386/x-mingw32: Add rule for host-mingw32.o.
	* config/i386/winnt.c: (struct extern_list) Tag as GTY.
	(extern_head): Likewise.
	(struct export_list) Likewise.
	(export_head): Likewise.
	(i386_pe_record_external_function): Use ggc_alloc.
	(i386_pe_record_exported_symbol): Likewise.
	Include "gt-winnt.h" at end.
	* doc/hostconfig.texi: Document
	HOST_HOOKS_GT_PCH_ALLOC_GRANULARITY.

2004-06-04  Bernardo Innocenti  <bernie@develer.com>

	* config/m68k/m68k.h: Remove comments copied over from tm.texi.
	Rename 68000 and 68k to m68k for consistency in comments.  Remove
	trailing whitespace before EOLs and before TABs.
	(MAX_CODE_ALIGN): Remove unused macro.
	(CALL_USED_REGISTERS): Reformat and add comments.

2004-06-04  Frank Ch. Eigler  <fche@redhat.com>

	* gcc.c (MFLIB_SPEC): Remove library references, to require users
	to enumerate -lmudflap* and dependencies when linking.

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

	PR target/15822
	* dojump.c (do_jump): Fix uninitialized variable tcode1.

2004-06-04  Jerry Quinn  <jlquinn@optonline.net>

	* Makefile.in (insn-conditions.o): Back out removal of reload.h.
	* genconditions.c (write_header): Back out removal of reload.h.

2004-06-04  Jan Hubicka  <jh@suse.cz>

	Re-apply hopefully fixed patch:
	* i386.md (UNSPECV_EH_RETURN): Kill.
	(eh_return): Use jump_insn.
	(eh_return_si, eh_return_di): Change pattern to jump instruction.

2004-06-04  Jeff Law  <law@redhat.com>

	* cfgrtl.c (try_redirect_by_replacing_jump): Fix return value.

2004-06-04  Steven Bosscher  <stevenb@suse.de>

	* except.c (for_each_eh_region): New function.
	* except.h (for_each_eh_region): Add a prototype for it.
	* tree-cfg.c (update_eh_labels): New function, callback for
	for_each_eh_region.
	(label_for_bb): Make global static, unfortunately.
	(cleanup_dead_labels): Also update label references for
	exception regions.

2004-06-03  Chris Demetriou  <cgd@broadcom.com>

	* config/mips/mips.c (struct irix_section_align_entry): Fix
	GTY marker.

2004-06-03  Geoffrey Keating  <geoffk@apple.com>

	* toplev.c (check_global_declarations): Don't ask for
	DECL_ASSEMBLER_NAME unless the function really is declared
	static and not defined.

2004-06-03  Matt Austern  <austern@apple.com>

	PR c++/15428
	* default.h (TARGET_WEAK_NOT_IN_ARCHIVE_TOC): New name
	for TARGET_EXPLICIT_INSTANTIATIONS_ONE_ONLY, with reversed sense.
	* config/darwin.h (TARGET_WEAK_NOT_IN_ARCHIVE_TOC): Likewise.
	* doc/tm.texi (TARGET_WEAK_NOT_IN_ARCHIVE_TOC): Rewrite
	documentation to reflect the new macro name and to clarify its
	meaning.

2004-06-03  Steven Bosscher  <stevenb@suse.de>

	* rtl.def (VAR_LOCATION): Make RTX_EXTRA.

2004-06-03  Andrew Pinski  <pinskia@physics.uc.edu>

	* config/darwin.c (machopic_indirect_data_reference): Copy
	the SYMBOL_REF_DECL from the original RTX for the new
	non-lazy pointer RTX.

2004-06-03  Mark G. Adams  <mark.g.adams@sympatico.ca>

	* tree.h: Remove include of version.h
	* c-cppbuiltin.c: Include version.h
	* diagnostic.c: Include version.h
	* dwarf2out.c: Include version.h
	* toplev.c: Include version.h
	* vmsdbgout.c: Include version.h
	* Makefile.in: Remove dependency on version.h from TREE_H, and
	add dependencies to required .o targets

2004-06-03  Jerry Quinn  <jlquinn@optonline.net>

	* Makefile.in (RA_H, RESOURCE_H, SCHED_INT_H, CFGLAYOUT_H,
	CFGLOOP_H, DF_H, DDG_H, TREE_SSA_LIVE_H): New.
	(TARGET_H): Add insn-modes.h.
	(tree-ssa.o, tree-cfg.o, tree-ssa-loop.o, toplev.o, passes.o,
	loop.o, loop-doloop.o, unroll.o, cfgloop.o, cfgloopanal.o,
	loop-iv.o, cfgloopmanip.o, loop-init.o, loop-unswitch.o,
	loop-unroll.o, ddg.o, modulo-sched.o, predict.o,
	cfglayout.o, ifcvt.o): Replace cfgloop.h with CFGLOOP_H.
	(toplev.o, passes.o, cfghooks.o, cfgloopmanip.o, loop-init.o,
	loop-unswitch.o, loop-unroll.o, ddg.o, modulo-sched.o,
	bb-reorder.o, tracer.o, cfglayout.o): Replace cfglayout.h with
	CFGLAYOUT_H.
	(ra.o, ra-build.o, ra-colorize.o, ra-debug.o, ra-rewrite.o):
	Replace ra.h with RA_H.
	(resource.o, regrename.o, insn-conditions.o, insn-emit.o,
	insn-recog.o): Replace resource.h with RESOURCE_H.
	(ddg.o, modulo-sched.o, haifa-sched.o, sched-deps.o, sched-rgn.o,
	sched-ebb.o, sched-vis.o, out_object_file): Replace sched-int.h
	with SCHED_INT_H.
	(web.o, lcm.o, df.o, ra.o, ra-build.o, ra-colorize.o, ra-debug.o,
	ra-rewrite.o): Replace df.h with DF_H.
	(ddg.o, modulo-sched.o): Replace ddf.h with DDG_H.
	(tree-outof-ssa.o, tree-ssa-live.o, tree-ssa-copyrename.o):
	Replace tree-ssa-live.h with TREE_SSA_LIVE_H.
	(insn-conditions.o): Remove unused reload.h.
	* cfglayout.h: Add include guard.  Include basic-block.h.
	* cfgloop.h: Add include guard.  Include basic-block.h, rtl.h.
	* ddg.h: Include sbitmap.h, basic-block.h, df.h.
	* df.h: Add include guard.  Include bitmap.h, sbitmap.h,
	basic-block.h.
	* genconditions.c: Remove reload.h.
	* ra.h: Add include guard.  Include bitmap.h, sbitmap.h,
	hard-reg-set.h, insn-modes.h.
	* resource.h: Add include guard.  Include hard-reg-set.h.
	* sched-int.h: Add include guard.  Include insn-attr.h,
	basic-block.h, rtl.h.
	* target.h: Add include guard.  Include insn-modes.h.
	* tree-ssa-live.h: Include partition.h.

2004-06-03  Daniel Berlin  <dberlin@dberlin.org>
		Kenneth Zadeck <zadeck@naturalbridge.com>

	* tree-ssa-ccp.c (varying_ssa_edges): New worklist.
	(add_var_to_ssa_edges_worklist): Add value argument.
	Update callers.
	Use new worklist.
	(process_ssa_edge_worklist): New function.
	(tree_ssa_ccp): Move worklist processing core to
	process_ssa_edge_worklist, and just call that for the two worklists.

2004-06-03  Steven Bosscher  <stevenb@suse.de>

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

2004-06-02  Jan Hubicka  <jh@suse.cz>

	* tree-cfg.c (tree_find_edge_insert_loc): Allow inserting before
	return_stmt.

2004-06-02  Jason Merrill  <jason@redhat.com>

	* Makefile.in (TAGS): Don't mess with c-parse.[ch].
	Do include c-parse.in.

2004-06-02  Eric Christopher  <echristo@redhat.com>

	* c-typeck.c (common_type): Don't lose type qualifiers
	when creating new variants.

2004-06-02  Andrew Pinski  <pinskia@physics.uc.edu>

	PR tree-optimization/14042
	PR tree-optimization/14729
	PR tree-optimization/14736
	* tree-ssa.c (tree_ssa_useless_type_conversion_1):
	Check the type which the pointer points to
	instead of the pointer types.

2004-06-02  Kazu Hirata  <kazu@cs.umass.edu>

	PR tree-optimization/15738.
	* builtins.c (fold_builtin_strchr): Transform
	strrchr (s, '\0') to strchr (s, '\0').

2004-06-02  Steven Bosscher  <stevenb@suse.de>

	* i386.c (ix86_adjust_cost): Don't increase the cost for
	load+operation for PROCESSOR_PENTIUMPRO, it is already
	modelled in the DFA description

2004-06-01  Jerry Quinn  <jlquinn@optonline.net>

	* Makefile.in (EXPR_H): Add insn-config.h, function.h,
	$(RTL_H), flags.h, $(TREE_H), $(MACHMODE_H), $(EXPR_H).
	(ALIAS_H, EMIT_RTL_H): New.
	(cselib.o): Replace EXPR_H with EMIT_RTL_H.
	(cfgcleanup.o): Add EMIT_RTL_H.
	(alias.o): Replace EXPR_H with EMIT_RTL_H and ALIAS_H.
	* alias.c: Replace expr.h with emit-rtl.h and alias.h.
	* attribs.c, c-lex.c, c-obj-common.c, c-semantics.c: Remove expr.h.
	* cfgcleanup.c, cselib.c: Replace expr.h with emit-rtl.h.
	* expr.h: Add include guard.  Include function.h, rtl.h, flags.h,
	tree.h, machmode.h, insn-config.h, alias.h, emit-rtl.h.
	(get_varargs_alias_set, get_frame_alias_set, record_base_value,
	record_alias_subset, new_alias_set, can_address_p): Move to alias.h.
	(set_mem_alias_set, set_mem_align, set_mem_expr, set_mem_offset,
	set_mem_size): Move to emit-rtl.h.
	* emit-rtl.h: New.
	* alias.h: New.

2004-06-01  Eric Botcazou  <ebotcazou@act-europe.fr>

	* function.c (walk_fixup_memory_subreg): New parameter 'var'.
	Call fixup_memory_subreg only if the MEM is equal to 'var'.
	Adjust recursive calls to self.
	(fixup_var_refs_insn): Pass 'var' to walk_fixup_memory_subreg.

2004-06-01  Richard Henderson  <rth@redhat.com>
	    Andrew Pinski  <pinskia@physics.uc.edu>

	* c-parse.in (OFFSETOF, offsetof_member_designator): New.
	(primary): Handle offsetof.  Add error productions for faux functions.
	Move component_ref objc checking to build_component_ref.
	(reswords): Add offsetof.
	(rid_to_yy): Add offsetof.
	* c-tree.h (build_offsetof): Declare.
	* c-common.h (objc_is_public): Declare.
	* c-typeck.c (build_component_ref): Check objc_is_public.
	(build_offsetof): New.
	* stub-objc.c (objc_is_public): New.
	* objc/objc-act.c, objc/objc-act.h (objc_is_public): Rename
	from is_public.
	* ginclude/stddef.h (offsetof): Use __builtin_offsetof.
	* doc/extend.texi (Offsetof): Move from C++ section to C section
	and rewrite for __builtin_offsetof.

2004-06-01  Peter Barada  <peter@the-baradas.com>
	    Peter Jakubek  <peter@laseranimation.com>

	* config/m68k/m68k.c(m68k_output_mi_thunk): For ColdFire, use %d0 as
	a scratch to perform an add to memory.

2004-06-01  Bernardo Innocenti  <bernie@develer.com>

	PR target/14018
	* config/m68k/m68k.c (m68k_align_loops_string, m68k_align_jumps_string,
	m68k_align_funcs_string, m68k_align_loops, m68k_align_jumps,
	m68k_align_funcs): Remove.
	(override_options): Remove code to handle -malign-* options.
	* config/m68k/m68k.h (TARGET_OPTIONS): Remove -malign-* options.
	(FUNCTION_BOUNDARY, LOOP_ALIGN, LOOP_ALIGN_AFTER_BARRIER): Remove.
	(m68k_align_loops_string, m68k_align_jumps_string,
	m68k_align_funcs_string, m68k_align_loops, m68k_align_jumps,
	m68k_align_funcs): Remove definitions.

2004-06-01  Paul Eggert  <eggert@cs.ucla.edu>

	PR target/15626
	* doc/install.texi (sparc-sun-solaris2*): Document messages issued
	by the Sun linker in conjunction with the Sun assembler.
	(sparc-sun-solaris2.7): Update revision info for Sun patch 106950.

2004-06-01  Jeff Law  <law@redhat.com>

	* stmt.c (expand_decl): Be more selective about calling
	mark_reg_pointer.

2004-06-01  Nicola Pero  <nicola@brainstorm.co.uk>

	PR objc/7993
	* objc-act.c (is_private): Do not emit the 'instance variable %s
	is declared private' error.
	(is_public): Emit the error after calling is_private.
	(lookup_objc_ivar): If the instance variable is private, return 0
	- the instance variable is invisible here.

2004-06-01  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* doc/invoke.texi (-static-libgcc): Explicitly mention
	non-GNU linkers.

2004-06-01  Bernardo Innocenti  <bernie@develer.com>

	PR target/12968
	* doc/invoke.texi: Document stack alignment side-effect of -mshort.

2004-05-31  Joseph S. Myers  <jsm@polyomino.org.uk>

	PR c/15749
	* c-decl.c (grokdeclarator, finish_struct): Don't pedwarn for
	misuses of structures with flexible array members if
	in_system_header.

2004-05-31  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR target/15693
	* config/sparc/sparc.c (compare_operand): New predicate.
	* config/sparc/sparc.h (PREDICATE_CODES): Add it.
	* config/sparc/sparc.md (cmpsi expander): Use it.  If the first
	operand is a ZERO_EXTRACT and the second operand is not zero,
	force the former to a register.
	(cmpdi expander): Likewise.

2004-05-31  Geoffrey Keating  <geoffk@apple.com>

	* gengtype-lex.l: Catch stray GTY markers in the files gengtype
	looks at.
	* alias.c (alias_invariant_size): Make alias_invariant_size
	static, fix GTY marker.

2004-05-31  Kazu Hirata  <kazu@cs.umass.edu>

	PR tree-optimization/15743.
	* builtins.c (fold_builtin_1): Fold index() and rindex().

2004-05-31  Roger Sayle  <roger@eyesopen.com>

	PR middle-end/15069
	* fold-const.c (fold_single_bit_test): Only perform "(X & C) != 0"
	into "X < 0" (where C is the signbit) if X's type is a full mode.

2004-05-31  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* pa.md: Disable the peephole2 patterns that generate indexed
	floating-point stores when indexing is disabled.

2004-05-31  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* c-pretty-print.c (pp_c_left_bracket): Make a function.
	(pp_c_right_bracket): Likewise.
	(pp_c_star): Likewise.
	(pp_c_ampersand): Define.
	* c-pretty-print.h (pp_c_left_bracket): Declare.
	(pp_c_right_bracket): Likewise.
	(pp_c_star): Likewise.
	(pp_c_ampersand): Likewise.

2004-05-31  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* config/sol2.h (__enable_execute_stack): ANSIfy function
	definition.

2004-05-31  Danny Smith  <dannysmith@users.sourceforge.net>

	* c-incpath.c (add_path): Canonicalize paths to use '/' if
	HAVE_DOS_BASED_FILESYSTEM.

2004-05-31  Steven Bosscher  <stevenb@suse.de>

	* tree-ssa-dom.c (record_equivalences_from_incoming_edge):
	Only look at case labels if the immediate dominator is also
	the only predecessor.  Don't look for more case labels if the
	first seen is a case range.

2004-05-31  Kazu Hirata  <kazu@cs.umass.edu>

	* builtins.c: Add a prototype for fold_builtin_strchr().

2004-05-31  Paolo Bonzini  <bonzini@gnu.org>

	Revert this patch:
	2004-05-27  Paolo Bonzini  <bonzini@gnu.org>

	* combine.c (gen_binary): Remove.
	(known_cond, simplify_shift_const
	find_split_point, combine_simplify_rtx,
	simplify_if_then_else, simplify_set,
	simplify_logical, expand_field_assignment,
	extract_left_shift, force_to_mode,
	if_then_else_cond, apply_distributive_law,
	simplify_and_const_int, simplify_shift_const,
	gen_lowpart_for_combine, simplify_comparison,
	reversed_comparison): Replace with
	simplify_gen_binary, simplify_gen_relational or
	distribute_and_simplify_rtx.
	(distribute_and_simplify_rtx): New function.

2004-05-30  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* pa.c (emit_move_sequence): Fix loading of non 14-bit CONST operands
	when generating PIC code.

2004-05-30  Andrew Pinski  <pinskia@physics.uc.edu>

	* c-decl.c (c_expand_body_1): Remove and fold back into ...
	(c_expand_body): here.
	(c_expand_decl): Move to ...
	* c-common.c (c_expand_decl): Here and remove check for nested
	functions.
	* c-common.h (c_expand_decl): Add prototype.
	* c-tree.h (c_expand_decl): Remove.

2004-05-30  Roger Sayle  <roger@eyesopen.com>

	* fold-const.c (combine_comparisons, optimize_bit_field_compare,
	range_binop, fold_truthop, fold_binary_op_with_conditional_arg,
	fold_mathfn_compare, fold_inf_compare, fold,
	fold_relational_hi_lo, nondestructive_fold_binary_to_constant):
	Use constant_boolean_node where appropriate.  Don't bother using
	fold_convert on the second argument to omit_one_operand.

2004-05-30  Roger Sayle  <roger@eyesopen.com>

	* doc/c-tree.texi (Expressions): Document FLOOR_DIV_EXPR,
	CEIL_DIV_EXPR, ROUND_DIV_EXPR, FLOOR_MOD_EXPR, CEIL_MOD_EXPR,
	ROUND_MOD_EXPR, EXACT_DIV_EXPR.  Improve documentation of
	TRUNC_DIV_EXPR, TRUNC_MOD_EXPR and comparison operations.
	Add missing (but documented) tree nodes to the index.

2004-05-30  Steven Bosscher  <stevenb@suse.de>

	PR tree-optimization/14819
	* builtins.c (fold_builtin_strchr): New.
	(fold_builtin_1): Handle BUILT_IN_STRCHR and BUILT_IN_STRRCHR
	with fold_builtin_strchr().

2004-05-30  Kazu Hirata  <kazu@cs.umass.edu>

	* bb-reorder.c, builtins.c, c-common.c, c-gimplify.c,
	c-incpath.c, cgraphunit.c, ddg.c, defaults.h, dwarf2out.c,
	expmed.c, flags.h, gcc.c, gensupport.c, gimplify.c, global.c,
	passes.c, reg-stack.c, target.h, toplev.c, tree-alias-ander.c,
	tree-alias-common.c, tree-cfg.c, tree-complex.c, tree-dfa.c,
	tree-eh.c, tree-mudflap.c, tree-mudflap.h, tree-outof-ssa.c,
	tree-phinodes.c, tree-pretty-print.c, tree-ssa-alias.c,
	tree-ssa-ccp.c, tree-ssa-live.c, tree-ssa-live.h,
	tree-ssa-pre.c, tree.h, value-prof.h, varasm.c: Fix comment
	formatting.

2004-05-30  Steven Bosscher  <stevenb@suse.de>

	* gimplify.c (sort_case_labels): New.  Split out from...
	(gimplify_switch_expr): ...here.  Use it.
	* tree-eh.c (lower_try_finally_switch): Sort the labels of
	the SWITCH_EXPR created here before leaving the function.
	* tree.c (sort_case_labels): Add prototype.

2004-05-30  Andrew Pinski  <pinskia@physics.uc.edu>

	* fold-const.c (fold) [case TRUTH_NOT_EXPR]: Make sure the type is
	of BOOLEAN_TYPE.

2004-05-30  Kazu Hirata  <kazu@cs.umass.edu>

	* c-common.c, calls.c, cfgcleanup.c, cgraph.c, cgraphunit.c,
	ddg.c, ddg.h, df.c, df.h, except.c, expr.c, flags.h,
	fold-const.c, gcc.c, gimplify.c, haifa-sched.c,
	modulo-sched.c, tree-inline.c, tree-into-ssa.c, tree-nested.c,
	tree-nrv.c, tree-ssa-ccp.c, tree-ssa-dom.c, tree-ssa-live.c,
	tree-ssa-loop.c, tree-ssa-pre.c, tree-tailcall.c, tree.h: Fix
	comment typos.  Follow spelling conventions.

2004-05-29  Geoffrey Keating  <geoffk@apple.com>

	* gengtype-yacc.y: Add NESTED_PTR token.
	(option): Record `nested_ptr' option.
	* gengtype-lex.l: Handle `nested_ptr' keyword.
	* gengtype.c (walk_type): Process `nested_ptr' option.
	* gengtype.h (struct nested_ptr_data): New.
	* doc/gty.texi (GTY Options): Document `nested_ptr' option.
	* stringpool.c (struct string_pool_data): Make 'entries' point to
	ht_identifier instead of tree.
	(gt_pch_save_stringpool): Don't adjust pointers.
	(gt_pch_restore_stringpool): Call ht_load.

2004-05-29  Jason Merrill  <jason@redhat.com>

	* gimplify.c (gimplify_expr): Don't build a statement list
	if no gimplification was necessary.

2004-05-29  Joseph S. Myers  <jsm@polyomino.org.uk>

	* pretty-print.c (pp_base_format_text): Support %< instead of %`
	and %> as well as %'.
	* c-format.c: Use %< and %>.
	(gcc_diag_char_table, gcc_cdiag_char_table,
	gcc_cxxdiag_char_table): Update.

2004-05-29  Joseph S. Myers  <jsm@polyomino.org.uk>

	* c-typeck.c (common_type): Correct comment.

2004-05-29  Peter Barada  <peter@the-baradas.com>

	* config/m68k/m68k.c (CONST_METHOD): Add MVZ, MVS.
	* config/m68k/m68k.c (const_method): Likewise.
	* config/m68k/m68k.c (const_int_cost): Likewise.
	* config/m68k/m68k.c (const_int_cost): Likewise.
	* config/m68k/m68k.c (output_move_const_into_data_reg): Likewise.

2004-05-29  Peter Barada  <peter@the-baradas.com>

	* config/m68k/m68k.h (EXTRA_CONSTRAINT): add 'U' for register offset
	addressing.
	* config/m68k/m68k.md: Add 'U,U' alternative to ColdFire variants of
	movsi,movhi,movqi insn patterns.

2004-05-28  Andrew Pinski  <pinskia@physics.uc.edu>

	* c-semantics.c (emit_local_var): Remove code for DECL_INITIAL.

	PR target/15720
	* config/darwin.c (machopic_indirect_call_target): Copy
	the SYMBOL_REF_DECL from the original RTX for the new
	stub RTX.

2004-05-28  DJ Delorie  <dj@redhat.com>

	* stor-layout.c (place_field): Revert erroneous commit.

2004-05-28  Ziemowit Laski  <zlaski@apple.com>

	* config/rs6000/altivec.h (vec_ctf, vec_vcfsx, vec_vcfux, vec_cts,
	vec_ctu, vec_dss, vec_dst, vec_dstst, vec_dststt, vec_dstt, vec_ld,
	vec_ldl, vec_lvsl, vec_lvsr, vec_sld, vec_splat, vec_vspltw,
	vec_vsplth, vec_vspltb, vec_splat_s8, vec_splat_s16, vec_splat_s32,
	vec_splat_u8, vec_splat_u16, vec_splat_u32, vec_st, vec_stl,
	vec_ste): Remove type checks for integral parameters and literals
	from '..._args_eq' macros.

2004-05-28  Aldy Hernandez  <aldyh@redhat.com>

	* c-common.c (fname_as_string): Fix xcalloc to xmalloc.

2004-05-28  Aldy Hernandez  <aldyh@redhat.com>

	* testsuite/g++.dg/charset/function.cc: New.

	* testsuite/gcc.dg/charset/function.c: New.

	* c-decl.c (c_make_fname_decl): Free return value from
	fname_as_string.

	* cp/decl.c (cp_make_fname_decl): Free return value from
	fname_as_string.

	* c-common.c (fname_as_string): Translate if necessary.

2004-05-28  Geoffrey Keating  <geoffk@apple.com>

	* stringpool.c: Add comments to PCH saving/restoring routines.

2004-05-28  Andrew Pinski  <pinskia@physics.uc.edu>

	* c-common.c (c_estimate_num_insns_1): Kill.
	(c_estimate_num_insns): Kill.
	* c-common.h (c_estimate_num_insns): Kill.

	* gthr-posix.h: Check for _POSIX_PRIORITY_SCHEDULING
	when checking for _POSIX_THREAD_PRIORITY_SCHEDULING.
	Remove comment about not checking for
	_POSIX_PRIORITY_SCHEDULING.
	* gthr-posix.c: Likewise.

2004-05-28  Paolo Bonzini  <bonzini@gnu.org>
	    Roger Sayle  <roger@eyesopen.com>

	PR rtl-optimization/15649
	Add LTGT_EXPR and improve pretty-printing of unordered
	comparisons.
	* c-common.c (c_common_truthvalue_conversion):
	Handle LTGT_EXPR.
	* c-typeck.c (build_binary_op): Likewise.
	* dojump.c (do_jump): Likewise.
	* expr.c (expand_expr_real_1, do_store_flag): Likewise.
	* predict.c (tree_predict_by_opcode): Likewise.
	* real.c (real_compare): Likewise.
	* tree-cfg.c (verify_expr): Likewise.
	* tree-inline.c (estimate_num_insns_1): Likewise.
	* tree-pretty-print.c (dump_generic_node): Likewise.
	Handle ORDERED_EXPR, UNORDERED_EXPR.
	(op_symbol): Print unordered comparisons differently
	than ordered ones.
	* tree.def (LTGT_EXPR): New '<' tree code.
	* doc/c-tree.texi (Expressions): Document floating-point
	comparison nodes.

	Fold comparisons between floating point values.
	* fold-const.c (enum comparison_code): New, from
	#define'd constants.  Define compcodes for unordered
	comparisons and for invalid transformations.
	(invert_tree_comparison): Add "honor_nans" parameter.
	(fold_truthop): Revamp to work on floating-point types too.
	(comparison_to_compcode): Support unordered comparisons.
	Use new enum comparison_code.
	(compcode_to_comparison): Likewise.
	(combine_compcodes): New function.
	(invert_truthvalue): Let invert_tree_comparison decide
	whether it is valid to fold the comparison.  Fold ORDERED
	and UNORDERED even if flag_unsafe_math_optimizations is off,
	and the remaining even if flag_unsafe_math_optimizations
	is off but we are under -fno-trapping-math.
	(fold_relational_const): Integer modes do not honor NaNs.

2004-05-28  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (arm_output_epilogue): Remove redundant code.

2004-05-28  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (thumb_force_lr_save): New function.
	(arm_get_frame_offsets, thumb_unexpanded_epilogue,
	thumb_output_function_prologue): Use it.
	(thumb_expand_prologue): Set lr_save_eliminated.

2004-05-28  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.md (extendsidi2): Tie the source and destination
	of the register alternative.  Split it into nothing.

2004-05-28  Richard Sandiford  <rsandifo@redhat.com>

	* rtl.h (skip_consecutive_labels): Declare.
	* emit-rtl.c (skip_consecutive_labels): New function.
	* reorg.c (relax_delay_slots, dbr_schedule): Use it.
	* jump.c (follow_jumps): Say what null return values mean.

2004-05-28  Kaz Kojima  <kkojima@gcc.gnu.org>

	PR target/13250
	* config/sh/sh.md (rotlsi3): Use emit_move_insn.

2004-05-27  Kaz Kojima  <kkojima@gcc.gnu.org>

	* config/sh/t-linux (SHLIB_MAPFILES): Use sh specific
	libgcc-std.ver.
	* config/sh/libgcc-std.ver: New file.

2004-05-27  Bryce McKinlay  <mckinlay@redhat.com>

	* except.c: Revert change of 2004-05-26.
	* config/i386/i386.md: Revert change of 2004-05-27.

2004-05-27  Bryce McKinlay  <mckinlay@redhat.com>

	* configure.ac: Remove --enable-tree-browser option.
	Define TREEBROWSER when ac_tree_checking is defined.
	* configure: Rebuilt.

2004-05-27  Olivier Hainque  <hainque@act-europe.fr>

	* expr.c (store_constructor): Restore sanity check on
	the size of the type before clearing.

2004-05-27  Jan Hubicka  <jh@suse.cz>

	* cfgbuild.c (control_flow_insn_p): Notice noreturn call

2004-05-27  Paolo Bonzini  <bonzini@gnu.org>

	* combine.c (gen_binary): Remove.
	(known_cond, simplify_shift_const
	find_split_point, combine_simplify_rtx,
	simplify_if_then_else, simplify_set,
	simplify_logical, expand_field_assignment,
	extract_left_shift, force_to_mode,
	if_then_else_cond, apply_distributive_law,
	simplify_and_const_int, simplify_shift_const,
	gen_lowpart_for_combine, simplify_comparison,
	reversed_comparison): Replace with
	simplify_gen_binary, simplify_gen_relational or
	distribute_and_simplify_rtx.
	(distribute_and_simplify_rtx): New function.
	* simplify-rtx.c (simplify_binary_operation):
	Use nonzero_bits to simplify ANDs where we are
	turning off bits already known to be off in OP0.

2004-05-27  Alan Modra  <amodra@bigpond.net.au>

	PR target/14478
	* config/rs6000/rs6000.c (reg_or_neg_short_operand): Don't allow zero.

2004-05-27  Josef Zlomek  <zlomekj@suse.cz>

	PR middle-end/14084
	* emit-rtl.c (gen_rtx_REG_offset): Adjust the offset according
	to size of decl.

2004-05-26  Aldy Hernandez  <aldyh@redhat.com>

	PR/14924
	* config/rs6000/rs6000.c (spe_expand_stv_builtin): New.

2004-05-26  Roger Sayle  <roger@eyesopen.com>

	* tree.h: Fix comment typo.

2004-05-27  Steven Bosscher  <stevenb@suse.de>

	* gimplify.c (compare_case_labels): New function.
	(gimplify_switch_expr): Sort case labels, and make sure the
	last label in the label vector is the default case.
	* tree-cfg.c (group_case_labels): New function.
	(build_tree_cfg): Cleanup redundant labels and group case labels
	before creating edges.
	(cleanup_dead_labels): Handle GOTO_EXPRs.
	(find_case_label_for_value): Use a binary search to find the
	case label for the given value.
	* tree-gimple.c: Mention that labels are sorted, and that the
	last label must be the default.

2004-05-27  Jan Hubicka  <jh@suse.cz>

	* cfgcleanup.c (try_optimize_cfg): Do not merge across jumptables.

2004-05-27  Jan Hubicka  <jh@suse.cz>

	* i386.md (UNSPECV_EH_RETURN): Kill.
	(eh_return): Use jump_insn.
	(eh_return_si, eh_return_di): Change pattern to jump instruction.

2004-05-26  Jan Hubicka  <jh@suse.cz>

	* cfgcleanup.c (try_forward_edges): Do not check loop structure when
	not loop optimizing.

2004-05-26  Jan Hubicka  <jh@suse.cz>

	* except.c (can_throw_internal): Notice RESX instructions.

2004-05-26  Eric Botcazou  <ebotcazou@act-europe.fr>

	* varasm.c (output_constant) <INTEGER_TYPE>: Pass the minimum
	of the two sizes to assemble_integer.

2004-05-25  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (thumb_exit, thumb_unexpanded_epilogue): Remove
	pointless #ifdef.

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

	* Makefile.in (top_builddir): Define to .

2004-05-25  Alexandre Oliva  <aoliva@redhat.com>

	* configure.ac (gcc_cv_ld): Prefer in-tree ld over whatever the
	top-level detects, except when in-tree ld is being cross-built.
	(gcc_cv_as): Likewise for as.  Use AS_FOR_TARGET otherwise, and
	then AS only if target is host.
	* configure: Rebuilt.

2004-05-25  Vladimir Makarov  <vmakarov@redhat.com>

	* global.c (global_alloc): Call make_accurate_live_analysis.
	(record_one_conflict): Remove dead code.
	(mark_reg_clobber): Remove ATTRIBUTE_UNUSED for parameter data.
	(bb_info): New structure.
	(BB_INFO, BB_INFO_BY_INDEX): New macros.
	(allocate_bb_info, free_bb_info, mark_reg_change,
	calculate_local_reg_bb_info, set_up_bb_rts_numbers, rpost_cmp,
	modify_bb_reg_pav, calculate_reg_pav,
	make_accurate_live_analysis): New functions.

2004-05-25  Devang Patel  <dpatel@apple.com>

	* alias.c (init_alias_analysis): Use ggc_calloc instead of
	xrealloc.
	(end_alias_analysis): Use ggc_free instead fo free.

2004-05-25  Andrew Pinski  <pinskia@physics.uc.edu>

	PR target/15546
	* config/ia64/ia64.h (ASM_OUTPUT_FDESC): Mark the DECL
	as needed to be outputted.

2004-05-25  Jan Hubicka  <jh@suse.cz>

	* builtins.def (__builtin_expect): Mark the function as const&nothrow.

2004-05-25  Ayal Zaks  <zaks@il.ibm.com>
	Mostafa Hagog  <mustafa@il.ibm.com>

	* Makefile.in (modulo-sched.o, ddg.o): New.
	* ddg.h, ddg.c, modulo-sched.c: New files.
	* cfglayout.c (duplicate_insn_chain): Remove "static" and push
	internals to "dupicate_insn".
	(duplicate_insn): New function.
	* cfglayout.h (duplicate_insn_chain, duplicate_insn): New
	declarations.
	* common.opt (fmodulo-sched): New flag.
	* df.c (df_bb_regno_last_use_find, df_bb_regno_first_def_find):
	Remove static and forward declaration.
	(df_find_def, df_reg_used, df_bb_regno_last_def_find): New
	functions.
	* df.h (df_bb_regno_last_use_find, df_bb_regno_first_def_find,
	df_bb_regno_last_def_find, df_find_def, df_reg_used): New
	declarations.
	* flags.h (flag_modulo_sched): New flag.
	* opts.c (common_handle_option): Handle modulo-sched flag.
	* params.def (max-sms-loop-number, sms-max-ii-factor,
	sms-dfa-history, sms-loop-average-count-threshold): New
	parameters.
	* params.h (MAX_SMS_LOOP_NUMBER, SMS_MAX_II_FACTOR,
	SMS_DFA_HISTORY, SMS_LOOP_AVERAGE_COUNT_THRESHOLD): New
	parameters.
	* passes.c ("sms", "sms-vcg"): New dumps.
	(rest_of_handle_sched): Call sms_schedule.
	* rtl.h (sms_schedule): New declaration.
	* timevar.def (TV_SMS): New.
	* toplev.c (flag_modulo_sched): Initialize.
	(f_options): Handle -fmodulo-sched option.
	* docs/invoke.texi: Document -fmodulo-sched & -dm options.
	* docs/passes.texi: Document new SMS pass.

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

	* Makefile.in (OBJS): Add rtlhooks.o.
	(rtlanal.o): Depend on function.h.
	(cse.o): Depend on rtlhooks-def.h.
	(combine.o): Depend on rtlhooks-def.h.
	(rtlhooks.o): New rule.
	* combine.c: Include rtlhooks-def.h.
	(nonzero_bits, cached_nonzero_bits, nonzero_bits1,
	num_sign_bit_copies, cached_num_sign_bit_copies,
	num_sign_bit_copies1): Move most of the code to rtlanal.c.
	(reg_nonzero_bits_for_combine,
	reg_num_sign_bit_copies_for_combine): New functions holding
	the remnants of the above.
	(combine_rtl_hooks): New.
	(combine_instructions): Set rtl_hooks instead of gen_lowpart.
	* cse.c: Include rtlhooks-def.h.
	(cse_rtl_hooks): New.
	(cse_main): Set rtl_hooks instead of gen_lowpart.
	* emit-rtl.c (gen_lowpart): Remove.
	(gen_lowpart_general): Move to rtlhooks.c.
	* rtl.h (nonzero_bits, num_sign_bit_copies,
	struct rtl_hooks, rtl_hooks, general_rtl_hooks): New.
	(gen_lowpart_general): Remove.
	(gen_lowpart): Temporarily redefine as a macro.
	* rtlanal.c: Include function.h.
	(nonzero_bits, cached_nonzero_bits, nonzero_bits1,
	num_sign_bit_copies, cached_num_sign_bit_copies,
	num_sign_bit_copies1): New, from combine.c.
	* rtlhooks.c: New file.
	* rtlhooks-def.h: New file.

2004-05-25  Svein E. Seldal  <Svein.Seldal@solidas.com>

	* config/avr/avr.h (LONG_LONG_TYPE_SIZE): Changed long long type
	to support 32-bit -mint8 mode.

	* doc/invoke.texi (-mint8): Added documentation for the -mint8
	option in the AVR architecture.

2004-05-24  Mike Stump  <mrs@apple.com>

	* doc/install.texi: Document that dejagnu 1.4.4 is required.

2004-05-24  Joseph S. Myers  <jsm@polyomino.org.uk>

	* intl.h (open_quote, close_quote): New.
	* intl.c (open_quote, close_quote): New.
	(gcc_init_libintl): Set them.
	* pretty-print.c: Include "intl.h".
	(pp_base_format_text): Support 'q' format flag and %` and %'
	formats.  Use ' instead of ` in comments.
	* c-format.c (gcc_diag_flag_specs, gcc_cxxdiag_flag_specs,
	gcc_diag_char_table, gcc_cdiag_char_table, gcc_cxxdiag_char_table,
	foramt_types_orig): Describe these new formats.
	(decode_format_attr, check_function_format,
	check_format_info_main): Use these new formats.
	(status_warning): Use ATTRIBUTE_GCC_DIAG.
	* toplev.c (ATTRIBUTE_GCC_DIAG): Increase required GCC version to
	check these formats to 3.5.

2004-05-24  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* Makefile.in (CPPLIBS): Renamed to CPPLIB.
	(BACKEND): Reflect this.
	(LIBDEPS): Move CPPLIB before LIBIBERTY.
	(LIBS): Likewise.

2004-05-24  Ulrich Weigand  <uweigand@de.ibm.com>

	PR tree-optimization/14197
	* builtins.c: Include "tree-gimple.h"
	(readonly_data_expr): Use get_base_address.  Make sure to call
	decl_readonly_section only on trees it can handle.
	* tree-gimple.c (get_base_address): Accept STRING_CST and
	CONSTRUCTOR expressions.
	* Makefile.in: Update dependencies.

2004-05-23  Paolo Bonzini  <bonzini@gnu.org>

	Move libcpp to the toplevel.
	* Makefile.in: Remove references to libcpp files,
	use CPPLIBS instead of libcpp.a.  Define SYMTAB_H
	and change hashtable.h to that.
	* aclocal.m4 (gcc_AC_HEADER_STDBOOL,
	gcc_AC_HEADER_STRING, gcc_AC_C__BOOL): Remove.
	* configure.ac (gcc_AC_C__BOOL, HAVE_UCHAR): Remove tests.
	* configure: Regenerate.
	* config.in: Regenerate.
	* c-ppoutput.c: Include ../libcpp/internal.h instead of cpphash.h.
	* cppcharset.c: Removed.
	* cpperror.c: Removed.
	* cppexp.c: Removed.
	* cppfiles.c: Removed.
	* cpphash.c: Removed.
	* cpphash.h: Removed.
	* cppinit.c: Removed.
	* cpplex.c: Removed.
	* cpplib.c: Removed.
	* cpplib.h: Removed.
	* cppmacro.c: Removed.
	* cpppch.c: Removed.
	* cpptrad.c: Removed.
	* cppucnid.h: Removed.
	* cppucnid.pl: Removed.
	* cppucnid.tab: Removed.
	* hashtable.c: Removed.
	* hashtable.h: Removed.
	* line-map.c: Removed.
	* line-map.h: Removed.
	* mkdeps.c: Removed.
	* mkdeps.h: Removed.
	* stringpool.h: Include symtab.h instead of hashtable.h.
	* tree.h: Include symtab.h instead of hashtable.h.
	* system.h (O_NONBLOCK, O_NOCTTY): Do not define.

2004-05-23 Paolo Bonzini <bonzini@gnu.org>

	* gcc.c (struct prefix_list): Add forward declaration.
	(do_spec_path): New function, extracted from...
	(do_spec_1) <'D'>: ... here.  Drop support for
	SPACE_AFTER_L_OPTION.
	(do_spec_1) <'I'>: Use do_spec_path.
	(process_command): Do not store the 'include' suffix
	in include_prefixes.
	* system.h: Poison SPACE_AFTER_L_OPTION.

2004-05-23  Roger Sayle  <roger@eyesopen.com>

	* fold-const.c (non_lvalue): Explicitly list the tree codes that
	need to be wrapped by NON_LVALUE_EXPR, instead of those that don't.

2004-05-23  Joseph S. Myers  <jsm@polyomino.org.uk>

	* doc/gcc.texi, doc/gccint.texi, doc/include/gcc-common.texi:
	Update based on printed manual.  Enable setting of offsets for
	FSFPRINT and move it to gcc-common.texi.
	* doc/gcc.texi: Update FSF printing details.
	* doc/gccint.texi: Remove FSF printing details.

2004-05-23  Andrew Pinski  <pinskia@physics.uc.edu>

	* config/rs6000/t-rs6000: Remove the disabling -Werror.

2004-05-22  Roger Sayle  <roger@eyesopen.com>

	* builtins.c (expand_builtin_strstr, expand_builtin_strchr,
	expand_builtin_strrchr, expand_builtin_strpbrk,
	expand_builtin_mempcpy, expand_builtin_memcmp,
	expand_builtin_strcmp, expand_builtin_strncmp,
	expand_builtin_strcat, std_expand_builtin_va_start,
	std_expand_builtin_va_arg, expand_builtin_va_copy,
	expand_builtin_signbit, fold_builtin_cabs,
	fold_builtin_logarithm, fold_builtin_mempcpy,
	fold_builtin_signbit, fold_builtin_isascii,
	fold_builtin_toascii, fold_builtin_isdigit,
	fold_builtin_1, build_function_call_expr,
	simplify_builtin_strchr, simplify_builtin_strrchr,
	simplify_builtin_strpbrk, simplify_builtin_strncpy,
	simplify_builtin_memcmp, simplify_builtin_strcmp,
	simplify_builtin_strncmp, simplify_builtin_strncat,
	simplify_builtin_strspn, simplify_builtin_strcspn,
	simplify_builtin_fputs, simplify_builtin_sprintf): Replace calls
	to build with calls to build2, build3 or omit_one_operand.

2004-05-22  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.c (mips_file_start): Emit a .gcc_compiled_longXX
	section when generating EABI code.

2004-05-22  Andrew Pinski  <pinskia@physics.uc.edu>

	PR 15546
	* config/i386/i386.c (output_pic_addr_const <case SYMBOL_REF>):
	Call mark_decl_referenced on the SYMBOL_REF_DECL.

2004-05-22  Andrew Pinski  <pinskia@physics.uc.edu>

	* c-common.c (c_common_truthvalue_conversion): Handle
	UNEQ_EXPR, UNLE_EXPR, UNGE_EXPR, UNLT_EXPR, UNGT_EXPR,
	ORDERED_EXPR, and UNORDERED_EXPR as comparison operators,
	i.e. set the type to truthvalue_type_node and return.

2004-05-22  Zack Weinberg  <zack@codesourcery.com>

	* tree.h (struct tree_decl): Add possibly_inlined bit.
	(DECL_POSSIBLY_INLINED): New accessor macro.
	* cgraph.h: Remove declaration of cgraph_inline_hash.
	* cgraph.c: Remove definition of cgraph_inline_hash.
	(hash_node): Revert to hashing DECL_UID.
	(eq_node): Take two pointers to cgraph_node structures.
	Compare DECL_UIDs.
	(cgraph_remove_node): Pass the node directly to htab_find_slot.
	(cgraph_varpool_hash_node): Rename hash_varpool_node;
	hash on DECL_UID.
	(eq_cgraph_varpool_node): Rename eq_varpool_node; take two
	pointers to cgraph_varpool_node structures; compare DECL_UIDs.
	(cgraph_node): Allocate a temporary node on the stack, fill in
	its DECL field, and pass that to htab_find_slot.
	(cgraph_varpool_node): Likewise.
	(cgraph_function_possibly_inlined_p): If global info is ready,
	return the DECL_POSSIBLY_INLINED bit.
	* cgraphunit.c (cgraph_mark_inline_edge): Set DECL_POSSIBLY_INLINED
	instead of mucking with cgraph_inline_hash.

2004-05-22  Joseph S. Myers  <jsm@polyomino.org.uk>

	* doc/contrib.texi: Add g77 contributors.

2004-05-22  Richard Sandiford  <rsandifo@redhat.com>

	* calls.c (initialize_argument_information): Forbid sibcalls if a
	callee-copied argument is stored in the current function's frame.

2004-05-22  Eric Christopher  <echristo@redhat.com>

	* fix-header.c (read_scan_file): Update for add_path change.

2004-05-22  Ben Elliston  <bje@au.ibm.com>

	* c.opt (Wmissing-include-dirs): New.
	* c-opts.c (c_common_handle_option): Pass true for user_supplied_p
	to add_path () for -I, but false for OPT_idirafter, OPT_iquote and
	OPT_isystem. Handle case OPT_Wmissing_include_dirs.
	* c-incpath.h (add_path): Add fourth (bool) argument.
	* c-incpath.c (add_env_var_paths): Pass false to add_path ().
	(add_standard_paths): Likewise.
	(remove_duplicates) [REASON_NOENT]: Warn if -Wmissing-include-dirs
	is used and the directory was user-supplied via -I.
	(add_path): Set p->user_supplied_p.  Remove duplicated code by
	using add_cpp_dir_path ().
	* cpplib.h (struct cpp_options): Add warn_missing_include_dirs.
	(struct cpp_dir): Add user_supplied_p.
	* doc/invoke.texi (Warning Options): Document new option.

2004-05-21  Ulrich Weigand  <uweigand@de.ibm.com>

	* fold-const.c (fold_read_from_constant_string): Convert result to
	requested type.

2004-05-21  Richard Henderson  <rth@redhat.com>

	* gimplify.c (mostly_copy_tree_r): Don't attempt to copy decls.
	(copy_if_shared_r): Don't copy decls, types, constants, BINDs.
	Don't mark VA_ARG_EXPRs volatile here.
	(gimplify_modify_expr): Unshare TYPE_SIZE_UNIT.

2004-05-21  Richard Henderson  <rth@redhat.com>

	* Makefile.in (tree-dump.o): Depend on tree-iterator.h.
	* tree-dump.c (dequeue_and_dump): Dump STATEMENT_LISTs.

2004-05-21  Roger Sayle  <roger@eyesopen.com>

	* fold-const.c (fold, fold_relational_hi_lo,
	nondestructive_fold_binary_to_constant,
	fold_read_from_constant_string): Use fold_convert instead of convert.
	* builtins.c (simplify_builtin, simplify_builtin_strstr,
	simplify_builtin_strchr, simplify_builtin_strrchr,
	simplify_builtin_strpbrk): Use fold_convert instead of convert.

2004-05-21  Diego Novillo  <dnovillo@redhat.com>

	* tree-flow-inline.h (num_immediate_uses): Don't abort if DF
	is NULL.

2004-05-21  Jakub Jelinek  <jakub@redhat.com>

	* config/sparc/linux64.h (OPTION_DEFAULT_SPECS): If SPARC_BI_ARCH,
	override sparc.h definition.

2004-05-20  Roger Sayle  <roger@eyesopen.com>

	* tree.c (array_type_nelts, save_expr, substitute_in_expr,
	get_unwidened, get_narrower): Replace build with build2.
	* fold-const.c (negate_expr, associate_trees, size_binop,
	fold_convert, eval_subst, omit_one_operand, invert_truthvalue,
	pedantic_omit_one_operand, distribute_bit_expr,
	make_bit_field_ref, optimize_bit_field_compare,
	decode_field_reference, range_binop, make_range,
	build_range_check, fold_range_test, fold_truthop,
	optimize_minmax_comparison, extract_muldiv_1,
	fold_binary_op_with_conditional_arg, fold_mathfn_compare,
	fold_inf_compare, fold_single_bit_test, fold,
	fold_relational_hi_lo, nondestructive_fold_binary_to_constant):
	Likewise replace build with either build2 or build3.

2004-05-20  Ian Lance Taylor  <ian@wasabisystems.com>

	* system.h: Poison NO_RECURSIVE_FUNCTION_CSE.
	* calls.c (prepare_call_address): Don't test
	NO_RECURSIVE_FUNCTION_CSE.
	* config/arc/arc.h (NO_RECURSIVE_FUNCTION_CSE): Don't define.
	* config/arm/arm.h (NO_RECURSIVE_FUNCTION_CSE): Likewise.
	* config/avr/avr.h (NO_RECURSIVE_FUNCTION_CSE): Likewise.
	* config/frv/frv.h (NO_RECURSIVE_FUNCTION_CSE): Likewise.
	* config/i386/i386.h (NO_RECURSIVE_FUNCTION_CSE): Likewise.
	* config/ip2k/ip2k.h (NO_RECURSIVE_FUNCTION_CSE): Likewise.
	* config/iq2000/iq2000.h (NO_RECURSIVE_FUNCTION_CSE): Likewise.
	* config/m32r/m32r.h (NO_RECURSIVE_FUNCTION_CSE): Likewise.
	* config/m68k/m68k.h (NO_RECURSIVE_FUNCTION_CSE): Likewise.
	* config/mcore/mcore.h (NO_RECURSIVE_FUNCTION_CSE): Likewise.
	* config/mips/mips.h (NO_RECURSIVE_FUNCTION_CSE): Likewise.
	* config/stormy16/stormy16.h (NO_RECURSIVE_FUNCTION_CSE):
	Likewise.
	* config/xtensa/xtensa.h (NO_RECURSIVE_FUNCTION_CSE): Likewise.
	* config/sh/sh.h: Remove NO_RECURSIVE_FUNCTION_CSE comment.
	* doc/tm.texi (Costs): Remove documentation for
	NO_RECURSIVE_FUNCTION_CSE.

2004-05-20  Paul Brook  <paul@codesourcery.com>

	* unwind-dw2-fde.c (get_cie_encoding): Handle dwarf3 CIE format.
	* unwind-dw2.c (extract_cie_info): Ditto.
	(_Unwind_FrameState): Change retaddr_column to word type.

2004-05-20  Roger Sayle  <roger@eyesopen.com>

	PR middle-end/3074
	* fold-const.c (strip_compound_expr): Delete function.
	(count_cond): Delete function.
	(fold_binary_op_with_conditional_arg): Only perform transformations
	"a + (b?c:d) -> b ? a+c : a+d" and "(b?c:d) + a -> b ? c+a : d+a"
	when a is constant.  This greatly simplifies this routine.

	* tree.c (saved_expr_p): Delete function.
	* tree.h (saved_expr_p): Delete function prototype.

2004-05-20  Andrew Pinski  <pinskia@physics.uc.edu>

	* common.opt (ftree-loop-optimize): Remove.

2004-05-20  Daniel Jacobowitz  <dan@debian.org>

	* Makefile.in (AR_FOR_TARGET, RANLIB_FOR_TARGET)
	(NM_FOR_TARGET): Use := and $(shell).
	(mainversion): Remove unused variable.

2004-05-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* reorg.c (delete_from_delay_slot): If we have a barrier after the
	sequence containing the insn to be deleted, always reemit it.

2004-05-20  Richard Henderson  <rth@redhat.com>

	PR 15454
	* tree-nested.c (get_chain_decl): Create a PARM_DECL by hand.
	* function.c (expand_function_start): Expand static_chain_decl by hand.
	* gimplify.c (create_tmp_var_name): Export.
	* tree-gimple.h (create_tmp_var_name): Declare.

2004-05-20  Andrew Pinski  <pinskia@physics.uc.edu>

	* rs6000.c (print_operand) <case 'z'>: Call
	mark_decl_referenced before assemble_name.

2004-05-20  Zack Weinberg  <zack@codesourcery.com>

	* cgraph.c (hash_node, eq_node, cgraph_node, cgraph_remove_node)
	(cgraph_varpool_hash_node, eq_cgraph_varpool_node)
	(cgraph_varpool_node): Hash on the pointer to the decl, not
	the DECL_UID.  Fixes 64-bit bootstrap failure.

2004-05-20  Richard Earnshaw <rearnsha@arm.com>

	* arm.md (ite_ne_zeroextractsi, ite_ne_zeroextractsi_shifted): Ensure
	we don't earlyclobber operands used in the second insn.

2004-05-20  Steven Bosscher  <stevenb@suse.de>

	* tree-mudflap.c: Formatting fixes.

2004-05-20  J"orn Rennecke <joern.rennecke@superh.com>

	* Makefile.in (GTFILES): Add $(srcdir)/reload.h.
	* gengtype.c (open_base_files): Include reload.h in ifiles.
	* reload.h (reg_equiv_memory_loc_varray): Declare.
	* reload1.c (reg_equiv_memory_loc_varray): New variable.
	(init_reload): Initialize it.
	(reload): Instead of freeing reg_equiv_memory_loc, 'grow'
	reg_equiv_memory_loc_varray to size 0.
	* ra.c (reg_alloc): Allocate reg_equiv_memory_loc by
	growing reg_equiv_memory_loc_varray to the desired size.
	* passes.c (rest_of_handle_old_regalloc): Likewise.
	* reload.c: Amend comment on calling init_reload.

2004-05-20  Nick Clifton  <nickc@redhat.com>

	* config/c4x/c4x.h (INITIALIZE_TRAMPOLINE): Replace 'tramp'
	with 'TRAMP' in the body of the macro definition.

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.

2004-05-20  Falk Hueffner  <falk@debian.org>

	PR other/15526
	* libgcc2.c (__mulvsi3): Fix overflow test.

2004-05-19  Andrew Pinski  <pinskia@physics.uc.edu>

	PR c/14171
	* reg-stack.c (nan): Rename to ...
	(not_a_num): Here.
	(reg_to_stack): Rename nan to not_a_num.
	(subst_stack_regs_pat): Likewise.
	(convert_regs_entry): Likewise.
	(convert_regs_1): Likewise.

	* tree-cfg.c (find_case_label_for_value): Replace call to
	simple_cst_equal with tree_int_cst_equal.

2004-05-19  Jeff Law <law@redhat.com>

	* tree-into-ssa.c (prepare_operand_for_rename): New argument is_use.
	If the operand is for a use, then strip away the SSA_NAME, do not
	strip away the SSA_NAME for a set.  Never call release_ssa_name.
	(mark_def_sites): Appropriately pass additional argument to
	prepare_operand_for_rename.  If a VDEF_RESULT is not an SSA_NAME,
	then set the VDEF_RESULT to the VDEF_OP.
	(set_def_block): Strip away any SSA_NAME to get to the real
	underlying variable.

	* tree-ssa-phiopt.c (value_replacement): Handle the case where
	the desired edge out of COND_BLOCK reaches OTHER_BLOCK rather than
	BB directly.

2004-05-19  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	PR c++/15463
	* loop-iv.c (iv_number_of_iterations): Use trunc_int_for_mode on
	result of inverse.

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

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

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

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

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

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

2004-05-19  Roger Sayle  <roger@eyesopen.com>

	* doc/tm.texi (TARGET_RTX_COSTS): Document that instruction
	costs should be based on code size when optimizing for size.

2004-05-19  Paolo Bonzini  <bonzini@gnu.org>

	* fold-const.c: Remove non-printable character 160.

2004-05-19  Nick Clifton  <nickc@redhat.com>

	* doc/invoke.texi (ARM Options): Fix typo.
	Remove descrption of -mshort-load-bytes and
	-mno-short-load-bytes.

	* config/ip2k/ip2k.c (ip2k_composite_xexp_not_uses_reg_p): Add
	missing parenthesis.
	* config/ip2k/ip2k.c (ip2k_unary_operator): Likewise.
	* config/ip2k/ip2k.c (ip2k_binary_operator): Likewise.

2004-05-19  Steven Bosscher  <stevenb@suse.de>

	* expr.c (store_constructor): Build loop start and end by hand
	instead of via loop functions from stmt.c.
	(expand_expr_real_1): Abort if we see an EXIT_EXPR or a LOOP_EXPR.
	Remove the code to expand them.

	* stmt.c (loop_stack): Remove this and everything related.
	(struct nesting, enum nesting_desc): Update.
	(expand_fixup): Likewise.
	(expand_loop_start, expand_start_loop_continue_elsewhere,
	expand_start_null_loop, expand_loop_continue_here, expand_end_loop,
	expand_end_null_loop, expand_continue_loop, expand_exit_loop,
	expand_exit_loop_if_false, expand_exit_loop_top_cond,
	expand_exit_something): Remove.
	* tree.h: Remove prototypes.

2004-05-18  Mike Stump  <mrs@apple.com>
	    Devang Patel  <dpatel@apple.com>

	* doc/tm.texi (TARGET_ASM_EMIT_UNWIND_LABEL): Add argument to indicate
	if this label is for eh.
	* config/darwin-protos.h (darwin_emit_unwind_label): Likewise.
	* config/darwin.c (darwin_emit_unwind_label): Likewise.
	* dwarf2out.c (output_call_frame_info): Likewise.
	* output.h (default_emit_unwind_label): Likewise.
	* target.h (unwind_label): Likewise.
	* varasm.c (default_emit_unwind_label): Likewise.

	* config/darwin.h (DWARF2_DEBUGGING_INFO, PREFERRED_DEBUGGING_TYPE,
	DEBUG_FRAME_SECTION, DEBUG_INFO_SECTION, DEBUG_ABBREV_SECTION,
	DEBUG_ARANGES_SECTION, DEBUG_MACINFO_SECTION, DEBUG_LINE_SECTION,
	DEBUG_LOC_SECTION, DEBUG_PUBNAMES_SECTION, DEBUG_STR_SECTION,
	DEBUG_RANGES_SECTION): Define.

2004-05-18  Zack Weinberg  <zack@codesourcery.com>

	* cgraph.c (hash_node, eq_node, cgraph_node, cgraph_remove_node)
	(cgraph_varpool_hash_node, eq_cgraph_varpool_node)
	(cgraph_varpool_node):
	Use DECL_UID for the key, not DECL_ASSEMBLER_NAME.
	(cgraph_function_possibly_inlined_p): Use the decl itself for
	the key, not DECL_ASSEMBLER_NAME.
	(change_decl_assembler_name): No need to muck with the hash tables.
	(cgraph_node_for_identifier, cgraph_varpool_node_for_identifier):
	Delete.
	* cgraphunit.c (cgraph_mark_inline_edge): Use the decl itself
	for the key, not DECL_ASSEMBLER_NAME.
	* cgraph.h: Remove prototypes of deleted functions.
	* varasm.c (mark_referenced): Just set TREE_SYMBOL_REFERENCED.
	(mark_decl_referenced): New function.
	* tree.h: Prototype mark_decl_referenced.
	* final.c (output_addr_const) <case SYMBOL_REF>: Call
	mark_decl_referenced before assemble_name.
	* c-decl.c (finish_decl): Use mark_decl_referenced.

2004-05-18  Andrew Pinski  <pinskia@physics.uc.edu>
	    Jeff Law <law@redhat.com>

	* tree-ssa-phiopt.c (abs_replacement): New function.
	(empty_block_p): New function extracted from...
	(candidate_bb_for_phi_optimization): Break out empty block test.
	(conditional_replacement): Use empty_block_p.
	(value_replacement): Similarly.

	* Makefile.in (tree-ssa-phiopt.o): Depends on flags.h.
	* tree-ssa-phiopt.c: Include flags.h.
	(conditional_replacement): Remove argument names from prototype.
	Minor formatting and comment fixes.
	(tree_ssa_phiopt): If conditional_replacement returns false, then
	call value_replacement.
	(value_replacement): New function.

2004-05-18  Jeff Law  <law@redhat.com>

	* tree-ssa-phiopt.c (replace_phi_with_stmt): New function extracted
	from conditional_replacement.
	(candidate_bb_for_phi_optimization): Similarly.
	(conditional_replacement): Use replace_phi_with_stmt and
	candidate_bb_for_phi_optimization.

	* tree-ssa-phiopt.c: Fix various formatting issues.

2004-05-18  Steven Bosscher  <stevenb@suse.de>

	* config/s390/s390.c (s390_expand_movstr, s390_expand_clrstr,
	s390_expand_cmpmem): Do not use expand_start_loop and
	expand_end_loop, instead build the loop manually.

2004-05-18  Alan Modra  <amodra@bigpond.net.au>

	* config/rs6000/rs6000.md (ctrsi_internal3): Delete.
	(ctrsi_internal4, ctrdi_internal3, ctrdi_internal4): Delete.

2004-05-17  Jeff Law  <law@redhat.com>

	* toplev.h (flag_delete_null_pointer_checks): Move from here to...
	* flags.h (flag_delete_null_pointer_checks): Here.
	* tree-flow.h (cprop_into_successor_phis): Add argument to prototype.
	* tree-phinodes.c (resize_phi_node): Initialize PHI_ARG_NONZERO.
	(add_phi_arg, remove_phi_arg_num): Similarly.
	* tree-ssa-copy.c (cprop_into_successor_phis): Propagate nonzero
	property into PHI nodes.
	* tree-ssa-dom.c: Remove redundant inclusion of flags.h.
	(record_equivalences_from_phis): If all PHI arguments are known to be
	nonzero, then the result must be nonzero as well.
	(cprop_into_phis): Pass nonzero_vars bitmap to cprop_into_successor_phis.
	(record_equivalences_from_stmt): Check flag_delete_null_pointer_checks
	appropriately.  Walk the USE-DEF chains and propagate nonzero property
	as appropriate.
	* tree.h (PHI_ARG_NONZERO): Define.
	(phi_arg_d): Add nonzero flag.

2004-05-17  Zack Weinberg  <zack@codesourcery.com>

	* f: Entire directory removed

	* c-common.h (CTI_G77_INTEGER_TYPE, CTI_G77_UINTEGER_TYPE)
	(CTI_G77_LONGINT_TYPE, CTI_G77_ULONGINT_TYPE)
	(g77_integer_type_node, g77_uinteger_type_node)
	(g77_longint_type_node, or g77_ulongint_type_node): Delete.
	* c-common.c (c_common_nodes_and_builtins): Do not initialize
	the above set of variables.

	* config/i386/uwin.h: No need to define WIN32_UWIN_TARGET.
	* doc/invoke.texi, doc/standards.texi: Remove cross-references
	to g77 manual.

2004-05-17  Steven Bosscher  <stevenb@suse.de>

	PR tree-optimization/15438
	* tree-ssa-operands.c (get_expr_operands): Do not treat malloc
	attributed functions as pure or const.

2004-05-17  Frank Ch. Eigler  <fche@redhat.com>

	* tree-mudflap.c (mx_register_decls): Tolerate decl trees resulting
	from source code with errors.

2004-05-17  Ranjit Mathew  <rmathew@hotmail.com>

	Enable tree browser for all front ends.
	* Makefile.in (cc1): Moved @TREEBROWSER@ from here...
	(BACKEND): ...to here.

2004-05-17  Jan Hubicka  <jh@suse.cz>

	* i386.c (construct_container): Do not produce BLKmode registers.
	(classify_argument): Properly compute alignment of complex types.

2004-05-17  H.J. Lu  <hongjiu.lu@intel.com>

	PR target/15084
	* config/i386/i386.md (*movsi_insv_1_rex64): Changed to DImode
	and renamed to movdi_insv_1_rex64.
	(insv): Support SImode for 32bit and DImode for 64bit.

2004-05-17  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.h (MASK_DEBUG_G, TARGET_DEBUG_G_MODE): Delete.
	(TARGET_SWITCHES): Remove debugg.
	* config/mips/mips.md (adddi3, ashldi3, ashrdi3, lshrdi3): Only handle
	TARGET_64BIT.
	(subdi3): Replace the define_expand with a define_insn, the latter
	renamed from subdi3_internal_3.
	(negdi2): Likewise negdi2_internal_2.
	(adddi3_internal_[12], subdi3_internal, ashldi3_internal{,2,3})
	(ashrdi3_internal{,2,3}, lshrdi3_internal{,2,3}): Remove patterns
	and associated define_splits.
	(adddi3_internal): Renamed from adddi3_internal_3.
	(ashldi3_internal): Likewise ashldi3_internal4.
	(ashrdi3_internal): Likewise ashrdi3_internal4.
	(lshrdi3_internal): Likewise lshrdi3_internal4.

2004-05-17  Richard Sandiford  <rsandifo@redhat.com>

	* optabs.c (expand_unop): Try implementing negation using subtraction
	from zero.

2004-05-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* pa.md: Fix typo from last change.  Remove DFmode move to and from
	SAR register.

2004-05-16  Richard Earnshaw  <rearnsha@arm.com>

	PR target/10982
	* arm.md (ne_zeroextractsi): Convert to insn-and-split.
	(ne_zeroextractsi_shifted): New pattern.
	(ite_ne_zeroextractsi): New pattern.
	(ite_ne_zeroextractsi_shifted): New pattern.

2004-05-15  Steven Bosscher  <stevenb@suse.de>

	* c-gimplify.c (c_genericize):
	Replace calls via (*lang_hooks.foo) with lang_hooks.foo.
	* c-parse.in <expr_no_commas>: Likewise.
	<if_prefix>: Likewise.
	<select_or_iter_stmt>: Likewise.
	* expr.c (expand_var, expand_expr_real_1): Likewise.
	* expr.h (expand_expr): Make it a static inline function.
	Move prototype for expand_expr_real up before this.
	* fold-const.c (fold_relational_hi_lo, fold_relational_const):
	Likewise.
	* gimplify.c (gimple_boolify, gimplify_addr_expr,
	gimplify_asm_expr, gimplify_expr): Likewise.
	* tree-cfg.c (dump_tree_cfg, dump_cfg_stats, tree_cfg2vcg,
	dump_function_to_file): Likewise.
	* tree-dfa.c (dump_immediate_uses, dump_dfa_stats): Likewise.
	* tree-inline.c (remap_block, save_body, walk_tree): Likewise.
	* tree-into-ssa.c (dump_tree_ssa): Likewise.
	* tree-mudflap.c (mf_varname_tree, mf_file_function_line_tree):
	Likewise.
	* tree-optimize.c (execute_one_pass): Likewise.
	* tree-pretty-print.c (dump_generic_bb_buff): Likewise.
	* tree-ssa-alias.c (dump_alias_stats, dump_alias_info): Likewise.

	* objc/objc-act.c (objc_build_try_enter_fragment,
	objc_build_try_epilogue, objc_build_catch_stmt,
	objc_build_finally_prologue): Replace calls via (*lang_hooks.foo)
	with lang_hooks.foo ().

2004-05-15  Roger Sayle  <roger@eyesopen.com>

	* builtins.c (simplify_builtin_strcpy): Avoid use of chainon, so
	that simplify_builtin doesn't destructively modify its argument.

2004-05-15  Richard Earnshaw  <reanrsha@arm.com>

	* arm/lib1funcs.asm (_lshrdi3, _ashrdi3, _ashldi3): Add ASM
	implementations for ARM and Thumb.
	* arm/t-arm-elf (LIB1ASMFUNCS): Use them.

2004-05-15  Thomas Quinot  <quinot@act-europe.fr>

	* prefix.c (update_path): Replace PREFIX with KEY only
	when it matches a full directory name in PATH.

2004-05-15  Richard Earnshaw  <reanrsha@arm.com>

	* arm.h (TARGET_APCS_32): Delete.
	(TARGET_MMU_TRAPS): Delete.
	(TARGET_CPU_CPP_BUILTINS): Unconditionally define __APCS_32__.  Never
	define __APCS_26__.
	(CPP_SPEC): Remove checking of -mapcs-{26,32}.
	(ARM_FLAG_APCS_32, ARM_FLAG_MMU_TRAPS): Delete.
	(TARGET_SWITCHES): Remove alignment_traps and apcs-{26,32} switches.
	(prog_mode_type): Delete.
	(PROMOTE_MODE): Always promote unsigned for HImode.
	(SECONDARY_INPUT_RELOAD_CLASS): Simplify.
	(MASK_RETURN_ADDR): Simplify.
	* arm.c (arm_prgmode): Delete.
	(arm_override_options, arm_gen_rotated_half_load): Simplify.
	(print_multi_reg, output_return_instruction): Simplify.
	(arm_output_epilogue, arm_final_prescan_insn): Simplify.
	(arm_return_addr): Simplify.
	* arm.md (prog_mode): Delete.
	(conds): Simplify.
	(zero_extendhisi2, extendhisi2, movhi, movhi_bytes): Simplify.
	(rotated_loadsi, movhi_insn_littleend, movhi_insn_bigend): Delete.
	(loadhi_si_bigend, loadhi_preinc, loadhi_shiftpreinc): Delete.
	(loadhi_shiftpredec): Delete.
	(peephole for post-increment on HImode load): Delete.
	* arm/crtn.asm: (FUNC_END): Simplify.
	* arm/lib1funcs.asm: Remove APCS-26 return macros.
	* arm/aof.h, arm/coff.h arm/elf.h arm/linux-elf.h arm/netbsd-elf.h
	* arm/netbsd.h arm/pe.h arm/semi.h arm/semiaof.h arm/unknown-elf.h
	* arm/vxworks.h arm/wince-pe.h: Tidy TARGET_DEFAULTS and
	MULTILIB_DEFAULTS as required.
	* arm/t-arm-elf arm/t-linux arm/t-pe arm/t-semi arm/t-wince-pe
	* arm/t-xscale-coff arm/t-xscale-elf arm/uclinux-elf: Tidy MULTILIB
	variables as required.
	* doc/invoke.texi (ARM Options): Remove obsolete flags.

2004-05-15  Alan Modra  <amodra@bigpond.net.au>

	* config/rs6000/rs6000.c (rs6000_va_arg <ABI_V4>): Don't use
	UNITS_PER_WORD to calculate gpr size.  Re-instate code to set reg
	count to 8 to handle n_reg > 2.

2004-05-15  Joseph S. Myers  <jsm@polyomino.org.uk>

	* doc/extend.texi: Update WG14 URL.

2004-05-15  Steven Bosscher  <stevenb@suse.de>

	* basic-block.h (life_analysis, delete_noop_moves):
	Update prototypes.
	* bt-load.c (branch_target_load_optimize): Don't take the
	insns stream as an argument.  Update the life_analysis calls.
	* combine.c (combine_instructions): Update delete_noop_moves
	calls.
	* flow.c (notice_stack_pointer_modification): Don't take the
	insns stream as an argument.  Work on the flow graph.
	(life_analysis): Likewise.
	(delete_noop_moves): Likewise.
	* passes.c (rest_of_handle_stack_regs): Update reg_to_stack call.
	(rest_of_handle_life): Update life_analysis call.
	(rest_of_compilation): Likewise, and also update
	branch_target_load_optimize call.
	* ra.c (reg_alloc): Update life_analysis call.
	* reg-stack.c (reg_to_stack): Likewise.  Also, don't take
	the insns stream as an argument.
	* regrename.c (copyprop_hardreg_forward): Update delete_noop_moves
	call.
	* rtl.c (branch_target_load_optimize, reg_to_stack): Update
	prototypes.
	* value-profile.c (branch_prob): Update life_analysis call.
	* web.c (web_main): Work on the CFG, not on the insns stream.

	* config/ip2k/ip2k.c (ip2k_reorg): Update life_analysis calls.
	* config/m68hc11/m68hc11.c (m68hc11_reorg): Likewise.
	* config/sh/sh.c (sh_output_mi_thunk): Likewise.

2004-05-15  Joseph S. Myers  <jsm@polyomino.org.uk>

	PR c/15444
	* c-format.c (avoid_dollar_number): New function.
	(check_format_info_main): Call avoid_dollar_number when operand
	numbers might occur but has_operand_number == 0.

2004-05-14  Richard Earnshaw  <rearnsha@arm.com>

	* arm.md (all peephole2 patterns): Use predicates that validate
	register classes as appropriate.

2004-05-14  Steven Bosscher  <stevenb@suse.de>

	PR opt/14472
	* tree-tailcall.c (process_assignment): Use STRIP_NOPS to
	ignore type conversions that do not inhibit tail calling.
	(find_tail_calls): Likewise.

2004-05-14  Jeff Law  <law@redhat.com>

	* tree-ssa-dom.c (redirect_edges_and_update_ssa_graph): Don't even
	bother marking bypassed virtuals for out-of-ssa.  Instead merge
	bypassed virtuals into vars_to_rename just before into-ssa pass.

	* tree-ssa-dom.c (simplify_rhs_and_lookup_avail_expr): Reorganize
	so that it picks up more opportunities to eliminate ABS expressions
	or turn them into negations.

2004-05-14  Steven Bosscher  <stevenb@suse.de>

	* passes.c (rest_of_handle_null_pointer): Remove.
	(rest_of_handle_cse): Don't call rest_of_handle_null_pointer.
	(rest_of_compilation): Likewise.
	* rtl.h (delete_null_pointer_checks): Remove prototype.
	* gcse.c (rd_kill, rd_gen, reaching_defs, rd_out, ae_in, ae_out):
	Remove declarations.
	(get_bitmap_width, alloc_rd_mem, free_rd_mem, handle_rd_kill_set,
	compute_kill_rd, compute_rd, alloc_avail_expr_mem,
	free_avail_expr_mem, compute_ae_gen, expr_killed_p, compute_ae_kill,
	expr_reaches_here_p, computing_insn, def_reaches_here_p,
	can_disregard_other_sets, handle_avail_expr, classic_gcse,
	one_classic_gcse_pass, invalidate_nonnull_info,
	delete_null_pointer_checks_1, delete_null_pointer_checks,
	expr_reached_here_p_work): Remove.
	(gcse_main): Do not perform classic GCSE when optimizing for size.
	(alloc_pre_mem, free_pre_mem): Don't touch ae_in and ae_out, they
	are never used.

2004-05-14  Andrew Pinski  <pinskia@physics.uc.edu>

	PR optimization/14466
	* tree-complex.c (make_temp): Remove.
	(gimplify_val): Replace make_temp with make_rename_temp
	and add NULL as the second argument.
	(expand_complex_div_wide): Likewise.
	* tree-dfa.c (make_rename_temp): New function.
	* tree-flow.h (make_rename_temp): Declare.
	* tree-sra.c (make_temp): Remove.
	(lookup_scalar): Replace make_temp with make_rename_temp.
	(create_scalar_copies): Likewise.
	* tree-ssa-phiopt.c (conditional_replacement): When we
	get non gimple create a temporary variable to hold the
	casted expression.

2004-05-14  Paul Brook  <paul@codesourcery.com>

	* stor-layout.c (update_alignment_for_field): Use
	targetm.align_anon_bitfield.
	* target-def.h (TARGET_ALIGN_ANON_BITFIELD): Define.
	(TARGET_INITIALIZER): Use it.
	* target.h (struct gcc_target): Add align_anon_bitfield.
	* config/arm/arm.c (arm_align_anon_bitfield): New function.
	(TARGET_ALIGN_ANON_BITFIELD): Define.
	* doc/tm.texi: Document TARGET_ALIGN_ANON_BITFIELD.

2004-05-13  Zack Weinberg  <zack@codesourcery.com>

	* tree.def (documentation): Remove mention of class 'b'.
	(BLOCK): Now in class 'x'.
	* c-common.c (verify_tree): Remove case 'b'.
	* c-typeck.c (same_translation_unit_p): Change 'b' to 'x'.
	* calls.c (calls_function_1): Control cannot get past the switch
	when exp is a BLOCK.
	* print-tree.c (print_node): Move code for class 'b' to the class
	'c'/'x' switch, as case BLOCK.
	* tree.c (tree_size, make_node_stat, tree_node_structure): Likewise.
	(unsafe_for_reeval, substitute_placeholder_in_expr)
	(stabilize_reference_1): Remove case 'b'.
	* tree-browser.c (browse_tree): Change all tests for TREE_CODE_CLASS
	of something being 'b' to tests for TREE_CODE of something being
	BLOCK.
	* tree-ssa-operands.c (get_expr_operands): Likewise.

2004-05-13  Diego Novillo  <dnovillo@redhat.com>

	* tree-gimple.c: Rename from tree-simple.c.
	* tree-gimple.h: Rename from tree-simple.h.
	* c-gimplify.c: Rename from c-simplify.c
	* Makefile.in, c-decl.c, gimple-low.c, gimplify.c,
	langhooks.c, tree-alias-ander.c, tree-alias-common.c,
	tree-complex.c, tree-dfa.c, tree-flow.h, tree-inline.c,
	tree-into-ssa.c, tree-iterator.c, tree-mudflap.c,
	tree-nested.c, tree-nomudflap.c, tree-outof-ssa.c, tree-sra.c,
	tree-ssa-alias.c, tree-ssa-ccp.c, tree-ssa-copyrename.c,
	tree-ssa-dce.c, tree-ssa-live.c, tree-ssa-pre.c, tree-ssa.c:
	Update.

2004-05-14  Ranjit Mathew  <rmathew@hotmail.com>

	* doc/sourcebuild.texi: Mention libbanshee and libmudflap.

2004-05-13  Andrew Pinski  <pinskia@physics.uc.edu>

	* tree-ssa.c (delete_tree_ssa): XFREE
	bitmaps allocated with BITMAP_XMALLOC.

	* tree-ssa-pre.c (execute_pre): Free ephi_use_pool and
	idfs_cache at the end of the function.

	* tree-ssa-live.c (calculate_live_on_entry): Free saw_def
	at the end of the function.

	* tree-ssa-dce.c (perform_tree_ssa_dce): Free
	el at the end of the function.

	* tree-into-ssa.c (insert_phi_nodes_for): XFREE
	bitmaps allocated with BITMAP_XMALLOC.

	* loop-unswitch.c (unswitch_single_loop): Free bbs at
	the end.

	* final.c (shorten_branches): Free uid_shuid before
	reallocating it.

	* bb-reoder.c (connect_traces): Free cold_traces at the end.

2004-05-13  Jeff Law  <law@redhat.com>

	* tree-ssa-live.c (calculate_live_on_entry): Ignore virtual
	variables.  Simplify slightly by using USE_OP/DEF_OP instead
	of USE_OP_PTR/DEF_OP_PTR and dereferencing the result.

	* tree-into-ssa.c (compute_global_livein): Use EXECUTE_IF_SET_IN_BITMAP
	rather than iterating through the blocks testing each bit in
	livein to initialize the worklist.
	(mark_def_sites): Remove useless checks of KILLS for virtual
	operands.

	* tree-ssa-forwprop.c (record_single_argument_cond_exprs): Accept
	new parameters for the statement and variable worklist as well
	as a bitmap of interesting SSA_NAMEs.  Walk over the statement
	worklist recording interesting variables in the variable worklist
	and bitmap.  Handle casts between integral and boolean types.
	(substitute_single_use_vars): Accept new parameters for the statement
	and variable worklist.  When a substitution is made add a new
	entry to the statement worklist.  Handle casts between integral
	and boolean types.
	(tree_ssa_forward_propagate_single_use_vars): Rework to pass
	worklists to children.  Iterate until the statement worklist
	is empty.

2004-05-13  Andrew Pinski  <pinskia@physics.uc.edu>

	* tree-outof-ssa.c (rewrite_vars_out_of_ssa): Free map at
	the end of the block.

	* tree-into-ssa.c (def_blocks_free): XFREE bitmaps allocated
	with BITMAP_XMALLOC.

	* tree-ssa-alias.c (delete_alias_info): XFREE bitmaps allocated
	with BITMAP_XMALLOC.

	* tree-ssa-dom.c (tree_ssa_dominator_optimize):
	Free nonzero_vars at the end of the function.

	* convert.c (convert_to_integer): Make a CONVERT_EXPR when there is a
	need to generate code instead of a NOP_EXPR.

2004-05-13  Ian Lance Taylor  <ian@wasabisystems.com>

	* gcc.c (default_compilers): Fill out initializers for new Fortran
	entries.

2004-05-13  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.h (PCC_BITFIELD_TYPE_MATTERS): Define.

2004-05-13  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (arm_default_short_enums): New function.
	(TARGET_DEFAULT_SHORT_ENUMS): Define.

2004-05-13  Diego Novillo  <dnovillo@redhat.com>

	Merge from tree-ssa-20020619-branch.

	* Makefile.in (reload1.o-warn): Add.
	(tree-alias-ander.o-warn): Add.
	(GMPLIBS): Define.
	(GMPINC): Define.
	(BANSHEELIB): Define.
	(BANSHEEINC): Define.
	(TREE_DUMP_H): Define.
	(TREE_SIMPLE_H): Define.
	(TREE_FLOW_H): Define.
	(LIBDEPS): Add BANSHEELIB.
	(INCLUDES): Add BANSHEEINC and GMPINC.
	(C_AND_OBJC_OBJS): Add c-simplify.o, tree-mudflap.o,
	c-mudflap.o and c-pretty-print.o.
	(C_OBJS): Remove c-pretty-print.o.
	(OBJS-common): Remove sibcall.o.
	Add tree-cfg.o, tree-dfa.o, tree-eh.o,
	tree-ssa.o, tree-optimize.o, tree-simple.o,
	tree-alias-type.o, gimplify.o, tree-pretty-print.o,
	tree-into-ssa.o, tree-outof-ssa.o, tree-alias-common.o,
	tree-ssa-ccp.o, @ANDER@, tree-ssa-dce.o, tree-ssa-copy.o,
	tree-nrv.o, tree-ssa-copyrename.o, tree-ssa-pre.o,
	tree-ssa-live.o, tree-ssa-operands.o, tree-ssa-alias.o,
	tree-ssa-phiopt.o, tree-ssa-forwprop.o, tree-nested.o,
	tree-ssa-dse.o, tree-ssa-dom.o, domwalk.o,
	tree-tailcall.o, gimple-low.o, tree-iterator.o,
	tree-phinodes.o, tree-ssanames.o, tree-sra.o,
	tree-complex.o, tree-ssa-loop.o, rtl-profile.o and
	tree-profile.o.
	(OBJC-archive): Add tree-nomudflap.o.
	(cc1): Add dependency on @TREEBROWSER@.
	(c-decl.o): Add dependency on TREE_DUMP_H.
	(c-dump.o): Likewise.
	(c-common.o): Add dependency on tree-iterator.h
	(c-pretty-print.o): Add dependency on DIAGNOSTIC_H.
	(gtype-desc.o): Add dependency on TREE_FLOW_H.
	(tree.o): Add dependency on tree-iterator.h,
	BASIC_BLOCK_H and TREE_FLOW_H.
	(tree-dump.o): Depend on TREE_DUMP_H instead of tree-dump.h.
	(langhooks.o): Add dependency on TREE_SIMPLE_H.
	(tree-alias-type.o, tree-alias-ander.o,
	tree-alias-common.o, tree-ssa.o, tree-into-ssa.o,
	tree-outof-ssa.o, tree-ssa-dse.o, tree-ssa-forwprop.o,
	tree-ssa-phiopt.o, tree-nrv.o, tree-ssa-copy.o,
	tree-ssa-dom.o, tree-ssanames.o, tree-phinodes.o,
	domwalk.o, tree-ssa-live.o, tree-ssa-copyrename.o,
	tree-ssa-pre.o, tree-cfg.o, tree-tailcall.o,
	tree-nested.o, tree-iterator.o, tree-dfa.o,
	tree-ssa-operands.o, tree-eh.o, tree-ssa-loop.o,
	tree-ssa-alias.o, tree-optimize.o, c-simplify.o,
	gimplify.o, gimple-low.o, tree-browser.o, tree-simple.o,
	tree-mudflap.o, c-mudflap.o, tree-nomudflap.o,
	tree-pretty-print.o, tree-ssa-dce.o, tree-ssa-ccp.o,
	tree-sra.o, tree-complex.o, tree-profile.o,
	rtl-profile.o): New rules.
	(function.o): Add dependency on basic-block.h
	(expr.o): Add dependency on tree-iterator.h.
	(sibcall.o): Remove.
	(profile.o): Depend on TREE_FLOW_H instead of TREE_H.
	(cfg.o): Add dependency on TIMEVAR_H.
	(cfghooks.o): Add dependency on TREE_FLOW_H.
	(reg-stack.o): Add dependency on basic-block.h.
	(GTFILES): Add hwint.h, tree-mudflaph.c, tree-flow.h,
	c-objc-common.c, c-common.c, c-parse.in, tree-ssanames.c,
	tree-eh.c, tree-phinodes.c, tree-cfg.c, tree-dfa.c,
	tree-ssa-ccp.c, tree-iterator.c, gimplify.c,
	tree-alias-type.h, tree-alias-common.h,
	tree-alias-type.c, tree-alias-common.c,
	tree-ssa-operands.h, tree-ssa-operands.c, tree-profile.c,
	rtl-profile.c and tree-nested.c.
	(gt-tree-alias-common.h, gt-tree-mudflap.h,
	gt-tree-ssa-ccp.h, gt-tree-eh.h, gt-tree-ssanames.h,
	gt-tree-iterator.h, gt-gimplify.h, gt-tree-phinodes.h,
	gt-tree-cfg.h, gt-tree-nested.h): New rules.
	(TEXI_GCCINT_FILES): Add cfg.texi and tree-ssa.texi.
	* basic-block.h: Include predict.h
	(struct edge_def): Add GTY marker.
	Change field 'insns' to be a union of tree and rtx.
	(EDGE_TRUE_VALUE): Define.
	(EDGE_FALSE_VALUE): Define.
	(EDGE_EXECUTABLE): Define.
	(struct bb_ann_d): Forward declare.
	(struct basic_block_def): Add GTY marker.
	Remove fields head_tree and end_tree.
	Add fields stmt_list, rbi and tree_annotations.
	(struct reorder_block_def): Define.
	(basic_block_info): Add GTY marker.
	(ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR): Change to global
	variables instead of macros.
	(flow_call_edges_add): Remove declaration.
	(make_eh_edge): Remove declaration.
	(brief_dump_cfg, find_edge, tree_predicted_by_p,
	rtl_predicted_by_p, tree_predict_edge, rtl_predict_edge,
	predict_edge_def, rtl_make_eh_edge, find_basic_blocks,
	cleanup_cfg, delete_unreachable_blocks, merge_seq_blocks,
	alloc_rbi_pool, initialize_bb_rbi, free_rbi_pool): Declare.
	(try_redirect_by_replacing_jump): Modfiy return type to
	edge instead of bool.
	* bb-reorder.c (copy_bb): Call duplicate_block
	instead of cfg_layout_duplicate_bb.
	(copy_bb_p): Call can_duplicate_block_p instead of
	cfg_layout_can_duplicate_bb_p.
	* bitmap.c (bitmap_first_set_bit): Abort if word
	wasn't found.
	(bitmap_last_set_bit): Likewise.
	* builtin-types.def (DEF_FUNCTION_TYPE_2): Add
	(DEF_FUNCTION_TYPE_3): Add.
	* builtins.c (c_strlen): Make extern.
	(builtin_save_expr): New.
	(expand_builtin_nonlocal_goto): New.
	(expand_builtin_constant_p): Remove.
	(expand_builtin_mathfn): Call builtin_save_expr instead
	of save_expr.
	(expand_builtin_mathfn_2): Likewise.
	(expand_builtin_strcmp): Likewise.
	(expand_builtin_strncmp): Likewise.
	(expand_builtin_strcat): Likewise.
	(fold_builtin_cabs): Likewise.
	(expand_builtin_alloca): Don't trigger if -fmudflap is
	given.
	(build_string_literal): Set TREE_INVARIANT on new node.
	(expand_builtin_profile_fun): New.
	(round_trampoline_addr): New.
	(expand_builtin_init_trampoline): New.
	(expand_builtin_adjust_trampoline): New.
	(expand_builtin) <BUILT_IN_NEXT_ARG>: Call simplify_builtin_next_arg.
	<BUILT_IN_CONSTANT_P>: Return const0_rtx;
	<BUILT_IN_STACK_ALLOC, BUILT_IN_STACK_SAVE,
	BUILT_IN_STACK_RESTORE, BUILT_IN_NONLOCAL_GOTO,
	BUILT_IN_PROFILE_FUNC_ENTER, BUILT_IN_PROFILE_FUNC_EXIT,
	BUILT_IN_INIT_TRAMPOLINE, BUILT_IN_ADJUST_TRAMPOLINE>:
	Handle.
	(fold_builtin_expect): New.
	(fold_builtin_isascii): Don't return non-constant results
	in GIMPLE form.
	(fold_builtin_isdigit): Likewise.
	(fold_builtin_1): New.
	(fold_builtin): Call it.
	(build_function_call_expr): Update call to build a new
	CALL_EXPR.
	(purge_builtin_constant_p): Remove.
	(simplify_builtin, simplify_builtin_memcmp,
	simplify_builtin_strcmp, simplify_builtin_strncmp,
	simplify_builtin_strpbrk, simplify_builtin_strstr,
	simplify_builtin_strchr, simplify_builtin_strrchr,
	simplify_builtin_strcat, simplify_builtin_strncat,
	simplify_builtin_strspn, simplify_builtin_strcspn,
	simplify_builtin_next_arg, simplify_builtin_va_start,
	simplify_builtin_sprintf): New.
	* builtins.def (BUILT_IN_STACK_ALLOC,
	BUILT_IN_STACK_SAVE, BUILT_IN_STACK_RESTORE,
	BUILT_IN_INIT_TRAMPOLINE, BUILT_IN_ADJUST_TRAMPOLINE,
	BUILT_IN_NONLOCAL_GOTO, BUILT_IN_PROFILE_FUNC_ENTER,
	BUILT_IN_PROFILE_FUNC_EXIT): Define.
	* c-common.c: Include tree-iterator.h and hashtab.h.
	(lang_statement_code_p): Declare.
	(lang_gimplify_stmt): Declare.
	(fix_string_type): Set TREE_INVARIANT for value.
	(pointer_int_sum): Rely on build to set TREE_CONSTANT.
	(c_type_hash): New.
	(c_common_get_alias_set): Handle multiple type nodes
	referring to "the same" type, currently for C90 only.
	(c_add_case_label): Use create_artificial_label.
	(finish_label_address_expr): Don't set TREE_CONSTANT on
	result.
	(c_expand_expr): Don't handle STMT_EXPR.
	(handle_alias_attribute): Marke aliased variables to be
	TREE_STATIC.
	(handle_nonnull_attribute): Initialize arg_num.
	(check_function_nonnull): Likewise.
	(c_walk_subtrees): New.
	(c_estimate_num_insns_1): Don't handle
	EXPR_WITH_FILE_LOCATION nor FILE_STMT.
	(c_decl_uninit_1): Remove.
	(c_decl_uninit): Remove.
	(c_warn_unused_result): New.
	* c-common.def (ASM_STMT): Change number of operands
	to 4.
	(FILE_STMT): Remove.
	* c-common.h (lang_expand_stmt, lang_expand_decl_stmt):
	Remove.
	(lang_gimplify_stmt): Add.
	(expand_stmt): Remove.
	(ASM_CV_QUAL, ASM_STRING, ASM_OUTPUTS, ASM_INPUTS,
	ASM_CLOBBERS, STMT_EXPR_WARN_UNUSED_RESULT,
	ASM_VOLATILE_P, FILE_STMT_FILENAME_NODE,
	FILE_STMT_FILENAME, STMT_LINENO, STMT_LINENO_FOR_FN_P,
	ASM_INPUT_P, DECL_C_HARD_REGISTER): Remove.
	(genrtl_do_pushlevel, genrtl_goto_stmt, genrtl_expr_stmt,
	genrtl_expr_stmt_value, genrtl_decl_stmt, genrtl_if_stmt,
	genrtl_while_stmt, genrtl_do_stmt, genrtl_return_stmt,
	genrtl_for_stmt, genrtl_break_stmt, genrtl_continue_stmt,
	genrtl_scope_stmt, genrtl_switch_stmt, genrtl_case_label,
	genrtl_compound_stmt, genrtl_asm_stmt,
	genrtl_cleanup_stmt, c_decl_uninit): Remove.
	(c_do_switch_warnings, c_gimplify_expr, c_walk_subtrees,
	c_tree_chain_matters_p, c_warn_unused_result,
	c_genericize, c_gimplify_stmt, stmt_expr_last_stmt):
	Declare.
	* c-convert.c (convert): Make convert work when
	converting to compatible types across translation unit.
	* c-decl.c: Include langhooks.h, tree-mudflap.h,
	tree-simple.h, diagnostic.h and tree-dump.h
	(merge_decls): Initialize oldtype to NULL.
	(finish_decl): Use DECL_HARD_REGISTER instead of
	DECL_C_HARD_REGISTER.
	(check_bitfield_type_and_width): Check for null
	lang_type_specific when check the precision of an enum.
	(grokdeclarator): Immediately layout an ARRAY_TYPE used
	in a pointer-to-array declarator.
	(finish_struct): Clear allocated struct lang_type.
	(finish_enum): Set enum_min and enum_max.  Set
	TYPE_MIN/MAX_VALUE to the limits of the compatible type,
	not to the enumerators.
	(set_decl_nonlocal): New.
	(store_parm_decls): Use it via walk_tree.
	(c_finalize): New.
	(finish_function): When !targetm.have_ctors_dtors,
	record static constructors and destructors here...
	(c_expand_body_1): ... not here.
	(c_expand_decl): Rename from c_expand_decl_stmt.
	Handle all C-specific expansion semantics.
	* c-dump.c (dump_stmt): Use EXPR_LOCUS instead of
	STMT_LINENO.
	* c-format.c (handle_format_arg_attribute): Initialize
	format_num.
	* c-lang.c: Include tree-inline.h
	(LANG_HOOKS_EXPAND_DECL,
	LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P,
	LANG_HOOKS_TREE_INLINING_WALK_SUBTREES,
	LANG_HOOKS_TREE_INLINING_TREE_CHAIN_MATTERS_P,
	LANG_HOOKS_GIMPLIFY_EXPR, LANG_HOOKS_TYPES_COMPATIBLE_P): Define.
	(LANG_HOOKS_DECL_UNINIT, LANG_HOOKS_RTL_EXPAND_STMT,
	LANG_HOOKS_TREE_INLINING_ESTIMATE_NUM_INSNS): Remove.
	(c_types_compatible_p): New.
	* c-mudflap.c: New file.
	* c-objc-common.c: Include tree-mudflap.h
	(start_cdtor, finish_cdtor): Collapse
	together into
	(build_cdtor): ...here.  Update to construct a complete tree
	for the function.  No need to call push_scope, pop_scope, or
	clear_last_expr, or set current_function_cannot_inline.
	(c_missing_noreturn_ok_p): Change prototype to return
	bool.
	(c_objc_common_init): Don't set lang_missing_noreturn_ok_p.
	* c-opts.c (c_common_handle_option): Move handling of -fdump- to
	opts.c.
	(c_common_post_options): Don't ever use rtl inlining.
	* c-parse.in: Use EXPR_LOCUS instead of STMT_LINENO.
	* c-pragma.c (handle_pragma_redefine_extname): Define
	always.
	(init_pragma): Activate #pragma redefine_extname for mudflap.
	* c-pretty-print.c (pp_c_statement): Remove FILE_STMT.
	(pp_c_initializer): Accept any type CONSTRUCTOR.
	(pp_c_initializer_list): Fix code expectations for VECTOR_TYPE and
	COMPLEX_TYPE.
	(decl_name_str): New local function.
	(pp_c_direct_declarator): Call it.
	(pp_c_primary_expression): Call it.
	(pp_c_id_expression): Call it.
	(pp_c_statement): Call it.
	(print_c_tree): Create new pp object.
	* c-pretty-print.h (pp_c_tree_decl_identifier,
	print_c_tree): Declare.
	* c-semantics.c: Include langhooks.h
	(lang_expand_stmt, lang_expand_decl_stmt,
	find_reachable_label_1, find_reachable_label,
	expand_unreachable_if_stmt, expand_unreachable_stmt,
	genrtl_do_stmt_1): Remove.
	(begin_stmt_tree): Don't check for changed filename.
	Call annotate_with_locus.
	(finish_stmt_tree): Don't set line for end of function.
	(build_stmt): Don't check type nodes for
	side effects.
	(build_stmt): Set TREE_SIDE_EFFECTS.
	Set EXPR_LOCUS instead of STMT_LINENO.
	(lang_expand_stmt, lang_expand_decl_stmt,
	expand_cond, genrtl_do_pushlevel, genrtl_goto_stmt, genrtl_expr_stmt,
	genrtl_expr_stmt_value, genrtl_decl_stmt, genrtl_if_stmt,
	genrtl_while_stmt, genrtl_do_stmt_1, genrtl_do_stmt,
	genrtl_return_stmt, genrtl_for_stmt, genrtl_break_stmt,
	genrtl_continue_stmt, genrtl_scope_stmt, genrtl_switch_stmt,
	genrtl_case_label, genrtl_compound_stmt, genrtl_asm_stmt,
	genrtl_cleanup_stmt, expand_stmt, find_reachable_label,
	find_reachable_label_1, expand_unreachable_if_stmt,
	expand_unreachable_stmt): Remove.
	(prep_stmt): Use EXPR_LOCUS instead of STMT_LINENO.
	* c-simplify.c: New file.
	* c-tree.h (C_LANG_TREE_NODE_CHAIN_NEXT): Define.
	(struct lang_type): Add fields enum_min and enum_max.
	(c_expand_decl_stmt, c_missing_noreturn_ok_p): Remove.
	(c_expand_decl, c_missing_noreturn_ok_p,
	c_types_compatible_p): Declare.
	* c-typeck.c (tagged_types_tu_compatible_p): Allow for
	compiler-generated TYPE_DECLs without a DECL_ORIGINAL_TYPE.
	(default_function_array_conversion): Rely on build to
	set TREE_CONSTANT.
	(parser_build_binary_op, pointer_diff): Likewise.
	(build_unary_op, build_binary_op): Likewise.
	(build_array_ref):
	(build_external_ref): Set TREE_INVARIANT.
	(build_c_cast, pop_init_level): Likewise.
	(process_init_element): Use ASM_VOLATILE_P.
	(build_asm_expr): Adapt to GENERIC/GIMPLE syntax.
	(c_finish_case): Call c_do_switch_warnings.
	* c.opt (fdump-): Remove.
	* calls.c (try_to_integrate): Remove.
	(prepare_call_address): Replace fndecl arg with a
	precomputed static chain value.
	(emit_call_1): New argument for full call expr.
	(flags_from_decl_or_type): Call special_function_p.
	(initialize_argument_information): Add argument
	may_tailcall.
	(purge_reg_equiv_notes): New.
	(expand_call): Do not try to expand calls inline.
	(fixup_tail_calls): New.
	* cfg.c: Include timevar.h and ggc.h.
	(bb_pool, edge_pool): Remove.
	(ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR): Declare.
	(entry_exit_blocks): Remove.
	(rbi_pool): Declare.
	(init_flow): Do not create pools.
	Allocate entry/exit block.
	(free_edge, alloc_block, expunge_block, unchecked_make_edge): Use GGC.
	(alloc_rbi_pool, free_rbi_pool, initialize_bb_rbi): New.
	(unlink_block): Clear b->prev_bb and b->next_bb.
	(compact_blocks): Clear all slots of BASIC_BLOCK array.
	(dump_flow_info): Work on trees too.
	(dump_cfg_bb_info): New.
	(brief_dump_cfg): New.
	* cfganal.c (need_fake_edge_p, flow_call_edges_add): Remove.
	(find_edge): New.
	* cfgbuild.c (rtl_make_eh_edge): Rename from
	make_eh_edge.  Update all users.
	(find_basic_blocks): Don't call VARRAY_FREE on
	basic_block_info.
	* cfgcleanup.c (outgoing_edges_match): Initialize newpos1
	and newpos2.
	(delete_unreachable_blocks): Return changed status.
	(merge_seq_blocks): New.
	* cfghooks.c: Include tree-flow.h
	(tree_register_cfg_hooks, ir_type): New.
	(redirect_edge_and_branch): Change return type to edge.
	(predict_edge, predicted_by_p, can_duplicate_block_p,
	duplicate_block, block_ends_with_call_p,
	block_ends_with_condjump_p, flow_call_edges_add): New.
	* cfghooks.h (redirect_edge_and_branch): Change return
	type to edge.
	(predict_edge, predicted_by_p, can_duplicate_block_p,
	duplicate_block, block_ends_with_call_p,
	block_ends_with_condjump_p, flow_call_edges_add): Declare.
	(redirect_edge_and_branch): Change return type to edge.
	(struct cfg_hooks): Add fields block_ends_with_call_p,
	block_ends_with_condjump_p, flow_call_edges_add,
	predict_edge, predicted_by_p, can_duplicate_block_p and
	duplicate_block.
	(tree_cfg_hooks, ir_type, tree_register_cfg_hooks): Declare.
	* cfglayout.c (cfg_layout_pool, cfg_layout_initialize_rbi): Removed.
	(fixup_reorder_chain): Use initialize_bb_rbi.
	(cfg_layout_can_duplicate_bb_p, cfg_layout_duplicate_bb): Hookized.
	(cfg_layout_initialize): Use cfg.c rbi pool manipulation functions.
	(can_copy_bbs_p, copy_bbs): Use cfghooks for bb duplication.
	(insn_locators_initialize): Use new info about blocks.
	* cfglayout.h (typedef struct reorder_block_def): Moved to
	basic_block.h.
	(cfg_layout_can_duplicate_bb_p, cfg_layout_duplicate_bb): Declaration
	removed.
	* cfgloop.c: Include tree.h and tree-flow.h.
	* cfgloop.h (create_loop_notes): Declare.
	* cfgloopmanip.c (create_loop_notes): New.
	* cfgrtl.c (cfg_layout_create_basic_block): Use initialize_bb_rbi.
	(rtl_cfg_hooks, cfg_layout_rtl_cfg_hook): Fill in can_duplicate_block_p
	and duplicate_block fields.
	(create_basic_block_structure): Don't look at
	RTX_INTEGRATED_P.
	(rtl_block_ends_with_call_p): New.
	(rtl_block_ends_with_condjump_p): New.
	(need_fake_edge_p): Moved from cfganal.c.
	(rtl_flow_call_edges_add): Moved from cfganal.c (flow_call_edges_add).
	(rtl_cfg_hooks): Add rtl_block_ends_with_call_p,
	rtl_block_ends_with_condjump_p, rtl_flow_call_edges_add.
	(cfg_layout_rtl_cfg_hooks): Ditto.
	* cgraph.c (cgraph_mark_reachable_node): Don't force nested
	functions to be reachable.
	* cgraphunit.c (decide_is_function_needed):
	* cgraphunit.c (decide_is_function_needed): Nested functions of extern
	inline functions don't need to be output.
	(cgraph_assemble_pending_functions): Don't do anything
	special for nested functions.
	(cgraph_mark_functions_to_output): Likewise.
	(cgraph_finalize_function): Don't zap DECL_STRUCT_FUNCTION.
	(cgraph_analyze_function): Use estimate_num_insns.
	(cgraph_mark_functions_to_output): Likewise.
	(cgraph_estimate_growth, cgraph_clone_inlined_nodes): Likewise.
	(cgraph_expand_function): Allow functions to not be
	emitted.
	(cgraph_remove_unreachable_nodes):
	(cgraph_recursive_inlining_p): Simplify.
	(lookup_recursive_calls,
	cgraph_decide_recursive_inlining): New.
	(cgraph_decide_inlining_*): Update calls of
	cgraph_mark_inline.
	* combine.c (get_pos_from_mask): Always set *plen.
	* common.opt (fdump-, fmudflap, fmudflapth, fmudflapir,
	ftree-based-profiling, ftree-ccp, ftree-ch,
	ftree-combine-temps, ftree-copyrename, ftree-dce,
	ftree-dominator-opts, ftree-dse, ftree-loop-optimize,
	ftree-points-to, ftree-pre, ftree-sra, ftree-ter,
	ftree-lrs): Add.
	* config.in (HAVE_LD_PIE, HAVE_BANSHEE, PREFIX_INCLUDE_DIR):
	Undefine.
	* configure.ac: Add --enable-tree-browser option.
	Add --with-libbanshee option.
	Add GMPLIBS and GMPINC.
	* configure: Regenerate.
	* coverage.c (tree_ctr_tables): New.
	(coverage_counter_alloc): Use it.
	(build_ctr_info_value): Ditto.
	(coverage_counter_ref): Ditto.  Rename to rtl_coverage_counter_ref.
	(tree_coverage_counter_ref): New.
	* coverage.h (coverage_counter_ref): Remove declaration.
	(rtl_coverage_counter_ref): Declare.
	(tree_coverage_counter_ref): Declare.
	* cppexp.c (append_digit): Rearrange unsignedp/overflow setting.
	(eval_token, num_binary_op, num_part_mul, num_div_op): Likewise.
	* cse.c (fold_rtx): Do not handle CONSTANT_P_RTX.
	(struct cse_basic_block_data): Rename enum values to not
	conflict with profile.h; update all uses.
	* dbxout.c (dbxout_symbol_location): Don't mention integrate.c
	in comments.
	* defaults.h (TRAMPOLINE_ALIGNMENT): Move from function.c.
	* diagnostic.h (debug_output_buffer, dump_generic_node,
	print_generic_stmt, print_generic_stmt_indented,
	print_generic_expr, print_generic_decl,
	debug_generic_expr, debug_generic_stmt, debug_c_tree):
	Declare.
	* dominance.c: Cache immediate dominators.
	* domwalk.c: New file.
	* domwalk.h: New file.
	* dwarf2out.c (is_fortran): Support DW_LANG_Fortran95.
	(gen_subprogram_die): Generate a DIE for a named
	return value.
	(loc_descriptor_from_tree): Treat RESULT_DECL like VAR_DECL.
	(add_location_or_const_value_attribute): Likewise.
	(add_bound_info): Likewise.
	(gen_decl_die): Likewise.
	* emit-rtl.c (maybe_set_first_label_num): New.
	(copy_most_rtx): Don't copy the integrated flag.
	Copy the new return_val flag.
	* et-forest.c (MAX_NODES): Define.
	(record_path_before_1): Abort if len is greater than
	MAX_NODES.
	* except.c (gen_eh_region, gen_eh_region_cleanup, gen_eh_region_try,
	gen_eh_region_catch, gen_eh_region_allowed,
	gen_eh_region_must_not_throw, get_eh_region_number,
	get_eh_region_may_contain_throw, get_eh_region_tree_label,
	set_eh_region_tree_label, expand_resx_expr): New.
	(expand_eh_region_start, expand_start_catch): Use them.
	(expand_end_catch): Tidy.
	(note_eh_region_may_contain_throw): Take region argument.
	(note_current_region_may_contain_throw): New.
	(get_exception_filter): Export.
	(collect_eh_region_array): Export.
	(remove_unreachable_regions): Check ERT_TRY based on reachability
	of catches, not reachability of continue_label.  Never remove
	ERT_MUST_NOT_THROW regions.
	(collect_rtl_labels_from_trees): New.
	(convert_from_eh_region_ranges): Use it.
	(connect_post_landing_pads): Handle dying cleanups.
	(struct reachable_info): Add callback data.
	(add_reachable_handler): Invoke the callback.
	(foreach_reachable_handler): New.
	(reachable_handlers): Use it.
	(arh_to_landing_pad, arh_to_label): New.
	(can_throw_internal_1): Split out from can_throw_internal.
	(can_throw_external_1): Similarly.
	* except.h: Update.
	* explow.c (emit_stack_save): Remove savearea mode check.
	(update_nonlocal_goto_save_area): New.
	(allocate_dynamic_stack_space): Use it.
	(probe_stack_range): Never emit loop notes.
	* expmed.c (extract_fixed_bit_field): Always propagate the
	target for the shift if it is a REG.
	* expr.c: Include tree-iterator.h
	(is_zeros_p): Remove.
	(categorize_ctor_elements_1, categorize_ctor_elements): New.
	(count_type_elements): New.
	(mostly_zeros_p): Use them.
	(expr_wfl_stack): Remove.
	(convert_move): Do nothing if to and from are the same.
	(emit_block_move_via_loop): Don't emit LOOP notes.
	(emit_move_insn): Don't handle CONSTANT_P_RTX.
	(emit_move_insn_1): Don't generate inline warnings.
	(expand_vars, expand_var): Split from ...
	(expand_expr_1): ... here.
	(expand_expr_real, expand_expr_real_1): Use new macros
	EXPR_LOCATION and EXPR_HAS_LOCATION.
	* expr.h (simplify_builtin_fputs,
	simplify_builtin_strcpy, simplify_builtin_strncpy,
	expand_var, fixup_tail_calls,
	update_nonlocal_goto_save_area): Declare.
	(lookup_static_chain, expand_inline_function,
	mark_seen_cases): Remove.
	(prepare_call_address): Change type of 2nd argument to
	rtx.
	* final.c (profile_function): Update static chain test.
	(final): Don't look at RTX_INTEGRATED_P.
	* flags.h (flag_mudflap, flag_mudflap_threads,
	flag_mudflap_ignore_reads, flag_tree_pre, flag_tree_ccp,
	flag_tree_dce, flag_tree_combine_temps,
	flag_tree_live_range_split, flag_tree_dom, flag_tree_ch,
	flag_tree_dse, flag_tree_sra, flag_tree_copyrename,
	flag_tree_points_to): Declare.
	(enum pta_type): Declare.
	* flow.c (lang_missing_noreturn_ok_p): Remove.
	(check_function_return_warnings): Remove.
	(update_life_info): Update comments.
	(free_basic_block_vars): Don't call VARRAY_FREE for
	basic_block_info.
	(regno_uninitialized): Remove.
	* fold-const.c (int_const_binop): Make extern.
	(non_lvalue): Rely on build to set TREE_CONSTANT.
	(operand_equal_p): Replace only_const argument with
	flags.  Allow pure functions if OEP_PURE_SAME.
	(fold): Use OEP_ONLY_CONST.
	(invert_truthvalue) <NOP_EXPR> Break if argument is of
	boolean type.
	(fold_relational_hi_lo,
	nondestructive_fold_binary_to_constant,
	nondestructive_fold_unary_to_constant,
	fold_read_from_constant_string): New.
	* function.c (struct function): Remove calls_constant_p.
	(current_function_calls_constant_p): Remove.
	(inline_function_decl): Remove.
	(put_var_into_stack): Don't use it.
	(fix_lexical_addr): Likewise.
	(inline_function_decl): Remove extern declaration.
	(TRAMPOLINE_ALIGNMENT): Move to defaults.h.
	(trampolines_created): Move to varasm.c.
	(free_after_compilation): Update for removed fields.
	(allocate_struct_function): Likewise.
	(delete_handlers, lookup_static_chain): Remove.
	(fix_lexical_addr): Don't consider non-local variable refs.
	(trampoline_address): Remove.
	(round_trampoline_addr): Move to builtins.c.
	(adjust_trampoline_addr): Remove.
	(expand_function_start): Update for changes to static chain
	and nonlocal goto handling.
	(initial_trampoline): Move to varasm.c.
	(expand_function_end): Don't build trampolines or kill
	unreferenced nonlocal goto labels.
	(free_after_compilation): Don't set it.
	(expand_function_end): Likewise.
	(setjmp_vars_warning): Rename from
	uninitialized_vars_warning, remove uninitialized vars warning.
	(uninitialized_vars_warning): Remove old comment
	and check for DECL_INITIAL, replace with a check of TREE_NO_WARNING
	and do not call the langhook.
	(expand_function_start, expand_function_end): Don't do
	function instrumentation here.
	(clear_block_marks): Rename from reorder_blocks_0, export.
	(blocks_nreverse): Export.
	(uninitialized_vars_warning): Use DECL_RTL_SET_P to test for presence
	of rtl.
	(reset_block_changes, record_block_change, finalize_block_changes,
	check_block_change, free_block_changes): New functions.
	(assign_parms): Setting of current_function_stdarg
	moved ...
	(allocate_struct_function): ... here.
	* function.h (struct function): Remove x_nonlocal_labels,
	x_nonlocal_goto_handler_slots, x_nonlocal_goto_stack_level,
	x_context_display, x_trampoline_list, needs_context.
	Add static_chain_decl, nonlocal_goto_save_area.
	(struct function): Remove x_clobber_return_insn.
	Add tail_call_emit field, last_label_uid,
	unexpanded_var_list, dont_emit_block_notes,
	ib_boundaries_block, function_end_locus and saved_tree/saved_args.
	(clear_block_marks): Declare.
	* gcc.c (MFWRAP_SPEC, MFLIB_SPEC): Add -fmudflapth support.
	(mfwrap_spec, mflib_spec): Declare.
	(cpp_unique_options, cc1_options): Ditto.
	(default_compilers): Add .F and .f90.
	(static_specs): Add mfwrap and mflib.
	* gcse.c (want_to_gcse_p, gcse_constant_p): Don't handle
	CONSTANT_RTX_P.
	(reg_used_on_edge, reg_killed_on_edge, bypass_block):
	Update to match insns field in struct edge_def.
	* gdbinit.in (pgs, pge): Define.
	* genattrtab.c (ATTR_PERMANENT_P): Use the return_val flag
	instead of the integrated flag.
	* gengtype-lex.l (IWOrD): Add HOST_WIDEST_INT
	* gengtype-yacc.y (bitfieldlen): Add empty action.
	(struct_fields): Accept unnamed bitfields.
	(bitfieldlen): Split from ...
	(bitfieldopt): ... here.
	* gengtype.c (ifiles): Add tree-alias-type.h and
	tree-flow.h.
	* genrecog.c (validate_pattern): Do not handle
	CONSTANT_P_RTX.
	* gimple-low.c: New file.
	* gimplify.c: New file.
	* haifa-sched.c (priority): Do not handle CONSTANT_P_RTX.
	(restore_line_notes): Do not set RTX_INTEGRATED_P.
	* ifcvt.c (dead_or_predicable): Initialize local variable
	'earliest'.
	* input.h (expr_wfl_stack): Remove.
	* integrate.c (INTEGRATE_THRESHOLD): Remove.
	(setup_initial_hard_reg_value_integration): Likewise.
	(initialize_for_inline): Likewise.
	(note_modified_parmregs): Likewise.
	(integrate_parm_decls): Likewise.
	(process_reg_param): Likewise.
	(save_parm_insns): Likewise.
	(copy_insn_list): Likewise.
	(copy_insn_notes): Likewise.
	(compare_blocks): Likewise.
	(find_block): Likewise.
	(inlining): Likewise.
	(function_cannot_inline_p): Likewise.
	(parmdecl_map): Likewise.
	(in_nonparam_insns): Likewise.
	(save_for_inline): Likewise.
	(FIXED_BASE_PLUS): Likewise.
	(expand_inline_function): Likewise.
	(copy_rtx_and_substitute): Don't look at map->integrating,
	map->inline_target, and inlining, since we are never copying
	for integrating.
	Don't abort on RTX_INTEGRATED_P.
	(old_fun): Remove.
	(output_inline_function): Remove.
	* integrate.h (struct inline_map): Remove fields integrating,
	block_map, leaf_reg_map, inline_target, and local_return_label.
	* jump.c (next_nonnote_insn_in_loop, duplicate_loop_exit_test,
	copy_loop_headers, never_reached_warning): Removed.
	(any_uncondjump_p): Reject nonlocal goto.
	* langhooks-def.h (lhd_types_compatible_p,
	lhd_expand_decl, lhd_gimplify_expr): Declare.
	(LANG_HOOKS_EXPAND_DECL, LANG_HOOKS_TYPES_COMPATIBLE_P,
	LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P,
	LANG_HOOKS_FUNCTION_LEAVE_NESTED,
	LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P,
	LANG_HOOKS_GIMPLIFY_EXPR,
	LANG_HOOKS_GIMPLE_BEFORE_INLINING,
	LANG_HOOKS_EXPAND_DECL, LANG_HOOKS_TYPES_COMPATIBLE_P,
	LANG_HOOKS_GIMPLIFY_EXPR,
	LANG_HOOKS_GIMPLE_BEFORE_INLINING): Define.
	(LANG_HOOKS_DECL_UNINIT, LANG_HOOKS_RTL_EXPAND_START,
	LANG_HOOKS_RTL_EXPAND_STMT, LANG_HOOKS_RTL_EXPAND_END,
	LANG_HOOKS_FUNCTION_LEAVE_NESTED,
	LANG_HOOKS_RTL_EXPAND_INITIALIZER,
	LANG_HOOKS_DECL_UNINIT,
	LANG_HOOKS_RTL_EXPAND_INITIALIZER): Remove.
	* langhooks.c: Include tree-simple.h.
	(lhd_expand_decl): New.
	(lhd_types_compatible_p): New.
	(lhd_decl_uninit): Remove.
	(lhd_gimplify_expr): New.
	* langhooks.h (struct lang_hooks_for_rtl_expansion):
	Remove.
	(struct lang_hooks_for_functions): Add field
	missing_noreturn_ok_p.
	(struct lang_hooks): Add field expand_decl,
	types_compatible_p, gimplify_expr and
	gimple_before_inlining.
	Remove fields decl_uninit and rtl_expand
	* opts.c (decode_options): Set flag_tree_ccp,
	flag_tree_dce, flag_tree_dom, flag_tree_dse,
	flag_tree_pre, flag_tree_ter,
	flag_tree_live_range_split, flag_tree_sra,
	flag_tree_copyrename and flag_tree_ch at -O1 and higher.
	(common_handle_option): Handle OPT_fdump_, OPT_fmudflap,
	OPT_fmudflapth, OPT_fmudflapir,
	OPT_ftree_based_profiling, OPT_ftree_ccp, OPT_ftree_dce,
	OPT_ftree_combine_temps, OPT_ftree_ter, OPT_ftree_lrs,
	OPT_ftree_dominator_opts, OPT_ftree_copyrename,
	OPT_ftree_ch, OPT_ftree_dse, OPT_ftree_sra,
	OPT_ftree_points_to_ and OPT_ftree_pre.
	* output.h (regno_uninitialized, find_basic_blocks,
	cleanup_cfg, delete_unreachable_blocks,
	check_function_return_warnings): Remove.
	* params.def (PARAM_MAX_INLINE_INSNS_RECURSIVE,
	PARAM_MAX_INLINE_INSNS_RECURSIVE_AUTO,
	PARAM_MAX_INLINE_RECURSIVE_DEPTH,
	PARAM_MAX_INLINE_RECURSIVE_DEPTH_AUTO,
	PARAM_GLOBAL_VAR_THRESHOLD, PARAM_MAX_ALIASED_VOPS):
	* params.h (GLOBAL_VAR_THRESHOLD, MAX_ALIASED_VOPS):
	Define.
	* passes.c (rest_of_decl_compilation):
	(rest_of_handle_sibling_calls): Remove.
	(rest_of_handle_inlining): Remove.
	(rest_of_handle_gcse): Do not run
	purge_builtin_constant_p.
	(rest_of_compilation): Update.
	Do not call copy_loop_headers.
	Do rtl-based profiling only when
	!flag_tree_based_profiling.  Register rtl-based profiling
	hooks.
	* predict.c: Include tree-flow.h, ggc.h, tree-dump.h
	(predicted_by_p): Rename to ...
	(rtl_predicted_by_p): .. this one; make global
	(tree_predicted_by_p): New.
	(dump_prediction): Add FILE argument.
	(predict_edge): Rename to ...
	(rtl_predict_edge): .. this one.
	(tree_predict_edge): New.
	(combine_predictions_for_insn): Update calls of predict_edge.
	(predict_loops): Break out from ...
	(estimate_probability): ... here; update comments; move updating
	of unknown probabilities from ...
	(estimate_bb_frequencies): ... here.
	(combine_predictions_for_bb): New.
	(tree_predict_by_opcode): New.
	(tree_estimate_probability): New.
	* predict.def (PRED_TREE_POINTER, PRED_TREE_OPCODE_POSITIVE,
	PRED_TREE_OPCODE_NONEQUAL, PRED_TREE_FPOPCODE): New predictors.
	* predict.h: Add include guard.
	(predict_edge, predict_edge_def): Move prototypes to basic_block.h
	* pretty-print.c (pp_write_text_to_stream): Make extern.
	* pretty-print.h (pp_write_text_to_stream): Declare.
	* print-rtl.c (print_rtx): Don't print the integrated flag.
	Print the return_val flag.
	* print-tree.c: Use TREE_FILENAME and TREE_LINENO instead
	of DECL_SOURCE_FILE and DECL_SOURCE_LINE respectively.
	Remove support for EXPR_WITH_FILE_LOCATION nodes.
	(print_node): Print TREE_INVARIANT and TREE_VISITED.
	* profile.c: Include cfghooks.h, tree-flow.h.
	(profile_hooks): New.
	(profile_dump_file): New.
	(instrument_edges): Use hooks instead of RTL-specific code.
	(instrument_values): Ditto.
	(get_exec_counts): Ditto.
	(compute_branch_probabilities): Ditto.
	(compute_value_histograms): Ditto.
	(branch_prob): Ditto.
	(find_spanning_tree): Ditto.
	(end_branch_prob): Ditto.
	(gen_edge_profiler): Move to rtl-profile.c (rtl_gen_edge_profiler).
	(gen_interval_profiler): Ditto (rtl_gen_interval_profiler).
	(gen_pow2_profiler): Ditto (rtl_gen_pow2_profiler).
	(gen_one_value_profiler): Ditto (rtl_gen_one_value_profiler).
	(tree_register_profile_hooks): New.
	(rtl_register_profile_hooks): New.
	* ra-rewrite.c (rewrite_program): Clear variable info.
	* recog.c (immediate_operand): Do not handle CONSTANT_P_RTX.
	* regs.h: Add include guards.
	* reload.c (decompose): Clear val using memset.
	* rtl.def (CONSTANT_P_RTX): Remove.
	* rtl.h (CONSTANT_P): Do not handle CONSTANT_P_RTX.
	(copy_loop_headers): Remove.
	(struct rtx_def): Replace the integrated flag with the
	return_val flag.
	(maybe_set_first_label_num): Declare.
	(init_branch_prob): Move declaration to value-prof.h.
	(end_branch_prob): Ditto.
	(branch_prob): Ditto.
	(never_reached_warning): Don't declare it.
	* rtlanal.c (get_related_value): Initialize get_jump_table_offset
	(hoist_insn_to_edge): Update to match field insns in
	struct edge_def.
	* sbitmap.c (sbitmap_realloc): New.
	* sbitmap.h (sbitmap_realloc): Declare.
	* sibcall.c: Remove file.
	* simplify-rtx.c (simplify_rtx): Do not handle
	CONSTANT_P_RTX.
	* stmt.c (parse_output_constraint): Don't warn for read-write
	memory operand.
	(tail_recursion_args): Use types_compatible_p langhook.
	(force_label_rtx): Don't look at inline_function_decl.
	(label_rtx): Set LABEL_PRESERVE_P appropriately.
	(expand_label): Handle DECL_NONLOCAL and FORCED_LABEL.
	(declare_nonlocal_label): Remove.
	(expand_goto): Don't handle nonlocal gotos.
	(expand_nl_handler_label): Remove.
	(expand_nl_goto_receivers): Remove.
	(expand_end_bindings): Don't expand_nl_goto_receivers.  Use
	update_nonlocal_goto_save_area.
	(expand_expr_stmt_value): Check TREE_NO_WARNING.
	(warn_if_unused_value): Likewise.
	(expand_start_loop, expand_loop_continue_here,
	expand_end_loop): Don't create loop notes.
	(all_cases_count, BITARRAY_TEST, BITARRAY_SET,
	mark_seen_cases, check_for_full_enumeration_handling): Remove.
	(expand_end_case_type): Don't do warn_switch handling.
	(pushcase, pushcase_range) Update add_case_node calls.
	(add_case_node): Add dont_expand_label argument.
	(same_case_target_p): Don't search rtl.
	(expand_start_bindings_and_block, expand_end_bindings):
	Don't emit block notes when dont_emit_block_notes.
	(using_eh_for_cleanups_p): Export.
	(expand_return): Allow any typed rhs.
	(expand_stack_alloc): New.
	(expand_stack_save, expand_stack_restore): New.
	(containing_blocks_have_cleanups_or_stack_level): New
	function.
	(asm_op_is_mem_input): New fn.
	(expand_asm_expr): New fn.
	(warn_if_unused_value): Check operand 0 of SAVE_EXPR
	nodes.
	* stor-layout.c (layout_type): Just return if type is
	error_mark_node.
	(update_alignment_for_field): Export.
	(variable_size): We don't care about global_bindings_p if
	the frontend doesn't want a list of the expressions.
	* system.h: Poison INTEGRATE_THRESHOLD.
	* timevar.def (TV_TREE_GIMPLIFY, TV_TREE_EH, TV_TREE_CFG,
	TV_TREE_CLEANUP_CFG, TV_TREE_PTA, TV_TREE_MAY_ALIAS,
	TV_TREE_INSERT_PHI_NODES, TV_TREE_SSA_REWRITE_BLOCKS,
	TV_TREE_SSA_OTHER, TV_TREE_OPS,
	TV_TREE_SSA_DOMINATOR_OPTS, TV_TREE_SRA, TV_TREE_CCP,
	TV_TREE_SPLIT_EDGES, TV_TREE_PRE, TV_TREE_PHIOPT,
	TV_TREE_FORWPROP, TV_TREE_DCE, TV_TREE_CD_DCE,
	TV_TREE_DSE, TV_TREE_LOOP, TV_TREE_CH,
	TV_TREE_SSA_TO_NORMAL, TV_TREE_SSA_TO_NORMAL,
	TV_TREE_NRV, TV_TREE_COPY_RENAME, TV_TREE_SSA_VERIFY,
	TV_TREE_STMT_VERIFY, TV_DOM_FRONTIERS,
	TV_CONTROL_DEPENDENCES): Define.
	* toplev.c: Include tree-alias-common.h
	(current_file_decl, flag_mudflap, flag_mudflap_threads,
	flag_mudflap_ignore_reads, flag_tree_based_profiling,
	flag_tree_gvn, flag_tree_points_to, flag_tree_ccp,
	flag_tree_dce, flag_tree_ch, flag_tree_sra,
	flag_tree_combine_temps, flag_tree_ter,
	flag_tree_live_range_split, flag_tree_dom,
	flag_tree_copyrename, flag_tree_dse): Declare.
	(f_options): Add tree-based-profiling, tree-gvn,
	tree-pre, tree-ccp, tree-dce,
	tree-dominator-opts, tree-copyrename, tree-dse,
	tree-combine-temps, tree-ter, tree-lrs and tree-ch.
	(wrapup_global_declarations): Don't output nested inlined functions.
	(general_init): Call init_tree_optimization_passes.
	(process_options): Sorry for -ftree-based-profiling plus
	-ftest-coverage or -fprofile-values.
	* toplev.h (init_tree_optimization_passes,
	flag_tree_based_profiling): Declare.
	* tracer.c (tail_duplicate): Use cfghooks for bb duplication.
	* tree-alias-ander.c: New file.
	* tree-alias-ander.h: New file.
	* tree-alias-common.c: New file.
	* tree-alias-common.h: New file.
	* tree-alias-type.c: New file.
	* tree-alias-type.h: New file.
	* tree-browser.c: New file.
	* tree-browser.def: New file.
	* tree-cfg.c: New file.
	* tree-complex.c: New file.
	* tree-dfa.c: New file.
	* tree-dump.c (dump_enable_all): New.
	(dequeue_and_dump): Do not handle EXPR_WITH_FILE_LOCATION.
	(dump_node): Remove const from field suffix and swtch.
	(dump_files): Add null entry, .generic, .nested, .vcg,
	.xml and a match-all entry.
	(extra_dump_files, extra_dump_files_in_use,
	extra_dump_files_alloced): Declare
	(dump_option_value_info): Add raw, details, stats,
	blocks, vops, lineno, uid and all.
	(dump_register): New.
	(get_dump_file_info): New.
	(dump_begin): Call it.
	Do nothing for TDI_none.
	(dump_begin): Include phase number in dump filename.
	(dump_enable_all): New.
	(dump_switch_p_1): Split out from dump_switch_p.
	(dump_switch_p): Handle extra_dump_files.
	Start our scan at TDI_none + 1.
	If -fdump-tree-all was given, call dump_enable_all.
	* tree-dump.h: Include splay-tree.h.
	(dump_function, dump_function_to_file, dump_register):
	Declare.
	* tree-eh.c: New file.
	* tree-flow-inline.h: New file.
	* tree-flow.h: New file.
	* tree-inline.c: Re-write to handle inlining on GIMPLE.
	* tree-inline.h (walk_tree,
	walk_tree_without_duplicates): Move to tree.h.
	(estimate_num_insns): Declare.
	* tree-into-ssa.c: New file.
	* tree-iterator.c: New file.
	* tree-iterator.h: New file.
	* tree-mudflap.c: New file.
	* tree-mudflap.h: New file.
	* tree-nested.c: New file.
	* tree-nomudflap.c: New file.
	* tree-nrv.c: New file.
	* tree-optimize.c (dump_flags, vars_to_rename,
	in_gimple_form, all_passes, pass_gimple,
	pass_rebuild_bind, pass_all_optimizations, pass_del_cfg): Declare.
	(execute_gimple, execute_rebuild_bind,
	gate_all_optimizations, execute_del_cfg,
	register_one_dump_file, register_dump_files, dup_pass_1,
	init_tree_optimization_passes, execute_todo,
	execute_one_pass, execute_pass_list): New.
	(clear_decl_rtl): Remove.
	(tree_rest_of_compilation): Update to use tree
	optimizers.
	* tree-outof-ssa.c: New file.
	* tree-pass.h: New file.
	* tree-phinodes.c: New file.
	* tree-pretty-print.c: New file.
	* tree-profile.c: New file.
	* tree-simple.c: New file.
	* tree-simple.h: New file.
	* tree-sra.c: New file.
	* tree-ssa-alias.c: New file.
	* tree-ssa-ccp.c: New file.
	* tree-ssa-copy.c: New file.
	* tree-ssa-copyrename.c: New file.
	* tree-ssa-dce.c: New file.
	* tree-ssa-dom.c: New file.
	* tree-ssa-dse.c: New file.
	* tree-ssa-forwprop.c: New file.
	* tree-ssa-live.c: New file.
	* tree-ssa-live.h: New file.
	* tree-ssa-loop.c: New file.
	* tree-ssa-operands.c: New file.
	* tree-ssa-operands.h: New file.
	* tree-ssa-phiopt.c: New file.
	* tree-ssa-pre.c: New file.
	* tree-ssa.c: New file.
	* tree-ssanames.c: New file.
	* tree-tailcall.c: New file.
	* tree.c: Include tree-iterator.h, basic-block.h and
	tree-flow.h.
	(tree_node_kind): Add phi_nodes and ssa names.
	(tree_size): Handle PHI_NODE, EPHI_NODE, SSA_NAME,
	EUSE_NODE, EKILL_NODE, EEXIT_NODE and STATEMENT_LIST.
	(make_node_stat): Handle PHI_NODE and SSA_NAME.
	<'c'> Set TREE_INVARIANT.
	(copy_node_stat): Abort if trying to copy a
	STATEMENT_LIST.
	Clear TREE_VISITED.
	Clear annotation field.
	(build_constructor): Copy TREE_INVARIANT from vals.
	Don't clear TREE_CONSTANT.
	(expr_first, expr_last, expr_length): Remove.
	(staticp): Pass unknown component references to the language.
	(save_expr): Check TREE_INVARIANT instead of TREE_CONSTANT.
	(skip_simple_arithmetic): Likewise.
	(stabilize_reference_1): Likewise.
	(tree_node_structure): Handle PHI_NODE, EPHI_NODE,
	EUSE_NODE, EKILL_NODE, EEXIT_NODE, SSA_NAME and
	STATEMENT_LIST.
	(lhd_unsave_expr_now): Remove.
	(unsafe_for_reeval): Handle LABEL_EXPR and BIND_EXPR.
	(recompute_tree_invarant_for_addr_expr): New.
	(build1_stat): Clear EXPR_LOCUS and TREE_BLOCK.
	Call recompute_tree_invarant_for_addr_expr.
	Set TREE_INVARIANT accordingly.
	(build2_stat): Don't handle CALL_EXPR.
	(build3_stat): Don't call build2_stat for CALL_EXPRs.
	(build_expr_wfl): Remove.
	(annotate_with_file_line, annotate_with_locus): New.
	(simple_cst_equal): Call simple_cst_list_equal to compare
	CONSTRUCTOR_ELTS pointers.
	(iterative_hash_expr): Don't hash types associated
	with conversions.  Instead hash on the signedness of the
	toplevel object and the operand of the conversion.
	(dump_tree_statistics): Call ssanames_print_statistics
	and phinodes_print_statistics.
	(ephi_node_elt_check_failed, phi_node_elt_check_failed,
	add_var_to_bind_expr, build_empty_stmt, is_essa_node,
	needs_to_live_in_memory): New.
	(initializer_zerop): Handle VECTOR_CST.  Don't check
	AGGREGATE_TYPE_P for CONSTRUCTOR.
	* tree.def (FILTER_EXPR, CASE_LABEL_EXPR, RESX_EXPR,
	SSA_NAME, EUSE_NODE, EKILL_NODE, EPHI_NODE, EEXIT_NODE,
	PHI_NODE, CATCH_EXPR, EH_FILTER_EXPR, STATEMENT_LIST): Define.
	(GOTO_SUBROUTINE_EXPR): Change type to 's'.
	(CALL_EXPR): Add another operand.
	(EXPR_WITH_FILE_LOCATION): Remove.
	(SWITCH_EXPR): Add another operand.
	* tree.h: Update various comments.
	(union tree_ann_d): Forward declare.
	(struct tree_common): Add fields nowarning_flag,
	invariant_flag and visited.
	(EREF_NODE_CHECK, EPHI_NODE_ELT_CHECK,
	PHI_NODE_ELT_CHECK, EREF_NODE_CHECK, PHI_NODE_ELT_CHECK,
	EPHI_NODE_ELT_CHECK, TREE_BLOCK,
	STRIP_USELESS_TYPE_CONVERSION, CALL_EXPR_TAILCALL,
	TREE_NO_WARNING, FORCED_LABEL, TREE_INVARIANT,
	IS_EMPTY_STMT, EXPR_LOCUS, SET_EXPR_LOCUS, EXPR_FILENAME,
	EXPR_LINENO, EXPR_LOCATION, EXPR_HAS_LOCATION,
	EXIT_EXPR_COND, SWITCH_COND, SWITCH_BODY, SWITCH_LABELS,
	CASE_LOW, CASE_HIGH, CASE_LABEL, BIND_EXPR_VARS,
	BIND_EXPR_BODY, BIND_EXPR_BLOCK, GOTO_DESTINATION,
	ASM_STRING, ASM_OUTPUTS, ASM_INPUTS, ASM_CLOBBERS,
	ASM_INPUT_P, ASM_VOLATILE_P, COND_EXPR_COND,
	COND_EXPR_THEN, COND_EXPR_ELSE, LABEL_EXPR_LABEL,
	CATCH_TYPES, CATCH_BODY, EH_FILTER_TYPES,
	EH_FILTER_FAILURE, EH_FILTER_MUST_NOT_THROW,
	SSA_NAME_VAR, SSA_NAME_DEF_STMT, SSA_NAME_VERSION,
	SSA_NAME_OCCURS_IN_ABNORMAL_PHI, SSA_NAME_IN_FREE_LIST,
	PHI_RESULT, PHI_REWRITTEN, PHI_NUM_ARGS,
	PHI_ARG_CAPACITY, PHI_ARG_ELT, PHI_ARG_EDGE, PHI_ARG_DEF,
	EREF_PROCESSED, EREF_ID, EREF_NAME, EREF_STMT,
	EREF_RELOAD, EREF_SAVE, EREF_CLASS, EREF_INJURED,
	EREF_TEMP, EUSE_DEF, EUSE_PHIOP, EUSE_INSERTED,
	EUSE_LVAL, EPHI_NUM_ARGS, EPHI_ARG_CAPACITY,
	EPHI_ARG_ELT, EPHI_ARG_EDGE, EPHI_ARG_PRED, EPHI_ARG_DEF,
	EPHI_ARG_INJURED, EPHI_ARG_DELAYED_RENAME,
	EPHI_ARG_HAS_REAL_USE, EPHI_ARG_STOPS,
	EPHI_ARG_PROCESSED2, EPHI_IDENTITY, EPHI_IDENT_INJURED,
	EPHI_REP_OCCUR_KNOWN, EPHI_IDENTICAL_TO, EPHI_DOWNSAFE,
	EPHI_CANT_BE_AVAIL, EPHI_DEAD, EPHI_USES, EPHI_STOPS,
	TREE_VISITED, SSA_VAR_P, DECL_NUM_STMTS,
	DECL_HARD_REGISTER, DECL_PTA_ALIASVAR, LABEL_DECL_UID,
	DECL_NEEDS_TO_LIVE_IN_MEMORY_INTERNAL,
	STATEMENT_LIST_HEAD, STATEMENT_LIST_TAIL, TDF_RAW,
	TDF_DETAILS, TDF_STATS, TDF_BLOCKS, TDF_VOPS, TDF_LINENO,
	TDF_UID,): Define.
	(TREE_NO_UNUSED_WARNING, EXPR_WFL_EMIT_LINE_NOTE,
	EXPR_WFL_NODE, EXPR_WFL_FILENAME_NODE, EXPR_WFL_FILENAME,
	EXPR_WFL_LINECOL, EXPR_WFL_LINENO, EXPR_WFL_COLNO,
	EXPR_WFL_SET_LINECOL): Remove.
	(phi_node_elt_check_failed, ephi_node_elt_check_failed,
	make_phi_node, init_phinodes, fini_phinodes,
	release_phi_node, phinodes_print_statistics,
	init_ssanames, fini_ssanames, make_ssa_name,
	release_ssa_name, ssanames_print_statistics,
	annotate_with_file_line, build_empty_stmt,
	annotate_with_locus, expr_only, categorize_ctor_elements,
	count_type_elements, add_var_to_bind_expr, is_essa_node,
	expand_stack_alloc, expand_stack_save,
	expand_stack_restore, add_case_node, operand_equal_p,
	nondestructive_fold_unary_to_constant,
	nondestructive_fold_binary_to_constant,
	fold_read_from_constant_string, int_const_binop,
	strip_float_extensions, simplify_builtin, c_strlen,
	recompute_tree_invarant_for_addr_expr,
	needs_to_live_in_memory, make_vector,
	setjmp_vars_warning, update_alignment_for_field,
	expand_asm_expr, asm_op_is_mem_input,
	containing_blocks_have_cleanups_or_stack_level,
	create_artificial_label, gimplify_function_tree,
	get_name, unshare_expr, walk_tree,
	walk_tree_without_duplicates, in_gimple_form): Declare.
	(struct tree_exp): Add fields locus and block.
	(struct tree_ssa_name, struct edge_def, struct
	tree_phi_node, struct tree_eref_common, struct
	tree_euse_node, struct ephi_arg_d, struct tree_ephi_node,
	union alias_var_def, struct tree_statement_list_node,
	struct tree_statement_list, enum operand_equal_flag): Declare.
	(enum tree_node_structure_enum): Add TS_SSA_NAME,
	TS_PHI_NODE, TS_EPHI_NODE, TS_EUSE_NODE, TS_EREF_NODE,
	TS_STATEMENT_LIST.
	(union tree_node): Add fields ssa_name, phi, eref, ephi,
	euse and stmt_list.
	(function_cannot_inline_p, uninitialized_vars_warning,
	save_for_inline, output_inline_function, all_cases_count,
	check_for_full_enumeration_handling,
	declare_nonlocal_label): Remove.
	(enum tree_dump_index): Add TDI_none, TDI_tu,
	TDI_generic, TDI_nested, TDI_vcg, TDI_xml.
	* unroll.c (unroll_loop): Don't clear map->inline_target.
	* unwind-sjlj.c (uw_install_context): Make a proper static inline
	function.
	* value-prof.c (value_prof_hooks): New.
	(find_values_to_profile): Rename to rtl_find_values_to_profile.
	Move rtl-specific bits in from branch_prob.
	(value_profile_transformations): Rename to
	rtl_value_profile_transformations.
	(struct value_prof_hooks): New.
	(rtl_value_prof_hooks): New.
	(rtl_register_value_prof_hooks): New.
	(tree_find_values_to_profile): New stub.
	(tree_value_profile_transformations): New stub.
	(tree_value_prof_hooks): New stub.
	(tree_register_value_prof_hooks): New stub.
	(find_values_to_profile): New.
	(value_profile_transformations): New.
	* value-prof.h: Add multiple inclusion guard.
	(struct histogram_value): Change rtx fields to void *.
	(rtl_register_value_prof_hooks): New declaration.
	(tree_register_value_prof_hooks): New declaration.
	(find_values_to_profile): New declaration.
	(free_profiled_values): New declaration.
	(value_profile_transformations): New declaration.
	(struct profile_hooks): New declaration.
	(init_branch_prob): Declaration moved from rtl.h.
	(branch_prob): Declaration moved from rtl.h.
	(end_branch_prob): Declaration mooved from rtl.h.
	(tree_register_profile_hooks): New declaration.
	(rtl_register_profile_hooks): New declaration.
	(tree_profile_hooks): New declaration.
	(rtl_profile_hooks): New declaration.
	* varasm.c: Include tree-mudflap.h.
	(TRAMPOLINE_ALIGNMENT): Remove.
	(make_decl_rtl): Call mudflap_enqueue_decl.
	(assemble_static_space):
	(assemble_trampoline_template): Set and return
	TRAMPOLINE_ALIGNMENT.
	* varray.c (element): Add GENERIC_PTR_NOGC entry.
	Add entry for 'tree *'.
	Add entry for struct edge_def *.
	(varray_copy): New.
	* varray.h (enum varray_data_enum): Add
	VARRAY_DATA_GENERIC_NOGC, VARRAY_DATA_EDGE and
	VARRAY_DATA_TREE_PTR.
	(union varray_data_tag): Corresponding changes.
	(VARRAY_GENERIC_PTR_NOGC_INIT, VARRAY_EDGE_INIT,
	VARRAY_TREE_PTR_INIT, VARRAY_GENERIC_PTR_NOGC,
	VARRAY_EDGE, VARRAY_TREE_PTR,
	VARRAY_PUSH_GENERIC_PTR_NOGC, VARRAY_PUSH_EDGE,
	VARRAY_PUSH_TREE_PTR, VARRAY_TOP_GENERIC_PTR_NOGC,
	VARRAY_TOP_EDGE, VARRAY_TOP_TREE_PTR): Define.

	* config/*/*: Various updates for changed macros, tree
	codes, etc.  Check ChangeLog.tree-ssa.

	* doc/cfg.texi: New file.
	* doc/tree-ssa.texi: New file.
	* doc/c-tree.texi: Document new codes.
	* doc/gccint.texi: Include new files.
	* doc/install.texi: Document new features.
	* doc/invoke.texi: Document new switches.
	* doc/passes.texi: Document new passes.
	* doc/rtl.texi: Update changed RTL codes.
	* doc/sourcebuild.texi: Update build instructions.
	* doc/standards.texi: Document Fortran changes.
	* doc/tm.texi: Update.

2004-05-12  Paolo Bonzini  <bonzini@gnu.org>

	Replace several arrays with a struct of arrays.
	* combine.c (struct reg_stat): New.
	(init_reg_last_arrays): Renamed to...
	(init_reg_last): ...this.  Callers adjusted.
	(reg_stat): New.
	(combine_instructions): Allocate it and use it.
	(reg_last_death, reg_last_set, reg_last_set_value,
	reg_last_set_label, reg_last_set_table_tick,
	reg_last_set_invalid, reg_nonzero_bits, reg_sign_bit_copies,
	reg_last_set_mode, reg_last_set_nonzero_bits,
	reg_last_set_sign_bit_copies): Replace throughout
	with items of reg_stat.

2004-05-11  Kaz Kojima  <kkojima@gcc.gnu.org>

	PR optimization/15100
	* combine.c (distribute_notes): Don't create a dangling
	REG_LIBCALL/REG_RETVAL note.

2004-05-11  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/spe.md (spe_evneg): Rename to negv2si2.

	* config/rs6000/rs6000.c (bdesc_1arg): Change spe_evneg to
	negv2si2.

2004-05-11  Aldy Hernandez  <aldyh@redhat.com>

	* doc/md.texi (Standard Names): Fix typo in vec_init description.

2004-05-11  Geoffrey Keating  <geoffk@apple.com>

	* doc/gty.texi (GTY Options): Clarify example.

2004-05-11  Fariborz Jahanian  <fjahanian@apple.com>

	* config/rs6000/rs6000.c (rs6000_handle_altivec_attribute):
	Add const qualifier to altivec vector type if one is needed.

2004-05-11  Paul Brook  <paul@codesourcery.com>

	* flags.h (flag_short_enums): Update comment.
	* opts.c (decode_options): Set flag_short_enums to 2.
	* toplev.c (flag_short_enums): Update comment.
	(process_options): Call default_short_enums target hook.

2004-05-11  Andrew Pinski  <pinskia@gcc.gnu.org>

	PR target/14063
	* config/rs6000/altivec.md (altivec_dssall):
	Change to unspec_volatile.
	(altivec_dss): Likewise.

2004-05-10  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/altivec.md ("one_cmplv16qi2"): Change vnot to
	vnor.
	("one_cmplv8hi2"): Same.
	("one_cmplv4si2"): Same.

2004-05-10  Kaz Kojima  <kkojima@gcc.gnu.org>

	PR target/15130
	* config/sh/sh-protos.h (sh_expand_epilogue): Change prototype.
	* config/sh/sh.c (output_stack_adjust): Take the sibcall epilogue
	into account.  Compute the correct number of general registers
	for the return value.  Generate a special push/pop sequence when
	failing to get a temporary register for non SHmedia epilogue.
	(sh_expand_epilogue): Add an argument to show whether it's for
	sibcall or not.  Set the 3rd argument of output_stack_adjust to
	-1 if needed.
	(sh_need_epilogue): Call sh_expand_epilogue with 0.
	* config/sh/sh.md (sibcall_epilogue): Call sh_expand_epilogue
	with 1.
	(epilogue): Call sh_expand_epilogue with 0.

2004-05-10  Andrew Pinski  <pinskia@physics.uc.edu>

	* gcse.c (eliminate_partially_redundant_loads): Instead of returning early,
	goto a cleanup label.  After the cleanup, free the allocated memory.

2004-05-10  Ziemowit Laski  <zlaski@apple.com>

	* config/rs6000/altivec.h (vec_sld): Add overloads for
	argument/return types of 'vector bool int', 'vector bool short'
	and 'vector bool char'.

2004-05-10  Zack Weinberg  <zack@codesourcery.com>

	* c-decl.c (store_parm_decls_newstyle): Correct test for a
	nested function.

2004-05-10  Richard Sandiford  <rsandifo@redhat.com>

	* read-rtl.c (read_rtx): Allow 's' and 'T' strings to be omitted,
	treating missing ones as "".
	* config/mips/mips.md: Remove constraints from match_operands and
	match_scratches if they appear in define_expands (except reload*),
	define_peephole2s, define_splits or attribute specifications.
	* config/mips/7000.md, config/mips/sb1.md: Remove match_operand
	constraint strings.

2004-05-10  Alan Modra  <amodra@bigpond.net.au>

	* config/rs6000/rs6000.c (function_arg_boundary): Always align
	AltiVec vectors.
	(function_arg_advance): Pass TARGET_32BIT -mabi=no-altivec AltiVec
	vectors by refererence.  Align the same for TARGET_64BIT to a 16
	byte boundary.  Remove useless code.  Add function comment.
	(function_arg): Similarly.  Move gpr rs6000_mixed_function_arg
	call to where it belongs.
	(function_arg_partial_nregs): Return true for all TARGET_32BIT
	-mabi=no-altivec AltiVec vectors.  Fix debug output.
	(rs6000_va_arg): Adjust for AltiVec change.

2004-05-10  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (arm_promote_prototypes): Use TARGET_AAPCS_BASED.
	* config/arm/arm.h (TARGET_AAPCS_BASED): Define.
	(TARGET_DOUBLEWORD_ALIGN): Use it.
	(WCHAR_TYPE): Define.
	(WCHAR_SIZE_TYPE): Define.
	(SIZE_TYPE): Define.

2004-05-10  Alan Modra  <amodra@bigpond.net.au>

	* config/rs6000/rs6000.c (function_arg_boundary): Align for ABI_V4
	when size is 8 bytes.
	(function_arg_advance): Account for stack space used by AltiVec
	args when -mabi=altivec.  Simplify alignment calculations.  For
	ABI_V4, pass AltiVec vectors by reference when -mabi=no-altivec.
	(function_arg): Similarly.
	(function_arg_pass_by_reference): True for ABI_V4 AltiVec when
	not AltiVec ABI.
	(rs6000_va_arg): Correct fp arg test.  Adjust for AltiVec change.
	Correct alignment, and align before testing reg count.  Remove
	TREE_THIS_VOLATILE from reg.  Don't emit unused labels.
	(rs6000_complex_function_value): Check TARGET_HARD_FLOAT and
	TARGET_FPRS here..
	(rs6000_function_value): .. not here before call.

2004-05-09  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/spe.md ("tstsflt_gpr"): Fix typo in unspec.

2004-05-09  Zack Weinberg  <zack@codesourcery.com>

	PR 15007
	* c-decl.c (current_file_decl): Rename to all_translation_units,
	adjust comment.
	(pop_scope): If popping file_scope, construct a
	TRANSLATION_UNIT_DECL and make it the context of all the
	symbols in the scope.
	(push_file_scope): Don't construct a TRANSLATION_UNIT_DECL here.
	(pushdecl): Clarify comment.  Do not set DECL_CONTEXT of
	anything to current_file_decl.
	(pushdecl_top_level): Likewise.
	(store_parm_decls_newstyle): Adjust check for nested function.
	(c_write_global_declarations): Update for renamed variable.

2004-05-09  Aldy Hernandez  <aldyh@redhat.com>

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

	* config/rs6000/rs6000.c (rs6000_conditional_register_usage): New.

	* config/rs6000/rs6000.h (CONDITIONAL_REGISTER_USAGE): Call
	function.

2004-05-08  Roger Sayle  <roger@eyesopen.com>

	* fold-const.c (fold_div_compare): New function to optimize X/C1 op C2
	where op is a comparison operator and C1 and C2 are integer constants
	into a range check.
	(fold): Call fold_div_compare.

2004-05-08  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* doc/install.texi (sparc-sun-solaris2*): Document bootstrap
	problems with earlier versions of the GNU compiler.

2004-05-07  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/rs6000-protos.h (rs6000_hard_regno_mode_ok_p):
	Declare.

	* config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok_p): New.
	(rs6000_hard_regno_mode_ok): New.
	(rs6000_init_hard_regno_mode_ok): New.
	(rs6000_override_options): Call rs6000_init_hard_regno_mode_ok.

	* config/rs6000/rs6000.h (HARD_REGNO_NREGS): Use precomputed
	result.

2004-05-07  Ziemowit Laski  <zlaski@apple.com>

	* config/rs6000/altivec.h (vector, pixel, bool): Do not
	define as macros #ifdef __APPLE_ALTIVEC__.

2004-05-07  Fariborz Jahanian  <fjahanian@apple.com>

	* config/rs6000/rs6000.c (rs6000_mixed_function_arg):
	Generate appropriate parallels for vector arguments
	passed to vararg functions. (function_arg): make the call
	to rs6000_mixed_function_arg for vector args as needed.

2004-05-07  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.c (mips_va_arg): Fix calculation of osize for
	EABI_FLOAT_VARARGS_P.

2004-05-07  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.h (ISA_HAS_BRANCHLIKELY): Remove TARGET_MIPS5500.
	* config/mips/mips.c (override_options): Disable branch likely
	instructions if TUNE_MIPS5500.

2004-05-07  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.c (override_options): Allow the hi and lo registers
	to store any integral mode, not just MODE_INTs.

2004-05-07  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (arm_promote_prototypes): Use TARGET_AAPCS_BASED.
	* config/arm/arm.h (TARGET_AAPCS_BASED): Define.
	(TARGET_DOUBLEWORD_ALIGN): Use it.
	(WCHAR_TYPE): Define.
	(WCHAR_SIZE_TYPE): Define.
	(SIZE_TYPE): Define.

2004-05-07  Uros Bizjak  <uros@kss-loka.si>

	* config/i386/i386.c (ix86_emit_fp_unordered_jump): Use
	testb $4, %ah insn instead of sahf insn if !TARGET_USE_SAHF.

2004-05-07  Andrew Pinski  <pinskia@physics.uc.edu>

	* loop-doloop.c (doloop_valid_p): Make sure that body
	gets freed.

2004-05-07  Eric Botcazou  <ebotcazou@act-europe.fr>

	* config/sparc/sparc-protos.h (sparc_skip_caller_unimp): New
	declaration.
	* config/sparc/sparc.c (SKIP_CALLERS_UNIMP_P): Delete.
	(sparc_skip_caller_unimp): New global variable.
	(sparc_function_epilogue): Set 'sparc_skip_caller_unimp'.
	Use it instead of SKIP_CALLERS_UNIMP_P.
	* config/sparc/sparc.md (call expander): Add sanity check.
	(call_address_struct_value_sp32): Re-sync with expander.
	(call_symbolic_struct_value_sp32): Likewise.
	(return peepholes): Use 'sparc_skip_caller_unimp' instead
	of custom predicate.

2004-05-07  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR c++/14962
	* c-pragma.c (handle_pragma_redefine_extname): Only change
	the assembler name of FUNCTION_DECLs and VAR_DECLs.

2004-05-07  Uros Bizjak  <uros@kss-loka.si>

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

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

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

2004-05-07  Loren James Rittle  <ljrittle@acm.org>

	* config/alpha/freebsd.h (SUBTARGET_EXTRA_SPECS): Proper redefinition.
	* config/arm/freebsd.h: Likewise.
	* config/ia64/freebsd.h: Likewise.
	* config/sparc/freebsd.h: Likewise.

2004-05-07  Hans-Peter Nilsson  <hp@axis.com>

	PR optimization/15296
	* reorg.c (fill_simple_delay_slots): Use next_real_insn when
	getting last consecutive label at a branch.
	(relax_delay_slots): Similar, near top of loop.

2004-05-06  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	PR target/15202
	* pa.md (movdi, movsi, movhi, movqi): Support move from shift amount
	register to general register.

2004-05-07  Alan Modra  <amodra@bigpond.net.au>

	* config/rs6000/rs6000.h (STACK_BOUNDARY): Use 128 bit for either
	TARGET_ALTIVEC or TARGET_ALTIVEC_ABI.
	* config/rs6000/sysv4.h (ABI_STACK_BOUNDARY): Likewise.
	(STACK_BOUNDARY): Delete.

2004-05-06  Stuart Hastings  <stuart@apple.com>

	* doc/invoke.texi: Restore -fgcse-after-reload doc from 1.421,
	mistakenly clobbered by 1.423.

2004-05-06  Richard Sandiford  <rsandifo@redhat.com>

	* doc/invoke.texi: Document -mvr4130-align.
	* config/mips/mips.h (MASK_VR4130_ALIGN, TARGET_VR4130_ALIGN)
	(TUNE_MIPS4120, TUNE_MIPS4130): New macros.
	(TUNE_MACC_CHAINS): Include TUNE_MIPS4120 and TUNE_MIPS4130.
	(TARGET_SWITCHES): Add -mvr4130-align and -mno-vr4130-align.
	* config/mips/mips.md: Include sched-int.h.
	(USEFUL_INSN_P, SEQ_BEGIN, SEQ_END, FOR_EACH_SUBINSN): New macros.
	(mips_rtx_costs): Set integer multiplication costs for TUNE_MIPS4130.
	(override_options): Enable -mvr4130-align at -O3 and above.
	(mips_sim_insn): New variable.
	(mips_sim): New structure.
	(mips_sim_reset, mips_sim_init, mips_sim_next_cycle, mips_sim_wait_reg)
	(mips_sim_wait_regs_2, mips_sim_wait_regs_1, mips_sim_wait_regs)
	(mips_sim_wait_units, mips_sim_wait_insn, mips_sim_record_set)
	(mips_sim_issue_insn, mips_sim_issue_nop, mips_sim_finish_insn)
	(vr4130_avoid_branch_rt_conflict, vr4130_align_insns): New functions.
	(mips_reorg): Call vr4130_align_insns.
	(vr4130_last_insn): New variable.
	(vr4130_true_reg_dependence_p_1, vr4130_true_reg_dependence_p)
	(vr4130_swap_insns_p, vr4130_reorder): New functions.
	(mips_sched_reorder, mips_variable_issue): Hook in vr4130 code.
	(mips_issue_rate): Return 2 for PROCESSOR_R4130.
	(mips_use_dfa_pipeline_interface): Return true for the same.
	* config/mips/4130.md: New file.
	* config/mips/mips.md: Include it.  Add a peephole2 to convert
	"mult;mflo" into "mtlo;macc".
	(*macc, *umul_acc_di, *smul_acc_di): Use $1 rather than $0 as the
	target of maccs.
	(*msac_using_macc): New pattern.

2004-05-06  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/5500.md (ir_vr55_store): Set latency to 0.
	(ir_vr55_hilo): Split into...
	(ir_vr55_mfhilo, ir_vr55_mthilo): ...these new reservations.
	(ir_vr55_imul_si, ir_vr55_imadd): Change latency to 5.
	(ir_vr55_imul_di): Change latency to 9.  Reserve vr55_mac for 4 cycles.
	Add various multiplication bypasses.
	* config/mips/mips.c (mips_rtx_costs): Adjust VR5500 costs for integer
	multiplication.

2004-05-06  Uros Bizjak  <uros@kss-loka.si>

	* config/i386/i386.md (*fscalexf4): Correct insn "mode"
	attribute to "XF".

2004-05-05  Uros Bizjak  <uros@kss-loka.si>

	* optabs.h (enum optab_index): Add new OTI_fmod and OTI_drem.
	(fmod_optab, drem_optab): Define corresponding macros.
	* optabs.c (init_optabs): Initialize fmod_optab and drem_optab.
	* genopinit.c (optabs): Implement fmod_optab and drem_optab
	using fmod?f3 and drem?f3 patterns.
	* builtins.c (expand_builtin_mathfn_2): Handle BUILT_IN_FMOD{,F,L}
	using fmod_optab and BUILT_IN_DREM{,F,L} using drem_optab.
	(expand_builtin): Expand BUILT_IN_FMOD{,F,L} and
	BUILT_IN_DREM{,F,L} using expand_builtin_mathfn_2 if
	flag_unsafe_math_optimizations is set.

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

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

2004-05-05  Roger Sayle  <roger@eyesopen.com>

	* reload1.c (inherit_piecemeal_p): Mark parameters potentially unused.

2004-05-05  Ian Lance Taylor  <ian@wasabisystems.com>

	PR driver/9822
	* doc/invoke.texi (Spec Files): Remove documentation of %c.

2004-05-05  Chris Demetriou  <cgd@broadcom.com>

	* config/mips/mips.md: Update the msub define_split for new mflo/mfhi
	representation.

2004-05-06  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm-protots.h (vfp_mem_operand): Rename ...
	(arm_coproc_mem_operand): ... To this.
	* config/arm/arm.c (arm_legitimate_address_p): Allow ldrd modes.
	(arm_legitimate_index_p): Ditto.
	(vfp_mem_operand): Rename ...
	(arm_coproc_mem_operand): ... To this.  Handle writeback modes.
	(vfp_secondary_reload_class): Use it.
	(output_move_double): Use doubleword load/store instructions.
	(arm_hard_regno_mode_ok): Only allow even reg pairs for ldrd.
	* config/arm/arm.h (TARGET_LDRD): Define.
	(EXTRA_CONSTRAINT_STR_ARM): Add 'Uy'.
	* config/arm/arm.md (arm_movdi): Allow all valid memory operands.
	New splitter for invalid doubleword loads.
	* config/arm/iwmmxt.md (iwmmxt_arm_movdi): Use Uy constraint.
	* config/arm/vfp.md (arm_movdi_vfp): Allow all valid memory operands.
	* doc/md.texi: Document Uy constraint.

2004-05-05  Jan Hubicka  <jh@suse.cz>

	PR opt/14980
	* cgraphunit.c (cgraph_remove_unreachable_nodes): Deal properly with
	inline clones.

2004-05-05  H.J. Lu  <hongjiu.lu@intel.com>

	PR target/15290
	* config/i386/i386.c (ix86_split_to_parts): Use real_to_target
	instead of REAL_VALUE_TO_TARGET_LONG_DOUBLE.

2004-05-05  Mike Stump  <mrs@apple.com>

	* config/darwin-c.c (add_framework): Copy the directory name as it
	can be freed later.  Also, ensure we always allocate enough room
	for the cached framework information.
	(find_subframework_header): Keep track of the directory where the
	subframework header was found.
	(framework_construct_pathname): Speed up by not trying to re-add a
	framework.
	* cppfiles.c (search_path_exhausted): Arrange for the missing
	header callback to be able to set the directory where the header
	was found.
	(cpp_get_dir): Add.
	* cpplib.h (missing_header_cb): Add a parameter.
	(cpp_get_dir): Add.

2004-05-03  Mike Stump  <mrs@apple.com>

	* doc/invoke.texi (Directory Options): Document -iquote.
	* doc/cpp.texi: Likewise.
	* doc/cppopts.texi: Likewise.
	* c-opts.c (c_common_missing_argument): Add -iquote processing.
	(c_common_handle_option): Likewise.
	* c.opt (iquote): Add.
	* gcc.h (DEFAULT_WORD_SWITCH_TAKES_ARG): Add -iquote.
	* c-incpath.c (merge_include_chains): Update comment to use -iquote.

	* c-opts.c (case OPT_I): Deprecate -I- support.
	* doc/invoke.texi: Likewise.
	* doc/cpp.texi: Likewise.
	* doc/cppopts.texi: Likewise.

2004-05-05  Steven Bosscher  <stevenb@suse.de>

	* basic-block.h (free_basic_block_vars): Update prototype.
	* flow.c (free_basic_block_vars): Remove the keep_head_end_p
	argument.
	(life_analysis): Update call.
	* ifcvt.c (if_convert): Likewise.
	* sibcall.c (optimize_sibling_and_tail_recursive_call): Likewise.
	* passes.c (rest_of_handle_final): Likewise.
	(rest_of_compilation): Likewise.
	* config/sh/sh.c (sh_output_mi_thunk): Likewise.

	* emit-rtl.c (next_real_insn): Use INSN_P.
	(prev_real_insn): Likewise.

2004-05-05  Eric Christopher  <echristo@redhat.com>

	* config/mips/mips.md: Update the madd define_split for new mflo/mfhi
	representation.

2004-05-05  Paolo Bonzini  <bonzini@gnu.org>

	* config/rs6000/rs6000.c (build_opaque_vector_type):
	New function.
	(rs6000_init_builtins): Use it.

2004-05-04  Bernard Giroud  <bgiroud2@free.fr>

	* vmsdbgout.c (vms_func_node, vms_func_ref): New.
	(func_table): Change type from char ** to vms_func_ref.
	(write_rtnbeg): Update to reflect func_table change.  Use
	fde->funcdef_number instead of rtnnum in output.
	(write_rtnend, vmxdbgout_begin_function, vmsdbgout_init): Likewise.

2004-05-04  Paolo Bonzini  <bonzini@gnu.org>
	    Richard Henderson  <rth@redhat.com>

	PR target/14899

	* c-common.c (vector_types_convertible_p): New function.
	* c-typeck.c (comptypes): Recurse on vector types.
	(convert_for_assignment): Use vector_types_convertible_p.
	(digest_init): Use vector_types_convertible_p to check
	validness of constant vector initializers; otherwise treat
	them as scalars.
	* tree.c (make_or_reuse_type): New.
	(build_common_tree_nodes): Use it.
	* cp/call.c (standard_conversion): Likewise.
	* cp/typeck.c (comptypes): Recurse on vector types.
	(convert_for_assignment): Use vector_types_convertible_p.

2004-05-04  Chris Demetriou  <cgd@broadcom.com>

	* config/mips/mips.c (override_options): Default to no
	generation of branch-likely operations when tuning for
	CPUs where they tend to have a negative performance impact
	(e.g., SB-1).

2004-05-04  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* expr.c (store_constructor_field): Don't call store_constructor
	if bitsize is not a multiple of a byte.

2004-05-04  Richard Sandiford  <rsandifo@redhat.com>

	* reload1.c (inherit_piecemeal_p): New function.
	(emit_reload_insns): When reloading a group of hard registers, use
	inherit_piecemeal_p to decide whether the values of individual hard
	registers can be inherited.

2004-05-04  H.J. Lu  <hongjiu.lu@intel.com>

	* config/ia64/t-ia64 (LIB2ADDEH): Remove gthr-gnat.c.
	* config/s390/t-tpf (LIB2ADDEHDEP): Likewise.
	* config/t-linux (LIB2ADDEHDEP): Likewise.

2004-05-04  Paul Brook  <paul@codesourcery.com>

	* config/arm/crti.asm: Push an even number of registers.
	* config/arm/crtn.asm: And restore them.  Load via sp.

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

	* ggc-zone.c (ggc_alloc_zone_1): Add MEM_STAT_DECL parameter.
	Collect overhead information.
	(ggc_alloc_stat): New name of ggc_alloc.  Add MEM_STAT_DECL
	parameter and pass it through.
	(ggc_alloc_typed_stat): New name of ggc_alloc_typed.  Add
	MEM_STAT_DECL parameter and pass it through.
	(ggc_alloc_zone_stat): New name of ggc_alloc_zone.  Add
	MEM_STAT_DECL parameter and pass it through.

2004-05-03  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/rs6000-protos.h: Protoize rs6000_hard_regno_nregs.

	* config/rs6000/rs6000.c (rs6000_hard_regno_nregs): New.

	* config/rs6000/rs6000.h (HARD_REGNO_NREGS): Call
	rs6000_hard_regno_nregs.

2004-05-03  Eric Christopher  <echristo@redhat.com>

	* config/s390/s390.c (s390_emit_prologue): Call unspec tpf
	prologue insn instead of setting up call.
	(s390_emit_epilogue): Ditto.
	* config/s390/s390.md (prologue_tpf, epilogue_tpf): New patterns.
	(define_constants): Add numbers for above patterns.

2004-05-03  Eric Christopher  <echristo@redhat.com>

	* config/s390/s390.h (CONDITIONAL_REGISTER_USAGE): Move body...
	* config/s390/s390.c (s390_conditional_register_usage): ...here.
	* config/s390/s390-protos.h: Prototype.

2004-05-03  Joe Buck <jbuck@welsh-buck.org>

	* cppfiles.c (pchf_adder): Eliminate use of |= in d->have_once_only
	assignment.

2004-05-03  Eric Christopher  <echristo@redhat.com>

	* config/mips/mips.md: Fix branch length attribute definition.

2004-05-03  Aldy Hernandez  <aldyh@redhat.com>

	* config.gcc: Remove --enable-altivec support.

	* config/rs6000/altivec-defs.h: Remove.

2004-05-03  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* fixinc/inclhack.def (svr4_profil): Don't apply on IRIX 5/6.
	* fixinc/fixincl.x: Regenerate.

2004-05-03  Uros Bizjak  <uros@kss-loka.si>

	* config/i386/i386.md (*fyl2x_sfxf3, *fyl2x_dfxf3): Remove insn
	definition.
	(log?f2, log10?f2, log2?f2): Reimplement expanders with
	float_truncate insn.
	(*fxtractsf3, *fxtractdf3): Remove insn definition.
	(logb?f2): Reimplement expanders with float_truncate insn.

2004-05-03  Graham Stott  <graham.stott@btinternet.com>

	PR 14718
	* dwarf2out.c (dwarf2out_imported_module_or_decl): Use
	force_type_die for CONST_DECL.

2004-05-03  Eric Botcazou  <ebotcazou@libertysurf.fr>
	    Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* config.gcc (sparc64-*-solaris2*, sparcv9-*-solaris2*): Add
	tm-dwarf2.h to tm_file.
	(sparc-*-solaris2*): Add tm-dwarf2.h to tm_file for Solaris 7+.
	* config/sparc/sol2-bi.h (PREFERRED_DEBUGGING_TYPE): Delete.
	(ASM_DEBUG_SPEC): Delete.

2004-05-03  Uros Bizjak  <uros@kss-loka.si>

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

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

2004-05-02  Alexandre Oliva  <aoliva@redhat.com>

	2003-11-19  Richard Sandiford  <rsandifo@redhat.com>
	* config/frv/frv.md (*return_true, *return_false): New patterns.

2004-05-02  Kazu Hirata  <kazu@cs.umass.edu>

	* rtl.h (PHI_NODE_P): Remove.

2004-05-02  Eric Botcazou  <ebotcazou@act-europe.fr>

	PR middle-end/14988
	* function.c (assign_stack_local_1): Use BITS_PER_UNIT alignment
	when passed -2 as 'align'.
	(put_var_into_stack): Use 'bool' as the type for the three local
	predicates.  Adjust calls to put_reg_into_stack.
	When passed a CONCAT, instruct put_reg_into_stack to use
	a consecutive stack slot for the second part.
	(put_reg_into_stack): Remove 'promoted_mode' parameter, add
	'consecutive_p' parameter.  Turn the three predicates into 'bool'
	parameters.  Retrieve the register mode from 'reg'.
	When consecutive_p is true, instruct assign_stack_local_1 to use
	BITS_PER_UNIT alignment.
	(put_addressof_into_stack): Use 'bool' as the type for the two
	local predicates. Adjust call to put_reg_into_stack.

2004-05-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* fold-const.c (fold_convert_const, fold): Add missing
	FIX_ROUND_EXPR case.

2004-05-02  Alexandre Oliva  <aoliva@redhat.com>

	* configure.ac (FLEX, BISON): Only use tools from the build tree
	if build equals host.
	* configure: Rebuilt.

	* config/frv/frv-protos.h (frv_expand_epilogue,
	frv_expand_fdpic_call): Add bool argument.
	* config/frv/frv.c (frv_function_ok_for_sibcall): New.
	(TARGET_FUNCTION_OK_FOR_SIBCALL): Define to it.
	(frv_expand_epilogue): Use new argument to decide whether to emit
	return instruction or copy the return address to LR.
	(frv_expand_fdpic_call): Inline PLT entry when emitting direct
	sibcalls.
	(sibcall_operand): New.
	* config/frv/frv.h (PREDICATE_CODES): call_operand doesn't match
	PLUS nor LABEL_REF.  Add sibcall_operand.
	* config/frv/frv.md (call, call_value): Pass false to
	frv_expand_fdpic_call.
	(call_fdpicdi, call_value_fdpicdi): Insert %i0 in calll.
	(sibcall, sibcall_internal, sibcall_fdpicdi, sibcall_value,
	sibcall_value_internal, sibcall_value_fdpicdi): New.
	(return_unsigned_true, return_unsigned_false): New.
	(epilogue): Adjust call to frv_expand_epilogue.
	(sibcall_epilogue): New.

	* config/frv/frv.h (ASM_SPEC): Pass -mno-fdpic as -mnopic.
	(CPP_SPEC, CPP_SIMPLE_SPEC): Undefine __FRV_ACC__ and __FRV_FPR__
	before redefining them.

2004-05-01  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtins.c (fold_fixed_mathfn): New function.
	(fold_builtin_lround, fold_builtin): Use it.

2004-05-01  Jakub Jelinek  <jakub@redhat.com>

	* config/sparc/linux64.h (TARGET_DEFAULT): Make 64-bit by default
	also for TARGET_CPU_DEFAULT == TARGET_CPU_ultrasparc3.

2004-05-01  Kazu Hirata  <kazu@cs.umass.edu>

	* config/cris/cris.h: Revert my "fix comment typos" patch.

2004-05-01  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.h (TUNE_MACC_CHAINS): Fix comment.

2004-05-01  Falk Hueffner  <falk@debian.org>

	* config/alpha/alpha.md (builtin_insbl, builtin_inswl,
	builtin_insll): Disallow 0 as first input operand.

2004-05-01  Falk Hueffner  <falk@debian.org>

	* config/alpha/alpha.c (alpha_rtx_costs): Fix shiftadd costs.

2004-05-01  Ulrich Weigand  <uweigand@de.ibm.com>

	PR middle-end/15054
	* expr.c (expand_expr_real): Do not call preserve_temp_slots
	on a TARGET_EXPR temp.
	* function.c (assign_stack_temp_for_type): Set 'keep' flag for
	TARGET_EXPR temp slots.

2004-05-01  Paolo Bonzini  <bonzini@gnu.org>

	* simplify-rtx.c (simplify_ternary_operation): When
	converting an IF_THEN_ELSE to a relational op, return
	correct mode.

2004-04-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtins.c (fold_builtin_round): Fix comment typo.
	(fold_builtin_lround): New function.
	(fold_builtin): Use it.

2004-04-20  Andrew Pinski  <pinskia@physics.uc.edu>

	PR target/11608
	* config/sh/elf.h (DBX_OUTPUT_MAIN_SOURCE_FILE_END): Update and make it
	more like the one in config/dbxelf.h.

2004-04-30  Zack Weinberg  <zack@codesourcery.com>

	* tree.h (SET_ARRAY_OR_VECTOR_CHECK): Rename to SET_OR_ARRAY_CHECK
	and adjust definition accordingly.
	(TYPE_DOMAIN): Allow only SET_TYPE and ARRAY_TYPE.
	(TYPE_DEBUG_REPRESENTATION_TYPE): Allow only VECTOR_TYPE.
	* expr.c (store_constructor): Do not access TYPE_DOMAIN of a
	VECTOR_TYPE.

2004-04-30  Jason Merrill  <jason@redhat.com>

	PR c++/14587
	* config/i386/winnt.c (associated_type): Look for attributes on
	the TYPE_MAIN_VARIANT of *this.
	* attribs.c (decl_attributes): If ATTR_FLAG_TYPE_IN_PLACE, also
	apply the attributes to the variants.

2004-04-30  Paul Brook  <paul@codesourcery.com>

	* config.gcc: Simplify arm --with-{cpu,tune} test.
	* config/arm/arm-cores.def: Document whitespace restrictions.

2004-04-30  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	PR other/1963
	* config/alpha/osf.h (SWITCHES_NEED_SPACES): Define.

2004-04-30  Brian Ford  <ford@vss.fsi.com>
	    DJ Delorie  <dj@redhat.com>

	* config/i386/cygming.h [HAVE_GAS_PE_SECREL32_RELOC]
	(DWARF2_DEBUGGING_INFO): Define to enable.
	(DBX_REGISTER_NUMBER): Define to use the svr4 register map for
	DWARF2.
	* configure.ac (Target-specific assembler checks)
	<i[34567]86-*-[cygwin*|pe|mingw32*]>: New test for .secrel32
	relocs.
	* configure: Regenerate.
	* config.in: Likewise.

	* config/i386/cygming.h [HAVE_GAS_PE_SECREL32_RELOC]
	(ASM_OUPUT_DWARF_OFFSET): Define.

2004-04-29  Andreas Krebbel  <krebbel1@de.ibm.com>

	* config/s390/s390-protos.h (s390_emit_epilogue): Parameter added.
	(s390_emit_call): New function prototype added.
	(s390_tls_get_offset): Function removed.
	* config/s390/s390.c (s390_function_ok_for_sibcall,
	s390_call_saved_register_used_p): New functions.
	(TARGET_FUNCTION_OK_FOR_SIBCALL): Definition of target macro added.
	(s390_tls_get_offset): Function merged into s390_emit_tls_call_insn.
	(s390_emit_tls_call_insn): New function.
	(legitimize_tls_address): Call s390_emit_tls_call_insn instead of
	emit_call_insn.
	(s390_emit_prologue): Use s390_emit_call instead of emit_call_insn.
	(s390_emit_epilogue): Like s390_emit_prologue. Parameter for sibcalls
	added.
	* config/s390/s390.h (SIBCALL_REGNUM): New macro representing the
	register number used to hold the target address for sibcalls.
	* config/s390/s390.md ("sibcall", "sibcall_value", "sibcall_epilogue"):
	New expanders.
	("*sibcall_br", "*sibcall_brc", "*sibcall_brcl", "*sibcall_value_br",
	"*sibcall_value_brc", "*sibcall_value_brcl"): New insns.
	("call_exp", "call_value_exp", "call_value_tls", "call_value_tls_exp"):
	Expanders removed.
	("call", "call_value"): Call s390_emit_call to emit the call patterns.
	("*bras", "*brasl", "*bras_r", "*brasl_r", "*bras_tls", "*brasl_tls",
	"*basr", "*basr_r", "*basr_tls"): Added constraint: !SIBLING_CALL_P.
	("epilogue"): Changed the call to s390_emit_epilogue to use the
	new parameter.

2004-04-30  Kazu Hirata  <kazu@cs.umass.edu>

	* bb-reorder.c, c-opts.c, cfglayout.c, cgraph.c, cgraphunit.c,
	cppfiles.c, fold-const.c, ggc-zone.c, loop-doloop.c, optabs.c,
	reg-stack.c, varasm.c, config/alpha/ev4.md,
	config/alpha/ev5.md, config/alpha/ev6.md, config/arm/arm.c,
	config/c4x/c4x.c, config/c4x/c4x.md, config/cris/cris.c,
	config/cris/cris.h, config/fr30/fr30.h, config/frv/frv.c,
	config/frv/frv.h, config/frv/frv.md, config/h8300/h8300.c,
	config/i386/i386.c, config/i386/i386.md, config/i386/winnt.c,
	config/ia64/itanium2.md, config/ip2k/ip2k.c,
	config/mips/mips.c, config/mips/mips.h, config/mips/sr71k.md,
	config/pa/pa.c, config/s390/s390.c, config/sh/sh.c: Fix
	comment typos.

2004-04-30  Paul Brook  <paul@codesourcery.com>

	* config.gcc: Default ep9312 to hard-float.
	* config/arm/arm-cores.def: Add ARCH field.
	* config/arm/arm.c (FL_FOR_ARCH*): Define.
	(arm_arch_cirrus): New variable.
	(all_cores): Set and use arch.
	(all_architectures): Ditto.
	(arm_arch_name): New variable.
	(arm_override_options): Set it. Use [SUB]TARGET_CPU_DEFAULT.
	Set and use arm_arch_cirrus.
	* config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Set arch defines.
	(enum processor_type): Update ARM_CORE define.
	(enum target_cpus): Add.  Replaces TARGET_CPU_* defines.
	(CPP_SPEC): Remove %(cpp_cpu_arch).
	(CPP_ARCH_DEFAULT_SPEC): Remove.
	(CPP_CPU_ARCH_SPEC): Remove.
	(EXTRA_SPECS): Don't use CPP_*ARCH*_SPEC.
	(FPUTYPE_DEFAULT): Don't define here.

2004-04-30  J"orn Rennecke <joern.rennecke@superh.com>

	* flow.c (propagate_one_insn): Call mark_set_regs for stack pointer
	updates too.

2004-04-30  Paul Brook  <paul@codesourcery.com>

	* arm.c (arm_needs_doubleword_align): Use mode alignment.

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

	* config/altivec/altivec.h [__cplusplus] (vec_subsubs): Rename to
	vec_sububs.
	[__cplusplus] (vec_subsuhs): Rename to vec_subuhs, without
	duplicates.

2004-04-30  Uros Bizjak  <uros@kss-loka.si>

	* config/i386/i386.md (atansf2, atandf2, atanxf2): Move near
	atan2?f3 expanders.

2004-04-29  Nick Clifton  <nickc@redhat.com>

	Bug 14093
	* config/sh/sh-protos.h (sh_promote_prototypes): Declare.
	* config/sh/sh.c (sh_promote_prototypes): Remove declaration.
	Delete static from definition.
	* config/sh/sh.h (FUNCTION_VALUE): Add sh_promote_prototypes call.

2004-04-30  Uros Bizjak  <uros@kss-loka.si>

	* reg-stack.c (subst_stack_regs_pat): <UNSPEC_SIN, UNSPEC_COS,
	UNSPEC_FRNDINT, UNSPEC_F2XM1>: abort() if src1 dies.
	<UNSPEC_SINCOS_COS, UNSPEC_TAN_ONE, UNSPEC_XTRACT_FRACT>: Same.
	<UNSPEC_SINCOS_SIN, UNSPEC_TAN_TAN, UNSPEC_XTRACT_EXP>: Same.

2004-04-29  Richard Guenther  <richard.guenther@uni-tuebingen.de>

	* commom.opt (Wfatal-errors): Add it.
	* diagnostic.c (flag_fatal_errors): Define it.
	(diagnostic_action_after_output): Check for flag_fatal_errors.
	* flags.h (flag_fatal_errors): Declare it.
	* opts.c (common_handle_option): Add OPT_Wfatal_errors.
	* doc/invoke.texi (Warning Options): Document -Wfatal-errors.

2004-04-30  Josef Zlomek  <zlomekj@suse.cz>

	* gcse.c (remove_reachable_equiv_notes): Delete notes also in
	blocks which have kill flag set.

2004-04-29  Ben Elliston  <bje@au.ibm.com>

	* configure.ac (--with-as): Abort if user-supplied assembler
	cannot be executed.
	(--with-ld): Likewise for the linker.
	* configure: Regenerate.

2004-04-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* convert.c (convert_to_integer): Ensure `long_integer_type_node'
	isn't NULL before using it.

2004-04-29  Richard Sandiford  <rsandifo@redhat.com>

	PR target/15189
	* config/mips/mips.md (load_df_low): Use default length.
	(load_df_high, store_df_high): Likewise.

2004-04-29  Kazu Hirata  <kazu@cs.umass.edu>

	* config/mips/mips.md, config/mips/sb1.md,
	config/rs6000/rs6000.c: Fix comment typos.

2004-04-29  Kazu Hirata  <kazu@cs.umass.edu>

	* builtins.c, cgraph.c, cgraphunit.c, final.c, fold-const.c:
	Fix comment typos.

2004-04-29  Douglas B Rupp  <rupp@gnat.com>

	* gcc.c (DELETE_IF_ORDINARY): New macro default definition.
	(delete_if_ordinary): Use above macro.
	* config/alpha/xm-vms.h (DELETE_IF_ORDINARY): New macro VMS definition.
	Update copyright.
	* doc/hostconfig.texi (DELETE_IF_ORDINARY): Document new macro.

2004-04-29  Richard Earnshaw  <rearnsha@arm.com>

	* c-decl.c (get_parm_info): Use the correct tag keywords when
	warning about type declarations in prototypes.

2004-04-29  Paul Brook  <paul@codesourcery.com>

	* config.gcc: Pull list of cores from arm-cores.def.

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

	* combine.c (combine_simplify_rtx): Adjust call to use
	simplify_relational_operation.  Do not use SELECT_CC_MODE
	when a comparison already has a MODE_CC mode.

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

	(simplify_set): simplify_relational_operation may now
	return another relational expression.
	* cse.c (fold_rtx): simplify_relational_operation now
	takes of computing the comparison mode.
	* dojump.c (compare_from_rtx): Use simplify_relational_operation,
	remove dead code.
	(do_compare_rtx_and_jump): Likewise.
	* integrate.c (subst_constants): simplify_relational_operation
	may now return another relational expression.
	* simplify-rtx.c (simplify_gen_relational): Move most code to
	the new simplify_relational_operation and
	simplify_relational_operation_1 functions.
	(simplify_relational_operation): Rewritten.
	(simplify_relational_operation_1): New function.
	(simplify_ternary_operation): simplify_relational_operation
	may now return another relational expression.
	(simplify_rtx): Remove unnecessary temp variable.

2004-04-29  Uros Bizjak  <uros@kss-loka.si>

	* reg-stack.c (swap_to_top): New function.
	(subst_stack_regs_pat): UNSPEC_FPATAN, UNSPEC_FYL2X: Use
	swap_to_top().
	(subst_stack_regs_pat): UNSPEC_FSCALE: Remove.
	(subst_stack_regs_pat): Handle UNSPEC_FSCALE_FRACT and
	UNSPEC_FSCALE_EXP.

	* config/i386/i386.md (UNSPEC_FSCALE): Remove.
	(*fscale_sfxf3, *fscale_dfxf3, *fscale_xf3): Remove insn pattern.
	(UNSPEC_FSCALE_FRACT, UNSPEC_FSCALE_EXP): New unspecs to represent
	x87's fscale insn.
	(*fscalexf4: Define new insn pattern to implement x87 fscale insn.
	(exp?f2, exp10?f2, exp2?f2): Use *fscalexf4 and float_truncate
	patterns.

2004-04-28  Serge Belyshev  <1319@bot.ru>

	PR 14944
	* coverage.c (read_counts_file): Fix usage of warning () call.
	* pretty-print.c (pp_base_format_text): Fix typo in the comment.

2004-04-28  Ben Elliston  <bje@au.ibm.com>

	* doc/invoke.texi (Objective-C Dialect Options): Don't prefix
	options with "-" in the option index.
	(SPARC Options): Likewise.
	(M32R/D Options): Likewise.

2004-04-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* convert.c (convert_to_integer): Convert (long)round -> lround,
	etc.

2004-04-28  Andrew Pinski  <pinskia@physics.uc.edu>

	* config/rs6000/rs6000.c (registers_ok_for_quad_peep):
	Return false if we do not have fp register.
	(addrs_ok_for_quad_peep): Rename to ...
	(mems_ok_for_quad_peep): this.
	Add check for volatile memory.
	* config/rs6000/rs6000-protos.h (addrs_ok_for_quad_peep):
	Rename to ...
	(mems_ok_for_quad_peep): this.
	* config/rs6000/rs6000.md: Change peephole's for lfq/stq
	to peephole2's.
	(lfq_power2): New instruction.
	(stfq_power2): Likewise.

2004-04-28  Jan Hubicka  <jh@suse.cz>

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

2004-04-28  Joseph S. Myers  <jsm@polyomino.org.uk>

	* Makefile.in ($(DESTDIR)$(infodir)/%.info): Don't condition
	calling install-info on $(DESTDIR)$(infodir)/dir already being
	present.

2004-04-28  Paul Brook  <paul@codesourcery.com>

	* dwarf2out.c (mem_loc_descriptor): Handle shifts.

2004-04-28  Ulrich Weigand  <uweigand@de.ibm.com>

	* gcse.c (find_moveable_store): Do not accept store insns with
	REG_EH_REGION note.

2004-04-28  Paul Brook  <paul@codesourcery.com>

	* calls.c (precompute_arguments): Remove PROMOTE_FOR_CALL_ONLY.
	* function.c (assign_temp): Ditto.
	* system.h (PROMOTE_FOR_CALL_ONLY): Poison.

2004-04-28  Paul Brook  <paul@codesourcery.com>

	* config/arm/lib1funcs.asm: Recognize armv5tej and armv6.

2004-04-28  Josef Zlomek  <zlomekj@suse.cz>

	* var-tracking.c (variable_different_p): Add a parameter
	compare_current_location, compare current location of variable parts
	if it is true.
	(dataflow_set_different_1): Pass compare_current_location == false.
	(dataflow_set_different_2): Pass compare_current_location == false.
	(emit_notes_for_differences_1): Pass compare_current_location == true.

2004-04-28  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.md ("casesi"): Mark jump table access as
	non-trapping and unchanging.

2004-04-27  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	PR debug/14829
	* dwarf2out.c (reg_number): Rename to dbx_reg_number.  Adjust all
	callers.
	(multiple_reg_loc_descriptor, reg_loc_descriptor): Use gcc register
	number for indexing hard_regno_nregs array.

2004-04-27  Geoffrey Keating  <geoffk@apple.com>

	* config/darwin.h (STARTFILE_SPEC): Use %s to find crt2.o.
	* config/darwin-crt2.c: Only have contents on __ppc__.

2004-04-27  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/xtensa.c (call_insn_operand): Check
	SYMBOL_REF_EXTERNAL_P in addition to SYMBOL_REF_LOCAL_P.
	* config/xtensa/xtensa.h (LEGITIMATE_PIC_OPERAND): Likewise.
	* config/xtensa/xtensa.md (call, call_value): Likewise.

2004-04-27  Wu Yongwei  <adah@sh163.net>

	* gthr-win32.h (__gthread_mutex_t): Change typedef to new structure.
	(__GTHREAD_MUTEX_INIT_DEFAULT): Adjust.
	(__gthread_mutex_init_function): Replace CreateMutex with
	initialization of custom mutex using CreateSemaphore.
	(__gthread_mutex_lock): Use InterlockedIncrement.
	(__gthread_mutex_trylock): Use InterlockedCompareExchange.
	(__gthread_mutex_unlock): Use InterlockedDecrement and
	ReleaseSemaphore to unlock
	* config/i386/gthr-win32.c (__gthread_mutex_init_function,
	__gthread_mutex_lock, __gthread_mutex_trylock,
	__gthread_mutex_unlock): Adjust to match inline versions in
	gthr-win32.h.

2004-04-27  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (arm_promote_prototypes): New function.
	(TARGET_PROMOTE_PROTOTYPES): Use it.

2004-04-27  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (arm_expand_epilogue): Count blocks of 4 regs.

2004-04-26  Bernard Giroud  <bgiroud@free.fr>

	* config/alpha.c (alpha_end_function): For OpenVMS gas,
	correctly output .pdesc directive before .end.

2004-04-26  James E Wilson  <wilson@specifixinc.com>

	Bug 14927
	* config/ia64/ia64.md (movxf): New local op0.  Handle case where
	operands[0] is a SUBREG.  Handle case where operands[1] is a GR reg.

2004-04-26  Zack Weinberg  <zack@codesourcery.com>

	* config/ia64/hpux.h: Predefine __STDCPP__ when compiling C++.
	* config/pa/pa-hpux10.h: Likewise.
	* config/pa/pa-hpux11.h: Likewise.

2004-04-26  Geoffrey Keating  <geoffk@apple.com>

	* doc/invoke.texi (Overall Options): Document default for -o
	for PCH files.

2004-04-26  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* builtins.c (expand_builtin_update_setjmp_buf): New function.
	(expand_builtin, case BUILT_IN_UPDATE_SETJMP_BUF): New case.
	* builtins.def (BUILT_IN_UPDATE_SETJMP_BUF): New code.

2004-04-26  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (arm_legitimate_index_p): Correct iwmmxt offsets.

2004-04-26  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (arm_legitimate_index_p): Correct maverick offsets.

2004-04-25  Roger Sayle  <roger@eyesopen.com>

	* fold-const.c (fold): Prefer fold_convert (negate_expr (...)) to
	fold (build1 (NEGATE_EXPR, ...)).  Optimize X / -1 as -X and
	X % -1 as 0.

2004-04-26  Hans-Peter Nilsson  <hp@bitrange.com>

	PR bootstrap/15141
	* except.c (connect_post_landing_pads): Delete insns after the
	barrier when generating a unwind_resume_libfunc call.

2004-04-25  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	PR/c++ 15119
	* tree.c (substitute_placeholder_in_expr, case 4): New case,
	for TARGET_EXPR.

2004-04-25  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* gcov-io.h (__gcov_fork, __gcov_execl, __gcov_execlp, __gcov_execle,
	__gcov_execv, __gcov_execvp, __gcov_execve): Do not declare when
	inhibit_libc is defined.

2004-04-25  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips-protos.h (mips_linked_macc_p): Declare.
	* config/mips/mips.h (TUNE_MACC_CHAINS): New macro.
	* config/mips/mips.c (TARGET_SCHED_REORDER): Define.
	(TARGET_SCHED_VARIABLE_ISSUE): Define.
	(mips_adjust_cost): Move later in file, next to other sched hooks.
	(mips_macc_chains_last_hilo): New variable.
	(mips_linked_madd_p, mips_macc_chains_record, mips_macc_chains_reorder)
	(mips_promote_ready, mips_sched_reorder, mips_variable_issue): New.
	* config/mips/mips.md (may_clobber_hilo): New attribute.

2004-04-24  Roger Sayle  <roger@eyesopen.com>
	    Bruce Korb  <bkorb@gnu.org>

	* fixinc/inclhack.def (aix_syswait_2): New fix.
	* fixinc/fixincl.x: Regenerate.
	* fixinc/tests/base/sys/wait.h: Update for new test.

2004-04-24  Alan Modra  <amodra@bigpond.net.au>

	PR target/14960
	* config/rs6000/rs6000.c (rs6000_stack_info): Rename total_raw_size
	to non_fixed_size, and leave out fixed_size from the sum.
	(generate_set_vrsave): Correct clobbers.
	(rs6000_emit_epilogue): Test TARGET_ALTIVEC with TARGET_ALTIVEC_SAVE.
	(rs6000_function_value): Test TARGET_ALTIVEC and TARGET_ALTIVEC_ABI.
	(rs6000_libcall_value): Likewise.
	* config/rs6000/rs6000.h (FUNCTION_VALUE_REGNO_P): Likewise.
	(FUNCTION_ARG_REGNO_P): Likewise.

2004-04-24  Ulrich Weigand  <uweigand@de.ibm.com>

	* expmed.c (expand_mult_highpart_adjust): Do not assume OP1
	is a CONST_INT.
	(expand_mult_highpart_optab): Call expand_mult_highpart_adjust
	with NARROW_OP1 instead of OP1.

2004-04-24  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/host-linux.c (TRY_EMPTY_VM_SPACE): Define for __s390__
	and __s390x__ hosts.

2004-03-23  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* Makefile.in (LIBGCOV): Add _gcov_fork, _gcov_execl, _gcov_execlp,
	_gcov_execle, _gcov_execv, _gcov_execvp, _gcov_execve.
	* builtin-types.def (BT_PID, BT_PTR_CONST_STRING, BT_FN_PID,
	BT_FN_INT_CONST_STRING_PTR_CONST_STRING,
	BT_FN_INT_CONST_STRING_PTR_CONST_STRING_PTR_CONST_STRING): New.
	* builtins.c (expand_builtin_fork_or_exec): New.
	(expand_builtin): Call it.
	* builtins.def (BUILT_IN_EXECL, BUILT_IN_EXECLP,BUILT_IN_EXECLE,
	BUILT_IN_EXECV, BUILT_IN_EXECVP, BUILT_IN_EXECVE, BUILT_IN_FORK): New.
	* c-common.c (PID_TYPE): New macro.
	(c_common_nodes_and_builtins): Initialize pid_type_node.
	* calls.c (special_function_p): Do not handle fork and exec.
	(expand_call): Do not handle ECF_FORK_OR_EXEC.
	* gcov-io.h (__gcov_fork, __gcov_execl, __gcov_execlp, __gcov_execle,
	__gcov_execv, __gcov_execvp, __gcov_execve): Declare.
	* libgcov.c (__gcov_fork, __gcov_execl, __gcov_execlp, __gcov_execle,
	__gcov_execv, __gcov_execvp, __gcov_execve): New.
	* tree.h (enum tree_index): Add TI_PID_TYPE.
	(pid_type_node): New macro.
	(ECF_FORK_OR_EXEC): Removed.

2004-04-23  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR optimization/13985
	* cfgloopmanip.c (fix_loop_placements): New prototype.
	Call fix_bb_placements on the preheader of loops that have
	been reparented.
	(remove_path): Adjust call to fix_loop_placements.

2004-04-23  Andrew Pinski  <pinskia@physics.uc.edu>

	* config/darwin7.h: New file.
	* config.gcc (*-*-darwin*): Add darwin7.h if the
	version is greater than 6.
	* config/darwin.h (TARGET_C99_FUNCTIONS): Define.
	(MATH_LIBRARY): Wrap in ifdefs.

2004-04-23  Daniel Jacobowitz  <drow@mvista.com>

	* config/arm/arm.c (arm_output_epilogue): Reverse the order of
	loading iWMMXt registers with a frame pointer.  Use post-increment
	without a frame pointer.
	(arm_expand_prologue): Reverse the order of saving iWMMXt registers.

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

	* doc/invoke.texi (Optimize Options): Refer to "unit-at-a-time
	mode" rather than "-funit-at-a-time" since -O2 enables it
	without requiring -f* options.	Refer to -fprofile-generate and
	-fprofile-use correctly.  Move -funit-at-a-time among options
	enabled by -O.	Add information about unit-at-a-time caveats.

2004-04-22  Per Bothner  <per@bothner.com>

	* line-map.h (struct line_maps): New field highest_line.
	(linemap_position_for_column): Make non-inline function.
	(LINEMAP_POSITION_FOR_COLUMN): New macro.
	* line-map.c (linemap_init): Clear highest_line field.
	(linemap_add): Set highest_line field.
	(linemap_line_start): Minor optimization - use highest_line field.
	Reduce maximum column hint to 10000.  Update highest_line field.
	(linemap_position_for_column): Moved from line-map.h.  Optimize a bit.
	* cpphash.h (struct cpp_reader): Remove line field - instead use
	line_table->highest_line.
	(saved_line): Remove unused field.
	(CPP_INCREMENT_FILE): Don't do linemap_lookup - just use newest map.
	Use  line_table's highest_line field instead of cpp_reader's line.
	* cpplib.c (start_directive): Likewise use highest_line field.
	(do_line, do_linemarker): Likewise just use newest map.
	(_cpp_do_file_change): Don't need to set cpp_reader's line field.
	* cpperror.c (cpp_error): Likewise use highest_line field.
	* cppfiles.c (open_file_failed: Likewise.
	(cpp_make_system_header): Likewise use newest map and highest_line.
	* cppinit.c (cpp_create_reader): Don't initialize removed field.
	* cpplex.c (_cpp_process_line_notes, _cpp_skip_block_comment,
	skip_line_comment, skip_whitespace, _cpp_get_fresh_line,
	_cpp_lex_direct): Likewise use highest_line.
	(_cpp_lex_direct): Use new LINEMAP_POSITION_FOR_COLUMN macro.
	* cppmacro.c (_cpp_builtin_macro_text): Likewise use highest_line,
	and use newest map.
	* cpppch.c (cpp_read_state): Don't save+restore cpp_reader's line.
	* cpptrad.c (_cpp_overlay_buffer): Don't save cpp_reader's line.
	(copy_comment, _cpp_scan_out_logical_line): Likewise use highest_line.

2004-04-23  Alan Modra  <amodra@bigpond.net.au>

	PR bootstrap/14992
	* gcc.c (init_gcc_specs): Test USE_LD_AS_NEEDED, not HAVE_LD_AS_NEEDED.
	* config/linux.h (USE_LD_AS_NEEDED): Define.
	* config/alpha/linux.h (USE_LD_AS_NEEDED): Define.
	* config/arm/linux-elf.h (USE_LD_AS_NEEDED): Define.
	* config/rs6000/linux.h (USE_LD_AS_NEEDED): Define.
	* config/rs6000/linux64.h (USE_LD_AS_NEEDED): Define.
	* config/sh/linux.h (USE_LD_AS_NEEDED): Define.
	* config/sparc/linux.h (USE_LD_AS_NEEDED): Define.
	* config/sparc/linux64.h (USE_LD_AS_NEEDED): Define.

2004-04-22  Per Bothner  <per@bothner.com>

	* cppinit.c (cpp_read_main_file): Return NULL rather than false.
	Fixes PR preprocessor/15067.

2004-04-23  Andreas Schwab  <schwab@suse.de>

	* config/ia64/ia64intrin.h: Add intermediate cast to void * to
	avoid aliasing warning.

2004-04-22  Jan Hubicka  <jh@suse.cz>
	    Mostafa Hagog <mustafa@il.ibm.com>

	* cfgloopmanip.c (scale_bbs_frequencies): Use RDIV macro
	* cfgloopanal.c (expected_loop_iterations): Change the return value

2004-04-22  Jakub Jelinek  <jakub@redhat.com>

	* cselib.h (struct elt_loc_list): Remove canon_loc field.
	* cselib.c (new_elt_loc_list): Remove canon_loc initialization.
	(cselib_invalidate_mem): Remove all canon_loc and canon_x
	traces.

2004-04-22  Josef Zlomek  <zlomekj@suse.cz>

	Revert
	2004-04-20  Josef Zlomek  <zlomekj@suse.cz>

		* var-tracking.c (variable_part_different_p): Variable parts
		differ when the most recent locations differ.

2004-04-22  Richard Sandiford  <rsandifo@redhat.com>

	* doc/invoke.texi: Remove the MIPS -membedded-pic option.
	* config/mips/mips-protos.h (embedded_pic_fnaddr_reg): Delete.
	(embedded_pic_offset): Delete.
	* config/mips/mips.h (MASK_EMBEDDED_PIC): Delete.  Shuffle other
	MASK_* constants.
	(TARGET_EMBEDDED_PIC): Delete.
	(TARGET_SWITCHES): Remove -m{no-,}embedded-pic.
	(ASM_SPEC): Remove -membedded-pic.
	(ASM_OUTPUT_ADDR_DIFF_ELT): Remove embedded-pic handling.
	(ASM_OUTPUT_CASE_LABEL): Likewise.
	* config/mips/vxworks.h (ASM_SPEC): Remove -membedded-pic.
	* config/mips/windiss.h (ASM_SPEC): Likewise.
	* config/mips/mips.c (struct machine_function): Remove
	embedded_pic_fnaddr_rtx.
	(TARGET_ENCODE_SECTION_INFO): Remove override.
	(embedded_pic_fnaddr_reg, embedded_pic_offset): Delete.
	(override_options): Remove -membedded-pic handling.
	(print_operand): Remove handling of '%S'.
	(mips_select_section: Remove -membedded-pic handling.
	(mips_encode_section_info): Delete.
	(mips_output_conditional_branch): Remove mention of -membedded-pic.
	* config/mips/mips.md (define_attr length, movsi, movdi, jump): Remove
	-membedded-pic handling.
	(casesi, casesi_internal, casesi_internal_di, get_fnaddr): Delete.

2004-04-22  Alan Modra  <amodra@bigpond.net.au>

	* var-tracking.c (frame_base_decl): Remove useless GTY.

2004-04-21  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/rs6000.c (rs6000_override_options): Error when
	user wants altivec and e500 instructions.

2004-04-21  H.J. Lu  <hongjiu.lu@intel.com>

	PR target/14813
	* config/ia64/crtend.asm: Move pointer to __do_global_ctors_aux
	in .init_array section to ...
	* config/ia64/crtbegin.asm: Here.

	* config/ia64/crtend.asm: Mark __do_global_ctors_aux global
	and hidden if HAVE_INITFINI_ARRAY is defined.

2004-04-21  James E Wilson  <wilson@specifixinc.com>

	* config/mips/mips-protos.h (fp_register_operand, lo_operand): Declare.
	* config/mips/mips.c (mips_multipass_dfa_lookahead): Declare.
	(TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD): New.
	(fp_register_operand, lo_operand): New.
	(mips_rtx_costs): Add TUNE_SB1 support.
	(mips_issue_rate): Add comment.  Add PROCESSOR_SB1 support.
	(mips_use_dfa_pipeline_interface): Add PROCESSOR_SB1 support.
	(mips_multipass_dfa_lookahead): New.
	* config/mips/mips.h (MASK_FP_EXCEPTIONS, TARGET_FP_EXCEPTIONS,
	TUNE_SB1): New.
	(TARGET_SWITCHES): Add -mfp-exceptions support.
	(TARGET_FP_EXCEPTIONS_DEFAULT): New.
	(BRANCH_COST): Fix whitespace.
	* config/mips/mips.md: Include sb1.md.
	* config/mips/sb1.md: New file.
	* doc/invoke.texi: Document -mfp-exceptions.

	* Makefile.in (fixinc.sh): Don't set or export WARN_CFLAGS.  Fix
	comment.
	* fixinc/Makefile.in (FL_LIST): Don't mention WARN_CFLAGS.
	(fixincl.o-warn): Delete.

2004-04-21  Andrew Pinski  <pinskia@physics.uc.edu>

	* config/rs6000/rs6000 (print_operand) ['z']:
	Change ifdef of TARGET_MACHO to if TARGET_MACHO.

2004-04-21 Daniel Jacobowitz  <drow@mvista.com>

	* config.gcc: Support --with-arch=iwmmxt for ARM.

2004-04-21  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* expmed.c (expand_mult_highpart_optab): Use narrower version of OP1
	in two more places; remove unneeded force_reg

2004-04-21  Andrew Pinski  <pinskia@physics.uc.edu>

	* config/rs6000/rs6000.c (symbol_ref_operand): Remove hack
	for TARGET_MACHO.
	(print_operand): For TARGET_MACHO check to see if we need a stub
	and output one if we need it.

	PR debug/15033
	* dwarf2out.c (rtl_for_decl_location): Check for NULL
	rtl.

2004-04-20  James E Wilson  <wilson@specifixinc.com>

	* config/ia64/ia64.md (call_value_nogp): Add constraints for op0.
	(vall_value_gp): Likewise.

2004-04-20  DJ Delorie  <dj@redhat.com>

	* dwarf2out.c (rtl_for_decl_location): Adjust rtl for byte
	variables stored in word registers, then in memory.

2004-04-20  Eric Christopher  <echristo@redhat.com>

	* cp/parser.c (cp_parser_declaration): Move translate
	up before tokens are lexed.

2004-04-20  Uros Bizjak  <uros@kss-loka.si>

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

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

2004-04-20  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (arm_legitimate_address_p): Use rtx_equal_p.

2004-04-20  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (arm_expand_prologue): Fix size calculation.

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

	Revert part of 2004-04-17 change that moved -frename-registers
	to -O1.  -frename-registers is buggy.

	* toplev.c (flag_rename_registers): Initialize to 0.
	* doc/invoke.texi (Optimize options): Move -frename-registers
	to "Not triggered by any -O level" section.  Adjust commentary
	accordingly.

2004-04-20  Anil Paranjpe <anilp1@kpitcummins.com>

	* toplev.c (compile_file): Move targetm.asm_out.file_end call to end.

2004-04-20  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.c (mips_legitimize_move): Generate special patterns
	for mflo and mfhi instructions.
	(mips_output_move): Remove mflo and mfhi handling.
	* config/mips/mips.md (UNSPEC_MFHILO): New unspec.
	(*mulsidi3_64bit): Update for new mfhi/mflo representation.
	Likewise various define_peephole2s.
	(*movdi_32bit, *movdi_64bit, *movsi_internal): Merge x<-J and x<-d
	alternatives.
	(*movdi_64bit, *movdi_64bit_mips16, *mov[shq]i_internal)
	(*mov[shq]i_mips16): Remove mflo and mfhi alternatives.
	(mfhilo_di, mfhilo_si): New patterns.

2004-04-20  Josef Zlomek  <zlomekj@suse.cz>

	* function.c (assign_parms): Force
	MEM_EXPR (DECL_INCOMING_RTL (parm)) == parm.

2004-04-20  Josef Zlomek  <zlomekj@suse.cz>

	* var-tracking.c (variable_part_different_p): Variable parts differ
	when the most recent locations differ.

2004-04-19  James E Wilson  <wilson@specifixinc.com>

	* rtl.h (reg_set_last): Delete declaration.
	* rtlanal.c (reg_set_last): Delete.

2004-04-19  Roger Sayle  <roger@eyesopen.com>

	* fold-const.c (fold_convert): Make function extern/public.
	* tree.h (fold_convert): Prototype here.
	* builtins.c (expand_builtin_strstr, expand_builtin_strchr,
	expand_builtin_strrchr, expand_builtin_strpbrk,
	expand_builtin_mempcpy, expand_builtin_bcopy,
	expand_builtin_bzero, expand_builtin_memcmp,
	expand_builtin_strcmp, expand_builtin_strncmp,
	stabilize_va_list, expand_builtin_sprintf,
	fold_trunc_transparent_mathfn, fold_builtin_logarithm,
	fold_builtin_exponent, fold_builtin_mempcpy,
	fold_builtin_strcpy, fold_builtin_strcmp, fold_builtin_strncmp,
	fold_builtin_signbit, fold_builtin_isdigit, fold_builtin): Prefer
	fold_convert to "convert" or "fold (build1 (NOP_EXPR, ...))".

2004-04-19  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/rs6000.md (UNSPEC_MV_CR_GT): New constant.
	(move_from_CR_gt_bit): New.
	(cceq_ior_compare): Name previously unnamed pattern.  Disable for
	E500.
	(cceq_rev_compare): Name previously unnamed pattern.  Allow for
	E500.

	* config/rs6000/spe.md (cmpsfeq_gpr): Rewrite as unspec.
	(tstsfeq_gpr): Same.
	(cmpsfgt_gpr): Same.
	(tstsfgt_gpr): Same.
	(cmpsflt_gpr): Same.
	(tstsflt_gpr): Same.
	(e500_cceq_ior_compare): New.
	(e500_flip_gt_bit): New.

	* config/rs6000/rs6000.c (ccr_bit): Remove E500 specific code.
	(print_operand): Add 'c' and 'D'.
	(rs6000_generate_compare): Rewrite to generate correct rtl.
	(rs6000_emit_sCOND): Handle E500.
	(output_cbranch): Adjust for changes in rs6000_generate_compare.
	(output_e500_flip_gt_bit): New.

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

2004-04-19  Eric Christopher  <echristo@redhat.com>

	* config/mips/mips.h (DWARF2_ADDR_SIZE): New.

2004-04-19  David Edelsohn  <edelsohn@gnu.org>

	* doc/install.texi (*-ibm-aix*): Add AIX 5.1 assembler and archiver
	fix information.

2004-04-19  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* doc/install.texi (Specific, mips-sgi-irix5): Fix IRIX 5.3 IDO
	download URL.

2004-04-19  Daniel Jacobowitz  <drow@mvista.com>

	* stor-layout.c (layout_decl): Check DECL_PACKED before calling
	ADJUST_FIELD_ALIGN.  Check maximum_field_alignment after.

2004-04-19  Andrew PInski  <pinskia@physics.uc.edu>

	* builtins.c (fold_builtin_cabs): Remove fndecl parameter.
	(fold_builtin): Update caller to match.

	PR bootstrap/15009
	* bb-reorder.c (fix_up_fall_thru_edges): Init cond_jump.

	PR bootstrap/14999
	* builtins.c (fold_builtin_cabs): Mark fndecl as unused.

2004-04-19  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* varasm.c (compare_constant, case VIEW_CONVERT_EXPR): Add case.

	* expmed.c (expand_mult_highpart_adjust): Make OP1 valid for MODE.
	(expand_mult_highpart_optab): Likewise.
	(expand_mult_highpart): Make OP1 valid for WIDER_MODE, not MODE.

2004-04-19  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.md (fixuns_truncsfsi2, fixuns_truncdfsi2,
	floatunssisf2, floatunssidf2): New patterns.

2004-04-18  Mark Mitchell  <mark@codesourcery.com>

	PR other/14918
	* doc/invoke.texi (-fprofile-generate): Document requirement to
	use -fprofile-generate when linking.

	* doc/extend.texi (Strong Using): Warn users against using this
	feature.

2004-04-18  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips-protos.h (m16_usym8_4, m16_usym5_4): Delete.
	* config/mips/mips.h (mips_entry, mips_string_length): Delete.
	(CONSTANT_POOL_BEFORE_FUNCTION, ASM_OUTPUT_POOL_EPILOGUE): Undefine.
	* config/mips/mips.c (struct mips16_constant): Renamed from struct
	constant.  Propogate change throughout file.
	(struct machine_function): Remove insns_len.
	(mips_string_length, mips16_strings, string_constants): Delete.
	(mips_classify_symbol): Return SYMBOL_CONSTANT_POOL for LABEL_REFs
	when generating mips16 code.  Remove special mips16 treatment of
	string constants.
	(mips_symbolic_constant_p): Allow mips16 constant pool accesses
	to have the form LABEL+CONSTANT.
	(mips_symbolic_address_p): Fix comment.
	(m16_usym8_4, m16_usym5_4): Delete.
	(mips_output_function_epilogue): Remove mips16 string handling.
	(mips_output_mi_thunk): Call mips16_lay_out_constants.
	(mips_select_section, mips_encode_section_info): Remove mips16
	string handling.
	(struct mips16_constant_pool): New.
	(add_constant): Take a mips16_constant_pool structure.  Keep pool
	sorted into order of ascending mode size.  Keep track of the highest
	possible start address, taking padding and the masking of the base PC
	value into account.
	(dump_constants_1): New function, split out from dump_constants.
	Handle vector constants.  Use gen_consttable_{int,float} rather than
	separate functions for each mode.
	(dump_constants): Simplify.  Use GET_MODE_ALIGNMENT.  Use gen_align
	rather than separate functions for each alignment.
	(mips_find_symbol): Delete.
	(mips16_insn_length): New function, split out from
	mips16_lay_out_constants.
	(mips16_rewrite_pool_refs): New function.
	(mips16_lay_out_constants): Rework. Remove string handling.
	Always create an inline constant pool.
	* config/mips/mips.md (UNSPEC_CONSTTABLE_INT, UNSPEC_CONSTTABLE_FLOAT)
	(UNSPEC_ALIGN): New constants.
	(UNSPEC_CONSTTABLE_[QHSD]I, UNSPEC_CONSTTABLE_[SD]F): Delete.
	(UNSPEC_ALIGN_[248]): Delete.
	(consttable_int, consttable_float, align): New patterns.
	(consttable_[qhsd]i, consttable_[sd]f, align_[248]): Delete.

2004-04-17  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/altivec.h (vec_any_numeric): Correct typo in
	__unn_args_eq.

2004-04-17  Alan Modra  <amodra@bigpond.net.au>

	PR target/14715
	* config/rs6000/rs6000.c (rs6000_stack_info): Make parm_size agree
	with STARTING_FRAME_OFFSET.

2004-04-17  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.h (PREDICATE_CODES): Add macc_msac_operand.
	* config/mips/mips.c (macc_msac_operand): New function.
	* config/mips/mips.md (*msac): Move after *macc.
	(*msac2): New.  Generalize macc-related peepholes so that they apply
	to msac too.

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

	* opts.c (decode_options): Do not enable flag_rename_registers
	and flag_web at -O3.
	* toplev.c (flag_rename_registers): Initialize
	flag_rename_registers and flag_web to
	AUTODETECT_FLAG_VAR_TRACKING.
	(default_debug_hooks): New global.
	(process_options): Initialize default_debug_hooks.  Warn if
	-fvar-tracking specified but not supported by the current
	debug format.  Do not run var tracking at -O0 or if not
	supported by the current debug format, even if
	-fvar-tracking was given.  If -fno-rename-registers
	is not specified, always run register renaming if var
	tracking is supported by the default debugging information
	format for the target, and we are at -O1 or higher; similarly
	for -fweb, but only at -O2 or higher.
	* doc/invoke.texi (Optimize Options): Document this.

2004-04-17  Richard Sandiford  <rsandifo@redhat.com>

	* configure.ac (gcc_cv_ld_as_needed): Use AC_CACHE_CHECK.
	* configure: Regenerate.

2004-04-17  Richard Sandiford  <rsandifo@redhat.com>

	* gcc.c (used_arg): Check whether an option has been removed.

2004-04-17  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* config.gcc (i[34567]86-*-solaris2*): Default to DWARF-2
	debugging on Solaris 7 and up.

2004-04-16  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* doc/install.texi (Specific, mips-sgi-irix5): Reflect working
	IRIX 5 port.
	Remove -save-temps workaround, handled automatically.
	Require GNU binutils 2.15 for debugging.
	Remove SGI make warnings since GNU make is now required.
	(Specific, mips-sgi-irix6): Some markup fixes.
	Describe MIPSpro C problems and workarounds.
	Mention working O32 ABI support.
	Recommend GNU as 2.15 for O32 with debugging.
	Remove description of fixed structure pass/return bug.

2004-04-16  DJ Delorie  <dj@redhat.com>

	* sdbout.c (sdbout_one_type): Use TYPE_VALUES for enums, not
	TYPE_FIELDS.
	(sdbout_finish): Don't free deferred_global_decls; it's GC'd.

2004-04-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* pa.md: Remove unnecessary declarations for asm_out_file.

	* pa64-regs.h (DBX_REGISTER_NUMBER): Simplify and correct mapping of
	SAR register.  Fix comment.
	(ADDITIONAL_REGISTER_NAMES): Correct register number of SAR register
	(%cr11).

	* pa64-hpux.h (LIB_SPEC): Fix library specification used with GNU ld.

2004-04-16  Nick Clifton  <nickc@redhat.com>

	* config/arm/arm.c (arm_override_options): Revert previous patch.
	* config/arm/t-xscale-elf: Disable iwmmxt multilibs until they can
	be safely built.

2004-04-16  Kazuhiro Inaoka <inaoka.kazuhiro@renesas.com>

	* config/m32r/m32r.h (BIG_ENDIAN_BIT): Deleted to fix endian
	bug.
	(TARGET_LITTLE_ENDIAN, TARGET_BIG_ENDIAN,
	TARGET_DEFAULT): Changed. Ditto.
	(LITTLE_ENDIAN_BIT, TARGET_CPU_DEFAULT,
	TARGET_ENDIAN_DEFAULT): Added. Ditto.
	* config/m32r/little.h (TARGET_LITTLE_ENDIAN): Deleted.
	(TARGET_ENDIAN_DEFAULT): Added.

2004-04-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtins.def (BUILT_IN_ISDIGIT, BUILT_IN_ISXDIGIT): Mark with
	ATTR_CONST_NOTHROW_LIST.

2004-04-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	PR/middle-end 14915
	* builtins.c (expand_builtin_signbit): Test BYTES_BIG_ENDIAN, not
	BITS_BIG_ENDIAN.

2004-04-15  Pat Haugen  <pthaugen@us.ibm.com>

	* ra-debug.c (ra_print_rtx): Add break's to case legs.

2004-04-14  James E Wilson  <wilson@specifixinc.com>

	* Makefile.in (fixinc.sh): Set WARN_CFLAGS to empty string.

2004-04-14  Nathanael Nerode  <neroden@gcc.gnu.org>

	* libada-mk.in: New file.
	* configure.ac: Create libada-mk from libada-mk.in.
	* configure: Regenerate.

2004-04-14  Uros Bizjak  <uros@kss-loka.si>

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

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

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

2004-04-14  Eric Christopher  <echristo@redhat.com>

	* config/mips/t-elf: Enable multilibs by default.

2004-04-14  Andreas Tobler  <a.tobler@schweiz.ch>

	* bb-reorder.c (fix_crossing_conditional_branches): Adjust the
	previous fix to check HAVE_return at runtime too.

2004-04-14  Nick Clifton  <nickc@redhat.com>

	* config/arm/arm.c (arm_override_options): If the user has not
	specified an ABI, then default to AAPCS for the iWMMXt processor.
	* config/arm/t-xscale-elf: Remove redundant multilib specifications.
	* config/arm/t-xscale-coff: Likewise.

2004-04-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtins.c (fold_builtin_isdigit): New.
	(fold_builtin): Handle BUILT_IN_ISDIGIT.
	* defaults.h: Add TARGET_DIGIT0 and sort.
	* doc/tm.texi: Add TARGET_BS and TARGET_DIGIT0.

2004-04-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtins.c (fold_builtin_cabs, fold_builtin): Use
	`mathfn_built_in' to determine the new builtin.
	* fold-const.c (fold): Likewise.

2004-04-14  Richard Sandiford  <rsandifo@redhat.com>

	* doc/invoke.texi: Rename MIPS's -mfix-vr4122-bugs to -mfix-vr4120.
	* config/mips/mips.h (MASK_FIX_VR4120): Renamed from MASK_FIX_VR4122.
	(TARGET_FIX_VR4120): Likewise TARGET_FIX_VR4122.
	(TARGET_SWITCHES): Replace -mfix-vr4122-bugs with -mfix-vr4120.
	(ASM_SPEC): Update accordingly.
	* config/mips/mips.c: Update after above renaming.
	* config/mips/mips.md, config/mips/t-vr, config/mips/vr.h: Likewise.
	* config/mips/vr4120-div.S: Renamed from vr4122-div.S.

2004-04-13  James E Wilson  <wilson@specifixinc.com>

	* c-opt.c (c_common_post_options): If this_input_filename is NULL,
	increment errorcount and return false instead of true.

2004-04-13  Uros Bizjak  <uros@kss-loka.si>:

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

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

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

2004-03-13  Richard Henderson  <rth@redhat.com>

	* bb-reorder.c (fix_crossing_unconditional_branches): Use Pmode
	for LABEL_REFs.

	* defaults.h (HOT_TEXT_SECTION_NAME): Add leading dot.
	(UNLIKELY_EXECUTED_TEXT_SECTION_NAME): Likewise.
	* doc/invoke.texi: Update to match.

	* varasm.c (unlikely_text_section): Use assemble_align instead of
	ASM_OUTPUT_ALIGN.  Use it in the correct place with an approximately
	correct alignment argument.

2004-04-13  Ulrich Weigand  <uweigand@de.ibm.com>

	* reload1.c (emit_reload_insns): Set reg_has_output_reload to one
	after setting reg_last_reload_reg for optional output reloads.

2004-04-12  Fariborz Jahanian <fjahanian@apple.com>

	* config/rs6000/altivec.h (vec_mergeh, vec_mergel):
	Definition of these two macros are corrected by adding
	matchine right paren.

2004-04-12  Jonathan Larmour  <jifl@eCosCentric.com>

	* fix-header.c: kill(), putenv() and tzset() are POSIX not ANSI.

2004-04-12  Roger Sayle  <roger@eyesopen.com>

	* config/i386/i386.c (output_387_reg_move): New function.
	* config/i386/i386-protos.h (output_387_reg_move): Prototype here.
	* config/i386/i386.md (*movsf_1, *movsf1_nointerunit,
	*movdf_nointeger, *movdf_integer, *movxf_nointeger, *movxf_integer,
	*extendsfdf2_1,  *extendsfxf2_1, *extenddfxf2_1, truncdfsf2_noop,
	truncxfsf2_noop, truncxfdf2_noop): Call output_387_reg_move.

2004-04-12  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* c-decl.c (finish_decl): Make a decl_stmt for a variable-sized
	TYPE_DECL.
	* c-semantics.c (genrtl_decl_stmt): Handle TYPE_DECL.
	* stmt.c (expand_decl): Remove redundant expansion of TYPE_DOMAIN.
	* stor-layout.c (variable_size): Don't check for MINUS_EXPR.
	Use skip_simple_arithmetic to find SAVE_EXPR.
	(force_type_save_exprs, force_type_save_exprs_1): New functions.
	* tree-inline.c (remap_type, case POINTER_TYPE, case REFERENCE_TYPE):
	Properly chain multiple pointers.
	(copy_tree_r): Copy a TYPE_DECL.
	* tree.c (variably_modified_type_p): Add some missing tests and
	make some other minor changes.
	* tree.h (force_type_save_exprs): New declaration.

2004-04-12  Roger Sayle  <roger@eyesopen.com>

	* simplify-rtx.c (simplify_binary_operation) <UDIV, DIV, UMOD, MOD>:
	Remove fall throughs.  Convert 0/x and 0%x into x&0 when x has
	side-effects.  Don't convert x/1.0 into x if we honor signaling NaNs.
	Convert x/-1.0 into -x if we don't honor signaling NaNs.  Convert
	x/-1 into -x.  Optimize x%1 into x&0 if x has side-effects.  Optimize
	x%-1 into 0 (or x&0 if x has side-effects).

2004-04-11  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/rs6000.md: Document why a pattern is not
	available.

	* config/rs6000/rs6000.c (rs6000_emit_cmove): Disable comparisons
	of floats on the E500.
	(branch_positive_comparison_operator): Do not allow NE even on the
	E500.

2004-04-11  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/rs6000.c (rs6000_assemble_integer): Change
	in_text_unlikely_section to in_unlikely_text_section.

2004-04-11  Roger Sayle  <roger@eyesopen.com>

	* fold-const.c (fold_binary_op_with_conditional_arg): Tweak
	calling convention to allow a NULL_TREE to be returned.  Factor
	sanity checks from callers, return NULL_TREE when appropriate.
	(fold): Handle COMPOUND_EXPR operands of binary expressions
	before COND_EXPR operands.  Use reorder_operands_p(a,b) to check
	whether a op (b,c) can be rewritten as (b, a op c).  Simplify
	calls to fold_binary_op_with_conditional_arg.

2004-04-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* config/mips/iris5.h (current_section_flags): Add
	in_unlikely_executed_text and default case.

2004-04-11  Andreas Tobler  <a.tobler@schweiz.ch>

	* bb-reorder.c (fix_crossing_conditional_branches): Fix bootstrap
	failure on solaris. Place ifdef HAVE_return around gen_ret call.
	* cfgrtl.c (force_nonfallthru_and_redirect): Remove ifdef
	HAVE_return and place it around the place where it is needed.

2004-04-11  Andrew Pinski  <pinskia@physics.uc.edu>

	* varasm.c (text_section): Use TEXT_SECTION_ASM_OP and
	ASM_OUTPUT_ALIGN instead of SECTION_FORMAT_STRING
	and NORMAL_TEXT_SECTION_NAME.
	(unlikely_text_section): Check targetm.have_named_sections
	instead of TARGET_ASM_NAMED_SECTION and use TEXT_SECTION_ASM_OP
	instead of SECTION_FORMAT_STRING.
	* config/mips/iris5.h (current_section_name): Add
	in_unlikely_executed_text case and move the abort into the switch.
	* config/rs6000/sysv4.h (HOT_TEXT_SECTION_NAME): Remove.
	(NORMAL_TEXT_SECTION_NAME): Remove.
	(UNLIKELY_EXECUTED_TEXT_SECTION_NAME): Remove.
	(SECTION_FORMAT_STRING): Remove.
	* defaults.h (SECTION_FORMAT_STRING): Remove.
	* tm.texi (NORMAL_TEXT_SECTION_NAME): Remove.
	(SECTION_FORMAT_STRING): Remove.

2004-04-10  Joseph S. Myers  <jsm@polyomino.org.uk>

	* c-typeck.c (common_type): Prefer long long to long when same
	precision.

2004-04-09  Zack Weinberg  <zack@codesourcery.com>

	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.

2004-04-09  Roger Sayle  <roger@eyesopen.com>

	* simplify-rtx.c (mode_signbit_p): New function to check whether
	an RTX is an immediate constant that represents the most significant
	bit of a given machine mode.
	(simplify_unary_operation) <NOT>: Optimize ~(X+C) as X ^ ~C, where
	C is the sign bit.
	(simplify_binary_operation) <PLUS>: Optimize (X^C1) + C2 as X^(C1^C2)
	when C2 is the sign bit.
	(simplify_binary_operation) <XOR>: Canonicalize X^C as X+C when C
	is the sign bit.  Optimize (X+C1) ^ C2 as X^(C1^C2) when C1 is the
	sign bit.

2004-04-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtins.c (mathfn_built_in): Check TYPE_MAIN_VARIANT, not
	TYPE_MODE.

2004-04-09  Andrew Pinski  <pinskia@physics.uc.edu>

	* c-common.c (handle_noreturn_attribute): Use TYPE_READONLY instead
	of TREE_READONLY for types.

2004-04-09  Caroline Tice  <ctice@apple.com>

	* basic-block.h (struct edge_def): Add new field, crossing_edge.
	(struct basic_block_def): Add new field, partition.
	(UNPARTITIONED, HOT_PARTITION, COLD_PARTITION): New constant macro
	definitions.
	(partition_hot_cold_basic_blocks): Add extern function
	declaration.
	* bb-reorder.c (function.h, obstack.h, expr.h, regs.h): Add four new
	include	statements.
	(N_ROUNDS): Increase the maximum number of rounds by 1.
	(branch_threshold): Add array value for new round.
	(exec_threshold): Add array value for new round.
	(push_to_next_round_p): New function.
	(add_unlikely_executed_notes): New function.
	(find_rarely_executed_basic_blocks_and_crossing_edges): New function.
	(mark_bb_for_unlikely_executed_section): New function.
	(add_labels_and_missing_jumps): New function.
	(add_reg_crossing_jump_notes): New function.
	(fix_up_fall_thru_edges): New function.
	(find_jump_block): New function.
	(fix_crossing_conditional_branches): New function.
	(fix_crossing_unconditional_branches): New function.
	(fix_edges_for_rarely_executed_code): New function.
	(partition_hot_cold_basic_blocks): New function.
	(find_traces): Add an extra round for partitioning hot/cold
	basic blocks.
	(find_traces_1_round): Add a parameter.  Modify to push all cold blocks,
	and only cold blocks, into the last (extra) round of collecting traces.
	(better_edge_p): Add a parameter.  Modify to favor non-crossing edges
	over crossing edges.
	(bb_to_key): Add code to correctly identify cold blocks when
	doing partitioning.
	(connect_traces): Modify to connect all the non-cold traces first, then
	go back and connect up all the cold traces.
	(reorder_basic_blocks): Add call to add_unlikely_executed_notes.
	* cfg.c (entry_exit_blocks): Add initialization for partition field in
	entry and exit blocks.
	* cfgbuild.c (make_edges): Update current_function_has_computed_jump
	if we are doing hot/cold partitioning.
	* cfgcleanup.c (cfglayout.h): Add new include statement.
	(try_simplify_condjump): Modify to not attempt on blocks with jumps
	that cross section boundaries.
	(try_forward_edges): Likewise.
	(merge_blocks_move_predecessor_nojumps): Likewise.
	(merge_blocks_move_successor_nojumps): Likewise.
	(merge_blocks_move): Likewise.
	(try_crossjump_to_edge): Modify to not attempt after we have done
	the block partitioning.
	(try_crossjump_bb): Modify to not attempt on blocks with jumps that
	cross section boundaries.
	(try_optimize_cfg): Likewise.
	* cfghooks.c (tidy_fallthru_edges): Modify to not remove indirect
	jumps that cross section boundaries.
	* cfglayout.c (flags.h): Add new include statement.
	(update_unlikely_executed_notes): New function.
	(fixup_reorder_chain): Add code so when a new jumping basic block is
	added, it's UNLIKELY_EXECUTED_CODE and REG_CROSSING_JUMP notes are
	updated appropriately.
	(duplicate_insn_chain): Add code to duplicate the new NOTE insn
	introduced by this optimization.
	* cfglayout.h (scan_ahead_for_unlikely_executed_note): Add new
	extern function declaration.
	* cfgrtl.c (can_delete_note_p): Add NOTE_INSN_UNLIKELY_EXECUTED_CODE to
	list of notes that can be deleted.
	(create_basic_block_structure): Add initialization for partition field.
	(rtl_can_merge_blocks): Modify to test blocks for jumps that cross
	section boundaries.
	(try_redirect_by_replacing_jump): Modify to not attempt on jumps that
	cross section boundaries.
	(commit_one_edge_insertion): Add code so newly created basic block
	ends up in correct (hot or cold) section.  Modify to disallow
	insertions before NOTE_INSN_UNLIKELY_EXECUTED_CODE notes.
	(rtl_verify_flow_info_1): Add code to verify that no fall_thru edge
	crosses section boundaries.
	(cfg_layout_can_merge_blocks_p): Modify to test blocks for jumps that
	cross section boundaries.
	(force_nonfallthru_and_redirect): Modify to make sure new basic block
	ends up in correct section, with correct notes attached.
	* common.opt (freorder-blocks-and-partition): Add new flag for this
	optimization.
	* dbxout.c (dbx_function_end): Add code to make sure scope labels at
	the end of functions are written into the correct (hot or cold)
	section.
	(dbx_source_file): Add code so writing debug file information
	doesn't incorrectly change sections.
	* defaults.h (NORMAL_TEXT_SECTION_NAME): New constant macro, for use
	in partitioning hot/cold basic blocks into separate sections.
	(SECTION_FORMAT_STRING): New constant macro, for linux/i386 hot/cold
	section partitioning.
	(HAS_LONG_COND_BRANCH): New constant macro, indicating whether or not
	conditional branches can span all of memory.
	(HAS_LONG_UNCOND_BRANCH): New constant macro, indicationg whether or not
	unconditional branches can span all of memory.
	* final.c (scan_ahead_for_unlikely_executed_note): New function.
	(final_scan_insn): Add code to check for NOTE instruction indicating
	whether basic block belongs in hot or cold section, and to make sure
	the current basic block is being written to the appropriate section.
	Also added code to ensure that jump table basic blocks end up in the
	correct section.
	* flags.h (flag_reorder_blocks_and_partition): New flag.
	* ifcvt.c (find_if_case_1): Modify to not attempt if conversion if
	one of the branches has a jump that crosses between sections.
	(find_if_case_2): Likewise.
	(ifcvt): Modify to not attempt to mark loop exit edges after
	hot/cold partitioning has occurred.
	* opts.c (decode_options): Code to handle new flag,
	flag_reorder_blocks_and_partition; also to turn it off if
	flag_exceptions is on.
	(common_handle_option): Code to handle new flag,
	flag_reorder_blocks_and_partition.
	* output.h (unlikely_text_section): New extern function declaration.
	(in_unlikely_text_section): New extern function declaration.
	* passes.c (rest_of_handle_stack_regs): Add
	flag_reorder_blocks_and_partition as an 'or' condition for calling
	reorder_basic_blocks.
	(rest_of_handle_reorder_blocks): Add flag_reorder_blocks_and_partition
	as an 'or' condition for calling reorder_basic_blocks.
	(rest_of_compilation): Add call to partition_hot_cold_basic_blocks.
	* print-rtl.c (print_rtx): Add code for handling new note,
	NOTE_INSN_UNLIKELY_EXECUTED_CODE
	* rtl.c  (NOTE_INSN_UNLIKELY_EXECUTED_CODE): New note insn (see below).
	(REG_CROSSING_JUMP): New kind of reg_note, to mark jumps that
	cross between section boundaries.
	* rtl.h (NOTE_INSN_UNLIKELY_EXECUTED_CODE): New note instruction,
	indicating the basic block containing it belongs in the cold section.
	(REG_CROSSING_JUMP): New type of reg_note, to mark jumps that cross
	between hot and cold sections.
	* toplev.c (flag_reorder_blocks_and_partition): Add code to
	initialize this flag, and to tie it to the command-line option
	freorder-blocks-and-partition.
	* varasm.c (cfglayout.h): Add new include statement.
	(unlikely_section_label_printed): New global variable, used for
	determining when to output section name labels for cold sections.
	(in_section): Add in_unlikely_executed_text to enum data structure.
	(text_section): Modify code to use SECTION_FORMAT_STRING and
	NORMAL_TEXT_SECTION_NAME macros.
	(unlikely_text_section): New function.
	(in_unlikely_text_section): New function.
	(function_section): Add code to make sure beginning of function is
	written into correct section (hot or cold).
	(assemble_start_function): Add code to make sure stuff is written to
	the correct section.
	(assemble_zeros): Add in_unlikely_text_section as an 'or' condition
	to an if statement that was checking 'in_text_section'.
	(assemble_variable): Add 'in_unlikely_text_section' as an 'or'
	condition to an if statement that was checking 'in_text_section'.
	(default_section_type_flags_1): Add check: if in cold section
	flags = SECTION_CODE.
	* config/darwin.c (darwin_asm_named_section): Modify to use
	SECTION_FORMAT_STRING if we are partitioning hot/cold blocks.
	* config/i386/i386.h (HAS_LONG_COND_BRANCH): Defined this macro
	specifically for the i386.
	(HAS_LONG_UNCOND_BRANCH): Defined this macro specifically for the i386.
	* config/rs6000/darwin.h (UNLIKELY_EXECUTED_TEXT_SECTION_NAME): Change
	text string to something more informative.
	(NORMAL_TEXT_SECTION_NAME): Add new definition.
	(SECTION_FORMAT_STRING): Add new definition.
	* config/rs6000/rs6000.c (rs6000_assemble_integer): Add
	'!in_unlikely_text_section' as an 'and' condition to an if statement
	that was already checking '!in_text_section'.
	* config/rs6000/sysv4.h (HOT_TEXT_SECTION_NAME,NORMAL_TEXT_SECTION_NAME,
	UNLIKELY_EXECUTED_TEXT_SECTION_NAME,SECTION_FORMAT_STRING): Make
	sure these are properly defined for linux on ppc.
	* doc/invoke.texi  (freorder-blocks-and-partition): Add documentation
	for this new flag.
	* doc/rtl.texi (REG_CROSSING_JUMP): Add documentation for new
	reg_note.
	* doc/tm.texi (NORMAL_TEXT_SECTION_NAME, SECTION_FORMAT_STRING,
	HAS_LONG_COND_BRANCH, HAS_LONG_UNCOND_BRANCH): Add documentation for
	these new macros.

2004-04-08  Roger Sayle  <roger@eyesopen.com>

	* function.c (gen_mem_addressof): When changing the RTX from a REG
	to a MEM, clear MEM_VOLATILE_P which was formerly REG_USERVAR_P.

2004-04-08  Roger Sayle  <roger@eyesopen.com>

	PR target/14888
	* config/i386/i386.md (truncdfsf2_noop, truncxfsf2_noop,
	truncxfdf2_noop): Provide dummy "fmov" implementations.

2004-04-08  Ian Lance Taylor  <ian@wasabisystems.com>

	* gcc.c (default_compilers): Add missing initializers.

	* config/rs6000/host-darwin.c (darwin_rs6000_gt_pch_use_address):
	Return 1 if file was successfully mapped.

2004-04-08  Geoffrey Keating  <geoffk@apple.com>

	PR pch/13419
	PR pch/14137
	Radar #: 3315288
	* doc/invoke.texi (Precompiled Headers): Suggest -o
	to put an output file in a particular place.  Be more detailed
	about which options affect PCH validity and which options
	might not work.
	* c-pch.c (pch_matching): New.
	(MATCH_SIZE): New.
	(struct c_pch_validity): New field 'match'.
	(pch_init): Handle pch_matching.
	(c_common_valid_pch): Check pch_matching.

	* explow.c: Fix typo defining default of PROMOTE_FUNCTION_MODE.

2004-04-08  Mark Mitchell  <mark@codesourcery.com>

	* doc/invoke.texi (Precompiled Headers): Warn about known
	problems.

2004-04-08  Danny Smith  <dannysmith@users.sourceforge.net>

	PR c++/14808
	* defaults.h (TARGET_USE_LOCAL_THUNK_ALIAS_P): New macro. Default
	to 1 if ASM_OUTPUT_DEF is defined.
	* doc/tm.texi (TARGET_USE_LOCAL_THUNK_ALIAS_P): Document.
	* config/i386/cygming.h (TARGET_USE_LOCAL_THUNK_ALIAS_P): Define.
	Set to non-zero iff not a one_only decl.

2004-04-08  Paul Brook  <paul@codesourcery.com>

	* arm.h (CLASS_LIKELY_SPILLED_P): Define.

2004-04-08  Paul Brook  <paul@codesourcery.com>

	* explow.c (promote_mode): Use PROMOTE_FUNCTION_MODE instead of
	PROMOTE_FOR_CALL_ONLY.
	* config/arm/arm-protos.h (arm_function_value): Declare.
	* config/arm/arm.h (TARGET_PROMOTE_FUNCTION_ARGS): Define.
	(TARGET_PROMOTE_PROTOTYPES): Return false.
	(arm_function_value): New function.
	* config/arm/arm.h (PROMOTE_FUNCTION_MODE): Define.
	(FUNCTION_VALUE): Call arm_function_value.
	* config/cris/cris.h (PROMOTE_MODE): Rename ...
	(PROMOTE_FUNCTION_MODE): ... to this.
	(PROMOTE_FOR_CALL_ONLY): Remove.
	* config/mmix/mmix.h: Likewise.
	* config/s390/s390.h: Likewise.
	* config/sparc/sparc.h: Likewise.
	* config/sparc/sparc.c: Update comments about PROMOTE_MODE.
	* doc/tm.texi (PROMOTE_FUNCTION_MODE): Document.
	(TARGET_PROMOTE_FUNCTION_MODE, TARGET_PROMOTE_FUNCTION_RETURN): Update.
	(PROMOTE_FOR_CALL_ONLY): Remove.

2004-04-08  Joel Sherrill <joel@oarcorp.com>

	PR ada/14538
	* ada/5rosinte.adb: Remove fake mprotect() body.
	* ada/5rosinte.ads: Add SA_SIGINFO.
	* ada/5rtpopsp.adb: Rewrite to use new interface.
	* ada/init.c: Reorder so the simple single OS conditional __rtems__
	is tested before more complex ones which mix UNIX and embedded
	systems in the conditional.

2004-04-08  Joel Sherrill  <joel@oarcorp.com>

	PR ada/14665
	* ada/osint.adb (Find_Program_Name): Rework to properly handle
	filenames which end in .exe or have versioning suffixes like VMS.

2004-04-08  Andrew Pinski  <pinskia@physics.uc.edu>

	PR target/10129
	* config/darwin.c (darwin_encode_section_info): When the decl has
	a DECL_INITIAL, it is only defined also when it is not a common.

2004-04-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtins.c (fold_builtin_isascii, fold_builtin_toascii): New.
	(fold_builtin): Handle BUILT_IN_ISASCII and BUILT_IN_TOASCII.

2004-04-07  H.J. Lu  <hongjiu.lu@intel.com>

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

2004-04-07  Joseph S. Myers  <jsm@polyomino.org.uk>

	* fixinc/inclhack.def (rpc_xdr_lvalue_cast_a,
	rpc_xdr_lvalue_cast_b): New fixes.
	* fixinc/fixincl.x: Regenerate.
	* fixinc/tests/base/rpc/xdr.h: Add new tests.

2004-04-07  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.c (processor_target_table): Add MASK_MFCRF
	to power4 and power5 entries.

2004-04-06  Geoffrey Keating  <geoffk@apple.com>

	* c-common.h (pending_lang_change): Mark for PCH.

2004-04-07  Caroline Tice  <ctice@apple.com>

	* gcc.c (main): Move 'break' in main loops (on an error)
	to wait until error processing has occurred.

2004-04-06  Nathanael Nerode  <neroden@gcc.gnu.org>

	* config.gcc: Stop changing enable_threads midstream.
	Replace uses of enable_threads_flag with enable_threads.
	* configure.ac: Replace uses of enable_threads_flag with
	enable_threads.  Improve autoconf quotation in one place.
	* configure: Regenerate.

2004-04-06  Uros Bizjak  <uros@kss-loka.si>

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

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

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

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

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

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

	(UNSPEC_SINCOS_SIN, UNSPEC_SINCOS_COS): New unspecs to represent
	x87's fsincos insn.

2004-04-06  Devang Patel  <dpatel@apple.com>

	PR 14467
	* config/darwin.h (LINK_COMMAND_SPEC): Use c++filt instead of c++filt3.

2004-04-06  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* doc/install.texi: Update HP-UX 11 installation procedure.

2004-04-06  Paul Brook  <paul@codesourcery.com>

	* doc/sourcebuild.texi: Remove obsolete contraint on testcases.

2004-04-05  Kaz Kojima  <kkojima@gcc.gnu.org>

	* config/sh/sh.c (prepare_move_operands): Use emit_call_insn
	when the TLS address is generated by a function call.
	* config/sh/sh.md (tls_global_dynamic): Use a call expression.
	(tls_local_dynamic): Likewise.

2004-04-05  Andrew Pinski  <pinskia@physics.uc.edu>

	* tree.c (reconstruct_complex_type): Use TYPE_READONLY
	and TYPE_VOLATILE.

2004-04-05  Caroline Tice  <ctice@apple.com>

	* gcc.c (combine_flag): New global variable, for new driver option.
	(struct compiler): Add two new fields, to be used when
	combining multiple input files in a single pass (IMA).
	(default_compilers): Add values for the new fields to all
	compiler entries. Modify the "@c" compiler entry for doing IMA
	properly with "-save-temps" and the "combine" flag.
	(option_map): Add new driver option, "--combine", to tell driver
	to pass multiple input files to compiler at one time.
	(have_o_argbuf_index): New global variable.
	(store_arg): Modify to assign value to have_o_argbuf_index.
	(struct infile): Add three new fields, to help with IMA.
	(display_help): Add help for new "combine" option.
	(process_command): Remove local variable have_o; add code to check
	for new "combine" option; remove assignment to combine_inputs.
	(do_spec_1): Modify to deal with IMA better.
	(main): Make variable 'lang_n_infiles' local to entire function
	rather than to a single block.  Use flag combine_flag to
	determine whether to do IMA or not; Modify loop initializing
	infiles to deal properly with linker files.
	Add code for doing preprocessing in presence of
	IMA with "-save-temps" flag.  Modify "main" loop to handle
	multiple input files, in multiple languages, with or without
	preprocessing,  gracefully.
	* toplev.c (set_src_pwd): Modify to not complain if attempting to
	re-set it to same directory it's previously been set to (avoid
	irritating, meaningless warning messages when doing IMA with
	save-temps).
	* doc/invoke.texi: Add "-combine" to list of Overall Options;
	remove documentation about IMA that is no longer accurate; Add
	documentation explaining what "-combine" does.
	* ada/lang-specs.h: Add initialization values for new fields in
	"struct compiler".
	* cp/lang-specs.h: Likewise.
	* f/lang-specs.h: Likewise.
	* java/lang-specs.h: Likewise.
	* objc/lang-specs.h: Likewise.
	* treelang/lang-specs.h: Likewise.

2004-04-05  David Edelsohn

	* config/rs6000/rs6000.c (VTABLE_NAME_P): Add _ZTI to special
	symbol handling.

2004-04-05  Jakub Jelinek  <jakub@redhat.com>
	    John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	PR optimization/13424 (hppa), bootstrap/14462, c/14828
	* pa.md: Use replace_equiv_address to retain the attributes of the
	memory operands used in the split and peephole2 patterns for optimizing
	the pre-reload movstrsi, movstrdi, clrstrsi and clrstrdi patterns.

2004-04-05  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* c-decl.c (build_compound_literal): Use TYPE_READONLY.
	* emit-rtl.c (set_mem_attributes_minus_bitpos): Likewise.
	* objc/objc-act.c (adorn_decl, gen_declspecs): Likewise.
	* c-typeck.c (decl_constant_value): Don't access DECL_INITIAL of a
	PARM_DECL.
	* calls.c (flags_from_decl_or_type): Use TYPE_READONLY and do so only
	for a type.
	* print-tree.c (print_node): Properly handle side-effects, readonly,
	and constant flags.
	* tree.c (build1_stat, build_expr_wfl): Only look at TREE_SIDE_EFFECTS
	and TREE_CONSTANT if not a type.
	* tree.h (IS_NON_TYPE_CODE_CLASS): New macro.
	(IS_EXPR_CODE_CLASS): Write 'E', not 'e'.
	(NON_TYPE_CHECK): New macro.
	(TREE_SIDE_EFFECT, TREE_READONLY, TREE_CONSTANT: Add check.

2004-04-05  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* config/sparc/sol2-bi.h (PREFERRED_DEBUGGING_TYPE): Set
	to DWARF2_DEBUG unconditionally.
	(ASM_DEBUG_SPEC): Set the default to --gdwarf2 unconditionally.

2004-04-04  Ian Lance Taylor  <ian@wasabisystems.com>
	    Nathanael Nerode  <neroden@gcc.gnu.org>

	PR target/14548
	* config.host: Set the shell variable host_can_use_collect2.
	Set it to yes by default, and to no for alpha*-dec-*vms*,
	i[34567]86-*-mingw32*, and powerpc-*-beos*.
	* configure.ac: Set and substitute the shell variable collect2.
	Give an error if use_collect2 is yes and host_can_use_collect2 is
	no.
	* Makefile.in (COLLECT2): Rename from USE_COLLECT2.  Change all
	uses.  Initialize to @collect2@.
	(STAGESTUFF): Remove $(USE_COLLECT2).
	* config/alpha/x-vms (USE_COLLECT2): Don't set.
	* config/i386/t-mingw32 (USE_COLLECT2): Likewise.
	* config/rs6000/t-beos (USE_COLLECT2): Likewise.
	* config/pa/t-pa64: Remove commented out USE_COLLECT2.
	* configure: Regenerate.

2004-04-04  Roger Sayle  <roger@eyesopen.com>

	* simplify-rtx.c (simplify_binary_operation): Constant fold
	DIV, MOD, UDIV and UMOD using div_and_round_double.

2004-04-04  Mark Mitchell  <mark@codesourcery.com>

	PR c++/14804
	* varasm.c (initializer_constant_valid_p): Allow NOP_EXPRs to
	RECORD_TYPEs.

2004-04-04  Mark Mitchell  <mark@codesourcery.com>

	* doc/invoke.texi (-mabi=o64): Create link to O64 ABI
	documentation.

2004-04-04  Roger Sayle  <roger@eyesopen.com>

	* cse.c (cse_insn): Correct usage of simplify_replace_rtx when
	updating the REG_EQUAL note on an insn's libcall_insn.

2004-04-04  Roger Sayle  <roger@eyesopen.com>

	* df.h: Tidy up whitespace in the definitions of the DF_ flags.

2004-04-03  Roger Sayle  <roger@eyesopen.com>

	* fold-const.c (fold) <PLUS_EXPR>: Guard (-A)+B -> B-A transformation
	with reorder_operands_p.

2004-04-03  Jan Hubicka  <jh@suse.cz>

	* md.texi (vec_set, vec_extract, vec_init): Document.

2004-04-02  Gabor Loki <loki@inf.u-szeged.hu>

	* opts.c (decode_options): Do function inlining with very small
	max-inline-insns-* parameters when optimizing for size.

2004-04-02  Vladimir Makarov  <vmakarov@redhat.com>

	* config/i386/i386.h (TARGET_NOCONA): New macro.
	(TARGET_CPU_CPP_BUILTINS): Add code for Nocona.
	(processor_type): Add PROCESSOR_NOCONA.

	* config/i386/i386.md (cpu): Add nocona to the attribute values.

	* config/i386/i386.c (nocona_cost): New variable.
	(m_NOCONA): New macro.
	(x86_push_memory, x86_movx, x86_cmove, x86_deep_branch,
	x86_branch_hints, x86_use_sahf, x86_single_stringop,
	x86_sub_esp_4, x86_sub_esp_8, x86_add_esp_4, x86_add_esp_8,
	x86_integer_DFmode_moves, x86_partial_reg_dependency,
	x86_memory_mismatch_stall, x86_accumulate_outgoing_args,
	x86_decompose_lea, x86_arch_always_fancy_math_387,
	x86_sse_partial_reg_dependency, x86_sse_load0_by_pxor,
	x86_ext_80387_constants, x86_four_jump_limit):
	(override_options): Add nocona_cost to processor_target_table.
	Set up PROCESSOR_NOCONA for Nocona entry in processor_alias_table.
	(incdec_operand): Prevent inc/dec generation for Nocona too.
	(ix86_issue_rate): Add PROCESSOR_NOCONA.

2004-04-01  Andrew Pinski  <pinskia@physics.uc.edu>

	* rtlanal.c (find_reg_note): Manually
	unswitch the loop.

2004-04-01  Mark Mitchell  <mark@codesourcery.com>

	* genemit.c (gen_split): Change prototype of generated code.
	* genrecog.c (write_action): Adjust prototype for and calls to
	gen_split_*.
	* gensupport.c (struct queue_elem): Add split field.
	(queue_pattern): Return a value.  Clear the split field.
	(process_rtx): Maintain an association between an insn and the
	split generated from it for a define_insn_and_split.
	(process_one_cond_exec): Generate a new split for a
	define_insn_and_split.
	* config/arm/arm-protos.h (arm_split_constant): Add insn
	parameter.
	(emit_constant_insn): New function.
	(arm_gen_constant): Use it.
	* config/arm/arm.md: Adjust calls to arm_split_constant.

2004-04-02  Jan Hubicka  <jh@suse.cz>

	* cgraph.c: Add overall comment.
	(cgraph_inline_hash): New global variable.
	(cgraph_create_node): Break out from ...
	(cgraph_node): ... here.
	(cgraph_edge): New function.
	(cgraph_create_edge): New CALL_EXPR argument; some sanity checking.
	(cgraph_remove_edge): Accept edge, intead of source and destination.
	(cgraph_redirect_edge_callee): New.
	(cgraph_remove_node): Update all new datastructures.
	(cgraph_record_call, cgraph_remove_call): Kill.
	(dump_cgraph_node): Break out from ... ; dump new datastructures.
	(dump_cgraph): ... here.
	(cgraph_function_possibly_inlined_p): Use new hashtable.
	(cgraph_clone_edge, cgraph_clone_node): New.
	* cgraph.h: Include hashtab.h
	(struct cgraph_global_info): Kill cloned_times, inline_once, will_be_output
	fields, add inlined_to pointer.
	(cgraph_node): Add pointer to next_clone.
	(cgraph_remove_edge, cgraph_create_edge): Update prototype.
	(cgraph_remove_call, cgraph_record_call): Kill.
	(cgraph_inline_hash): Declare.
	(dump_cgraph_node, cgraph_edge, cg4raph_clone_edge, cgraph_clone_node,
	cgraph_redirect_edge_callee): Declare.
	(cgraph_create_edges, cgraph_inline_p): Update prorotype.
	(cgraph_preserve_function_body_p, verify_cgraph, verify_cgraph_node,
	cgraph_mark_inline_edge, cgraph_clone_inlined_nodes): Declare.
	* cgraphunit.c: Add overall comment.
	(cgraph_optimize_function): Kill.
	(cgraph_assemble_pending_functions): Do not assemble inline clones.
	(cgraph_finalize_function): Update call of cgraph_remove_node
	(record_call_1): Record call sites.
	(cgraph_create_edges): Accept node instead of decl argument.
	(error_found): New static variable.
	(verify_cgraph_node_1, verify_cgraph_node, verify_cgraph): New functions.
	(cgraph_analyze_function): Update for new datastructures.
	(cgraph_finalize_compilation_unit): Plug memory leak.
	(cgraph_optimize_function): Kill.
	(cgraph_expand_function): Do not use cgraph_optimize_function.
	(INLINED_TIMES, SET_INLINED_TIMES, cgraph_inlined_into,
	cgraph_inlined_callees): Kill.
	(cgraph_remove_unreachable_nodes): Verify cgraph; update handling of
	clones.
	(estimate_growth): Simplify.
	(cgraph_clone_inlined_nodes): New function.
	(cgraph_mark_inline_edge): Re-implement.
	(cgraph_mark_inline): Likewise.
	(cgraph_check_inline_limits): Simplify.
	(cgraph_recursive_inlining_p): New.
	(update_callee_keys): Break out from ...
	(cgraph_decide_inlining_of_small_functions): ... here; simplify.
	(cgraph_decide_inlining, cgraph_decide_inlining_incrementally):
	Likewise.
	(cgraph_expand_all_functions): Remove inline clones from the ordered
	list.
	(cgraph_preserve_function_body_p): New predicate.
	(cgraph_optimize): Verify cgraph.
	* function.h (struct function): Add fields saved_tree/saved_args.
	* timevar.def (TV_CGRAPH_VERIFY): Use verifier.
	* toplev.c (rest_of_compilation): Do not free cfun.
	* tree-inline.c: Include function.h
	(struct inline_data): Add saving_p field; replace decl/current_decl by
	node/current_node.
	(insert_decl_map): New function.
	(copy_body_r): Handle saving; update cgraph datastructure.
	(copy_body): Handle recursive inlining.
	(initialize_inlined_parameters): Likewise.
	(expand_call_inline): Propagate node attributes; update cgraph.
	(optimize_inline_calls): Verify that datastructure still match.
	(save_body): New function.
	* tree-inline.h (save_body): New.
	* tree-optimize.c (tree_rest_of_compilation): preserve function body; do inlining.
	* langhooks-def.c (LANG_HOOKS_UPDATE_DECL_AFTER_SAVING): New.
	* langhooks.c (lang_hooks): Add update_decl_after_saving.

2004-04-01  Serge Belyshev  <1319@bot.ru>

	PR target/14702
	* config/i386/i386.md: fix source operand constraints in
	mmx_pshufw, sse2_pshufd, sse2_pshuflw, sse2_pshufhw

2004-04-01  Waldek Hebisch  <hebisch@math.uni.wroc.pl>

	* fold-const.c (folda): Preserve types of comparisons.

2004-04-01  Richard Henderson  <rth@redhat.com>

	* toplev.c (backend_init): Move init_optimization_passes call ...
	(lang_dependent_init): ... here.

2004-04-01  Alan Modra  <amodra@bigpond.net.au>
	    Jakub Jelinek  <jakub@redhat.com>

	* gcc.c (init_gcc_specs): If HAVE_LD_AS_NEEDED, link with
	-lgcc --as-needed -lgcc_s --no-as-needed by default.
	* configure.ac (HAVE_LD_AS_NEEDED): Check for ld --as-needed.
	* configure: Rebuilt.
	* config.in: Rebuilt.
	* Makefile.in (stage1-start): Copy also libgcc_s*$(SHLIB_EXT).
	(stage2-start, stage3-start, stage4-start): Likewise.
	(stageprofile-start, stagefeedback-start): Likewise.

2004-04-01  Jakub Jelinek  <jakub@redhat.com>

	* config/sparc/sparc.h (DITF_CONVERSION_LIBFUNCS): Define to 0.
	* config/sparc/linux.h (DITF_CONVERSION_LIBFUNCS): Redefine to 1.
	* config/sparc/linux64.h (DITF_CONVERSION_LIBFUNCS): Redefine to 1.
	* config/sparc/sol2.h (DITF_CONVERSION_LIBFUNCS): Redefine to 1.
	(SOLARIS_CONVERSION_LIBFUNCS): Rename to SUN_CONVERSION_LIBFUNCS.
	* config/sparc/sparc.c (sparc_init_libfuncs): Initialize optabs
	with _Q_qtoll, _Q_qtoull and _Q_lltoq if DITF_CONVERSION_LIBFUNCS.
	* config.gcc (sparc-*-linux*): Revert 2004-03-23 change.
	* config/sparc/t-linux64 (TARGET_LIBGCC2_CFLAGS): Likewise.
	* config/sparc/t-linux: Removed.

2004-04-01  Jakub Jelinek  <jakub@redhat.com>

	PR c++/14755
	* fold-const.c (fold) <EQ_EXPR>: Properly compute newconst in
	"bitfld++ == const" to "++bitfld == const + incr" transformations.

2004-04-01  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* expr.c (get_inner_reference): Use DECL_UNSIGNED, not TREE_UNSIGNED.
	* stor-layout.c (layout_decl): Likewise.
	* tree.c (get_narrower): Likewise and also use BIT_FIELD_REF_UNSIGNED.
	* fold-const.c (make_bit_field_ref): Use BIT_FIELD_REF_UNSIGNED.
	* print-tree.c (print_node): Handle various used of unsigned_flag.
	* tree.def (BIT_FIELD_REF): Update comment.
	* tree.h (TREE_UNSIGNED): Deleted.
	(DECL_UNSIGNED, BIT_FIELD_REF_UNSIGNED): New macros.

2004-03-31  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

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

2004-03-31  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* function.c (put_var_into_stack): Properly set orig_reg for indirect.

2004-03-31  Andrew Pinski  <pinskia@physics.uc.edu>

	* config/rs6000/t-darwin (LIB2FUNCS_STATIC_EXTRA):
	Add darwin-fpsave.asm, darwin-vecsave.asm,
	and darwin-world.asm.
	(TARGET_LIBGCC2_CFLAGS): Add -Wa,-force_cpusubtype_ALL
	as the asm files contain altivec instructions.
	* config/rs6000/darwin-fpsave.asm: New file.
	* config/rs6000/darwin-vecsave.asm: New file.
	* config/rs6000/darwin-world.asm: New file.

2004-03-31  Zack Weinberg  <zack@codesourcery.com>

	* gengtype-yacc.y (option, stringseq): Add missing
	terminating semicolon.

2004-03-30  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.md (tls_gd_32, tls_gd_64,
	tls_ld_32, tls_ld_64, tls_dtprel_32, tls_dtprel_64,
	tls_dtprel_ha_32, tls_dtprel_ha_64,
	tls_dtprel_lo_32, tls_dtprel_lo_64,
	tls_got_dtprel_64, tls_tprel_32, tls_tprel_64,
	tls_tprel_ha_32, tls_tprel_ha_64,
	tls_tprel_lo_32, tls_tprel_lo_64,
	tls_got_tprel_32, tls_got_tprel_64,
	tls_tls_32, tls_tls_64): Replace register_operand with
	gpc_reg_operand.

2004-03-30  Mostafa Hagog  <mustafa@il.ibm.com>

	* config/rs6000/rs6000.md (*ctrsi_internal1, *ctrsi_internal2,
	*ctrdi_internal1, *ctrdi_internal2, *ctrsi_internal3,
	*ctrsi_internal4, *ctrdi_internal3, *ctrdi_internal4,
	*ctrsi_internal5, *ctrsi_internal6, *ctrdi_internal5,
	*ctrdi_internal6): Replace register_operand with
	nonimmediate_operand.

2004-03-29  Fariborz Jahanian <fjahanian@apple.com>

	* fold-const.c (fold): Reassociate multiply expression
	with an adjacent non-multiply expression to use
	architecture's multiply-add instruction.

2004-03-30  Zack Weinberg  <zack@codesourcery.com>

	* gengtype.c (create_option): New function.
	* gengtype.h: Prototype it.
	* gengtype-yacc.y (stringseq): New rule.
	(option): Use create_option.  Add new bare ID production.  Use
	stringseq, not STRING directly.

	* alias.c, bitmap.c, c-decl.c, cgraph.h, cpplib.h, cselib.h
	* dwarf2out.c, emit-rtl.c, function.h, lists.c, tree.h
	* varray.h, config/alpha/alpha.c:
	Use new shorter form of GTY markers.

	* doc/gty.texi: Rewrite.

2004-03-30  Andrew Pinski  <pinskia@physics.uc.edu>

	* config/darwin.c (machopic_function_base_name):
	Remove current_name and getting the name of the
	current function.

2004-03-30  Nick Clifton  <nickc@redhat.com>

	* config/arm/arm.md (thumb_jump): Reduce the backward branch
	range, and increase the forward branch range, to allow for
	the fact that the PC will be off by 4.

2004-03-30  Alan Modra  <amodra@bigpond.net.au>

	* .cvsignore: Add GPATH, GRTAGS, GSYMS and GTAGS (GNU GLOBAL)

2004-03-30  Hartmut Penner  <hpenner@de.ibm.com>

	* config/rs6000/rs6000.c (output_vec_const_move):
	Find all cases of EASY_VECTOR_15_ADD_SELF.
	(easy_vector_constant_add_self): Accept
	all vector constant loadable by vsplt* and vadd*.
	(easy_vector_same): Use easy_vector_splat_const.
	(easy_vector_const): Use easy_vector_splat_const.
	(easy_vector_splat_const): New function.
	(gen_easy_vector_constant_add_self): New function.

	* config/rs6000/rs6000-protos.c (gen_easy_vector_constant_add_self):
	New prototype.

	* config/rs6000/altivec.md (movv4si splitter): Change to
	emit move insn with halfed vector constant.
	(*movv8hi splitter): Likewise.
	(*movv16qi splitter): Likewise.

2004-03-30  Hartmut Penner  <hpenner@de.ibm.com>

	PR 11591
	* config/rs6000/rs6000.c (rs6000_legitimate_address):
	Allow any offset to argument pointer in no-strict case.

2004-03-30  Jan Hubicka  <jh@suse.cz>

	* toplev.c (backend_init): Add missing call to inint_optimization_passes.
	* passes.c (init_optimization_passes, finish_optimization_passes): Output cgraph
	dump file in non-unit-at-a-time mode.

2004-03-29  Hans-Peter Nilsson  <hp@axis.com>

	* config/cris/cris.h: Correct #ifdef to test for
	HAVE_AS_NO_MUL_BUG_ABORT_OPTION, not
	HAVE_AS_MUL_BUG_ABORT_OPTION.

2004-03-29  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* function.c (put_var_into_stack): If old RTL was ADDRESSOF, update
	the address inside the old RTL.

2004-03-28  Zack Weinberg  <zack@codesourcery.com>

	* c-decl.c: Verify that C_SIZEOF_STRUCT_LANG_IDENTIFIER is correct.
	(struct c_binding, struct c_scope): Add chain_next
	attributes to GTY markers.
	(struct lang_identifier, struct lang_tree_node): Define
	here...
	* c-tree.h: ... not here.  No longer need to declare struct
	c_binding either.  Do define C_SIZEOF_STRUCT_LANG_IDENTIFIER.
	* c-lang.c, objc/objc-lang.c: Set LANG_HOOKS_IDENTIFIER_SIZE
	to C_SIZEOF_STRUCT_LANG_IDENTIFIER.

	PR 14734, 11944
	* c-decl.c (get_parm_info): If error_mark_node is encountered
	in the bindings chain, unbind and discard it; don't abort.

2004-03-28  Olga Golovonevsky <olga@il.ibm.com>
	    Dorit Naishlos <dorit@il.ibm.com>

	* config/rs6000/altivec.md: (andvv16qi3, andv8hi3, one_cmplv16qi2,
	one_cmplv8hi2, one_cmplv4si2, iorv16qi3, iorv8hi3,): New modelling.

2004-03-28  Stephane Carrez  <stcarrez@nerim.fr>

	* config/m68hc11/m68hc11-protos.h (m68hc11_page0_symbol_p): Declare.

	* config/m68hc11/m68hc11.c (m68hc11_handle_page0_attribute): New.
	(m68hc11_attribute_table): New attribute "page0" to mark a global
	variable as being allocated from within page0 section.
	(m68hc11_encode_label): New function.
	(m68hc11_strip_name_encoding): New function.
	(m68hc11_page0_symbol_p): New function.
	(m68hc11_indirect_p): Accept global variables marked in page0.
	(m68hc11_encode_section_info): Lookup "page0" attribute.

	* config/m68hc11/m68hc11.h (EXTRA_CONSTRAINT): 'R' constraint also
	represents access to page0 variables.

	* config/m68hc11/m68hc11.md ("*logicalsi3_zexthi"): Use gen_rtx_REG.
	("*logicalsi3_silshl16_zext"): Likewise.
	("*ashldi3_const32"): Likewise.
	(peephole2 ashift): Likewise.

2004-03-28  Joseph S. Myers  <jsm@polyomino.org.uk>

	* c-tree.h (C_DECL_REGISTER): New.
	* c-aux-info.c (gen_decl), c-decl.c (objc_mark_locals_volatile,
	finish_decl, grokdeclarator, get_parm_info), c-typeck.c
	(build_array_ref, c_mark_addressable): Set and use it.
	* c-decl.c (grokdeclarator), c-typeck.c (c_mark_addressable):
	Allow structures with volatile fields to be declared register.
	Don't check TREE_ADDRESSABLE before warning about taking address
	of register.
	* c-decl.c (finish_decl): Don't allow structures with volatile
	fields to be placed in named register.
	* doc/trouble.texi: Remove reference to structures with volatile
	fields in registers.

2004-03-27  Ulrich Weigand  <uweigand@de.ibm.com>

	* function.c (thread_prologue_and_epilogue): Move
	NOTE_INSN_FUNCTION_END and NOTE_INSN_FUNCTION_BEG notes
	before the epilogue.

2004-03-27  Ulrich Weigand  <uweigand@de.ibm.com>

	* expr.c (store_constructor): Use gen_int_mode to correctly
	sign-extend CONST_INT value.

2004-03-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtin-types.def (BT_WINT, BT_FN_INT_WINT, BT_FN_WINT_WINT): New.
	* builtins.def (DEF_C94_BUILTIN): New.  Add wctype builtins.
	* doc/extend.texi: Likewise.

2004-03-26  Diego Novillo  <dnovillo@redhat.com>

	* c-typeck.c (comptypes): Replace calls to TYPE_DOMAIN
	  with TYPE_ORIG_SIZE_TYPE.

2004-03-25  Aldy Hernandez  <aldyh@redhat.com>

	PR 14219
	* c-typeck.c (build_binary_op): Do not allow comparisons of
	vectors.

2004-03-26  James A. Morrison  <ja2morri@uwaterloo.ca>

	* config.gcc: Remove sparc-tti-*.
	* config/sparc/pbd.h: Delete.

	* config/sparc/sol2.h: Remove note about Sun OS 4.x.
	* config/sparc/aout.h: Likewise.

	* config/sparc/sparc.h: Remove if 0'd code.
	* config/sparc/sparc.md (call): Remove if 0'd code.
	(call_value): Likewise.
	(nonlocal_goto): Likewise.
	(unimp_insn): Delete.

2004-03-25  Roger Sayle  <roger@eyesopen.com>

	* fold-const.c (tree_expr_nonnegative_p): Handle BIT_XOR_EXPR like
	BIT_IOR_EXPR; A^B is nonnegative when A and B are nonnegative.

2004-03-25  Richard Henderson  <rth@redhat.com>

	PR 11527
	* c-typeck.c (pop_init_level): Emit pending init elements earlier
	rather than later.

2004-03-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtins.c (fold_builtin): Fix error in last change.

2004-03-25  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.h: Formatting fix.

2004-03-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtins.def: Add ctype builtins.
	* doc/extend.texi: Likewise.

2004-03-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtins.c (fold_builtin): Add new builtin optimizations for
	sqrt and/or cbrt.
	* fold-const.c (fold): Likewise.

2004-03-25  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.c (rs6000_always_hint): New variable.
	(rs6000_sched_groups): New variable.
	(processor_target_table): Add power5.
	(rs6000_override_options): Set rs6000_sched_insert_nops,
	rs6000_sched_costly_dep and rs6000_sched_restricted_insns_priority
	from rs6000_sched_groups.
	(output_cbranch): Use rs6000_always_hint.
	(rs6000_variable_issue): Use rs6000_sched_groups.
	(rs6000_adjust_cost): Add CPU_POWER5.
	(is_microcoded_insn): Use rs6000_sched_groups.
	(is_dispatch_slot_restricted): Use rs6000_sched_groups.
	Return 2 for POWER5 cracked instructions.
	(is_cracked_insn): Use rs6000_sched_groups.
	(is_branch_slot_insn): Use rs6000_sched_groups.
	(rs6000_issue_rate): Add CPU_POWER5.
	(rs6000_sched_finish): Use rs6000_sched_groups.
	(rs6000_rtx_costs): Add PROCESSOR_POWER5.
	* config/rs6000/rs6000.h (processor_type): Add PROCESSOR_POWER5.
	(DEFAULT_SCHED_COSTLY_DEP): Delete.
	(DEFAULT_RESTRICTED_INSNS_PRIORITY): Delete.
	(DEFAULT_SCHED_FINISH_NOP_INSERTION_SCHEME): Delete.
	* config/rs6000/rs6000.md (define_attr "cpu"): Add power5.
	* config/rs6000/power5.md: New file.
	* doc/invoke.texi: Add power5 option.

2004-03-25  Kazu Hirata  <kazu@cs.umass.edu>

	* cfgrtl.c, dbxout.c, tree.def, config/darwin.h,
	config/arm/arm.c, objc/objc-act.c: Fix comment typos.
	* doc/invoke.texi: Fix a typo.

2004-03-25  Kazu Hirata  <kazu@cs.umass.edu>

	PR optimization/9707.
	* stmt.c (emit_case_nodes): Emit equality comparisons instead
	of recursing if both children are single-valued cases with no
	children.

2004-03-25  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (vfp_print_multi): Remove.
	(arm_output_fldmx): New function.
	(vfp_emit_fstmx): Return block size, not insn. Add ARM10 VFPr1 bugfix.
	(arm_expand_prologue): Update to match.
	(arm_get_vfp_saved_size): New Function.
	(arm_get_frame_offsets): Use it.
	(arm_output_epilogue): Use new functions.

2004-03-24  Richard Henderson  <rth@redhat.com>

	* alias.c (alias_invariant, alias_invariant_size): Mark GTY.
	(reg_known_value, reg_known_value_size): Likewise; make static.
	(reg_known_equiv_p): Make static.
	(clear_reg_alias_info): Update for new indexing.
	(get_reg_known_value, set_reg_known_value): New.
	(get_reg_known_equiv_p, set_reg_known_equiv_p): New.
	(canon_rtx): Use them.
	(init_alias_analysis): Likewise.  Allocate reg_known_value with gc.
	Don't play queer offsetting games with reg_known_value and
	reg_known_equiv_p.
	(end_alias_analysis): Free reg_known_value with gc.
	* rtl.h (get_reg_known_value, get_reg_known_equiv_p): Declare.
	* sched-deps.c (reg_known_equiv_p, reg_known_value): Remove.
	(deps_may_trap_p, sched_analyze_1, sched_analyze_2): Use the new
	functions instead.

2004-03-24  Kazu Hirata  <kazu@cs.umass.edu>

	* dwarf2asm.c, loop.h, pretty-print.c, pretty-print.h,
	config/i386/mmintrin.h: Update copyright.

2004-03-24  Nathanael Nerode  <neroden@gcc.gnu.org>

	* configure.ac: Add --enable-werror-always (for top level bootstrap
	support).
	* configure: Regenerate.

2004-03-24  Ziemowit Laski  <zlaski@apple.com>

	* objc/objc-act.c (objc_comptypes): Treat comparisons
	between 'Class' and '<class> *' as explicitly invalid.

2004-03-24  David Edelsohn  <edelsohn@gnu.org>

	* doc/invoke.texi (-frename-registers): Add enabled at -O3.
	(-fprofile-values): Add enabled with profile-{generate,use}.
	(-fvpt): Same.
	(-ftracer): Add enabled with profile-use.
	(-funit-at-a-time): Add enabled at -O2,-O3.
	(-funroll-loops): Add enabled with profile-use.
	(-funswitch-loops): Add enabled with profile-use.  Remove duplicates.
	(max-gcse-passes): Mention default.
	(max-cse-path-length): Mention default.

2004-03-24  Nathanael Nerode  <neroden@gcc.gnu.org>

	* Makefile.in (STRICT2_WARN): Reorder.
	* configure.ac: Check for -Wold-style-definition, and use it
	in strict1_warn if it's available.
	* configure: Regnerate.

2004-03-24  Paul Brook  <paul@nowt.org>

	* config.gcc <arm>: Add --with-abi=
	* config/arm/arm-protos.h (arm_get_frame_size, thumb_get_frame_size,
	thumb_far_jump_used): Remove prototypes.
	(arm_needs_doubleword_align): Add prototype.
	(thumb_compute_initial_elimination_offset): Ditto.
	* config/arm/arm.c (arm_get_frame_offsets): New function.
	(use_return_insn, output_return_instruction, arm_output_epilogue,
	arm_output_function_epilogue, arm_compute_initial_elimination_offset,
	arm_expand_prologue, thumb_expand_epilogue): Use it.
	(arm_abi, target_abi_name, all_arm_abis): New variables.
	(arm_override_options): Set them.  Set structure padding for AAPCS.
	(arm_return_in_memory): Update ABI check.
	(arm_init_cumulative_args): Initialize can_split.
	(arm_needs_doubleword_align): New function.
	(arm_function_arg): Don't split args after pushing to stack. Handle
	doubleword/even reg alignment.
	(arm_va_arg): Handle all doubleword aligned args.
	(add_minpoolforward ref, dump_minpool, push_minpool_fix): Align based
	on ABI, not CPU.
	(arm_compute_save_reg0_reg12_mask): Fix comment.
	(thumb_get_frame_size, thumb_get_frame_size): Remove.
	(thumb_jump_far_used_p): Remove superfluous argument.  Return save
	value for alignment.
	(thumb_unexpanded_epilogue, thumb_output_function_prologue): Change
	to match.
	(thumb_compute_initial_elimination_offset): New function.
	(thumb_expand_prologue): Use arm_get_frame_offsets.  Remove
	unneccessary rounding.
	* config/arm/arm.h (target_abi_name): Declare.
	(ARM_DOUBLEWORD_ALIGN, DOUBLEWORD_ALIGNMENT, TARGET_IWMMXT_ABI,
	arm_abi_type, ARM_DEFAULT_ABI): Define.
	(ARM_FLAG_ATPCS): Remove.
	(TARGET_OPTIONS, OPTION_DEFAULT_SPECS): Add -mabi=.
	(BIGGEST_ALIGNMENT, PREFERRED_STACK_BOUNDARY, STACK_BOUNDARY): Use it.
	(ADJUST_FIELD_ALIGN, DATA_ALIGNMENT, LOCAL_ALIGNMENT,
	TYPE_NEEDS_IWMMXT_ALIGNMENT): Remove.
	(LIBCALL_VALUE, FUNCTION_VALUE_REGNO_P, FUNCTION_ARG_REGNO_P):
	Contitionalize on ABI, not CPU.
	(struct arm_stack_offsets): Define.
	(struct machine_function): Add stack_offsets.  Remove frame_size.
	(FUNCTION_ARG_PARTIAL_NREGS): Don't split if previous args have been
	pushed.
	(FUNCTION_ARG_ADVANCE, FUNCTION_ARG_BOUNDARY): Handle general
	doubleword alignment.
	(THUMB_INITIAL_ELIMINATION_OFFSET,
	ARM_INITIAL_ELIMINATION_OFFSET): Remove.
	(INITIAL_ELIMINATION_OFFSET): Call functions directly.
	* config/arm/arm.md (align_8): Enable for all targets.
	* config/arm/netbsd-elf.h (TARGET_DEFAULT): Remove TARGET_ATPCS.
	(ARM_DEFAULT_ABI): Define.
	* doc/invoke.texi <ARM>: Document -mabi=. Update documentation for
	-mstructure-size-boundary.

2004-03-24  Nathanael Nerode  <neroden@gcc.gnu.org>

	* configure.ac: Check for -Wno-variadic-macros; don't use
	-pedantic (in stage 1 or a simple 'make all') unless it's available,
	and if it's available, use it.  Also, clean up check for
	-Wno-long-long.
	* configure: Regenerate.

2004-03-24  Richard Sandiford  <rsandifo@redhat.com>

	* config.gcc (mips64vr-*-elf*, mips64vrel-*-elf*): Remove tm_defines.
	* config/mips/vr.h (DEFAULT_VR_ARCH): New macro, defined to vr4130.
	(MULTILIB_DEFAULTS): Use it.
	(MIPS_CPU_STRING_DEFAULT): Remove.
	(MIPS_ABI_DEFAULT, MIPS_MARCH_CONTROLS_SOFT_FLOAT): Define.
	(DRIVER_SELF_SPECS): Make -mfix-vr4122-bugs imply -march=vr4120.  Make
	EABI64 -mlong32 the default ABI.  Enforce the default architecture.
	* config/mips/t-vr (MULTILIB_OPTIONS): Add mfix-vr4122-bugs,
	march=vr4130, march=vr4300, march=vr5000 and march=vr5500.
	(MULTILIB_MATCHES): Use -mfix-vr4122-bugs multilibs for -march=vr4120.
	(MULTILIB_EXCEPTIONS): Change choice of multilibs.  Update comments
	accordingly.

2004-03-24  DJ Delorie  <dj@redhat.com>
	    Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.h (MASK_FIX_VR4122, TARGET_FIX_VR4122): New macros.
	(TARGET_SWITCHES): Add -mfix-vr4122-bugs and -mno-fix-vr4122-bugs.
	(ASM_SPEC): Pass down -mfix-vr4122-bugs.
	* config/mips/mips.c (mips_avoid_hazards): Don't emit whole functions
	in .set noreorder and .set nomacro if TARGET_FIX_VR4122.
	(mips_init_libfuncs): Use special functions for divsi3 and modsi3
	if TARGET_FIX_VR4122.
	* config/mips/mips.md (define_attr length): Account for nops inserted
	after macc and dmult when using -mfix-vr4122-bugs.
	(umuldi3_highpart, divmodsi4, divmoddi4): Disable if TARGET_FIX_VR4122.
	* config/mips/t-vr (LIB2FUNCS_STATIC_EXTRA): Define instead of
	LIB2FUNCS_EXTRA.  Add config/mips/vr4122-div.S.
	* config/mips/vr4122-div.S: New file.
	* doc/invoke.texi: Document -mfix-vr4122-bugs.

2004-03-24  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.h (PROCESSOR_R4130): New processor_type.
	(TARGET_MIPS4130): New macro.
	(ISA_HAS_MACC): Return true if TARGET_MIPS4130 && !TARGET_MIPS16.
	* config/mips/mips.c (mips_cpu_info_table): Add a vr4130 entry.
	(override_options): Extend MIPS_MARCH_CONTROLS_SOFT_FLOAT to deal
	with PROCESSOR_R4130.
	* config/mips/mips.md (define_attr cpu): Add r4130.
	* doc/invoke.texi: Document vr4130 as a supported MIPS architecture.

2004-03-24  Maciej W. Rozycki  <macro@ds2.pg.gda.pl>
	    Richard Sandiford  <rsandifo@redhat.com>

	* doc/invoke.texi: Apply missed hunk from 2004-03-03 change.

2004-03-24  Alexandre Oliva  <aoliva@redhat.com>

	PR preprocessor/14438
	* cpplib.c (do_pragma): Remove line_change call after pragma
	handler.

2004-03-23  Ian Lance Taylor  <ian@wasabisystems.com>

	* doc/extend.texi (ARM Built-in Functions): Replace with correct
	declarations.

2004-03-23  Roger Sayle  <roger@eyesopen.com>

	* reg-stack.c (get_true_reg): Handle FLOAT_TRUNCATE like FLOAT_EXTEND
	if flag_unsafe_math_optimizations.
	* config/i386/i386.md (truncdfsf2): If flag_unsafe_math_optimizations
	and TARGET_80387 expand using truncdfsf2_noop pattern.
	(truncxfsf2): Likewise using truncxfsf2_noop.
	(truncxfdf2): Likewise using truncxfdf2_noop.
	(truncdfsf2_noop, truncxfsf2_noop, truncxfdf2_noop): New patterns.

2004-03-23  Ziemowit Laski  <zlaski@apple.com>

	* hooks.c (hook_constcharptr_tree_null): New hook.
	* hooks.h (hook_constcharptr_tree_null): New prototype.
	* target-def.h (TARGET_MANGLE_FUNDAMENTAL_TYPE): New target hook.
	* target.h (mangle_fundamental_type): New target hook.
	* config/rs6000/rs6000.c (TARGET_MANGLE_FUNDAMENTAL_TYPE): Point
	target hook at rs6000_mangle_fundamental_type.
	(rs6000_mangle_fundamental_type): New function.
	* doc/tm.texi (TARGET_MANGLE_FUNDAMENTAL_TYPE): Document.

2004-03-23  Zack Weinberg  <zack@codesourcery.com>

	PR 12267, 12391, 12560, 13129, 14114, 14133
	* c-tree.h: Forward declare struct c_binding.  Declare
	c_override_bindings_to_false.  Update prototypes.
	(struct lang_identifier): Update comments.  Change fields to be
	struct c_binding *.
	(IDENTIFIER_SYMBOL_VALUE, IDENTIFIER_TAG_VALUE)
	(IDENTIFIER_LABEL_VALUE, C_DECL_INVISIBLE)
	(KEEP_NO, KEEP_YES, KEEP_MAYBE): Delete.
	(C_DECL_IN_EXTERNAL_SCOPE, C_DECL_DECLARED_BUILTIN): New.
	* c-common.h: Update prototypes.
	* c-decl.c (struct c_scope): Update commentary.  Remove names,
	names_last, parms, parms_last, tags, and shadowed fields.  Add
	bindings and depth fields.
	(scope_freelist): Move to more appropriate location.
	(c_print_identifier): Update for changes to struct lang_identifier.
	(objc_mark_locals_volatile): Update for new bindings structures.
	(global_bindings_p): Honor c_override_global_bindings_to_false.
	(pushlevel): Rename to push_scope; take no arguments; use the
	scope_freelist; initialize scope->depth and check for overflow.
	(poplevel): Rename to pop_scope; totally rewritten for new bindings
	structures.
	(diagnose_mismatched_decls): Use C_DECL_DECLARED_BUILTIN, not
	C_DECL_INVISIBLE, for certain decisions.  Adjust some diagnostics.
	Improve some commentary.  Adjust handling of forward parm decls.
	(merge_decls): Set C_DECL_DECLARED_BUILTIN when appropriate.
	Preserve C_DECL_IN_EXTERNAL_SCOPE.
	(warn_if_shadowing): Correct indentation.  Improve diagnostics.
	(pushdecl): Remove unnecessary assertion.  Short-circuit anonymous
	decls.  Rewrite for new bindings structures.  Improve commentary.
	Eliminate the copy_node call.
	(implicit_decl_warning): Use the "diag" idiom (as seen in
	locate_old_decl) to reduce code duplication; call locate_old_decl
	if appropriate.  Relocate to remove need for forward declaration.
	(implicitly_declare): Adjust for new bindings structures.  Kludge
	around Objective-C not-really-builtin functions.
	(undeclared_variable): Improve diagnostics.  If current_function_decl
	is nonnull but current_function_scope is null, use current_scope.
	Use bind.
	(lookup_tag): Adjust for new bindings structures.  Kludge around
	Objective-C's tag declarations that wind up in the external scope.
	(lookup_name): Adjust for new bindings structures.  Kludge around
	c-common.c's pseudo-typedefs that wind up in the external scope.
	(lookup_name_current_level): Rename lookup_name_in_scope; take a
	second argument indicating the scope to examine; rewrite for
	new bindings structures.
	(c_init_decl_processing): Adjust for renamed functions.  Do not
	initialize current_file_decl, first_builtin_decl, last_builtin_decl.
	First scope pushed is the external scope, not the global scope.
	(builtin_function): Use bind, not pushdecl.  Adjust other bits
	for new data structures.  Keep track of builtins that should be
	made visible automatically.
	(start_decl): Adjust diagnostics.  Remove unnecessary call to
	expand_decl.
	(grokparms): Return 0 if arg_types is error_mark_node.
	(get_parm_info): Rename "void_at_end" argument to "ellipsis", with
	reversed sense.  Rewrite for new bindings structures.  Do not
	leave any decls in the scope, to prevent pop_scope from doing
	contradictory things with them.
	(finish_struct, finish_enum): Remove redundant diagnostics.
	(build_enumerator): Don't cascade diagnostics for error_mark_node.
	Mark location where -pedantic changes the meaning of the program.
	(store_parm_decls_newstyle, store_parm_decls_oldstyle): Load the
	parameter decls into the function's scope structure using bind.
	Warn here about function definitions in the wrong style.
	Adjust diagnostics.
	(store_parm_decls): Correct the determination of whether a
	function was defined with a prototype.
	(c_write_global_declarations): Operate on all file decls and on
	the external scope.  Split body of the loop to...
	(c_write_global_declarations_1): ... this new function, to avoid
	code duplication.
	(truly_local_externals, first_builtin_decl, last_builtin_decl)
	(make_scope, pop_scope, in_parm_level_p, set_block)
	(any_external_decl, record_external_decl, bind_label, getdecls)
	(link_hash_hash, link_hash_eq, merge_translation_unit_decls)
	(c_reset_state): Delete.
	(visible_builtins, c_override_global_bindings_to_false)
	(c_binding, I_SYMBOL_BINDING, I_SYMBOL_DECL, I_TAG_BINDING)
	(I_TAG_DECL, I_LABEL_BINDING, I_LABEL_DECL, file_scope)
	(external_scope, binding_freelist, bind, free_binding_and_advance)
	(push_file_scope, pop_file_scope): New.
	(pushtag, pushdecl_top_level, lookup_label, declare_label)
	(define_label, c_make_fname_decl, finish_decl)
	(mark_forward_parm_decls, build_compound_literal)
	(grokdeclarator, start_function, check_for_loop_decls)
	(identifier_global_value, record_builtin_type): Minor adjustments
	for new bindings structures.  Improve diagnostics and commentary.
	* c-objc-common.c (start_cdtor, finish_cdtor): Adjust calls to
	pushlevel/poplevel respectively.
	(c_objc_common_finish_file): Don't call merge_translation_unit_decls.
	* c-opts.c (c_common_parse_file): Remove spurious ATTRIBUTE_UNUSED.
	Warn about YYDEBUG not being defined only if -dy.  Remove no-longer-
	correct loop over multiple translation units; call fatal_error if
	requested to compile more than one file at once.  (This disables
	IMA temporarily - an up-front error being preferable to a crash.)
	* c-parse.in (pushlevel, poplevel rules): Rename push_scope, pop_scope.
	(all actions): Adjust calls to pushlevel/poplevel.
	(parsing_iso_function_signature): Delete.
	(extdef_1): Fold into extdef.
	(old_style_parm_decls_1): Fold into old_style_parm_decls.  Don't
	warn here about function definitions in the wrong style.
	(after_tyle_declarator, parm_declarator_starttypename)
	(parm_declarator_nostarttypename, notype_declarator): Remove
	commented-out productions.
	(parmlist_1, parmlist_2): Use make_node, not tree_cons, to create
	an empty TREE_LIST node.  Adjust calls to get_parm_info.
	(parmlist_2 : ELLIPSIS): Tag the arg-info block with error_mark_node
	to suppress -Wold-style-definition after this error.
	(c_parse_file): Don't clear the binding stack or call
	finish_fname_decls here.  Correct comment.
	* c-typeck.c (same_translation_unit_p): Export.
	(common_type): Use c_override_global_bindings_to_false, not
	pushlevel/poplevel/declare_parm_level.
	* c-lang.c: Override LANG_HOOKS_CLEAR_BINDING_STACK,
	LANG_HOOKS_PUSHLEVEL, LANG_HOOKS_POPLEVEL, LANG_HOOKS_SET_BLOCK,
	and LANG_HOOKS_GETDECLS with do-nothing stubs.
	* objc/objc-lang.c: Likewise.
	* objc/objc-act.c: Adjust all calls to pushlevel, poplevel,
	get_parm_info.
	(OBJC_VOID_AT_END): Delete; replace all uses
	with void_list_node.
	(generate_forward_declaration_to_string_table): Delete.
	* objc/objc-act.h (OCTI_STRG_DECL, UOBJC_STRINGS_decl): Delete.

	* coverage.c (create_coverage): Don't pushdecl anything.
	* langhooks.c (lhd_clear_binding_stack): Call
	lang_hooks.decls.poplevel, not poplevel.
	* tree.c (list_length): If ENABLE_TREE_CHECKING, abort on a
	circular list rather than going into an infinite loop.

2004-03-23  Olivier Hainque  <hainque@act-europe.fr>

	* optabs.c (expand_binop): When synthesizing double word rotates
	from single word shifts, use a new register target if the provided
	target is not a REG already.

2004-03-23  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* alias.c (get_alias_set): Add support for TYPE_REF_CAN_ALIAS_ALL.
	* c-common.c (handle_mode_attribute): Add extra arg to
	build_pointer_type_for_mode and build_reference_type_for_mode.
	* c-typeck.c (build_c_cast): Only look at TREE_CONSTANT_OVERFLOW
	for INTEGER_CST.
	* tree.c (build_pointer_type_for_mode): Add arg CAN_ALIAS_ALL.
	Chain pointers via TYPE_NEXT_PTR_TO.
	(build_reference_type_for_mode): Similarly.
	(build_type_no_quals): Add extra arg to build_pointer_type_for_mode
	and build_reference_type_for_mode.
	(tree_check4_failed): New function.
	* tree.h (TREE_CHECK4, PTR_OR_REF_CHECK): New macros.
	(TYPE_REF_CAN_ALIAS_ALL, TYPE_NEXT_PTR_TO, TYPE_NEXT_REF_TO): Likewise.
	(TREE_NO_UNSUED_WARNING, TREE_VIA_VIRTUAL, TREE_CONSTANT_OVERFLOW):
	Add check.

2004-03-23  Roger Sayle  <roger@eyesopen.com>

	* fold-const.c (tree_expr_nonnegative_p): A&B is nonnegative when
	A is nonnegative or B is nonnegative.  Similarly A|B is nonnegative
	when both A and B are nonnegative.
	(tree_expr_nonzero_p): A|B is nonzero when A is nonzero or B is
	nonzero.

2004-03-23  Kazu Hirata  <kazu@cs.umass.edu>

	* fold-const.c (fold): Remove cases for INTEGER_CST, REAL_CST,
	VECTOR_CST, STRING_CST, COMPLEX_CST, and CONSTRUCTOR.

2004-03-23  Kazu Hirata  <kazu@cs.umass.edu>

	PR optimization/14669
	* fold-const.c (fold): Only unwiden integer comparisons for equality
	and inequality operators, or when the signedness doesn't change.

2004-03-23  Jakub Jelinek  <jakub@redhat.com>

	* config.gcc (sparc-*-linux*): Add sparc/t-linux to tmake_file.
	* config/sparc/t-linux64 (TARGET_LIBGCC2_CFLAGS): Set.
	* config/sparc/t-linux: New file.

2004-03-23  Richard Sandiford  <rsandifo@redhat.com>

	* gcse.c (can_assign_to_reg_p): New function, split out from...
	(want_to_gcse_p): ...here.
	(compute_ld_motion_mems): Use can_assign_to_reg_p to validate
	the rhs of a store.

2004-03-22  Diego Novillo  <dnovillo@redhat.com>

	* c-typeck.c (same_translation_unit_p): Fix pasto.

2004-03-22  David Edelsohn  <edelsohn@gnu.org>

	* params.def (PARAM_MAX_SCHED_REGION_BLOCKS): New.
	(PARAM_MAX_SCHED_REGION_INSNS): New.
	* sched-rgn.c: Include params.h
	(MAX_RGN_BLOCKS): Delete.
	(MAX_RGN_INSNS): Delete.
	(too_large): Return bool.  Convert to PARAM_VALUE.
	* Makefile.in (sched-rgn.o): Depend on $(PARAMS_H).
	* doc/invoke.texi (param): Document max-sched-region-blocks and
	max-sched-region-insns.

2004-03-22  Joel Brobecker  <brobecker@gnat.com>

	* dwarf2out.c (is_subrange_type): Do not emit a subrange_type DIE
	for base types.

2004-03-22  Joel Brobecker  <brobecker@gnat.com>

	* dwarf2out.c (is_subrange_type): Minor code rework. No behavior
	change.

2004-03-22  Jakub Jelinek  <jakub@redhat.com>

	PR c/14069
	* c-decl.c (finish_struct): Change type of incorrect flexible array
	field into error_mark_node.

2004-03-22  Andrew Pinski  <pinskia@physics.uc.edu>

	PR target/14580
	* config/rs6000/rs6000.c (symbol_ref_operand): Reject symbols
	who are not local for Darwin PIC.

2004-03-22  Ulrich Weigand  <uweigand@de.ibm.com>

	* regrename.c (regrename_optimize): Set regs_ever_live for all
	registers introduced as replacement.

2004-03-22  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR middle-end/14470
	* expr.c (mark_queue): New function.
	(emit_insns_enqueued_after_mark): New function replacing
	emit_queue.  Clear the body of emitted queued insns.
	(emit_queue): Call emit_insns_enqueued_after_mark.
	(store_expr): Mark the increment queue on entry.  Emit
	only the incrementations queued when expanding the source.

2004-03-22  Nathanael Nerode  <neroden@gcc.gnu.org>

	* configure.ac: Allow --disable-coverage-flags (for the future benefit
	of top level bootstrap, and consistency).  Reindent.
	* configure: Regenerate.

2004-03-21  Kazu Hirata  <kazu@cs.umass.edu>

	* bt-load.c, builtins.c, cfghooks.c, cfgrtl.c, gcse.c,
	ggc-page.c, integrate.c, var-tracking.c, web.c: Remove
	unnecessary casts.

2004-03-22  Danny Smith  <dannysmith@users.sourceforge.net>

	PR target/14291
	* gcov-io.h (gcov_truncate): Define ftruncate as _chsize for
	__MINGW32__.

2004-03-21  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.md ("*doloop_si"): Change predicate for operand 2
	to nonimmediate_operand.
	("*doloop_di"): Likewise.

2004-03-21  Alexandre Oliva  <aoliva@redhat.com>

	* real.h (struct real_value): Use the same type for all
	bitfields.  Rename exp to uexp.
	(REAL_EXP, SET_REAL_EXP): New accessor macros for uexp.
	Adjust all uses of exp...
	* builtins.c: ... here, ...
	* emit-rtl.c: ... here, and ...
	* real.c: ... and here.

2004-03-21  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* pretty-print.c (pp_base_maybe_space): New function.
	* pretty-print.h (pp_base_maybe_space): Declare.
	(pp_maybe_space): New macro.

2004-03-21  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.md ("addti3", "subti3"): New insns and splitters.

2004-03-21  Ulrich Weigand  <uweigand@de.ibm.com>

	* expmed.c (choose_mult_variant): Pass MULT_COST as argument instead
	of using register multiplication cost.
	(expand_mult): Adapt choose_mult_variant call.
	(expand_mult_highpart): Call choose_mult_variant with WIDER_MODE
	of MODE; pass appropriate cost bound.  Adjust result when
	performing signed multiplication by a negative constant.
	Don't use intermediate modes larger than word_mode.

2004-03-21  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* alias.c (get_alias_set): Remove handling of PLACEHOLDER_EXPR.
	* emit-rtl.c (component_ref_for_mem_expr): Likewise.
	(set_mem_attributes_minus_bitpos): Call SUBSTITUTE_PLACEHOLDER_IN_EXPR.
	* explow.c (expr_size): Likewise.
	* expr.h (placeholder_list, find_placeholder): Deleted.
	* expr.c (store_constructor): Likewise.
	(get_inner_reference): Likewise.  Also don't call find_placeholder.
	(placeholder_list, find_placeholder): Deleted.
	(is_aligning_offset): Don't handle WITH_RECORD_EXPR, PLACEHOLDER_EXPR.
	(expand_expr_real, cases PLACEHOLDER_EXPR, WITH_RECORD_EXPR): Likewise.
	(highest_pow2_factor, case WITH_RECORD_EXPR): Remove.
	* dojump.c (do_jump, case WITH_RECORD_EXPR): Likewise.
	* dwarf2out.c (loc_descriptor_from_tree, case WITH_RECORD_EXPR):
	Likewise.
	* fold-const.c (invert_truthvalue, case WITH_RECORD_EXPR): Likewise.
	(extract_muldiv, case WITH_RECORD_EXPR): Likewise.
	* tree.c (expr_align, case WITH_RECORD_EXPR): Likewise.
	(contains_placeholder_p): Don't handle WITH_RECORD_EXPR.
	Clean up by using first_rtl_op.
	(substitute_in_expr): Use SUBSTITUTE_IN_EXPR for recursive call.
	(substitute_placeholder_in_expr): New function.
	* tree.def (WITH_RECORD_EXPR): Deleted.
	* tree.h (SUBSTITUTE_IN_EXPR, SUBSTITUTE_PLACEHOLDER_IN_EXPR): New.
	(substitute_placeholder_in_expr): New.

2004-03-21  Andrew Pinski  <pinskia@gcc.gnu.org>

	* dojump.c (prefer_and_bit_test): Fix which part of
	the and_test is replaced.

2004-03-21  Joseph S. Myers  <jsm@polyomino.org.uk>

	* frontends.texi: Add missing line.

2004-03-21  Zack Weinberg  <zack@codesourcery.com>
	    Chris Devers  <cdevers@pobox.com>
	    Joseph S. Myers  <jsm@polyomino.org.uk>

	* doc/frontends.texi: Rewrite.
	* doc/gcc.texi: Update last modification date.

2004-03-21  Josef Zlomek  <zlomekj@suse.cz>

	* cfgrtl.c (cfg_layout_redirect_edge_and_branch): Print the debug
	message before redirecting the edge.

2004-03-20  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* emit-rtl.c (set_mem_attributes_minus_bitpos): Set MEM_POINTER
	flag.
	* explow.c (force_not_mem): Set REG_POINTER flag according to
	MEM_POINTER one.
	* rtl.h (MEM_POINTER): New macro.
	(struct rtx_def): Use integrated for MEM_SCALAR_P and frame_related
	for MEM_POINTER.

2004-03-20  Roger Sayle  <roger@eyesopen.com>

	PR target/13889
	* cse.c (fold_rtx): Avoid substituting constants into unary
	conversion operations.

2004-03-20  Kazu Hirata  <kazu@cs.umass.edu>

	* fold-const.c (fold): Replace "expr" with "t".

2004-03-20  Ian Lance Taylor  <ian@wasabisystems.com>

	PR c/12373
	* c-typeck.c (tagged_types_tu_compatible_p): Don't use
	DECL_ORIGINAL_TYPE if there isn't one.

2004-03-20  Kazu Hirata  <kazu@cs.umass.edu>

	* fold-const.c (fold): Replace "final_type" with "type".
	Remove variable "final_type".

2004-03-20  Kazu Hirata  <kazu@cs.umass.edu>

	* fold-const.c (fold): Constify "type".
	Replace "TREE_TYPE (t)" with "type".

2004-03-20  Kazu Hirata  <kazu@cs.umass.edu>

	* bb-reorder.c, bt-load.c, c-decl.c, cfgcleanup.c, coverage.c,
	dwarf2asm.c, ifcvt.c, stor-layout.c, varasm.c: Replace calls
	via (*targetm.foo) () with targetm.foo ().

2004-03-20  Joseph S. Myers  <jsm@polyomino.org.uk>

	PR other/14630
	* doc/install.texi: Add info directory category and entry.

2004-03-20  Kazu Hirata  <kazu@cs.umass.edu>

	* fold-const.c (fold): Replace "t" with "tem" where it is used
	as a temporary variable.  Remove "orig_t" and all of its uses.

2004-03-20  Kazu Hirata  <kazu@cs.umass.edu>

	* fold-const.c (fold): Remove variable "invert".
	Move the handling of relational expressions that can be folded
	to a constant ...
	(fold_relational_const): ... here.
	(tree_expr_nonzero_p): New.

2004-03-20  Joseph S. Myers  <jsm@polyomino.org.uk>

	PR c/14635
	* builtins.def (nan, nanf, nanl, nans, nansf, nansl): Change to
	DEF_GCC_BUILTIN.

2004-03-20  Richard Sandiford  <rsandifo@redhat.com>

	* Makefile.in (dojump.o): Depend on $(GGC_H) and dojump.h.
	(GTFILES): Add $(srcdir)/dojump.h.
	(gt-dojump.h): New dependency.
	* dojump.c (and_reg, and_test, shift_test): New static variables.
	(prefer_and_bit_test): New function.
	(do_jump): Use it to choose between (X & (1 << C)) and (X >> C) & 1.

2004-03-20  Kazu Hirata  <kazu@cs.umass.edu>

	* c-common.c, cfgcleanup.c, cgraphunit.c, c-pretty-print.c,
	expmed.c, ggc-common.c, jump.c, passes.c, recog.c, regmove.c,
	reorg.c, tree.h: Fix comment typos.

2004-03-19  Kazu Hirata  <kazu@cs.umass.edu>

	* alias.c, attribs.c, bt-load.c, builtins.c, c-common.c,
	c-decl.c, c-objc-common.c, c-typeck.c, calls.c, cfglayout.c,
	cse.c, dbxout.c, dwarf2out.c, except.c, final.c,
	haifa-sched.c, integrate.c, passes.c, rtlanal.c, sched-rgn.c,
	sched-vis.c, simplify-rtx.c, stor-layout.c, tree.c, varasm.c,
	vmsdbgout.c: Replace calls via (*targetm.foo) () with
	targetm.foo ().

2004-03-19  Ziemowit Laski  <zlaski@apple.com>

	* config/rs6000/altivec.h (vec_dst, vec_dstst, vec_dststt,
	vec_dstt, vec_sld, vec_splat): Add prototypes, marked with
	always_inline attribute.
	* config/rs6000/rs6000.c (altivec_expand_dst_builtin):
	Treat expansion as completed even if literal argument is
	invalid (so that other expansions are not tried in vain).

2004-03-19  Kazu Hirata  <kazu@cs.umass.edu>

	* loop-doloop.c (add_test): Replace GEN_INT (0) with
	const0_rtx.

2004-03-19  Kazu Hirata  <kazu@cs.umass.edu>

	* fold-const.c (fold) <ABS_EXPR>: Move the handling of constants
	...
	(fold_abs_const): ... here.

2004-03-19  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* tree.h (TYPE_ARRAY_MAX_SIZE): Use type.maxval directly.

2004-03-19  Denis Chertykov  <denisc@overta.ru>

	PR target/11520
	* config/avr/avr.md ("call_insn"): Handle explicit integer
	specially.
	(call_value_insn): Likewise.

2004-03-19  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* tree.c (substitute_in_expr): Rewrite to simplify and be more generic.

2004-03-19  Kazu Hirata  <kazu@cs.umass.edu>

	* fold-const.c (negate_expr): Move the handling of constants
	...
	(fold_negate_const): ... here.

2004-03-19  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* langhooks-def.h (LANG_HOOKS_HASH_TYPES): New macro and hook.
	* langhooks.h (struct lang_hooks_for_types): New field hash_types.
	* tree.c (debug_no_type_hash): Deleted.
	(type_hash_canon): Abort if passed a variant.
	Check lang_hooks.types.hash_types.
	(build_type_no_quals): Copy mode of POINTER_TYPE and REFERENCE_TYPE.
	(build_array_type): Remove unnecessary allocation of pointer type.
	(build_complex_type): Properly qualify resulting type.

2004-03-19  Paolo Bonzini  <bonzini@gnu.org>

	* config/rs6000/rs6000.c (rs6000_init_builtins): Fix typo.

2004-03-19  Richard Sandiford  <rsandifo@redhat.com>

	* expmed.c (choose_mult_variant, expand_mult_const): New, split from...
	(expand_mult): ...here.
	(extract_high_half): New, split out from expand_mult_highpart.
	(expand_highpart_optab): Likewise.  Don't clobber target prematurely.
	(expand_highpart): Evaluate the cost of a shift/add sequence,
	then see if any of the specialized optabs are cheaper.

2004-03-18  Ian Lance Taylor  <ian@wasabisystems.com>

	* mklibgcc.in: Remove obsolete MAYBE_USE_COLLECT2.

2004-03-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* convert.c (convert_to_real): Add more math builtins.

2004-03-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* convert.c (convert_to_real): Reformat using switch stmt.

2004-03-18  Mark Mitchell  <mark@codesourcery.com>

	* c-common.c (pointer_int_sum): Do not complain about using
	pointers to pointers-to-members.

2004-03-18  Kazu Hirata  <kazu@cs.umass.edu>

	* system.h (MD_ASM_CLOBBERS): Move to "Old target macros that
	have moved to the target hooks structure".

2004-03-18  James E Wilson  <wilson@specifixinc.com>

	* config/mips/mips.md (type): Split move into arith and fmove.  Split
	hilo into mthilo and mfhilo.  Add trap.  Delete icmp.  Fix all uses.
	* config/mips/5400.md (ir_vr54_hilo, ir_vr54_arith, ir_vr54_fabs):
	Likewise.
	* config/mips/5500.md (ir_vr55_hilo, ir_vr55_arith, ir_vr55_fabs):
	Likewise.
	* config/mips/7000.md (rm7_int_other, rm7_mthilo, rm7_mfhilo,
	rm7_fp_quick): Likewise.
	* config/mips/9000.md (rm9k_int, rm9k_mfhilo, rm9k_mthilo,
	rm9k_fquick): Likewise.
	* config/mips/sr71k.md (ir_sr70_hilo, ir_sr70_arith, ir_sr70_fabs):
	Likewise.
	(ir_sr70_icmp): Delete.

2004-03-18  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* tree.h (TREE_CHECK2, TREE_CHECK3, TREE_CHECK5): New macros.
	(tree_check2_failed, tree_check3_failed, tree_check5_failed): New decl.
	(FUNC_OR_METHOD_CHECK, SET_ARRAY_OR_VECTOR_CHECK): New macros.
	(REC_OR_UNION_CHECK, NUMERICAL_TYPE_CHECK): Likewise.
	(TYPE_VALUES, TYPE_DOMAIN, TYPE_FIELDS, TYPE_METHODS, TYPE_VFIELD):
	Protect with proper check.
	(TYPE_ARG_TYPES, TYPE_METHOD_BASETYPE, TYPE_OFFSET_BASETYPE): Likewise.
	(TYPE_MIN_VALUE, TYPE_MAX_VALUE): Likewise.
	* tree.c (type_hash_eq): Rewrite to access proper fields for each type.
	(tree_check2_failed, tree_check3_failed, tree_check5_failed): New.
	* c-typeck.c (build_array_ref): Use TYPE_DOMAIN, not TYPE_VALUES.
	* dwarf2out.c (gen_enumeration_type_die): Use TYPE_VALUES,
	not TYPE_FIELDS.
	* stor-layout.c (set_sizetype): Use TYPE_ORIG_SIZE_TYPE.

2004-03-18  Mostafa Hagog  <mustafa@il.ibm.com>

	* gcse.c (eliminate_partially_redundant_loads): Reject change if
	dest is set between beginning and current insn.

2004-03-18  Mark Mitchell  <mark@codesourcery.com>

	* c-decl.c (grokdeclarator): Do not complain about redeclaring
	visible "static" identifiers "extern" in a local scope.
	* dwarf2out.c (loc_descriptor_from_tree): Handle pre- and
	post-increments/decrements.

2004-03-18  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/xtensa.c (current_function_arg_words): Delete.
	(xtensa_builtin_saveregs): Use current_function_args_info.arg_words.
	(xtensa_va_start): Remove assignment to current_function_arg_words.

2004-03-18  Richard Sandiford  <rsandifo@redhat.com>

	* alias.c (record_set): Detect the case where a register is assigned
	a new value that has the same base term as the old one.

2004-03-18  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* doloop.c: Removed.
	* loop-doloop.c: New file.
	* Makefile.in (doloop.o): Remove.
	(loop-doloop.o): New.
	* cfgloop.h (get_loop_level, doloop_optimize_loops): Declare.
	* cfgloopanal.c (get_loop_level): New function.
	* loop-iv.c (iv_number_of_iterations): Handle case when loop
	is leaved immediatelly.
	* loop.c (strength_reduce): Do not call doloop optimization.
	* loop.h (LOOP_BCT): Removed.
	* passes.c (rest_of_handle_loop_optimize): Do not use LOOP_BCT.
	(rest_of_handle_loop2): Call doloop_optimize_loops.
	(rest_of_compilation): Test for optimizations moved to
	rest_of_handle_loop2.

2004-03-17  Fariborz Jahanian <fjahanian@apple.com>

	* config/rs6000/rs6000.c (rs6000_stack_info): correct reg_size
	for mixed mode.
	(rs6000_emit_prologue): Ditto.
	(rs6000_emit_epilogue): Ditto.
	* config/rs6000/rs6000.h: Definition of DWARF_CIE_DATA_ALIGNMENT
	macro for mixed mode.

2004-03-18  Jan Hubicka  <jh@suse.cz>

	* predict.c (propagate_freq): Compute correctly frequency of
	EXIT_BLOCK.

2004-03-17  Eric Christopher  <echristo@redhat.com>

	* builtins.c (apply_args_size): Use reg_raw_mode.
	(apply_result_size): Ditto.

2004-03-17  Ralf Corsepius <corsepiu@faw.uni-ulm.de>

	PR target/14620
	* config/rtems.h: Add STD_LIB_SPEC and LIB_SPEC.

2004-03-17  Jakub Jelinek  <jakub@redhat.com>

	* config/rs6000/t-linux64 (bispecs): Don't add -mlong-double-128 for
	32-bit builds when defaulting to 32-bit.

2004-03-17  Jan Hubicka  <jh@suse.cz>

	* cfgrtl.c (rtl_create_basic_block): Pre-allocate basic_block_info
	array.

2004-03-17  James E Wilson  <wilson@specifixinc.com>

	* config/mips/mips.md (zero_extendsidi2): Add length attribute.
	(hazard_nop): Change type to nop.
	(type): Split arith into arith, shift, slt, clz.  Delete darith.
	Fix all uses.  Change arith to multi if more than one insn emitted.
	* config/mips/5400.md (ir_vr54_arith): Likewise.
	* config/mips/5500.md (ir_vr55_arith): Likewise.
	* config/mips/7000.md (rm7_int_other): Likewise.
	* config/mips/9000.md (rm9k_int): Likewise.
	* config/mips/sr71k.md (ir_sr70_arith): Likewise.

2004-03-17  Joel Brobecker  <brobecker@gnat.com>

	* dwarf2out.c (subrange_type_die): Define new variable "subtype"
	to hold the subtype tree instead of recomputing it several times.

2004-03-17  Kazu Hirata  <kazu@cs.umass.edu>

	* config/mn10300/mn10300.c (notice_update_cc): Don't handle
	CC_INVERT.
	* config/mn10300/mn10300.md (cc): Remove "invert".

2004-03-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtins.c (integer_valued_real_p): Add builtin rint.
	(fold_builtin): Likewise.
	* convert.c (convert_to_real): Likewise.

	* convert.c (convert_to_real): Fix typos in `long double'
	builtins.

2004-03-16  Mark Mitchell  <mark@codesourcery.com>

	PR c++/14481
	* fold-const.c (fold): Set TREE_NO_UNUSED_WARNING on implicitly
	generated COMPOUND_EXPRs.

2004-03-16  Ralf Corsepius <corsepiu@faw.uni-ulm.de>

	* config/h8300/t-rtems (h8300-*-rtems*): New.

2004-03-16  Eric Christopher  <echristo@redhat.com>

	* doc/cppopts.texi(fwide-exec-charset): Fix typo.

2004-03-16  Kazu Hirata  <kazu@cs.umass.edu>

	* config/i386/i386-protos.h: Add a prototype for
	ix86_reverse_condition.
	* config/i386/i386.c (ix86_reverse_condition): New.
	* config/i386/i386.h (REVERSE_CONDITION): Use
	ix86_reverse_condition.
	* config/i386/i386.md: Use ix86_reverse_condition instead of
	REVERSE_CONDITION.

2004-03-16  J. Brobecker  <brobecker@gnat.com>

	* dwarf2out.c (loc_descriptor_from_tree): Add handling for MIN_EXPR.

2004-03-16  Nathanael Nerode  <neroden@gcc.gnu.org>

	PR bootstrap/12974
	* Makefile.in: Pass $(INCLUDES) down to libgcc.mk explicitly.

2004-03-16  Paolo Bonzini  <bonzini@gnu.org>

	* c-common.c (c_common_type_for_mode): Build vector types on
	demand.
	(handle_mode_attribute): Deprecate using the mode attribute
	to create vector types.  Fix indentation.
	(vector_type_node_list): Remove.
	(handle_vector_size_attribute): Create vector types on demand.
	Strip a NON_LVALUE_EXPR from the attribute if there is one.
	* c-typeck.c (comptypes): Make vector types compatible if they
	have the same underlying mode.
	(convert_for_assignment): Use comptypes to convert between
	vector types.
	* tree.c (build_common_tree_nodes_2): Do not create vector types.
	* config/arm/arm.c (arm_init_iwmmxt_builtins): Create necessary
	vector types.
	* tree.h: Remove vector types.
	* config/i386/i386.c (i386_init_mmx_sse_builtins): Likewise.
	* config/rs6000/rs6000.c (rs6000_init_builtins): Likewise.
	(V16QI_type_node, V2SI_type_node, V2SF_type_node, V4HI_type_node,
	V4SI_type_node, V4SF_type_node, V8HI_type_node): New globals.
	* doc/extend.texi (Vector Types): Document how to use the
	vector_size attribute to create vectors, rather than mode.

	* config/arm/mmintrin.h: Use vector_size attribute, not mode.
	* config/i386/emmintrin.h: Likewise.
	* config/i386/mmintrin.h: Likewise.
	* config/i386/xmmintrin.h: Likewise.
	* config/sh/ushmedia.h: Likewise.

2004-03-16  Kazu Hirata  <kazu@cs.umass.edu>

	* config/freebsd-spec.h, config/arc/arc-protos.h,
	config/arm/aout.h, config/arm/elf.h, config/arm/freebsd.h,
	config/arm/linux-gas.h, config/arm/semi.h,
	config/cris/cris-protos.h, config/i386/xm-djgpp.h,
	config/ia64/freebsd.h, config/mips/7000.md,
	config/mips/9000.md, config/ns32k/ns32k-protos.h,
	config/sparc/pbd.h: Update copyright.

2004-03-16  Ralf Corsepius <corsepiu@faw.uni-ulm.de>

	PR target/14577
	* config.gcc: Switch sh-*-rtems* to ELF.  Add sh-*-rtemscoff.

2004-03-16  Paolo Bonzini  <bonzini@gnu.org>

	* combine.c (combine_simplify_rtx): Remove the "last"
	parameter and its documentation.  Adjust recursive calls.
	(simplify_logical): Always perform the only simplification
	controlled by "last", if the simplified expression is
	actually different.
	(try_combine): Do not pass the "last" parameter to
	combine_simplify_rtx.

2004-03-16  Richard Sandiford  <rsandifo@redhat.com>

	PR target/14599
	* config/mips/mips.md (UNSPEC_GP): New constant.
	* config/mips/mips.c (CONST_GP_P): Expect the CONST to contain
	an UNSPEC instead of (reg $gp).
	(mips16_gp_pseudo_reg): Change accordingly.
	(print_operand): Print $gp directly when handling CONST_GP_P.

2004-03-16  Richard Zidlicky  <rz@linux-m68k.org>

	* config.gcc, config/m68k/linux.h: Implement with-cpu for m68k-linux.
	* longlong.h: Make code 68060 clean when compiling for m68060.

2004-03-16  Richard Zidlicky  <rz@linux-m68k.org>

	* config/m68k/m68k.md: Fix constraints for bitfield instructions.
	* doc/md.texi: Clarify description of "i" constraint.

2004-03-15  James E Wilson  <wilson@specifixinc.com>

	* config/mips/mips.md (type): Split load into load, fpload, fpidxload.
	Split store into store, fpstore, fpidxstore.  Fix all uses.
	* config/mips/5400.md (ir_vr54_load, ir_vr54_store, ir_vr54_fstore):
	Likewise.
	* config/mips/5500.md (ir_vr55_load, i5_vr55_store): Likewise.
	* config/mips/7000.md (rm7_ld, rm7_st): Likewise.
	* config/mips/9000.md (rm9k_load, rm9k_store): Likewise.
	* config/mips/sr71k.md (ir_sr70_load, ir_sr70_store, ir_sr70_fload,
	ir_sr70_fstore): Likewise.

2004-03-15  Richard Henderson  <rth@redhat.com>

	PR middle-end/14535
	* except.c (collect_one_action_chain): Record action for cleanup
	outer of exception spec.

2004-03-15  Ian Lance Taylor  <ian@wasabisystems.com>

	* config/rs6000/host-darwin.c (darwin_rs6000_gt_pch_use_address):
	Fix the check for abort and only do the mmap if we can.

2004-03-15  Eric Botcazou  <ebotcazou@act-europe.fr>

	* config/sparc/sparc.h: Rework comments about the code model
	in 64-bit environment and the mode 'Pmode'.
	* doc/invoke.texi (SPARC options): Rework description of the
	different code models supported in 64-bit environment.

2004-03-15  Kazu Hirata  <kazu@cs.umass.edu>

	* defaults.h (REVERSIBLE_CC_MODE): Define.
	* jump.c (reversed_comparison_code_parts): Don't check if
	REVERSIBLE_CC_MODE is defined.

2004-03-15  Kazu Hirata  <kazu@cs.umass.edu>

	* c-incpath.c, c-incpath.h, c-pch.c, c.opt, cppexp.c,
	et-forest.h, genattr.c, ggc-none.c, hosthooks-def.h,
	hosthooks.h, params.h, ra-colorize.c, web.c,
	config/darwin-c.c, config/alpha/freebsd.h, config/arm/pe.c,
	config/avr/avr-protos.h, config/avr/avr.md,
	config/fr30/fr30-protos.h, config/fr30/fr30.md,
	config/h8300/fixunssfsi.c, config/i386/darwin.h,
	config/i386/freebsd.h, config/i386/freebsd64.h,
	config/ia64/hpux.h, config/ia64/unwind-ia64.c,
	config/ip2k/libgcc.S, config/m32r/xm-m32r.h,
	config/mmix/mmix-modes.def, config/ns32k/netbsd.h,
	config/ns32k/ns32k.md, config/pa/pa64-hpux.h,
	config/pa/pa64-regs.h, config/rs6000/aix41.h,
	config/rs6000/aix43.h, config/rs6000/host-darwin.c,
	config/sparc/aout.h, config/sparc/freebsd.h,
	config/sparc/litecoff.h, config/vax/vax-protos.h,
	doc/hostconfig.texi, doc/include/gcc-common.texi: Update
	copyright.

2004-03-15  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (thumb_expand_prologue): Tie prologue insns to fp.

2004-03-15  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* c-pretty-print.c (pp_c_semicolon): Fix formatting.
	(pp_c_cv_qualifier): Document.
	(pp_c_space_for_pointer_operator): Likewise.
	(pp_c_integer_constant): Likewise.
	(pp_c_identifier): Likewise.
	(pp_c_init_declarator): Don't print function body.

2004-03-14  Joseph S. Myers  <jsm@polyomino.org.uk>

	* doc/contrib.texi, doc/extend.texi, doc/gcov.texi,
	doc/install.texi, doc/invoke.texi, doc/makefile.texi,
	doc/sourcebuild.texi, doc/tm.texi, doc/trouble.texi: Capitalize
	"gcc", "g++" and "g77" or mark up with appropriate markup.  Adjust
	wording and grammar.

2004-03-14  Roger Sayle  <roger@eyesopen.com>

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

2004-03-14  Kelley Cook  <kcook@gcc.gnu.org>

	* doc/install.texi: Make autoconf 2.13 the exception, not the rule.

2004-03-14  Andreas Tobler  <a.tobler@schweiz.ch>

	* doc/install.texi: Reflect autoconf and automake version for
	libffi. Update autoconf version to 2.59.

2004-03-13  Roger Sayle  <roger@eyesopen.com>

	* fold-const.c (negate_expr, operand_equal_for_comparison_p,
	optimize_bit_field_compare, decode_field_reference, all_ones_mask_p,
	make_range, build_range_check, fold_range_test, unextend,
	constant_boolean_node, fold_binary_op_with_conditional_arg,
	fold_truthop, fold_mathfn_compare, fold_inf_compare,
	fold_single_bit_test, fold): Replace calls via (*lang_hooks.foo) ()
	with lang_hooks.foo ().

2004-03-14  Richard Earnshaw  <rearnsha@arm.com>

	* arm.h (EXTRA_CONSTRAINT_STR_ARM): Update comment.

2004-03-13  Dara Hazeghi  <dhazeghi@yahoo.com>

	* doc/install.texi: Note status of -fnew-ra.

2004-03-13  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR middle-end/14470
	* expr.c (store_expr): Call emit_queue before generating the move
	from the temporary to the original target.  Protect the temporary
	from emit_queue.

2004-03-13  Jakub Jelinek  <jakub@redhat.com>

	PR target/14533
	* config/s390/s390.c (legitimize_pic_address): Don't abort on UNSPEC
	other than UNSPEC_GOTOFF.

2004-03-13  Richard Earnshaw  <rearnsha@arm.com>

	* arm.c (arm_legitimate_address_p): New argument, OUTER.  Pass through
	to arm_legitimate_index_p.  Update all callers with SET as default
	value.
	(arm_legitimate_index_p): New argument, OUTER.  Restrict the index
	range if OUTER is a sign-extend operation on QImode.  Correctly
	reject shift operations on sign-extended QImode addresses.
	(bad_signed_byte_operand): Delete.
	(arm_extendqisi_mem_op): New function.
	* arm.h (EXTRA_CONSTRAINT_ARM): Delete.  Replace with...
	(EXTRA_CONSTRAINT_STR_ARM): ... this.  Handle extended address
	constraints.
	(CONSTRAINT_LEN): New.
	(EXTRA_CONSTRAINT): Delete.  Replace with...
	(EXTRA_CONSTRAINT_STR): ... this.
	(PREDICATE_CODES): Remove bad_signed_byte_operand.
	* arm.md (extendqihi_insn): Use new constraint Uq.  Rework.  Length
	is now always default.
	(define_splits for bad sign-extend loads): Delete.
	(arm_extendqisi, arm_extendqisi_v5): Likewise.
	* arm/vfp.md (arm_movsi_vfp, arm_movdi_vfp, movsf_vfp, movdf_vfp):
	Rework 'U' constraint to 'Uv'.
	* arm-protos.h: Remove bad_signed_byte_operand.  Add
	arm_extendqisi_mem_op.
	* doc/md.texi (ARM constraints): Rename VFP constraint (now Uv).
	Add Uq constraint.

2004-03-13  Alan Modra  <amodra@bigpond.net.au>

	* config/rs6000/rs6000.c (rs6000_va_arg): Replace SPLIT_COMPLEX_ARGS
	with targetm version.

	PR target/14567
	* config/rs6000/rs6000.h (UNITS_PER_ARG, RS6000_ARG_SIZE): Delete.
	(HARD_REGNO_MODE_OK): Disallow TFmode for fp31.
	* config/rs6000/rs6000.c (rs6000_arg_size): New function.
	Update all users of RS6000_ARG_SIZE.
	(function_arg_advance): Count fregno using mode size.
	(function_arg): Handle long double split over regs and memory.
	(function_arg_partial_nregs): Likewise.
	(rs6000_va_arg): Repackage complex args.

2004-03-13  Dean Ferreyra <dferreyra@igc.org>

	PR target/14047
	* config/avr/avr.c (avr_progmem_p): Add "attributes" parameter.
	(avr_insert_attributes): Pass "attributes" to avr_progmem_p.
	* config/avr/avr-protos.h (avr_progmem_p): Change prototype.

2004-03-12  Jakub Jelinek  <jakub@redhat.com>

	* config/rs6000/rs6000-protos.h (rs6000_output_dwarf_dtprel): Add
	prototype.
	* config/rs6000/rs6000.c (rs6000_output_dwarf_dtprel): New.
	* config/rs6000/rs6000.h (ASM_OUTPUT_DWARF_DTPREL): Define.

2004-03-12  Andrew Pinski  <apinski@apple.com>

	* config/rs6000/host-darwin.c (darwin_rs6000_gt_pch_use_address):
	Use ret instead of result. Use addr instead of base.

2004-03-12  David Edelsohn  <edelsohn@gnu.org>

	* doc/install.texi (*-ibm-aix*): Document assembler and achiver
	fixes required by libstdc++ and update installation instructions
	for libstdc++.a.

2004-03-12  Danny Smith  <dannysmith@users.sourceforge.net>

	* config/i386/winnt.c (i386_pe_strip_name_encoding_full): Strip
	leading '@' on fastcall symbols before stripping suffix.

2004-03-12  Roger Sayle  <roger@eyesopen.com>

	* combine.c (unmentioned_reg_p): New function to check whether an
	expression is a "specialization" of another, i.e. that there are
	no registers or memory references mentioned in the first that don't
	appear in the second.
	(unmentioned_reg_p_1): New helper subroutine of unmentioned_reg_p.
	(combine_instructions): Also try combining instructions using the
	REG_EQUAL note from a preceding log-linked instruction.

2004-03-12  Roger Sayle  <roger@eyesopen.com>

	* config/i386/i386.c (ix86_split_ashrdi): Optimize shift by 63.

2004-03-12  Matt Austern  <austern@apple.com>

	* target.h (struct gcc_target): New target hook, unwind_label.
	* target-def.h (TARGET_ASM_EMIT_UNWIND_LABEL): New hook.
	* output.h (default_emit_unwind_label): New function.
	* default.h (TARGET_EXPLICIT_INSTANTIATIONS_ONE_ONLY): New macro.
	(TARGET_USES_WEAK_UNWIND_INFO): New target macro.
	(TARGET_SUPPORTS_HIDDEN): New target macro.
	* dwarf2out.c (struct dw_fde_struct): Add field for function decl
	that corresponds to this FDE.
	(FRAME_BEGIN_LABEL): Allow target to override default label.
	(output_call_frame_info): If FDEs are linknonce, then use extra
	indirection for FDE encoding, output a label for each FDE, and
	output an empty label for each function without an FDE.
	(dwarf2out_begin_prologue): Set up decl field when creating an FDE.
	* varasm.c (globalize_decl): Call ASM_MAKE_LABEL_LINKONCE for
	decls with DECL_ONE_ONLY set, if that macro is defined.
	(make_decl_one_only): Don't use DECL_COMMON if we're compiling
	for a SUPPORTS_ONE_ONLY target.
	* config/darwin-protos.h (darwin_unique_section): Declare.
	(darwin_asm_named_section): Likewise.
	(darwin_section_type_flags): Likewise.
	(darwin_non_lazy_pcrel): Likewise.
	(darwin_emit_unwind_label): Likewise.
	(darwin_make_decl_one_only): Likewise.
	* config/darwin.c (machopic_finish): Get rid of tweak that
	eliminate stubs for symbols that are defined.
	(darwin_encode_section_info): Don't treat weak functions as defined.
	(darwin_make_decl_one_only): Define.
	(darwin_asm_named_section): Likewise.
	(darwin_section_type_flags): Likewise.
	(darwin_unique_section): Likewise.
	(darwin_emit_unwind_label): Likewise.
	(darwin_non_lazy_pcrel): Likewise.
	(darwin_asm_output_dwarf_delta): Difference between two labels is
	local only if both labels are local.
	* config/darwin.h (MAKE_DECL_ONE_ONLY): Define.
	(ASM_MAKE_LABEL_LINKONCE): Likewise.
	(TARGET_SUPPORTS_HIDDEN): Likewise.
	(TARGET_USES_WEAK_UNWIND_INFO): Likewise.
	(TARGET_EXPLICIT_INSTANTIATIONS_ONE_ONLY): Likewise.
	(FRAME_BEGIN_LABEL): Likewise.
	(ASM_DECLARE_OBJECT_NAME): Make references to weak symbols indirect.
	(ASM_DECLARE_FUNCTION_NAME): Likewise.
	(darwin_eh_frame_section): Give __eh_frame section the coalesced flag.
	(TARGET_ASM_UNIQUE_SECTION): Define.
	(EH_FRAME_SECTION_NAME): Define.
	(EH_FRAME_SECTION_ATTR): Likewise.
	(ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX): Likewise.
	(TARGET_ASM_NAMED_SECTION): Likewise.
	(TARGET_SECTION_TYPE_FLAGS): Likewise.
	* doc/tm.texi: Document TARGET_USES_WEAK_UNWIND_INFO,
	TARGET_EXPLICIT_INSTANTIATIONS_ONE_ONLY, TARGET_SUPPORTS_HIDDEN,
	TARGET_ASM_EMIT_UNWIND_LABEL.

2004-03-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtins.c (expand_builtin_mathfn): Add pow10* to the
	existing exp10* case.
	(expand_builtin): Likewise.

2004-03-12  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* doc/tm.texi (registers) <Values in Registers>: Add
	entry for REGMODE_NATURAL_SIZE.

2004-03-12  Richard Henderson  <rth@redhat.com>

	PR target/14547
	* target.h (struct gcc_target): Move calls substructure before
	booleans.  Add split_complex_arg.
	* function.c (assign_parms, split_complex_args): Use it.
	* calls.c (expand_call): Likewise.
	(split_complex_values): Likewise.  Check for splittable types
	before allocating memory.
	(split_complex_types): Likewise.
	* system.h (SPLIT_COMPLEX_ARGS): Poison.
	* expr.h (SPLIT_COMPLEX_ARGS): Remove.
	* target-def.h (TARGET_SPLIT_COMPLEX_ARG): New.
	* config/alpha/alpha.c (alpha_split_complex_arg): New.
	(TARGET_SPLIT_COMPLEX_ARG): New.
	* config/alpha/alpha.h (SPLIT_COMPLEX_ARGS): Remove.
	* config/rs6000/rs6000.c (TARGET_SPLIT_COMPLEX_ARG): New.
	(rs6000_override_options): Zap it for non-AIX.
	(rs6000_function_value): Use targetm.calls.split_complex_arg.
	* config/rs6000/rs6000.h (SPLIT_COMPLEX_ARGS): Remove.
	* config/xtensa/xtensa.c (TARGET_SPLIT_COMPLEX_ARG): New.
	* config/xtensa/xtensa.h (SPLIT_COMPLEX_ARGS): Remove.
	* doc/tm.texi (TARGET_SPLIT_COMPLEX_ARG): Modify from old
	SPLIT_COMPLEX_ARGS entry.

2004-03-11  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.c (xfloating_ops, vax_cvt_ops): New.
	(alpha_lookup_xfloating_lib_func): Use them, return rtx.
	(alpha_emit_xfloating_arith): Update to match.
	(alpha_emit_xfloating_compare): Likewise.
	(alpha_emit_xfloating_cvt): Likewise.
	(alpha_emit_xfloating_libcall): Take already built symbol,
	mark call const.
	* config/alpha/alpha.md (extendsftf2, extenddftf2): Take
	op1 in a register.

2004-03-11  Richard Henderson  <rth@redhat.com>

	PR target/14539
	* config/alpha/alpha.h (STACK_BOUNDARY): Set to 128.

	* simplify-rtx.c (simplify_relational_operation): Fix typo.

2004-03-11  Richard Henderson  <rth@redhat.com>

	PR middle-end/14477
	* except.c (remove_unreachable_regions): Look thru CALL_PLACEHOLDER.

2004-03-11  Ulrich Weigand  <uweigand@de.ibm.com>

	PR target/14262
	* calls.c (load_register_parameters): If BLOCK_REG_PADDING is not
	defined, pass small BLKmode values in registers in the low-order part.

2004-03-11  Ulrich Weigand  <uweigand@de.ibm.com>

	* combine.c (if_then_else_cond): Check for NULL return value of
	simplify_gen_subreg.

2004-03-11  Richard Sandiford  <rsandifo@redhat.com>

	PR target/14496
	* config/mips/mips.h (UNITS_PER_FPVALUE): Fix value for
	TARGET_SINGLE_FLOAT.

2004-03-11  Steve Ellcey  <sje@cup.hp.com>

	* 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.

2004-03-11  Roger Sayle  <roger@eyesopen.com>

	* fold-const.c (negate_expr_p) <RSHIFT_EXPR>: We can optimize
	-((int)X>>C) where C is an integer constant one bit less than the
	size of X into (unsigned)X>>C.  Similarly for unsigned->signed.
	(negate_expr) <RSHIFT_EXPR>: Implement the above transformations.

	* simplify-rtx.c (simplify_unary_operation): Also implement the
	above transformations at the RTL level.

2004-03-11  Alan Modra  <amodra@bigpond.net.au>

	* real.c (encode_ibm_extended): Do round low word.

2004-03-11  Ben Elliston  <bje@wasabisystems.com>

	* config/arm/arm.md (is_xscale): Comment this attribute and move
	it a bit further up in the file, closer to related attributes.

2004-03-11  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* config/host-solaris.c (sol_gt_pch_use_address): Add
	missing terminating marker to comment.

2004-03-11  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.md: Use move_operand in splitters for 64-bit moves.
	(movdi, movsi, movhi, movqi, movsf, movdf): Remove predicates.
	(*movdi_32bit_mips16, *movsi_mips16, *movhi_mips16, *movqi_mips16)
	(*movsf_mips16, *movdf_mips16): Name unnamed patterns.  Use
	move_operand as source predicate in all cases.
	(*movdi_32bit): Renamed from movdi_internal.  Remove 'F' constraint.
	Test reg_or_0_operand.  Use move_operand as source predicate.
	(*movdi_64bit): Renamed from movdi_internal2.  Test reg_or_0_operand.
	(*movdi_64bit_mips16): Renamed from movdi_internal2_mips16.
	(*movsi_internal): Renamed from movsi_internal.  Test reg_or_0_operand.
	(movhi, movqi, movsf, movdf): Use mips_legitimize_move.
	(*movhi_internal): Renamed from movhi_internal.  Test reg_or_0_operand.
	Use move_operand as source predicate.  Remove 'K' constraint.
	(*movqi_internal): Likewise movqi_internal.
	(*movsf_hardfloat): Renamed from movsf_internal1.  Test
	reg_or_0_operand.  Use move_operand as source predicate.
	(*movsf_softfloat): Likewise movsf_internal2.
	(*movdf_hardfloat_64bit): Likewise movsf_internal1a.
	(*movdf_hardfloat_32bit): Likewise movsf_internal1b.
	(*movdf_softfloat): Likewise movdf_internal2.
	* config/mips/mips.c (move_operand): Match arbitrary CONST_INTs
	for DImode if !TARGET_64BIT.
	(mips_legitimize_move): Simplify accordingly.

2004-03-11  Josef Zlomek  <zlomekj@suse.cz>

	PR/14362
	* var-tracking.c (struct variable_def): Added field refcount.
	(variable_htab_free): Decrease the refcount and delete variable
	only if there are no more references.
	(unshare_variable): New function.
	(vars_copy_1): Increase refcount instead of copying the variable.
	(variable_union): Share the variables where possible, unshare
	the variables if needed.
	(variable_different_p): Return false if var1 and var2 are
	the same structure.
	(variable_was_changed): Init the refcount of new variable.
	(set_frame_base_location): Unshare variable if needed.
	(set_variable_part): Init the refcount of new variable.
	Unshare the variables if needed.
	(delete_variable_part): Unshare the variables if needed.
	(emit_notes_for_differences_1): Init the refcount of new variable.
	(vt_add_function_parameters): Do not add function parameters to
	IN set of ENTRY_BLOCK_PTR because it is unused anyway.
	(vt_initialize): Do not add frame_base_decl to IN set of
	ENTRY_BLOCK_PTR because it is unused anyway.

2004-03-11  Josef Zlomek  <zlomekj@suse.cz>

	* var-tracking.c (vars_copy_1): Cleanup and speedup chain operations.
	(vars_copy): Likewise.
	(variable_union): Likewise.
	(set_variable_part): Likewise.
	(delete_variable_part): Likewise.

2004-03-11  Kazu Hirata  <kazu@cs.umass.edu>

	* c-typeck.c, combine.c, cse.c, dominance.c, et-forest.h,
	ggc-page.c, var-tracking.c, config/fp-bit.c, config/c4x/c4x.c,
	config/cris/cris.c, config/i386/ppro.md, config/i860/i860.c,
	config/i860/i860.h, config/m32r/m32r.h, config/m32r/xm-m32r.h,
	config/m68hc11/m68hc11.h, config/m68hc11/m68hc11.md,
	config/mips/mips.c, config/mmix/mmix.c, config/ns32k/ns32k.h,
	config/pa/pa.c, config/pa/pa32-regs.h, config/pa/pa64-regs.h,
	config/pdp11/pdp11.h, config/rs6000/rs6000.c,
	config/stormy16/stormy16.c: Fix comment typos and formatting.

2004-03-11  Nathanael Nerode  <neroden@gcc.gnu.org>

	* configure: Regenerate, since I forgot to while committing Paolo's
	changes.

2004-03-08  Paolo Bonzini  <bonzini@gnu.org>

	PR ada/14131
	Move language detection to the top level.
	* configure.ac: Remove code to detect languages,
	it now lives exclusively in the top level.
	* aclocal.m4 (gcc_AC_PROG_GNAT): Moved to the
	top level, renamed to ACX_PROG_GNAT.

2004-03-10  Richard Henderson  <rth@redhat.com>

	* c-pch.c (c_common_no_more_pch): Update for gt_pch_use_address
	extra arguments.
	* config.host (*-*-solaris2*, *-*-linux*): Add out_host_hook_obj
	and host_xmake_file fragments.
	* ggc-common.c (gt_pch_save): Update for gt_pch_get_address change.
	(gt_pch_restore): Similarly for gt_pch_use_address.
	(default_gt_pch_get_address): New.
	(mmap_gt_pch_get_address): Split out of gt_pch_save.
	(default_gt_pch_use_address): Split out of gt_pch_restore.
	(mmap_gt_pch_use_address): Likewise.
	* hooks.c (hook_voidp_size_t_null): Remove.
	(hook_bool_voidp_size_t_false): Remove.
	* hooks.h: Likewise.
	* hosthooks-def.h (HOST_HOOKS_GT_PCH_GET_ADDRESS): Use one of the
	default_ or mmap_ definitions.
	(HOST_HOOKS_GT_PCH_USE_ADDRESS): Likewise.
	* hosthooks.h (struct host_hooks): Update gt_pch_get_address
	and gt_pch_use_address.
	* config/host-linux.c, config/host-solaris.c: New files.
	* config/x-linux, config/x-solaris: New files.
	* config/rs6000/host-darwin.c (darwin_rs6000_gt_pch_get_address):
	Update for changed definition.
	(darwin_rs6000_gt_pch_use_address): Likewise.
	* doc/hostconfig.texi: Update docs.

2004-03-10  Richard Henderson  <rth@redhat.com>

	PR c/14517
	* c-decl.c (grokdeclarator): Don't warn for duplicate qualifiers
	except for pedantic c90 mode.

2004-03-10  Kelley Cook  <kcook@gcc.gnu.org>

	* configure.ac: Bump AC_PREREQ to 2.59.
	* configure: Regenerate.

2004-03-10  Uros Bizjak  <uros@kss-loka.si>

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

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

2004-03-10  Anthony Green  <green@redhat.com>

	* doc/invoke.texi (ARM Options): Fix -mpfu typo.

2004-03-10  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/aix.h (TARGET_OS_CPP_BUILTINS): Rename to ...
	(TARGET_OS_AIX_CPP_BUILTINS): this.  Conditionally define
	__LONGDOUBLE128.
	* config/rs6000/aix41.h (TARGET_OS_CPP_BUILTINS): Use
	TARGET_OS_AIX_CPP_BUILTINS.
	* config/rs6000/aix43.h (TARGET_OS_CPP_BUILTINS): Same.
	* config/rs6000/aix51.h (TARGET_OS_CPP_BUILTINS): Same.
	* config/rs6000/aix52.h (TARGET_OS_CPP_BUILTINS): Same.
	* config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Revert
	previous change.

2004-03-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* fold-const.c (tree_expr_nonnegative_p): Add more builtin cases.

2004-03-10  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
	__LONGDOUBLE128 on AIX.

2004-03-10  Andrew Haley  <aph@redhat.com>

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

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

2004-03-08  Joel Sherrill  <joel@oarcorp.com>

	PR target/14480
	* config/rs6000/t-rtems: Add missing file on branch.

2004-03-10  Ulrich Weigand  <uweigand@de.ibm.com>

	* dbxout.c (dbxout_symbol_location): Do not output references
	to optimized-out constant pool symbols.

2004-03-10  Andreas Schwab  <schwab@suse.de>

	* config/ia64/ia64.md (divsi3, udivsi3): Remove unused variable
	twon34_r.

2004-03-09  James E Wilson  <wilson@specifixinc.com>

	* alias.c (alias_sets_might_conflict_p): New.
	* c-typeck.c (build_c_cast): Call it if warn_strict_aliasing > 1.
	* common.opt (Wstrict-aliasing=): New.
	* flags.h (warn_strict_aliasing): Change type to int.
	* opts.c (warn_strict_aliasing): Change type to int.
	(common_handle_option): Handle OPT_Wstrict_aliasing_.
	* tree.h (alias_sets_might_conflict_p): Declare it.
	* doc/invoke.tex (-Wstrict-aliasing=2): Document it.

2004-03-10  Roman Zippel  <zippel@linux-m68k.org>

	PR bootstrap/12371
	* config/m68k/m68k.h (FIXED_REGISTERS): Add arg pointer.
	(CALL_USED_REGISTERS): Likewise.
	(REG_CLASS_CONTENTS): Likewise.
	(REG_ALLOC_ORDER): New.
	(REGNO_REG_CLASS): Use regno_reg_class.
	* config/m68k/m68k.c: Add regno_reg_class array.

2004-03-09  Steve Ellcey  <sje@cup.hp.com>

	* config/ia64/ia64.md (divsi3): Fix algorithm.
	  (udivsi3): Ditto.
	  (setf_exp_xf): Remove '*' from name.
	* testsuite/gcc.dg/20040309-1.c: New test.

2004-03-09  Ian Lance Taylor  <ian@wasabisystems.com>

	* system.h (SUNOS4_SHARED_LIBRARIES): Poison.
	* collect2.c: Remove SUNOS4_SHARED_LIBRARIES code.
	* config/sparc/aout.h (TARGET_ASM_SELECT_SECTION): Don't define.
	* config/sparc/sparc.c (sparc_aout_select_section): Remove.
	(sparc_aout_select_rtx_section): Don't check
	SUNOS4_SHARED_LIBRARIES.
	* config/sparc/sparc.h (SUNOS4_SHARED_LIBRARIES): Don't define.

2004-03-10  Hans-Peter Nilsson  <hp@axis.com>

	PR other/14474
	* doc/md.texi (Pattern Ordering, Dependent Patterns)
	(Jump Patterns, Looping Patterns): Wrap in separate "@ifset
	INTERNALS".

2004-03-09  Zack Weinberg  <zack@codesourcery.com>

	* config/ia64/hpux.h (MULTILIB_DEFAULTS): Define.
	(LIBGCC_SPEC): Update to match.

2004-03-09  Zack Weinberg  <zack@codesourcery.com>

	* c-decl.c (last_function_parms, last_function_parm_tags)
	(last_function_parm_others, current_function_parms)
	(current_function_parm_tags, current_function_parm_others):
	Delete.
	(ARG_INFO_PARMS, ARG_INFO_TAGS, ARG_INFO_TYPES, ARG_INFO_OTHERS):
	New macros.
	(grokdeclarator): For function definitions, save the arg-info
	block from the declarator in DECL_ARGUMENTS.
	(grokparms): Do not write to last_function_parm*.  Use ARG_INFO_*
	macros to operate on arg-info block.  Can assume ARG_INFO_PARMS
	contains only PARM_DECLs.  Improve diagnostics.
	(get_parm_info): Use ARG_INFO_* macros.  Improve comments and
	diagnostics.  Disable some expensive checks if not ENABLE_CHECKING.
	(store_parm_decls_newstyle): Take the function to operate on,
	and an arg-info block, as arguments; don't get anything from
	current_function_* globals.
	(store_parm_decls_oldstyle): Likewise.
	(store_parm_decls): Pass fndecl and its arg-info block down to
	store_parm_decls_newstyle/oldstyle.  Send functions with empty
	argument lists through store_parm_decls_newstyle to reduce
	overhead.
	(pushdecl): Comment on the problems with the call to copy_node.
	Clear DECL_ARGUMENTS of the old node after copying it, if it
	is an arg-info block instead of a chain of decls.
	(start_function): Do not manipulate current_function_parm* or
	last_function_parm*.

2004-03-09  Roger Sayle  <roger@eyesopen.com>
	    Andrew Pinski  <pinskia@physics.uc.edu>

	* ifcvt.c (noce_try_sign_mask): New function to transform
	"x = (y < 0) ? z : 0" into the equivalent "x = (y >> C) & z".
	(noce_process_if_block): Call noce_try_sign_mask.

2004-03-09  Andrew Pinski  <apinski@apple.com>

	* c-typeck.c (tagged_types_tu_compatible_p):
	Fix typo.

2004-03-09  Roger Sayle  <roger@eyesopen.com>

	* simplify-rtx.c (simplify_const_relational_operation): New function
	renamed from simplify_relational_operation.
	(simplify_relational_operation): Change prototype to accept an
	additional mode argument.  Call simplify_const_relational_operation.
	(simplify_gen_relational): Update simplify_relational_operation call.
	(simplify_ternary_operation): Update simplify_relational_operation
	subroutine call to use simplify_const_relational_operation instead.

	* rtl.h (simplify_const_relational_operation): Prototype here.
	(simplify_relational_operation): Add addtional mode argument.

	* combine.c (combine_simplify_rtx): Update calls to
	simplify_relational_operation.
	(simplify_set): Likewise.
	(gen_binary): Likewise.
	* cse.c (fold_rtx): Likewise.
	* dojump.c (compare_from_rtx): Likewise.
	(do_compare_rtx_and_jump): Likewise.
	* integrate.c (subst_constants): Likewise.
	* unroll.c (simplify_cmp_and_jump_insns): Likewise.

2004-03-09  Kazu Hirata  <kazu@cs.umass.edu>

	* config/m32r/m32r.md: Remove all define_peephole's.

2004-03-09  Alan Modra  <amodra@bigpond.net.au>

	* config/rs6000/rs6000.md: Remove trailing whitespace.

2004-03-08  Eric Christopher  <echristo@redhat.com>

	* Makefile.in (site.exp): Add libiconv variable definition.

2004-03-09  Hans-Peter Nilsson  <hp@axis.com>

	* configure: Regenerate for config/accross.m4 correction.

2004-03-08  Joel Sherrill  <joel@oarcorp.com>

	PR target/14480
	* config/rs6000/t-rtems: Add missing file on branch.

2004-03-08  Roger Sayle  <roger@eyesopen.com>

	PR middle-end/14289
	* c-typeck.c (c_mark_addressable): A register variable should
	be considered global if its not automatic, i.e. TREE_PUBLIC,
	TREE_STATIC or DECL_EXTERNAL.
	* function.c (put_var_into_stack): Call abort when placing a
	hard register into the stack, if x_parm_reg_stack_loc is NULL.

2004-03-08  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.md ("*extendqidi2_short_displ"): Add CC clobber.
	("*extendqisi2_short_displ"): Likewise.

2004-03-08  Kazu Hirata  <kazu@cs.umass.edu>

	* config/pdp11/pdp11.c (comparison_operator_index): Remove.
	(comp_operator): Likewise.
	* config/pdp11/pdp11-protos.h: Remove corresponding
	prototypes.

2004-03-08  Eric Botcazou  <ebotcazou@act-europe.fr>

	* expr.c (highest_pow2_factor_for_type): Rename into
	highest_pow2_factor_for_target.  Use DECL_ALIGN instead of
	TYPE_ALIGN when the target is a COMPONENT_REF.
	(expand_assignment): Ajust call to highest_pow2_factor_for_type.

2004-03-08  Alan Modra  <amodra@bigpond.net.au>

	* config/rs6000/rs6000.c: Formatting fix.
	(legitimate_offset_address_p): Correct offset range check.

	* config/rs6000/rs6000.c (rs6000_override_options): Don't override
	-msoft-float by -mcpu.  Consolidate similar code for MASK_MULTIPLE
	and MASK_STRING.

2004-03-07  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/rs6000.md (ashrdi3): Do not call ashrdi3_no_power
	for little endian.
	("ashrdi3_no_power"): Disable for little endian.
	(ashrdi3): Same.

2004-03-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* fold-const.c (tree_expr_nonnegative_p): Reformat checks for
	builtins.

2004-03-08  Hans-Peter Nilsson  <hp@axis.com>

	PR target/14471
	* configure.ac (Target-specific assembler checks) <cris-*-*>: New
	case, checking for -no-mul-bug-abort option.
	* configure, config.in: Regenerate.
	* doc/invoke.texi (CRIS Options): Document -mmul-bug-workaround
	and -mno-mul-bug-workaround.
	* config/cris/cris.md ("smulsi3_highpart", "umulsi3_highpart")
	("mulsidi3", "umulsidi3"): Prefix output template with "%!".
	("umulhisi3", "umulqihi3", "mulsi3", "mulqihi3", "mulhisi3"):
	Ditto.  Make attribute "slottable" dependent on TARGET_MUL_BUG.
	* config/cris/mulsi3.asm (__Mul) [__CRIS_arch_version >= 10]: Make
	sure mulu.d is not last on cache-line.
	* config/cris/cris.h (ASM_SPEC): Translate -mno-mul-bug-workaround
	into -no-mul-bug-abort depending on HAVE_AS_MUL_BUG_ABORT_OPTION.
	(TARGET_MASK_MUL_BUG, TARGET_MUL_BUG): New macros.
	(TARGET_SWITCHES): New options -mmul-bug-workaround and
	-mno-mul-bug-workaround.
	(TARGET_DEFAULT): Include TARGET_MASK_MUL_BUG.
	(PRINT_OPERAND_PUNCT_VALID_P): Include '!'.
	* config/cris/cris.c (cris_operand_extend_operator): Clarify
	relation to MULT in head comment.
	(cris_op_str): Abort for MULT.
	(cris_print_operand) <case '!'>: New case.

2004-03-08  Alan Modra  <amodra@bigpond.net.au>

	PR debug/11983
	* dwarf2out.c (enum dw_val_class): Rename dw_val_class_float to
	dw_val_class_vec.  Replace use throughout file.
	(dw_float_const): Delete.
	(dw_vec_const): New.
	(dw_val_struct_union): Rename val_float to val_vec.  Replace use
	throughout file.
	(add_AT_vec): Rename from add_AT_float.  Add elt_size param.
	(same_dw_val_p): Adjust vec comparison.  Use memcmp.
	(size_of_die): Adjust dw_val_class_vec sizing.
	(output_die): Output dw_val_class_vec.
	(insert_int, extract_int, insert_float): New functions.
	(add_const_value_attribute): Use insert_float for CONST_DOUBLE.
	Handle CONST_VECTOR.
	(add_location_or_const_value_attribute): Handle CONST_VECTOR.

2004-03-07  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/rs6000.c (rs6000_parse_abi_options): SPE and
	AltiVec abi cannot co-exist.

	* config/rs6000/eabispe.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Same.

2004-03-07  Jan Hubicka  <jh@suse.cz>

	* except.c (emit_to_new_bb_before): Break fallthru edges.

2004-03-07  Stephane Carrez  <stcarrez@nerim.fr>

	* config/m68hc11/m68hc11.md ("*lshrsi3_const"): Disable for 68HC12.
	("*lshrsi3"): Also accept an immediate for 68HC12.
	("*ashrsi3_const"): Likewise.
	("*ashrsi3"): Likewise.
	("*ashlsi3_const"): Likewise.
	("*ashlsi3"): Likewise.
	("cmphi_1_hc12"): Compare two hard register by pushing them and
	comparing with a pop; don't use a split for that.
	("cmphi split"): Disable compare split for 68HC12.

	* config/m68hc11/m68hc11.c (m68hc11_notice_update_cc): Invalidate
	the status operands if they have side effects.

2004-03-07  Kazu Hirata  <kazu@cs.umass.edu>

	* defaults.h (LEGITIMIZE_ADDRESS): Provide a default
	definition.
	* config/arc/arc.h, config/fr30/fr30.h, config/frv/frv.h,
	config/h8300/h8300.h, config/ia64/ia64.h,
	config/mcore/mcore.h, config/mmix/mmix.h,
	config/ns32k/ns32k.h, config/pdp11/pdp11.h,
	config/stormy16/stormy16.h, config/v850/v850.h,
	config/vax/vax.h (LEGITIMIZE_ADDRESS): Remove.
	* doc/tm.texi (LEGITIMIZE_ADDRESS): Mention the default
	definition.

2004-03-07  Roger Sayle  <roger@eyesopen.com>

	* fold-const.c (fold) <IOR_EXPR>: Fold x | x as x.
	<XOR_EXPR>: Fold x ^ x as zero.
	<AND_EXPR>: Fold x & x as x.

2004-03-07  Roger Sayle  <roger@eyesopen.com>

	* fold-const.c (fold) <EQ_EXPR>: Rewrite optimization to transform
	"foo++ == const" into "++foo == const+incr".

2004-03-07  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.c (mips_in_small_data_p): Return false if
	TARGET_ABICALLS.

2004-03-06  Stephane Carrez  <stcarrez@nerim.fr>

	* config/m68hc11/m68hc11.c (m68hc11_gen_movhi): Use 2,-sp to push
	the stack register.
	(expand_prologue): Don't make an interrupt or a trap handler a far
	symbol.
	(m68hc11_initial_elimination_offset): Likewise.

2004-03-06  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.c (alpha_in_small_data_p): False for functions.

2004-03-06  Kazu Hirata  <kazu@cs.umass.edu>

	* config/ns32k/ns32k-protos.h: Add a prototype for
	ns32k_notice_update_cc.
	* config/ns32k/ns32k.c (ns32k_notice_update_cc): New.
	* config/ns32k/ns32k.h (NOTICE_UPDATE_CC): Call
	ns32k_notice_update_cc.

2004-03-06  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.md ("load_multiple", "*load_multiple_di",
	"*load_multiple_si"): Allow only if reload_completed.
	("store_multiple", "*store_multiple_di", "*store_multiple_si"):
	Likewise.

2004-03-06  Kazu Hirata  <kazu@cs.umass.edu>

	* config/vax/vax-protos.h: Add a prototype for
	vax_notice_update_cc.
	* config/vax/vax.c (vax_notice_update_cc): New.
	* config/vax/vax.h (NOTICE_UPDATE_CC): Call
	vax_notice_update_cc.

2004-03-06  David Edelsohn  <edelsohn@gnu.org>

	* collect2.c (main): Only export initfunc and finifunc if
	LD_INIT_SWITCH not defined.
	(scan_prog_file): Only export constructors and destructors if
	LD_INIT_SWITCH not defined.  Only export symbols not found in
	shared objects.

2004-03-06  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* pa.md (icacheflush): Reorder operands to make match_scratch operand
	last.
	* pa.h (INITIALIZE_TRAMPOLINE): Remove unnecessary scratch argument
	from calls to gen_icacheflush.

2004-03-06  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.h (MASK_LONG_DOUBLE_128): New.
	(TARGET_LONG_DOUBLE_128): New.
	(TARGET_SWITCHES): Add long-double-{128,64}.
	(TARGET_HAS_XFLOATING_LIBS): Default to TARGET_LONG_DOUBLE_128.
	(LONG_DOUBLE_TYPE_SIZE): Honor TARGET_LONG_DOUBLE_128.
	(LIBGCC2_LONG_DOUBLE_TYPE_SIZE): New.
	(WIDEST_HARDWARE_FP_SIZE): New.
	(TARGET_CPU_CPP_BUILTINS): Define __LONG_DOUBLE_128__.
	* config/alpha/alpha.c (override_options): Clear MASK_LONG_DOUBLE_128
	if TARGET_VAX_FLOAT.
	* config/alpha/osf5.h (LONG_DOUBLE_TYPE_SIZE): Remove.
	(TARGET_DEFAULT): Set MASK_LONG_DOUBLE_128.

2004-03-06  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.c (alpha_swapped_comparison_operator): Fix
	botched rtx class conversion.

2004-03-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* tree.h (BUILTIN_EXP10_P, BUILTIN_EXPONENT_P, BUILTIN_SQRT_P,
	BUILTIN_CBRT_P, BUILTIN_ROOT_P): New macros.

	* builtins.c (fold_builtin_logarithm, fold_builtin): Use new
	macros.
	* fold-const.c (fold_mathfn_compare, fold): Likewise.

2004-03-06  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR target/14343
	* config/i386/i386.md (movv2di_internal): Conditionalize on
	TARGET_SSE, not TARGET_SSE2.

2004-03-05  Chris Demetriou  <cgd@broadcom.com>

	* config.gcc (mips64orion-*-elf*, mips64orionel-*-elf*): Delete
	duplicated line.

2004-03-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtins.c: Consistently use logN not log* in comments.

2004-03-05  Andreas Krebbel  <krebbel1@de.ibm.com>

	* rtl.h (mem_expr_equal_p): Function prototype added.
	* cfgcleanup.c (merge_memattrs): New function.
	(flow_find_cross_jump): Call merge_memattrs for matching insns.
	* emit-rtl.c (mem_expr_equal_p): New function.

2004-03-05  Ziemowit Laski  <zlaski@apple.com>

	* objc/objc-act.c (synth_module_prologue): Const-qualify
	objc_selector type if using the GNU runtime; fix generated
	signatures for objc_msg_lookup and objc_msg_lookup_super
	to match what GNU ObjC headers provide; reformat and clean up.
	(synth_self_and_ucmd_args): Use previously constructed (and
	hence possibly const-qualified) objc_selector type.

2004-03-05  Kazu Hirata  <kazu@cs.umass.edu>

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

2004-03-05  Jason Merrill  <jason@redhat.com>

	* tree.h (TYPE_HASH): Use TYPE_UID.
	(TREE_HASH): New macro with old definition of TYPE_HASH.
	* tree.c (build_type_attribute_variant): Use iterative_hash_object.
	(build_array_type, build_function_type): Likewise.
	(build_method_type_directly): Likewise.
	(build_offset_type, build_complex_type): Likewise.
	(type_hash_list, attribute_hash_list): Likewise. Now static.
	* except.c: s/TYPE_HASH/TREE_HASH/.

2004-03-05  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/xtensa.c (function_arg): Handle 16-byte aligned args.
	(xtensa_va_start): Initialize __va_stk to ($arg_ptr - 32).  Adjust
	__va_ndx by 2 words when referencing an argument on the stack.
	(xtensa_va_arg): Handle 16-byte aligned args.  Adjust __va_ndx by 2
	words when an arg on the stack is first seen.

2004-03-05  Paul Brook  <paul@codesourcery.com>

	* arm.h (ARM_FLAG_VFP): Remove.
	(ARM_FLAG_ATPCS, CIRRUS_FIX_INVALID_INSNS): Renumber.
	* netbsd-elf.h (ARM_FLAG_VFP): Remove.

2004-03-05  Paul Brook  <paul@codesourcery.com>

	* function.c (assign_parms): Include pretend alignment offset.

2004-03-05  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* stor-layout.c (layout_type, case FUNCTION_TYPE): Make size
	FUNCTION_BOUNDARY, not POINTER_SIZE * 2.

2004-03-05  Ian Lance Taylor  <ian@wasabisystems.com>

	* configure.ac: When passing --enable-languages to subdir
	configure when host != build, make sure we don't pass an empty
	value.
	* configure: Regenerate.

2004-03-05  Nathan Sidwell  <nathan@codesourcery.com>

	PR 13577
	* gcc.c (cc1_options): Robustify -auxbase-strip from multiple -o
	options.

2004-03-05  Paolo Bonzini  <bonzini@gnu.org>

	* simplify-rtx.c (simplify_relational_operation): If
	flag_wrapv is set, do not move terms between the two
	side of a relational operator.

2004-03-05  Paolo Bonzini  <bonzini@gnu.org>

	* rtlanal.c: Include target.h and output.h
	(rtx_cost, address_cost, default_address_cost): Move from...
	* cse.c (rtx_cost, address_cost, default_address_cost):
	... this file.
	* rtl.h (rtx_cost, address_cost): Move under rtlanal.c.
	* Makefile.in: Adjust dependencies.

2004-03-05  Paolo Bonzini <bonzini@gnu.org>

	* cse.c (cse_end_of_basic_block): Make static.
	* local-alloc.c (function_invariant_p): Move to
	reload1.c.
	* loop.c (libcall_other_reg, record_excess_regs):
	Make static.
	* reload1.c (function_invariant_p): Moved here
	from local-alloc.c, made static.
	* rtl.h (cse_end_of_basic_block, function_invariant_p,
	libcall_other_reg, record_excess_regs): Remove
	declarations.

2004-03-05  Kazu Hirata  <kazu@cs.umass.edu>

	* config/m32r/m32r.c (signed_comparison_operator): Add a
	missing parenthesis.

2004-03-04  Ian Lance Taylor  <ian@wasabisystems.com>

	* ggc-common.c (gt_pch_restore): Don't unmap addr unless we are
	going to call mmap again.  Read the file into the right place.
	Give a fatal error if we have to relocate.

2004-03-04  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/xtensa.c (xtensa_return_in_msb): New function.
	(TARGET_RETURN_IN_MSB): Define to xtensa_return_in_msb.

2004-03-05  Hans-Peter Nilsson  <hp@axis.com>

	PR other/14354
	* config/fp-bit.c (_fpdiv_parts): Do not round when pack_d would
	round the same.  When rounding, clear bits that would cause a
	second rounding in pack_d.
	(_fpmul_parts): Ditto.  Remove #if 0:d code.

2004-03-04  Ziemowit Laski  <zlaski@apple.com>

	PR c++/14425, c++/14426
	* config/rs6000/altivec.h (vec_splat_s8, vec_splat_s16,
	vec_splat_s32, vec_splat_u8, vec_splat_u16, vec_splat_u32):
	Change C++ definitions to accept a 'const int' argument;
	the prototypes already do.
	* config/rs6000/rs6000.c (rs6000_common_init_builtins):
	Rename v4si_ftype_char, v8hi_ftype_char, v16qi_ftype_char,
	v4sf_ftype_v4si_char, v4si_ftype_v4sf_char, v4si_ftype_v4si_char,
	v8hi_ftype_v8hi_char, v16qi_ftype_v16qi_char,
	v16qi_ftype_v16qi_v16qi_char, v8hi_ftype_v8hi_v8hi_char,
	v4si_ftype_v4si_v4si_char and v4sf_ftype_v4sf_v4sf_char to
	end in ..._int; change them to accept an int instead of a char
	as the last parameter.

2004-03-04  Phil Edwards  <phil@codesourcery.com>

	* genmultilib: Change '=' to '-' when translating option names
	to directory names.

2004-03-04  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* expr.c (expand_expr_real, case COMPONENT_REF): Get proper type of
	stack slot for temp used for result of BLKmode but in integral mode.

2004-03-04  Jan Hubicka  <jh@suse.cz>

	* reload.c (find_reloads): Reorganize if seqeunce to switch.

	* cfgrtl.c (rtl_redirect_edge_and_branch): Set the source BB as dirty.
	(cfglayout_redirect_edge_and_branch): Set the source BB as dirty.

2004-03-04  Steve Ellcey  <sje@cup.hp.com>

	* config/ia64/ia64.md (divdf3_internal_thr): Fix algorithm.
	* testsuite/gcc.dg/20040303-1.c: New test.

2004-03-04  Steven Bosscher  <stevenb@suse.de>

	* ppro.md: Rewrite as a DFA pipeline description.
	* i386.md: Remove all uses of the ppro_uops attribute.
	* i386.c: (ix86_safe_ppro_uops, ix86_dump_ppro_packet,
	ix86_reorder_insn, ix86_sched_reorder_ppro, ix86_sched_init,
	ix86_sched_reorder, ix86_variable_issue,
	struct ix86_sched_data, TARGET_SCHED_VARIABLE_ISSUE,
	TARGET_SCHED_INIT, TARGET_SCHED_REORDER): Remove.
	(ia32_use_dfa_pipeline_interface): Add TARGET_PENTIUMPRO.
	(ia32_multipass_dfa_lookahead): Add TARGET_PENTIUMPRO.
	* athlon.md (athlon_ssecmp_load): Fix comment

2004-03-04  Stuart Hastings  <stuart@apple.com>

	* doc/invoke.texi: Document -mlongcall for Darwin/PPC.

2004-03-04  Stuart Hastings  <stuart@apple.com>

	* config/i386/darwin.h: Darwin/x86 doesn't support CPUs before
	686, tell Darwin assembler to allow prefetch insns, non-empty def
	of SUBTARGET_OPTION_TRANSLATE_TABLE.

2004-03-04  DJ Delorie  <dj@redhat.com>

	PR optimization/14282
	* sched-deps.c (sched_analyze_insn): Allow a stack adjustment
	between a call and the assignment of its return value.

2004-03-04  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.c: Put a comment for every function.

2004-03-04  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md: Add comments about peephole2's.

2004-03-04  Steven Bosscher  <stevenb@suse.de>

	* i386.h (TARGET_CPU_DEFAULT_nocona): Fix value.

2004-03-04  Jan Hubicka  <jh@suse.cz>

	* cfgcleanup.c (thread_jump): Update call of cselib_init.
	* cselib.c (cselib_record_memory): New static variable.
	(cselib_lookup_mem, cselib_record_set, cselib_record_sets):
	Give up on memories when asked for.
	(cselib_init): Accept new argument.
	* cselib.h (cselib_init): Update prototype.
	* gcse.c (local_cprop_pass): Update call of cselib_init.
	* loop.c (load_mems): Update call of cselib_init.
	* postreload.c (reload_cse_regs_1): Update call of cselib_init.
	* sched-deps.c (sched_analyze): Update call of cselib_init.

2004-03-04  David Edelsohn  <edelsohn@gnu.org>
	    GP <gp@qnx.com>

	* config/rs6000/rs6000.c (output_function_profiler): Append @plt
	when compiling PIC.

2004-03-04  Josef Zlomek  <zlomekj@suse.cz>

	PR/14362
	* var-tracking.c (track_expr_p): Do not track variables which
	should be ignored for debugging purposes.

2004-03-04  Alan Modra  <amodra@bigpond.net.au>

	* real.c (encode_ibm_extended): Don't bother rounding low double.
	* c-cppbuiltin.c (builtin_define_float_constants): Tweak MAX
	when fmt->pnan < fmt->p.

2004-03-04  Eric Christopher  <echristo@redhat.com>

	* config/mips/mips.h (FUNCTION_ARG_REGNO_P): Fix to check
	only range of valid arg registers and fixed_regs.

2004-03-04  Alan Modra  <amodra@bigpond.net.au>

	PR target/14406
	* config/rs6000/rs6000.md (abstf2, abstf2+1): Delete define_insn.
	(abstf2, abstf2_internal): New define_expand.

2004-03-04  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR optimization/14235
	* expr.c (convert_move): Copy the source to a new pseudo
	when converting from a sub-word source to a larger-than-word
	register which conflicts with the source.

2004-03-03  Zack Weinberg  <zack@codesourcery.com>

	PR 13728
	* c-decl.c (diagnose_mismatched_decls): Issue an error for two
	parameters with the same name, unless one is a forward decl.
	Do not issue a redundant-redeclaration warning for forward
	decls of parameters.

2004-03-04  David Edelsohn  <edelsohn@gnu.org>

	* doc/install.texi (*-ibm-aix*): Document use of Bash to speed up
	configuration.

2004-03-03  Ian Lance Taylor  <ian@wasabisystems.com>

	* ggc-zone.c (ggc_pch_write_object): Don't align file pointer.

2004-03-04  Alan Modra  <amodra@bigpond.net.au>

	* target-def.h (TARGET_OPTF): Delete.
	* c-opts.c (TARGET_OPTF): Define.

2004-03-04  Jan Hubicka  <jh@suse.cz>

	* cselib.c (cselib_finish): Fix another miss-application of my previous
	patch.

2004-03-03  Mike Stump  <mrs@apple.com>

	Add framework support for darwin.

	* c-incpath.c: Include target.h and machmode.h.
	(add_path): Use a consistent style for cpp_dir.  Initialize
	p->construct to 0.
	(add_cpp_dir_path): New.
	(register_include_chains): Add use of extra_includes callback.
	(hook_void_int): Add.
	(target_c_incpath): Add.
	* c-incpath.h (add_cpp_dir_path): New.
	(target_c_incpath_s): Add.
	(target_c_incpath): Add.
	(C_INCPATH_INIT): Add.
	* c-opts.c (c_common_missing_argument,
	c_common_handle_option): Add -F argument processing.
	* c.opt: Add -F argument processing.
	* gcc.c (trad_capable_cpp): Add -F argument processing.
	* cppfiles.c (find_file_in_dir): Update to use construct
	callback.
	(search_path_exhausted, cpp_get_path, cpp_get_buffer,
	cpp_get_prev): New.
	(_cpp_find_file): Use search_path_exhausted.
	(make_cpp_dir): Initialize construct to 0.
	* cpplib.h (missing_header_cb
	cpp_get_path, cpp_get_buffer, cpp_get_file, cpp_get_prev): New.
	(cpp_callbacks): Add missing_header
	(cpp_dir): Add construct.
	* target-def.h: (TARGET_OPTF): New.
	* hooks.c (hook_void_int, hook_void_charptr): Add.
	* hooks.h (hook_void_int, hook_void_charptr): Add.
	* Makefile.in (c-incpath.o) : Add $(TARGET_H) and
	$(MACHMODE_H) dependencies.
	* doc/invoke.texi (Darwin Options): Document -F.
	* doc/tm.texi (TARGET_EXTRA_INCLUDES): Add.
	(TARGET_OPTF): Add.
	* fix-header.c (target_c_incpath): Add.

	* config/darwin-c.c: Add c-incpath.h include.
	(using_frameworks, find_subframework_file,
	find_subframework_header, add_system_framework_path,
	frameworks_in_use, num_frameworks, max_frameworks,
	add_framework, find_framework, struct framework_header,
	framework_header_dirs, framework_construct_pathname,
	find_subframework_file, add_system_framework_path,
	add_framework_path, framework_defaults,
	darwin_register_frameworks, find_subframework_header): Add.
	* config/darwin.h (TARGET_EXTRA_INCLUDES, TARGET_OPTF): New.
	(TARGET_OPTION_TRANSLATE_TABLE): Add -framework support.
	(CPP_SPEC): Add __APPLE_CC__ support.
	* t-darwin (darwin-c.o): Add c-incpath.h dependency.

2004-03-04  Jan Hubicka  <jh@suse.cz>

	* cselib.c (cselib_finish): Fix miss-application of my previous
	patch.

2004-03-03  Kazu Hirata  <kazu@cs.umass.edu>

	* hooks.c (hook_tree_tree_identity): New.
	* hooks.h: Add a prototype for hook_tree_tree_identity.
	* stmt.c (expand_asm_operands): Use targetm.md_asm_clobbers
	instead of MD_ASM_CLOBBERS.
	* system.h (MD_ASM_CLOBBERS): Poison.
	* target-def.h (TARGET_MD_ASM_CLOBBERS): New.
	(TARGET_INITIALIZER): Add TARGET_MD_ASM_CLOBBERS.
	* target.h (gcc_target): Add md_asm_clobbers.
	* config/i386/i386.c (TARGET_MD_ASM_CLOBBERS): New.
	(ix86_md_asm_clobbers): New.
	* config/i386/i386.h (MD_ASM_CLOBBERS): Remove.
	* doc/tm.texi (MD_ASM_CLOBBERS): Change to
	TARGET_MD_ASM_CLOBBERS.

2004-03-03  Stuart Hastings  <stuart@apple.com>

	* config.gcc: Arrange for Darwin/x86 to build libgcc_eh.a.

2004-03-03  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* config/sparc/sparc.c (noov_compare64_op): Fix typo.

	* config/sparc/sparc.h (ASM_FLOAT): Delete.
	(ASM_DOUBLE): Likewise.
	(ASM_LONGDOUBLE): Likewise.
	* config/sparc/pbd.h (ASM_INT_OP): Delete.

2004-03-03  Richard Henderson  <rth@redhat.com>

	PR opt/13862
	* cselib.c (cselib_record_sets): Don't record multiple sets in
	asm insns.

2004-03-03  Mostafa Hagog  <mustafa@il.ibm.com>

	* common.opt: Add description of the new -fgcse-after-reload flag.

	* flags.h (flag_gcse_after_reload): Declaration of global variable.

	* gcse.c (reg_used_on_edge ,reg_set_between_after_reload_p,
	reg_used_between_after_reload_p, rtx get_avail_load_store_reg,
	is_jump_table_basic_block, bb_has_well_behaved_predecessors,
	get_bb_avail_insn, hash_scan_set_after_reload,
	compute_hash_table_after_reload, eliminate_partially_redundant_loads,
	gcse_after_reload, get_bb_avail_insn): New functions to implement
	gcse-after-reload.
	(gcse_after_reload_main): New function, the main entry point to
	gcse-after-reload.

	* rtl.h (gcse_after_reload_main): Declaration of the new function.

	* opts.c (common_handle_option): Handle the -fgcse-after-reload flag.

	* toplev.c (flag_gcse_after_reload): Initialization.

	* passes.c (rest_of_handl_gcse2): Call gcse_after_reload_main.

	* params.def (PARAM_GCSE_AFTER_RELOAD_PARTIAL_FRACTION,
	PARAM_GCSE_AFTER_RELOAD_CRITICAL_FRACTION): New parameters for tuning
	the gcse after reload optimization.

	* params.h (GCSE_AFTER_RELOAD_PARTIAL_FRACTION,
	GCSE_AFTER_RELOAD_CRITICAL_FRACTION): Two macros to access the tuning
	parameters.

	* doc/invoke.texi: Documentation for the new flag gcse-after-reload.

2004-03-03  Nicolas Pitre <nico@cam.org>

	* config/arm/ieee754-df.S (muldf3, divdf3): Fix denormalization of
	small negative values.

2004-03-03  Jan Hubicka  <jh@suse.cz>

	* cselib.c (hash_table): Remove GTY marker.
	(reg_values): Turn into array.
	(used_regs): Likewise.
	(n_used_regs): New static variable.
	(reg_values_old): Kill.
	(clear_table): Update uses of arrays.
	(cselib_lookup): Likewise.
	(cselib_record_set): Likewise.
	(cselib_init): Likewise.
	(cselib_finish): Likewise.
	(cselib_udpate_varray_sizes): Kill.
	* cselib.h (cselib_update_varray_sizes): Kill.

2004-03-03  Paul Brook  <paul@codesourcery.com>

	* flow.c (ior_reg_cond, and_reg_cond): Remove stray ")".

2004-03-03  Jan Hubicka  <jh@suse.cz>

	* ggc-common.c (ggc_alloc_cleared_stat, ggc_realloc_stat):
	Rename from ...; make statistics transparent.
	(ggc_alloc_cleared, ggc_realloc_stat): ... these.
	(loc_descriptor): New structure.
	(hash_descriptor, eq_descriptor, loc_descriptor, cmp_statistics,
	add_statistics):
	New static function.
	(ggc_record_overhead, dump_statistics): New global function.
	* ggc-none.c (ggc_alloc_types_stat, ggc_alloc_stat, ggc_alloc_zone_stat,
	ggc_alloc_cleared_stat, ggc_realloc_stat, ggc_alloc_typed_stat): Rename
	from ...; accept locations
	(ggc_alloc_types, ggc_alloc, ggc_alloc_zone, ggc_alloc_cleared,
	ggc_realloc, ggc_alloc_typed): ... this one.
	from ...; accept locations
	* ggc-page.c (ggc_alloc_typed_stat, ggc_alloc_zone_stat,
	ggc_alloc_stat): Rename from ... ; pass locations
	* ggc-page.c (ggc_alloc_typed, ggc_alloc_zone, ggc_alloc):
	... this one.
	(ggc_alloc_stat): Record overehead.
	* ggc.h (ggc_alloc_types, ggc_alloc, ggc_alloc_zone, ggc_alloc_cleared,
	ggc_realloc, ggc_alloc_typed): Turn to macros
	(ggc_alloc_types_stat, ggc_alloc_stat, ggc_alloc_zone_stat,
	ggc_alloc_cleared_stat, ggc_realloc_stat, ggc_alloc_typed_stat): Declare.
	(dump_ggc_loc_satistics, ggc_record_overehead): Declare.
	* langhooks.h (lhd_make_node): Declare.
	(LANG_HOOKS_MAKE_TYPE): Default to new function,
	* langhooks.c (lhd_make_node): New.
	* rtl.c (rtx_alloc_stat, swallow_copy_rtx_stat): Rename from ... ; pass
	locations.
	(rtx_alloc, swallow_copy_rtx): ... this one.
	* rtl.h (rtx_alloc, swallow_copy_rtx): Turn to macros.
	* rtl.c (rtx_alloc_stat, swallow_copy_rtx_stat): Declare.
	* toplpev.c (finalize): Dump stats.
	* tree.c (make_node_stat, copy_node_stat, make_tree_vec_stat,
	build_tree_list_stat, tree_cons_stat, build?_stat,  build_decl_stat):
	Rename from ... ; pass locators.
	(make_node, copy_node, make_tree_vec, build_tree_list, tree_cons,
	build?,  build_decl): Declare.
	* tree.h (make_node_stat, copy_node_stat, make_tree_vec_stat,
	build_tree_list_stat, tree_cons_stat, build?_stat,  build_decl_stat):
	Declare.
	(make_node, copy_node, make_tree_vec, build_tree_list, tree_cons,
	build?,  build_decl): New macros.
	* Makefile.in (RTL_H, TREE_H): Add statistics.h dependency.
	* statistics.h: New file.

2004-03-03  Maciej W. Rozycki  <macro@ds2.pg.gda.pl>
	    Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.h (MASK_FIX_SB1): Bump.
	(MASK_FIX_R4400, TARGET_FIX_R4400): New macros.
	(TARGET_SWITCHES): Add -mfix-r4400 and -mno-fix-r4400.
	* config/mips/mips.c (mips_output_division): Fill the branch delay
	slot with a nop if TARGET_FIX_R4000.  Extend R4000 workarounds to
	TARGET_FIX_R4400.
	(mips_output_division): Adjust accordingly.
	(override_options): Make -march=r4400 imply -mfix-r4400 by default.
	* doc/invoke.texi: Document -mfix-r4400 and new errata workarounds.

2004-03-03  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.

2004-03-03  Kazu Hirata  <kazu@cs.umass.edu>

	* target.h: Remove texi jargons in comments.

2004-03-02  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/lib1funcs.asm (___fixunssfsi): Change the
	threshold to 0x4f.

	Revert:
	2004-02-27  Kazu Hirata  <kazu@cs.umass.edu>
	* config/h8300/fixunssfsi.c (__fixunssfsi): Enable on H8/300
	as well.
	* config/h8300/lib1funcs.asm (___fixunssfsi): Remove.
	* config/h8300/t-h8300 (LIB1ASMFUNCS): Remove _fixunssfsi_asm.

2004-03-02  Kazu Hirata  <kazu@cs.umass.edu>

	* doc/md.texi (cbranchmode4): New.

2004-03-02  Eric Christopher  <echristo@redhat.com>

	* config/mips/mips16.S: Change fixsfsi and fixdfsi to
	fix_trunc.
	* config/mips/mips.c (mips_init_libfuncs): Change accordingly.
	* config/mips/t-elf (LIB1ASMFUNCS): Ditto.
	* config/mips/t-isa3264 (LIB1ASMFUNCS): Ditto.
	* config/mips/t-r3900 (LIB1ASMFUNCS): Ditto.

2004-03-02  Richard Henderson  <rth@redhat.com>

	PR middle-end/11767
	* coverage.c (coverage_counter_ref): Set MEM_NOTRAP_P.
	* optabs.c (prepare_cmp_insn): Force trapping memories to registers
	before the compare, if flag_non_call_exceptions.

2004-03-02  Richard Henderson  <rth@redhat.com>

	PR middle-end/14327
	* stmt.c (expand_computed_goto): Do do_pending_stack_adjust before
	emitting the label, not after.

2004-03-02  Stephane Carrez  <stcarrez@nerim.fr>

	* config/m68hc11/m68hc11.c (m68hc11_addr_mode): New variable.
	(m68hc11_mov_addr_mode): Likewise.
	(m68hc11_override_options): Initialize them based on target.
	(register_indirect_p): Allow a MEM for indirect addressing modes and
	use flags to control what is allowed.
	(m68hc11_small_indexed_indirect_p): Use m68hc11_mov_addr_mode for
	supported addressing modes.
	(m68hc11_register_indirect_p): Use m68hc11_addr_mode.
	(go_if_legitimate_address_internal): Likewise.
	(m68hc11_indirect_p): Likewise and check the mode.
	(print_operand): Allow a (MEM (MEM)) and generate indirect addressing.

2004-03-02  Kazu Hirata  <kazu@cs.umass.edu>

	* builtins.c (BUILTIN_SETJMP_FRAME_VALUE): Remove.
	(expand_builtin_setjmp_setup): Use
	targetm.builtin_setjmp_frame_value instead of
	BUILTIN_SETJMP_FRAME_VALUE.
	* system.h (BUILTIN_SETJMP_FRAME_VALUE): Poison.
	* target-def.h (TARGET_BUILTIN_SETJMP_FRAME_VALUE): New.
	(TARGET_INITIALIZER): Add TARGET_BUILTIN_SETJMP_FRAME_VALUE.
	* target.h (gcc_target): Add builtin_setjmp_frame_value.
	* targhooks.c (default_builtin_setjmp_frame_value): New.
	* targhooks.h: Add a prototype for
	default_builtin_setjmp_frame_value.
	* doc/tm.texi (BUILTIN_SETJMP_FRAME_VALUE): Change to
	TARGET_BUILTIN_SETJMP_FRAME_VALUE.

2004-03-02  Stephane Carrez  <stcarrez@nerim.fr>

	* config/m68hc11/m68hc11.md (move peephole2): New peepholes to optimize
	sequences of moves.
	(add peepholes): New peepholes to optimize sequences adding small
	constants.
	(bset peepholes): New peepholes to transform an OR in a bset form
	(bclr peepholes): Likewise for bclr form.
	(cmp peepholes): New peepholes to avoid register copies when comparing.

2004-03-02  Stephane Carrez  <stcarrez@nerim.fr>

	* config/m68hc11/m68hc11.md ("*pushdi_internal"): New insn and split
	to separate push from moves.
	("*pushdf_internal"): Likewise.
	("*pushsf_internal"): Likewise.
	("*pushsi_internal"): Likewise.
	("movdi_internal"): Use define_insn_and_split; non push operand.
	("movdf_internal"): Likewise.
	("movsf_internal"): Likewise.
	("movsi_internal"): Likewise.
	("*movhi_68hc12", "*addhi3_68hc12"): Fix and tune constraints
	("*addhi3", "*subhi3", "*andhi3_mem", "*iorhi3_mem"): Likewise.
	("*ashlsi3_const1", "*lshrsi3_const1"): Likewise.

2004-03-02  Stephane Carrez  <stcarrez@nerim.fr>

	* config/m68hc11/m68hc11.md ("tstqi_z_used"): Use define_insn_and_split.
	("cmphi_z_used", "cmpqi_z_used"): Likewise.
	("movstrictsi", "movstricthi", "movstrictqi"): Likewise.
	("anddi3", "andsi3", "iordi3", "iorsi3"): Likewise.
	("xordi3", "xorsi3", "*logicalsi3_zexthi"): Likewise.
	("*logicalsi3_zextqi", "*logicalhi3_zexthi_ashift8"): Likewise.
	("logicalhi3_zexthi", "*logicalsi3_silshr16"): Likewise.
	("*logicalsi3_silshl16", "*logicalsi3_silshl16_zext"): Likewise.
	("*ashldi3_const32", "*ashldi3_const1", "addsi_silshr16"): Likewise.
	("addsi_andshr16", "*ashlsi3_const16_zexthi"): Likewise.
	("*lshrdi3_const32", "*lshrdi_const1"): Likewise.

2004-03-02  Stephane Carrez  <stcarrez@nerim.fr>

	* config/m68hc11/m68hc11.md (SOFT_TMP_REGNUM): Define.
	(SOFT_XY_REGNUM): Define.
	(cmp split): Use the above instead of hard coded numbers.
	(8-bit op split): No need to check the mode; allow Q_REG.
	(ashift split): Adjust the first operand if it uses the SP and we
	are pushing the shifted value.
	(plus shift split): Fix when a source is in register D+X.
	("doloop_end"): Pass dummy arguments to gen_rtx_NE.

2004-03-02  Stephane Carrez  <stcarrez@nerim.fr>

	* config/m68hc11/m68hc11.c (m68hc11_check_z_replacement): Fix when
	comparing with Z register.

2004-03-02  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* cfgloop.h (struct loop_desc): Removed.
	(struct loop): Fields simple, desc and has_desc removed.
	(simple_loop_p, count_loop_iterations): Declaration removed.
	* cfgloopanal.c (struct unmark_altered_insn_data): Removed.
	(unmark_altered, blocks_invariant_registers, unmark_altered_insn
	blocks_single_set_registers, invariant_rtx_wrto_regs_p_helper,
	invariant_rtx_wrto_regs_p, test_for_iteration, constant_iterations,
	simple_loop_exit_p, variable_initial_value, variable_initial_values,
	simple_condition_p, simple_increment, count_strange_loop_iterations,
	inverse, fits_in_mode_p, simple_loop_p, count_loop_iterations):
	Removed.
	* loop-iv.c (check_simple_exit, find_simple_exit): Update comments.

2004-03-02  Kazu Hirata  <kazu@cs.umass.edu>

	* genattrtab.c: Don't handle MATCH_INSN.
	* genrecog.c: Likewise.
	* gensupport.c: Likewise.
	* rtl.def (match_insn): Remove.
	* doc/md.texi (match_insn, match_insn2): Remove.

2004-03-02  Mark Mitchell  <mark@codesourcery.com>

	* doc/c-tree.texi (DECL_ASSEMBLER_NAME): Mention that using this
	macro results in memory allocation.

2004-03-02  David O'Brien  <obrien@FreeBSD.org>

	* config/freebsd-spec.h (FBSD_DYNAMIC_LINKER): Add.
	* config/alpha/freebsd.h (SUBTARGET_EXTRA_SPECS): Define
	%(fbsd_dynamic_linker),
	(LINK_SPEC): Use %(fbsd_dynamic_linker), and sync style with
	config/i386/freebsd.h
	* config/arm/freebsd.h: Ditto.
	* config/i386/freebsd.h: Ditto.
	* config/i386/freebsd64.h: Ditto.
	* config/ia64/freebsd.h: Ditto.
	* config/rs6000/sysv4.h: Ditto.
	* config/sparc/freebsd.h: Ditto.

2004-03-02  Loren James Rittle  <ljrittle@acm.org>

	* doc/install.texi (*-*-freebsd*): Update target information.

2004-03-02  Kazu Hirata  <kazu@cs.umass.edu>

	* rtl.def (define_combine): Remove.

2004-03-02  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md: Tweak formatting.

2004-03-02  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (*cmphi_h8300): Rename to
	*cmphi_h8300_znvc.
	(*cmphi_h8300hs): Rename to *cmphi_h8300hs_znvc.

2004-03-01  Mark Mitchell  <mark@codesourcery.com>

	PR bootstrap/14356
	* gcc.c (process_command): Remove const-qualification from argv.
	(main): Likewise.

2004-03-02  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (pushqi1_h8300hs): Rename to
	pushqi1_h8300hs_advanced.  Adjust its caller.
	(pushhi1_h8300hs): Rename to pushhi1_h8300hs_advanced.
	Adjust its caller.

2004-03-02  Nicolas Roche  <roche@act-europe.fr>

	* Makefile.in (install-libgcc, install-multilib): Pass
	mkinstalldirs var to libgcc.mk.

2004-03-01  Kazu Hirata  <kazu@cs.umass.edu>

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

2004-03-01  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.c (gtle_operator): Accept GT and LE.
	* config/h8300/h8300.md: Split several peephole2's, each into
	two.

2004-03-02  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* dominance.c (recount_dominator): Handle postdominators.

2004-03-01  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips-protos.h (enum mips_symbol_type): Move from mips.h.
	(NUM_SYMBOL_TYPES): Likewise.
	(SYMBOL_64_HIGH, SYMBOL_64_MID, SYMBOL_64_LOW): New symbol types.
	(mips_unspec_address): Declare.
	(mips_gotoff_page, mips_gotoff_global): Delete.
	* config/mips/mips.h (PREDICATE_CODES): Add general_symbolic_operand.
	* config/mips/mips.c (enum mips_symbol_type, NUM_SYMBOL_TYPES): Delete.
	(mips_symbolic_constant_p, mips_symbolic_address_p)
	(mips_symbol_insns): Handle new symbol types.
	(general_symbolic_operand): New predicate.
	(mips_unspec_address): Make extern.
	(mips_gotoff_page, mips_gotoff_global): Delete.
	(override_options): Allow -mabi=64 -mno-abicalls -mexplicit-relocs.
	Handle new symbol types.
	* config/mips/mips.md (*lea_high64, *lea64): New patterns.
	(*xgot_hi[sd]i, *xgot_lo[sd]i, *got_disp[sd]i, *got_disp[sd]i): Call
	mips_unspec_address directly.
	* doc/invoke.texi: Remove the -mabi=64 -mno-abicalls exception from
	the documentation of -mexplicit-relocs.

2004-03-01  Jeff Law  <law@redhat.com>

	* fold-const.c (fold): An equality comparison of a non-weak object
	against zero has a known result.  Similarly an equality comparison
	of the address of two non-weak, unaliased symbols has a known result.

	* ggc-page.c (struct page_entry): New field PREV.
	(ggc_alloc): Update PREV field appropriately.
	(sweep_pages): Likewise.
	(ggc_free): Likewise.  Use PREV field rather than loop to
	improve ggc_free performance.

2004-03-01  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.c (mips_output_division): Use the division
	instruction to fill the delay slot of a zero check.
	(mips_idiv_insns): Adjust accordingly.

2004-03-01  Nathanael Nerode  <neroden@gcc.gnu.org>

	* config.gcc: Create a default tmake_file for linux, and use
	it in all but two linux clauses.  Comment those two.

2004-03-01  Paolo Bonzini  <bonzini@gnu.org>

	* combine.c (try_combine): Do not refer to is_replaced.
	(gen_lowpart_for_combine): Perverse subregs now have a
	more politically correct name.
	* cse.c (cse_insn): Likewise.
	* jump.c: Fix bogus reference to delete_insn.

2004-02-29  Mark Mitchell  <mark@codesourcery.com>

	PR debug/14328
	* dwarf2out.c (gen_enumeration_type_die): Output all enumeration
	constants as signed values.

	PR middle-end/13448
	* c-tree.h (readonly_warning): Rename to ...
	(readonly_error): ... this.
	* c-typeck.c (build_unary_op): Adjust accordingly.
	(readonly_warning): Rename to ...
	(readonly_error): ... this and issue errors, not warnings.
	(build_modify_expr): Call readonly_error, not readonly_warning.
	(c_expand_asm_operands): Likewise.
	* tree-inline.c (optimize_inline_calls): Do not inline functions
	after errors have occurred.

2004-02-29  Nathanael Nerode  <neroden@gcc.gnu.org>

	* configure.ac: Rearrange some threading code for clarity;
	add section comment.
	* configure: Regenerate.

2004-02-29  Kazu Hirata  <kazu@cs.umass.edu>

	* passes.c, config/frv/frv.c, config/sh/sh.c: Fix comment
	typos.
	* doc/cppopts.texi: Fix a typo.

2004-02-29  Kazu Hirata  <kazu@cs.umass.edu>

	* config/i386/i386.md: Fix formatting.

2004-02-29  Nathanael Nerode  <neroden@gcc.gnu.org>

	* configure.ac: Add some comments delineating sections of code.

	* doc/install.texi: Note that libada uses autoconf 2.57 also.

	* doc/install.texi: Fix idiot typo in previous commit.

	* doc/install.texi: Update for conversion of intl to autoconf 2.57.

2004-02-29  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md: Add comments about peephole2's.

2004-02-29  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md: Tweak operand numbers of some
	peephole2's.

2004-02-29  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md: Tweak comments about peephole2's.

2004-02-29  Waldek Hebisch  <hebisch@math.uni.wroc.pl>

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

2004-02-28  Kazu Hirata  <kazu@cs.umass.edu>

	* config/sh/sh.c: Fix formatting.

2004-02-28  Kazu Hirata  <kazu@cs.umass.edu>

	* config/sh/sh.c: Convert to ISO-C.

2004-02-28  Andrew Pinski  <pinskia@physics.uc.edu>

	* c-typeck.c (tagged_types_tu_compatible_p): Fix pasto in
	my previous patch.

	* config/darwin.h (machopic_finish): Output stub even if the
	symbol is already defined.

2004-02-28  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* pa64-hpux.h (LIB_SPEC): Fix linking under HP-UX 11.00 with -p and -pg.

2004-02-28  Kazu Hirata  <kazu@cs.umass.edu>

	* genattr.c (main): Don't define
	TRADITIONAL_PIPELINE_INTERFACE or DFA_PIPELINE_INTERFACE.
	* system.h (TRADITIONAL_PIPELINE_INTERFACE): Poison.
	(DFA_PIPELINE_INTERFACE): Likewise.
	* doc/tm.texi (TRADITIONAL_PIPELINE_INTERFACE): Remove.
	(DFA_PIPELINE_INTERFACE): Likewise.

2004-02-28  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.md (tstsi, tstdi): Delete.

2004-02-28  Maciej W. Rozycki  <macro@ds2.pg.gda.pl>

	* config/mips/mips.c (override_options): Remove an obsolete
	duplicate definition of the "e" constraint.
	* config/mips/mips.h: Update a comment accordingly.

2004-02-28  Maciej W. Rozycki  <macro@ds2.pg.gda.pl>

	* config/mips/mips.md: Complete the unfinished R4000
	multiply/shift errata workaround.  Improve documentation.
	(hazard): Use TARGET_FIX_R4000 to decide whether an "imul" instruction
	has a hilo hazard.
	(mulsi3, mulsi3_internal, mulsi3_r4000): Use TARGET_FIX_R4000.
	(muldi3, muldi3_internal): Likewise.
	(muldi3_internal2): Remove, replacing with...
	(muldi3_mult3, muldi3_r4000): ...these new patterns.
	(mulsidi3): Take the errata into account.
	(mulsidi3_32bit): Remove, replacing with...
	(mulsidi3_32bit_internal, mulsidi3_32bit_r4000): ...these new patterns.
	(mulsidi3_64bit, mulsidi3_64bit_parts): Disable if TARGET_FIX_R4000.
	(umulsidi3): Take the errata into account.
	(umulsidi3_32bit): Remove, replacing with..
	(umulsidi3_32bit_internal, umulsidi3_32bit_r4000): ...these patterns.
	(umulsi3_highpart, umulsi3_highpart_internal): Disable if
	TARGET_FIX_R4000.
	(smulsi3_highpart, smulsi3_highpart_internal): Likewise.
	(smuldi3_highpart, umuldi3_highpart): Likewise.
	* doc/invoke.texi: Document the errata workaround.

2004-02-28  Maciej W. Rozycki  <macro@ds2.pg.gda.pl>

	* config/mips/mips-protos.h (mips_idiv_insns): Declare.
	* config/mips/mips.h (MASK_FIX_SB1): Bump.
	(MASK_FIX_R4000, TARGET_FIX_R4000): New macros.
	(TARGET_SWITCHES): Add -mfix-r4000 and -mno-fix-r4000.
	* config/mips/mips.c (mips_idiv_insns): New function.
	(override_options): Make -march=r4000 imply -mfix-r4000 by default.
	(mips_output_division): Add a workaround for the R4000 divide/shift
	errata.
	* config/mips/mips.md (length): Use mips_idiv_insns() to calculate
	the length of an "idiv" instruction.
	* doc/invoke.texi: Document the new switches.

2004-02-28  Kazu Hirata  <kazu@cs.umass.edu>

	* doc/tm.texi (IS_COSTLY_DEPENDENCE): Change to
	TARGET_SCHED_IS_COSTLY_DEPENDENCE.

2004-02-28  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	PR optimization/14229
	* cfgrtl.c (rtl_tidy_fallthru_edge): Do not fail for !onlyjump jump.

2004-02-28  Eric Botcazou  <ebotcazou@act-europe.fr>

	* fold-const.c (fold): Strip NOPs that change the signedness
	for RSHIFT too.  Expand comment.

2004-02-27  Ian Lance Taylor  <ian@wasabisystems.com>

	PR optimization/7871
	* flow.c (mark_set_1): Don't add LOG_LINKS for global registers
	from or to call insns.

2004-02-27  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR optimization/7871
	* flow.c (propagate_one_insn): Interpret calls as setting global
	registers, not merely clobbering them.

2004-02-27  Dale Johannesen  <dalej@apple.com>

	* config/darwin.c (machopic_output_possible_stub_label): Remove.
	config/darwin-protos.h: Ditto.
	config/darwin.h: Remove call to it.
	* combine.c (distribute_notes): Do not place a REG_DEAD note
	when value is both set and used.

2004-02-27  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/fixunssfsi.c (__fixunssfsi): Enable on H8/300
	as well.
	* config/h8300/lib1funcs.asm (___fixunssfsi): Remove.
	* config/h8300/t-h8300 (LIB1ASMFUNCS): Remove _fixunssfsi_asm.

2004-02-27  Andrew Pinski  <apinski@apple.com>

	* c-typeck.c (tagged_types_tu_compatible_p) <ENUMERAL_TYPE>:
	Speedup common case of the type values being in the same order.

2004-02-27  Steve Ellcey  <sje@cup.hp.com>

	* 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.

2004-02-27  Kazu Hirata  <kazu@cs.umass.edu>

	* bb-reorder.c, cfgbuild.c, diagnostic.c, explow.c, profile.c,
	ra-build.c, read-rtl.c, tracer.c, unwind-dw2-fde-glibc.c,
	value-prof.c, config/darwin-protos.h, config/frv/frv-abi.h,
	config/i386/pmmintrin.h, config/pa/pa-hpux.h: Update
	copyright.

2004-02-27  Paul Brook  <paul@codesourcery.com>

	* function.c (assign_parms): Don't count pretend args for alignment.

2004-02-27  Richard Henderson  <rth@redhat.com>

	* passes.c: New file.
	* Makefile.in (OBJS-common): Add it.
	* diagnostic.c (rtl_dump_and_exit): Move decl ...
	* flags.h (rtl_dump_and_exit): ... here.
	* output.h (size_directive_output, last_assemble_variable_decl):
	Move from toplev.c.
	* rtl.h (reg_alloc): Move from toplev.c.
	* toplev.c (HAVE_conditional_execution, DUMPFILE_FORMAT,
	struct dump_file_info, enum dump_file_index, dump_file_tbl,
	open_dump_file, close_dump_file, rest_of_decl_compilation,
	rest_of_type_compilation, rest_of_handle_final,
	rest_of_handle_delay_slots, rest_of_handle_stack_regs,
	rest_of_handle_variable_tracking, rest_of_handle_machine_reorg,
	rest_of_handle_new_regalloc, rest_of_handle_old_regalloc,
	rest_of_handle_regrename, rest_of_handle_reorder_blocks,
	rest_of_handle_sched, rest_of_handle_sched2, rest_of_handle_regmove,
	rest_of_handle_tracer, rest_of_handle_if_conversion,
	rest_of_handle_if_after_combine, rest_of_handle_web,
	rest_of_handle_branch_prob,
	rest_of_handle_value_profile_transformations, rest_of_handle_cfg,
	rest_of_handle_addressof, rest_of_handle_sibling_calls,
	rest_of_handle_jump_bypass, rest_of_handle_inlining,
	rest_of_handle_null_pointer, rest_of_handle_combine,
	rest_of_handle_life, rest_of_handle_cse, rest_of_handle_cse2,
	rest_of_handle_gcse, rest_of_handle_loop_optimize,
	rest_of_handle_loop2, rest_of_compilation): Move to passes.c.
	(decode_d_option): Use enable_rtl_dump_file.
	(compile_file, finalize, do_compile): Move profile+combine+graph
	cleanup to finish_optimization_passes.
	* toplev.h (init_optimization_passes, finish_optimization_passes,
	enable_rtl_dump_file): Declare.

2004-02-27  Eric Botcazou  <ebotcazou@act-europe.fr>
	    Roger Sayle  <roger@eyesopen.com>

	* fold-const.c (fold): Revert 2004-02-25 change.  Use the original
	operands to build a tree with swapped operands.
	* expr.c (expand_expr_real) <MAX_EXPR>: Consistently use the
	'unsignedp' predicate to specify the signedness.

2004-02-27  Kazu Hirata  <kazu@cs.umass.edu>

	* c-decl.c, c-ppoutput.c, combine.c, cppfiles.c, dwarf2out.c,
	expr.c, fold-const.c, gcc.c, haifa-sched.c, loop-iv.c,
	params.def, read-rtl.c, rtl.c, rtlanal.c, toplev.c: Fix
	comment typos and formatting.  Follow spelling conventions.

2004-02-26  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/rs6000.md: Add fixuns_truncsfsi2 and
	fix_truncsfsi2.

	* config/rs6000/spe.md: Delete spe_efsctuiz.
	Add spe_fixuns_truncsfsi2.
	Add spe_fix_truncsfsi2.

2004-02-26  Eric Christopher  <echristo@redhat.com>

	* c-lex.c (c_lex_string_translate): New variable.
	(lex_string): Use to determine string translation.
	* c-pragma.h: Prototype.
	* c-parse.in (start_string_translation): New. Set above.
	(stop_string_translation): Ditto.
	(attribute, attribute_list, asm_def, asm_stmt,
	asm_operand): Use above functions.
	* cp/parser.c (cp_parser_declaration): Translate strings
	unless token is RID_EXTERN. Set c_lex_string_translate
	for recursive use.
	(cp_parser_asm_definition): Only translate argument strings
	to asms.
	(cp_parser_asm_operand_list): Ditto.
	(cp_parser_attribute_list): Do not translate attribute strings.

2004-02-26  Kazu Hirata  <kazu@cs.umass.edu>

	* stmt.c (expand_start_case_dummy): Remove.
	* tree.h: Remove the corresponding prototype.

2004-02-26  Kazu Hirata  <kazu@cs.umass.edu>

	* builtins.c (apply_args_register_offset): Remove.
	* tree.h: Remove the corresponding prototype.

2004-02-26  Kazu Hirata  <kazu@cs.umass.edu>

	* stor-layout.c (is_pending_size): Remove.
	* tree.h: Remove the corresponding prototype.

2004-02-26  Kazu Hirata  <kazu@cs.umass.edu>

	* recog.c (validate_replace_src): Remove.
	* recog.h: Remove the corresponding prototype.

2004-02-26  Kazu Hirata  <kazu@cs.umass.edu>

	* calls.c: Don't reference FINAL_REG_PARM_STACK_SPACE or
	MAYBE_REG_PARM_STACK_SPACE.
	* function.c: Likewise.
	* system.h (FINAL_REG_PARM_STACK_SPACE): Poison.
	(MAYBE_REG_PARM_STACK_SPACE): Likewise.
	* doc/tm.texi (FINAL_REG_PARM_STACK_SPACE): Remove.
	(MAYBE_REG_PARM_STACK_SPACE): Likewise.

2004-02-26  Kazu Hirata  <kazu@cs.umass.edu>

	* c-decl.c (c_expand_deferred_function): Remove.
	* c-tree.h: Remove the corresponding prototype.

2004-02-26  Kazu Hirata  <kazu@cs.umass.edu>

	* postreload.c (reload_cse_move2add): Generate just a PLUS
	instead of an entire SET.

2004-02-26  Jan Hubicka  <jh@suse.cz>

	* config.gcc: Add support for nocoma/prescott/pentium-m/pentium3m
	/pentium4m.
	* i386.c (override_options): Add support for new CPUs.
	* i386.h (TARGET_CPU_DEFAULT_NAMES): New names.
	(TARGET_CPU_DEFAULT_pentium_m, TARGET_CPU_DEFAULT_pentium4e): New
	constants.
	* invoke.texi: Extend documentation of -mtune/-march for new CPUs.

2004-02-26  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/xtensa.h (TARGET_CPU_CPP_BUILTINS): Define __xtensa__.

2004-02-26  Eric Botcazou  <ebotcazou@act-europe.fr>

	* config/sparc/sparc-protos.h (sparc_emit_floatunsdi): Add 'mode'.
	(sparc_emit_fixunsdi): New prototype.
	* config/sparc/sparc.c (sparc_emit_floatunsdi): Use 'mode' argument.
	(sparc_emit_fixunsdi): New function.
	* config/sparc/sparc.md (floatunsdisf2): Use 'general_operand' for
	operand 1.  Pass SFmode to sparc_emit_floatunsdi.
	(floatunsdidf2): Use 'general_operand' for operand 1.  Pass DFmode
	to sparc_emit_floatunsdi.
	(fixuns_truncsfdi2): New expander.
	(fixuns_truncdfdi2): Likewise.

2004-02-26  Alan Modra  <amodra@bigpond.net.au>

	* gcse.c (delete_null_pointer_checks_1): Do not delete CC setter
	unless HAVE_cc0.

2004-02-25  Richard Henderson  <rth@redhat.com>

	* explow.c (force_reg): Call mark_reg_pointer as appropriate.
	* config/alpha/alpha.c (alpha_emit_conditional_branch): Don't
	use (op0-op1) == 0 if op0 is a pointer.
	* config/alpha/alpha.md (cmpdi): Use some_operand.
	(three comparison combine splits): Remove.

2004-02-25  Richard Henderson  <rth@redhat.com>

	PR c/12794
	* c-common.c (handle_alias_attribute): Reject the attribute if
	current_function_decl is set.

2004-02-25  Kelley Cook  <kcook@gcc.gnu.org>

	* config.gcc: Add comment describing extra_gcc_objs.
	i[34567]86-*-cygwin*): Replace host_extra_gcc_objs with extra_gcc_objs.
	* configure.ac (extra_gcc_objs): New substitution variable.
	(host_extra_gcc_objs): Don't substitute.
	* configure: Regenerate.
	* Makefile.in: Use extra_gcc_objs.

2004-02-25  Kelley Cook  <kcook@gcc.gnu.org>

	* doc/contrib.texi: Add an entry for myself.

2004-02-25  Jan Hubicka  <jh@suse.cz>

	* basic-block.h (make_eh_edge, break_superblocks): Declare.
	* cfgbuild.c (make_eh_edge): Make global.
	* cfglayout.c (break_superblocks): Likewise; fix memory leak.
	* except.c (build_post_landing_pads, connect_post_landing_pads,
	dw2_build_landing_pads, sjlj_emit_function_enter,
	sjlj_emit_function_exit, sjlj_emit_dispatch_table,
	sjlj_build_landing_pads): Update CFG.
	(emit_to_new_bb_before): New function.
	(finish_eh_generation): Do not rebuild the CFG.

2004-02-25  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* config.gcc (hppa*-*-*, parisc*-*-*): Add MASK_BIG_SWITCH to all
	target_cpu_default defines.
	* pa-hpux.h (TARGET_DEFAULT): Add MASK_BIG_SWITCH to define.
	* pa.h (TARGET_DEFAULT): Likewise.

2004-02-25  Eric Botcazou  <ebotcazou@act-europe.fr>

	* fold-const.c (fold): Treat MAX_EXPR and MIN_EXPR like
	comparisons with regard to signedness.

2004-02-25  Richard Earnshaw  <rearnsha@arm.com>

	* arm.c (thumb_legitimize_address): New function.
	* arm-protos.h: Prototype it.
	* arm.h (THUMB_LEGITIMIZE_ADDRESS): Define.
	(LEGITIMIZE_ADDRESS): Use it.

2004-02-25  J"orn Rennecke <joern.rennecke@superh.com>

	* reload1.c (reload): Only spill eliminable register with multiple
	adjacent elimination alternatives if all alternatives fail.

2004-02-25  Richard Earnshaw  <rearnsha@arm.com>

	* arm.c (arm_legitimate_index_p): For QImode the range of an offset
	is -4095...+4095 inclusive.

2004-02-25  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* doc/install.texi (sparc-sun-solaris2* specific notes): Document
	the bootstrap failure with Sun CC 5.4 and 5.5.

2004-02-24  Kazu Hirata  <kazu@cs.umass.edu>

	* cse.c (cse_change_cc_mode_insns): Stop at any instruction
	which modifies NEWREG.
	(cse_condition_code_reg): Update the mode of CC_REG in
	CC_SRC_INSN on our own.

2004-02-24  Michael Matz  <matz@suse.de>

	* config/i386/i386.c (ix86_comp_type_attributes): Check for
	regparm attributes.

2004-02-24  Richard Henderson  <rth@redhat.com>

	* 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.

2004-02-24  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/spe.md (spe_fix_truncsfsi2): Delete.
	(spe_fixuns_truncsfsi2): Delete.

	* config/rs6000/rs6000.md (fix_truncsfsi2): Delete.
	(fixuns_truncsfsi2): Delete.

2004-02-24  Josef Zlomek  <zlomekj@suse.cz>

	PR/14240
	* rtlanal.c (replace_label): Fix replacing labels in constant pool.

2004-02-24  Geoffrey Keating  <geoffk@apple.com>

	* config/darwin.h (TARGET_HAS_F_SETLKW): Define.

2004-02-24  Jason Merrill  <jason@redhat.com>

	* tree.c (check_qualified_type): New fn.
	(get_qualified_type): Use it.  If type already has the desired
	quals, just return it.
	* tree.h: Declare it.

2004-02-24  Sanjiv Kumar Gupta  <sanjivg@noida.hcltech.com>

	* target-def.h (TARGET_SCHED_INIT_GLOBAL,
	TARGET_SCHED_FINISH_GLOBAL): New macros.

	* target.h (md_init_global, md_finish_global): Function
	declarations corresponding to new target macros.

	* haifa-sched.c (sched_init, sched_finish): Allow target to
	call the new schedular hooks.

	* flow.c (recompute_reg_usage): Add PROP_DEATH_NOTES flag in
	call to update_life_info.

	* config/sh/sh.h (OVERRIDE_OPTIONS): Re-enable
	flag_schedule_insns for SH4.

	* config/sh/sh.c (sh_md_init_global, sh_md_finish_global,
	find_set_regmode_weight, find_insn_regmode_weight,
	find_regmode_weight), sh_md_init, sh_dfa_new_cycle,
	sh_variable_issue, high_pressure, ready_reorder,
	rank_for_reorder, swap_reorder, sh_reorder, sh_reorder2): New
	functions used to throttle the insn movement in first
	scheduling pass for SH.

	* doc/tm.texi: Document TARGET_SCHED_INIT_GLOBAL and
	TARGET_SCHED_FINISH_GLOBAL.

2004-02-24  Alexandre Oliva  <aoliva@redhat.com>

	Implement FR-V FDPIC ABI support for frv-uclinux and frv-linux.
	2004-02-05  Alexandre Oliva  <aoliva@redhat.com>
	* config/frv/frv.c (frv_emit_movsi): Use GOT relocations for
	symbols in sections named by the user.
	2004-01-30  Alexandre Oliva  <aoliva@redhat.com>
	* config/frv/linux.h (TARGET_OS_CPP_BUILTINS): New.
	2004-01-27  Alexandre Oliva  <aoliva@redhat.com>
	* config.gcc (frv-*-*linux*): Handle like *-*-linux*.
	* config/frv/t-linux (EXTRA_MULTILIB_PARTS): Remove, obviated by
	the above.
	2004-01-20  Alexandre Oliva  <aoliva@redhat.com>
	* config/frv/frv.md (symGOT2reg_hilo, symGOTOFF2reg_hilo): Add
	one more pseudo to further improve code generation.
	2004-01-19  Alexandre Oliva  <aoliva@redhat.com>
	* config/frv/frv.md (movdi_ldd): Introduce explicit indirection
	inside UNSPEC.
	2004-01-16  Alexandre Oliva  <aoliva@redhat.com>
	* config/frv/frv.c (frv_legitimate_address_p): Added
	allow_double_reg_p argument.  Adjust all callers.  Use it to
	decide whether to enable double-register indirect addressing.
	(frv_funcdesc_alias_set): Remove.
	(frv_expand_fdpic_call): Force non-SYMBOL_REF operand into
	register.  Emit movdi_ldd.
	(ldd_address_operand): New.
	* config/frv/frv-protos.h (frv_legitimate_address_p): Adjust.
	* config/frv/frv.h (GO_IF_LEGITIMATE_ADDRESS): Likewise.
	(PREDICATE_CODES): Add ldd_address_operand.
	* config/frv/frv.md (movdi_ldd): New.
	(symGOT2reg_hilo, symGOTOFF2reg_hilo): Use separate pseudo for
	intermediate computations if possible.
	(symGOTOFF2reg_i): Fix harmless typo.
	2003-12-18  Alexandre Oliva  <aoliva@redhat.com>
	* unwind-dw2-fde-glibc.c (_Unwind_IteratePhdrCallback): Cast
	relocated p_vaddr to vaddr type.
	* config/frv/frv-protos.h (frv_expand_fdpic_call): Return void.
	* config/frv/frv.c (frv_get_funcdesc_alias_set): New.
	(frv_expand_fdpic_call): Propagate incoming MEM's expr to funcdesc
	MEM, or use a funcdesc alias set.  Use regular move instead of
	ldd.
	(dbl_memory_one_insn_operand): Recognize function descriptors by
	type or by alias set, and don't split them.
	* config/frv/frv.md (call, call_value): Never use call_internal
	for fdpic.
	(call_internal, call_value_internal): Never match for FDPIC.
	(call_fdpicdi, call_fdpicsi, call_value_fdpicdi,
	call_value_fdpicsi): Require FDPIC.
	(ldd): Removed.
	2003-12-17  Alexandre Oliva  <aoliva@redhat.com>
	* config/frv/frv.h (CRT_GET_RFIB_DATA): Define for __FRV_FDPIC__.
	* unwind-dw2-fde-glibc.c: Don't include elf-fdpic.h any more.
	(_Unwind_IteratePhdrCallback): Adjust type of load_base for FRV
	FDPIC.  Compute data base address.
	* config/frv/linux.h (SUBTARGET_DRIVER_SELF_SPECS): Enable -mfdpic
	before the other self-specs are processed.
	* config/frv/t-linux (CRTSTUFF_T_CFLAGS, TARGET_LIBGCC2_CFLAGS):
	Build with -fPIC.
	2003-12-15  Alexandre Oliva  <aoliva@redhat.com>
	* unwind-dw2-fde-glibc.c: Don't include bits/elf-fdpic.h if
	inhibit_libc is defined.
	2003-12-12  Alexandre Oliva  <aoliva@redhat.com>
	* unwind-dw2-fde-glibc.c: Include bits/elf-fdpic.h for
	__FRV_FDPIC__.
	(__RELOC_POINTER): Define.
	(_Unwind_IteratePhdrCallback): Use it.
	* config/frv/frv.h (Twrite): Define.
	(TRANSFER_FROM_TRAMPOLINE): Use it.
	* config/frv/linux.h (INVOKE__main): Undefine.
	(Twrite): Override.
	2003-12-05  Richard Sandiford  <rsandifo@redhat.com>
	* doc/invoke.texi (-mlong-calls, -mlinked-fp): Document FRV options.
	(-mlibrary-pic): Emphasize that this option generates EABI code.
	(-mcpu): Add fr550.
	(-mpack): Remove.
	2003-11-30  Alexandre Oliva  <aoliva@redhat.com>
	* config/frv/frv.c (int_2word_operand): Reject LABELs, SYMBOL_REFs
	and CONSTs in FDPIC mode.
	* config.gcc (with_cpu): Default to fr400 on frv-*-*linux*.
	2003-11-29  Richard Sandiford  <rsandifo@redhat.com>
	* config/frv/frv.c (move_source_operand): Don't accept symbolic
	constants.
	* config/frv/frv.md (*movhi_internal, *movsi_internal): Use an 'n'
	rather than 'i' constraint for the 2-instruction alternative.
	(*movsi_2word): New, incorporating existing int_2word_operand splitter.
	2003-11-29  Richard Sandiford  <rsandifo@redhat.com>
	* config/frv/frv.h (EXTRA_CONSTRAINT_FOR_Q): Renamed from
	EXTRA_CONSTRAINT_FOR_Y.
	(EXTRA_CONSTRAINT): Remove handling of 'Y'.
	* config/frv/frv.md (*movsi_internal): Remove 'Q' constraint.
	(addsi3): Change 'Y' constraint to 'Q'.
	2003-11-27  Richard Sandiford  <rsandifo@redhat.com>
	* reload.c (CONST_POOL_OK_P): New macro.
	(find_reloads): Use it to decide whether a constant can be forced
	into memory.
	* config/frv/frv.h (LEGITIMATE_PIC_OPERAND_P): Return true if the
	constant satisfies got12_operand.
	(frv_cannot_force_const_mem): Always return true for TARGET_FDPIC.
	(frv_legitimate_address_p): Check for valid unspec offsets using
	got12_operand rather than frv_legitimate_fdpic_operand_p.
	(frv_legitimate_fdpic_operand_p): Delete.
	(frv_emit_movsi): Abort if we try to use the FDPIC register during
	or after reload.
	(frv_legitimate_constant_p): Return LEGITIMATE_PIC_OPERAND_P if
	TARGET_FDPIC.
	* config/frv/frv.md (*movdf_double): Add alternatives for CONST_DOUBLE.
	2003-11-19  Richard Sandiford  <rsandifo@redhat.com>
	* config/frv/frv-protos.h (fdpic_operand, fdpic_got12_operand)
	(frv_fdpic_fptr_operand): Don't declare here.
	* config/frv/frv.h (EXTRA_CONSTRAINT_FOR_Y): Call got12_operand
	rather than fdpic_got12_operand.
	(PREDICATE_CODES): Remove symbolic_operand entry.  Add entries for
	got12_operand and const_unspec_operand.
	* config/frv/frv.c (got12_operand): Renamed from fdpic_got12_operand.
	(gpr_or_int12_operand, dbl_memory_one_insn_operand): Update calls.
	(symbolic_operand): Remove.
	(const_unspec_operand): New predicate.
	* config/frv/frv.md (*movsi_got): Use got12_operand.
	(*movsi_high_got, *movsi_lo_sum_got): Use const_unspec_operand.
	2003-11-18  Richard Sandiford  <rsandifo@redhat.com>
	* config/frv/frv-protos.h (frv_output_addr_const_extra): Remove.
	* config/frv/frv.h (OUTPUT_ADDR_CONST_EXTRA): Remove definition.
	* config/frv/frv.c (frv_unspec): New structure.
	(frv_small_data_reloc_p, frv_const_unspec_p): New functions.
	(frv_print_operand_memory_reference): Use frv_const_unspec_p to
	validate CONST indices.  Use frv_output_const_unspec to print them.
	(frv_print_operand): Update call to unspec_got_name.  Use
	frv_output_const_unspec to print constant unspecs.
	(frv_legitimate_fdpic_operand_p): Return true if frv_const_unspec_p.
	Reject UNSPECs otherwise.
	(unspec_got_name): Take the relocation number as argument, not an
	rtx containing it.
	(frv_output_addr_const_extra): Remove, replacing with...
	(frv_output_const_unspec): ...this new function.
	(frv_find_base_term): Use frv_const_unspec_p & frv_small_data_reloc_p.
	(gpr_or_int12_operand): Use fdpic_got12_operand.
	(dbl_memory_one_insn_operand): Likewise.
	(fdpic_got12_operand): Use frv_const_unspec_p.
	(frv_emit_movsi): Use frv_const_unspec_p to check for CONSTs that
	are already legitimate.  Use frv_small_data_reloc_p when deciding
	whether to use HIGH/LO_SUM for R_FRV_GOTOFF12 and R_FRV_GPREL12.
	2003-11-18  Alexandre Oliva  <aoliva@redhat.com>
	* config/frv/t-linux (SHLIB_MAPFILES): Override so as to export...
	* config/frv/libgcc-frv.ver: ... frv-specific symbols.  New file.
	* config/frv/frv-abi.h (CREATE_DOUBLE_SHIFT): Use branch to local
	label, for real this time.
	* config/frv/frv.c (frv_local_funcdesc_p): Update to new
	representation of visibility.
	(fdpic_got12_operand, symbolic_operand): Mark unused arguments as
	such.
	2003-11-17  Richard Sandiford  <rsandifo@redhat.com>
	* config/frv/frv.h (MASK_LINKED_FP, TARGET_LINKED_FP): New macros.
	(TARGET_SWITCHES): Add -mlinked-fp and -mno-linked-fp.
	* config/frv/frv.c (frv_override_options): Set MASK_LINKED_FP unless
	it was explicitly disabled.
	(frv_stack_info): There is no need to save the link register in every
	frame unless TARGET_LINKED_FP is true.
	(frv_frame_pointer_required): If !TARGET_LINKED_FP, only require a
	frame pointer if the stack pointer might change value.
	(frv_return_addr_rtx): Check and process "count" argument.
	2003-11-14  Richard Sandiford  <rsandifo@redhat.com>
	* config/frv/frv-protos.h (frv_legitimize_address): Remove.
	(frv_find_base_term): Declare.
	* config/frv/frv.h (LEGITIMIZE_ADDRESS): Do nothing.
	(FIND_BASE_TERM): Define.
	(PREDICATE_CODES): Remove pic_register_operand, pic_symbolic_operand,
	small_data_register_operand, small_data_symbolic_operand.  Add
	symbolic_operand.
	* config/frv/frv.c (const_small_data_p, plus_small_data_p): Delete.
	(frv_print_operand_memory_reference, output_move_single): Remove
	special handling for unlegitimized sdata addresses.
	(frv_legitimate_address_p): Don't allow sums of SDA_BASE_REG
	and symbolic addresses.
	(frv_legitimize_address, frv_legitimize_fdpic_address): Delete.
	(frv_find_base_term): New function.
	(int_2word_operand): Check specifically for symbolic address constants.
	(pic_register_operand, pic_symbolic_operand): Delete.
	(small_data_register_operand, small_data_symbolic_operand): Delete.
	(dbl_memory_one_insn_operand): Don't call plus_small_data_p.
	Allow UNSPEC_GOT constants if !TARGET_FDPIC.
	(move_source_operand): Only accept CONSTs if they're a two-insn
	symbolic constant.
	(fdpic_got12_operand): Don't require TARGET_FDPIC.
	(frv_emit_movsi): Legitimize sdata and -mlibrary-pic addresses
	using gen_symGOTOFF2reg*.
	(frv_ifcvt_rewrite_mem): Remove (plus gr16 ...) special cases.
	(frv_rtx_costs): Give all MEM addresses a cost of 0.  Give MEMs
	themselves a cost of 3 insns.
	* config/mips/mips.md (*movsi_got): Allow for !TARGET_FDPIC too.
	Change predicate to symbolic_operand.
	(*movsi_high_got, *movsi_lo_sum_got): Likewise.
	(*movsi_lda_sdata): Delete.
	(*movsi_pic, movsi_high_pic, movsi_lo_sum_pic): Delete.
	2003-11-05  Alexandre Oliva  <aoliva@redhat.com>
	* config.gcc: Add t-slibgcc-elf-ver and support --with-cpu for
	frv-*-*linux*.
	* config/frv/frv-abi.h (CREATE_DOUBLE_SHIFT): Use branch to local
	label.
	* config/frv/frv.h (DRIVER_SELF_SPECS): Add blank before
	-multilib-library-pic.
	(LINK_SPEC): Add -z text for -mfdpic.
	* config/frv/frvbegin.c (__ROFIXUP_LIST__): Don't define on FDPIC.
	* config/frv/frvend.c (__ROFIXUP_END__): Likewise.
	* config/frv/linux.h (STARTFILE_SPEC, ENDFILE_SPEC, LINK_SPEC):
	Override.
	(OPTION_DEFAULT_SPECS, HAS_INIT_SECTION, INIT_SECTION_ASM_OP,
	FINI_SECTION_ASM_OP, CRT_CALL_STATIC_FUNCTION): Define.
	* config/frv/t-linux (EXTRA_MULTILIB_PARTS): Use
	crtstuff-generated files.
	2003-10-31  Alexandre Oliva  <aoliva@redhat.com>
	* config.gcc: Add frv-*-*linux*.
	* config/frv/linux.h, config/frv/t-linux: New.
	2003-10-06  Alexandre Oliva  <aoliva@redhat.com>
	* config/frv/frv.h (LINK_SPEC): Pass -melf32frvfd to the linker
	when -mfdpic even if a linker script is explicitly listed.
	2003-10-02  Alexandre Oliva  <aoliva@redhat.com>
	* config/frv/frv.c (frv_override_options): Clear asm_out
	unaligned_op for SImode on FDPIC.
	(frv_emit_movsi): Use compute_reloc_for_constant to compute the
	argument passed to decl_readonly_section.
	(frv_assemble_integer): Revert 2003-09-30's change, but make the
	whole block run with FDPIC even with -fno-PIC.
	2003-10-02  Alexandre Oliva  <aoliva@redhat.com>
	* config/frv/frv.c (frv_cannot_force_const_mem): Don't force
	symbol or label plus offset to memory.
	(frv_emit_movsi): Emit GPREL only if -mgprel-ro.  Emit 32-bit
	GOTOFF and GPREL for LABEL_REF.
	* config/frv/frv.h (DRIVER_SELF_SPECS): Add -mgprel-ro with
	-mfdpic unless -mno-gprel-ro, -fpic or -fpie.
	(MASK_GPREL_RO, TARGET_GPREL_RO): New.
	(TARGET_SWITCHES): Added gprel-ro and no-gprel-ro.
	* doc/invoke.texi: Document them.
	2003-09-30  Alexandre Oliva  <aoliva@redhat.com>
	* config/frv/frv-protos.h (frv_gen_GPsym2reg): Declare.
	(frv_splittable_got_operand): Removed.
	* config/frv/frv.c (frv_cannot_force_const_mem): Reject HIGH and
	LO_SUM.  Add comments.
	(frv_override_options): Moved enabling of FDPIC to
	DRIVER_SELF_SPECS.  Don't enable MASK_DWORD.
	(frv_local_funcdesc_p): Remove unnecessary heck for flag_pie.
	(frv_legitimize_fdpic_address): Don't duplicate logic in
	frv_emit_movsi.
	(frv_gen_GPsym2reg): New.
	(unspec_got_name): Added gprel.
	(frv_expand_fdpic_call): Add support for inlining PLTs.
	(fdpic_fptr_operand): Renamed from frv_fdpic_fptr_operand.
	(gpr_or_int12_operand): Added GPREL12.
	(pic_symbolic_operand): Match even if !flag_pic for FDPIC.
	(small_data_symbolic_operand): Fail if FDPIC.
	(fdpic_splittable_got_operand): Removed.
	(fdpic_got12_operand): Added GPREL12.
	(frv_emit_movsi): Reorganize to avoid duplication.  Emit GPREL
	when appropriate.  Fix sdata GOTOFF.
	(frv_legitimate_constant_p): Require legitimate PIC operand for
	FDPIC with pic, but only a legitimate fdpic operand for non-pic.
	(frv_assemble_integer): Move FDPIC funcdesc handling out of
	flag_pic case.
	(frv_asm_out_constructor, frv_asm_out_destructor): Abort if
	frv_assemble_integer fails.
	* config/frv/frv.h (DRIVER_SELF_SPECS): New.
	(SUBTARGET_DRIVER_SELF_SPECS): New.
	(ASM_SPEC): Don't pass -mno-fdpic.
	(LINK_SPEC): Pass -melf32frvfd for FDPIC.
	(MASK_INLINE_PLT, TARGET_INLINE_PLT): New.
	(TARGET_SWITCHES): Add -minline-plt, -mno-inline-plt and
	-multilib-library-pic.
	(PREDICATE_CODES): Added fdpic_operand, fdpic_fptr_operand,
	condexec_si_media_operator, condexec_sf_add_operator and
	condexec_sf_conv_operator.  Removed condexec_sf_binary_operator
	and condexec_sf_unary_operator.
	* config/frv/frv.md (R_FRV_GPREL12, R_FRV_GPRELHI, R_FRV_GPRELLO):
	New.
	(movsi_got, movsi_high_got, movsi_lo_sum_got): Move before
	movsi_internal.  Give them internal names.  movsi_got has type
	int.
	(fdpic got splitters): Remove.
	(symGPREL2reg, symGPREL2reg_hilo): New.
	* config/frv/t-frv (MULTILIB_MATCHES): Don't map -fpic and -fPIC
	to -mlibrary-pic.  Map -multilib-library-pic to it.
	* doc/invoke.texi: -mfdpic, -minline-plt, -multilib-library-pic:
	Document.
	2003-09-28  Alexandre Oliva  <aoliva@redhat.com>
	* config/frv/frv.c (frv_function_symbol_referenced_p): Declare.
	(TARGET_CANNOT_FORCE_CONST_MEM): Define to...
	(frv_cannot_force_const_mem): New function.
	(const_small_data_p, plus_small_data_p): Update comments on sdata
	on FDPIC.
	(frv_override_options): Set flag_pie for FDPIC too.
	(frv_conditional_register_usage): Mark gr16 and gr17 as non-fixed,
	call-saved registers on FDPIC.
	(frv_stack_info): Don't preserve the PIC register on FDPIC, and
	don't force LR to be preserved.
	(frv_expand_prologue): Likewise.
	(frv_asm_output_mi_thunk): Use 12-bit funcdesc gotoff for -fpic.
	(frv_frame_pointer_required): Don't force it just because the
	FDPIC register is used.
	(frv_legitimate_address_p) <CONST>: Accept a legitimate FDPIC
	operand only if !condexec_p.
	(frv_legitimize_address): Return the FDPIC-legitimized address.
	Don't match small data here on FDPIC.
	(frv_legitimate_fdpic_operand_p): Don't accept unadorned function
	symbols.  Use TRUE/FALSE instead of 1/0.
	(frv_local_funcdesc_p): New.
	(frv_legitimize_fdpic_address): Rewrite to use GOTOFF and 12-bit
	immediates when possible.
	(pic_symbolic_operand): Accept SYMBOL_REFs and CONSTs in FDPIC.
	(dbl_memory_one_insn_operand): Accept addresses that add a REG and
	an UNSPEC_GOT.
	(frv_emit_movsi): Handle FDPIC before small data.  Use GOTOFF and
	12-bit immediates when possible.
	(frv_legitimate_constant_p): In FDPIC, reject SImode operands that
	are not legitimate pic operands.
	(frv_in_small_data_p): Re-enable for FDPIC.
	* config/frv/frv.h (SDA_BASE_REG): Remove comment about FDPIC.
	(FRV_GLOBAL_P): Removed.
	* config/frv/frv.md: Add modes to CONSTs.
	(movsi_got): New.
	(movsi_lo_sum_got): Use separate matches instead of match_dup.
	(movsi_high_pic, movsi_lo_sum_pic): Match on non-FDPIC only.
	(fdpic splittable operations): Match on flag_pic != 1.
	2003-09-22  Alexandre Oliva  <aoliva@redhat.com>
	* config/frv/frv.c (frv_asm_out_constructor,
	frv_asm_out_destructor): Pass to frv_assemble_integer the size in
	bytes, not bits.
	2003-09-19  Alexandre Oliva  <aoliva@redhat.com>
	* config/frv/frv.c (frv_assemble_integer): Reject complex
	expressions referencing function SYMBOL_REFs.
	* config/frv/frv.c (frv_function_symbol_referenced_p): New.
	(move_source_operand): Reject CONSTs that reference function
	SYMBOL_REFs on FDPIC.
	(frv_emit_movsi): If we get such a CONST, break it up.
	* config/frv/frv.h (CPP_SPEC): Define __FRV_FDPIC__ for -mfdpic.
	(TRANSFER_FROM_TRAMPOLINE): Use different definitions for FDPIC.
	* config/frv/frv.c (frv_print_operand) <I>: Recognize PLUS without
	MEM.
	(frv_assemble_integer): Don't use funcdesc for LABEL_REFs.
	(frv_trampoline_size): Increase for FDPIC.
	* config/frv/frv.h (TRAMPOLINE_ALIGNMENT): Bump to 64 for FDPIC.
	(TRANSFER_FROM_TRAMPOLINE): Handle FDPIC trampolines.
	* config/frv/frv.c (frv_legitimize_fdpic_address, frv_emit_movsi):
	Disable use of GOTOFF for now.
	(const_small_data_p, plus_small_data_p, frv_in_small_data_p):
	Disable use of small data in FDPIC for now.
	(frv_asm_output_mi_thunk): Implement for FDPIC.
	* config/frv/frv.h (SDA_BASE_REG): Set to -1 with FDPIC.
	* config/frv/frv.c (frv_asm_out_constructor): Use
	frv_assemble_integer for FDPIC pointers.
	(frv_asm_out_destructor): Likewise.
	* config/frv/frv.md (ldd): Fix order of operands.  Use
	address_operand for input.
	2003-09-18  DJ Delorie  <dj@redhat.com>
	* config/frv/frv.c (frv_legitimate_fdpic_operand_p): Remove UNSPEC_PIC.
	(unspec_got_name): Correct typo.
	(frv_emit_movsi): Pre-expand splittable GOTs.
	(frv_expand_fdpic_call): Rename gen_lddi to gen_ldd.
	* config/frv/frv.md (lddi): Fix syntax error, rename to ldd.
	(symGOT2reg_hilo, symGOTOFF2reg_hilo): New.
	* config/frv/t-frv: Add -mfdpic multilibs.
	* config/frv/frv.h (ASM_SPEC): Pass -mfdpic/-mno-fdpic.
	(TARGET_SWITCHES): Add -mno-fdpic, fix documentation.
	* config/frv/frv.c (frv_override_options): -mfdpic assumes
	flag_pic, default to 32-bit pics, require DWORD ops.
	(frv_override_options): Add W and Z constraints.
	(frv_expand_prologue): No pic prologue for -mfdpic.
	(frv_asm_output_mi_thunk): Support -mfdpic (soon).
	(frv_print_operand_memory_reference): Handle GOT constants.
	(frv_legitimate_address_p): Allow GOT constants.
	(frv_legitimize_address): Handle GOT addresses too.
	(frv_legitimate_fdpic_operand_p): New.
	(frv_legitimize_fdpic_address): New.
	(unspec_got_name): New.
	(frv_output_addr_const_extra): New.
	(frv_expand_fdpic_call): New.
	(frv_fdpic_fptr_operand): New.
	(gpr_or_int12_operand): Handle GOT operands.
	(int_2word_operand): Handle GOT operands.
	(fdpic_operand): New.
	(fdpic_splittable_got_operand): New.
	(fdpic_got12_operand): New.
	(frv_emit_movsi): Handle GOT operands.
	(frv_assemble_integer): -mfdpic doesn't use rofixups.
	(frv_print_operand): Support 'g' code for GOT operands.
	* config/frv/frv-protos.h: Add prototypes as needed.
	* config/frv/frv.md (R_FRV_GOT12, R_FRV_GOTHI, R_FRV_GOTLO,
	R_FRV_FUNCDESC, R_FRV_FUNCDESC_GOT12, R_FRV_FUNCDESC_GOTHI,
	R_FRV_FUNCDESC_GOTLO, R_FRV_FUNCDESC_VALUE,
	R_FRV_FUNCDESC_GOTOFF12, R_FRV_FUNCDESC_GOTOFFHI,
	R_FRV_FUNCDESC_GOTOFFLO, R_FRV_GOTOFF12, R_FRV_GOTOFFHI,
	R_FRV_GOTOFFLO): New.
	(movsi_high_got, movsi_lo_sum_got): New.
	(*movsi_pic): Don't use this splitter for -mfdpic.
	(addsi3): Allow GOT references also.
	(call, call_value): Handle -mfdpic separately.
	(call_fdpicdi, call_fdpicsi, lddi, call_value_fdpicdi,
	call_value_fdpicsi): New.
	(symGOT2reg, symGOT2reg_i, got splitters, symGOTOFF2reg,
	symGOTOFF2reg_i): New.
	* config/frv/frv.h (MASK_FDPIC): New.
	(TARGET_FDPIC): New.
	(TARGET_SWITCHES): Add -mfdpic.
	(FDPIC_FPTR_REGNO): New.
	(FDPIC_REGNO): New.
	(OUR_FDPIC_REG): New.
	(enum reg_class): Add FDPIC_REGS, FDPIC_FPTR_REGS, and
	FDPIC_CALL_REGS.
	(REG_CLASS_NAMES): Likewise.
	(REG_CLASS_CONTENTS): Likewise.
	(EXTRA_CONSTRAINT_FOR_Y): New, for 12-bit GOTs.
	(EXTRA_CONSTRAINT): Add it here.
	(FRV_GLOBAL_P): New.
	(OUTPUT_ADDR_CONST_EXTRA): New.

2004-02-24  Kazu Hirata  <kazu@cs.umass.edu>

	* config/sparc/sparc.h: Remove commented-out definitions of
	TARGET_EDOM and GEN_ERRNO_RTX.

2004-02-24  Kazu Hirata  <kazu@cs.umass.edu>

	* df.c, df.h, ra-build.c, ra-rewrite.c, ra.c, web.c: Replace
	df_analyse with df_analyze.

2004-02-24  Alan Modra  <amodra@bigpond.net.au>

	* gcse.c (delete_null_pointer_checks_1): Set stop_insn to end, not
	beginning of block.

2004-02-23  James E Wilson  <wilson@specifixinc.com>

	* calls.c (precompute_arguments): Update comment.

2004-02-23  Kazu Hirata  <kazu@cs.umass.edu>

	* et-forest.c: Replace et_occurences with et_occurrences.

2004-02-23  Kazu Hirata  <kazu@cs.umass.edu>

	* cfgloop.h, loop-iv.c, loop-unswitch.c: Replace iv_analyse
	with iv_analyze.

2004-02-23  Kelley Cook  <kcook@gcc.gnu.org>

	* config/i386/i386.c: Rename pni to sse3.
	* config/i386/i386.h: Likewise.
	* config/i386/i386.md: Likewise.
	* config/i386/pmmintrin.h: Likewise.
	* doc/extend.texi: Likewise.
	* doc/invoke.texi: Likewise.

2004-02-23  Zack Weinberg  <zack@codesourcery.com>
	    Kazu Hirata  <kazu@cs.umass.edu>

	Remove -fwritable-strings.
	* c-common.c (fix_string_type): Don't check
	flag_writable_strings.
	(fix_string_type): Likewise.
	* c-opts.c (set_std_c89): Don't initialize
	flag_writable_strings.
	(set_std_c99): Likewise.
	* common.opt (fwritable-strings): Remove.
	* flags.h: Remove the external declaration of
	flag_writable_strings.
	* opts.c (common_handle_option) <OPT_fwritable_strings>:
	Remove.
	* toplev.c (flag_writable_strings): Remove.
	(f_options): Remove an entry for writable-strings.
	* varasm.c (const_hash_1) <STRING_CST>: Don't check
	flag_writable_strings.
	(compare_constant) <STRING_CST>: Likewise.
	(build_constant_desc): Likewise.
	* config/darwin.c (machopic_select_section): Likewise.
	* config/arm/arm.c (AOF_ASSEMBLER): Likewise.
	* config/arm/pe.c (arm_pe_encode_section_info): Likewise.
	* config/iq2000/iq2000.c (iq2000_select_section): Likewise.
	* config/mips/mips.c (mips_select_section): Likewise.
	(mips_encode_section_info): Likewise.
	* config/pa/pa.c (pa_select_section): Likewise.
	* config/pa/pa.h (TEXT_SPACE_P): Likewise.
	* config/v850/v850.c (v850_select_section): Likewise.
	* doc/invoke.texi (-fwritable-strings): Remove.
	(-fno-const-strings): Don't mention -fwritable-strings.
	* doc/trouble.texi: Don't mention -fwritable-strings.

2004-02-23  Nathanael Nerode  <neroden@gcc.gnu.org>

	* doc/install.texi: Update for switch of boehm-gc to autoconf 2.57.

2004-02-23  Dale Johannesen  <dalej@apple.com>

	* config/rs6000.md (movsf_hardfloat): Add POWER form of nop.
	(movdf_hardfloat64): Ditto.
	(movdf_softfloat64): Ditto.

2004-02-23  Fariborz Jahanian <fjahanian@apple.com>
	* config/rs6000/rs6000.c (function_arg): call to
	rs6000_mixed_function_arg for DFmode moved to allow
	normal DFmode incoming register assignment.

2004-02-23  Dale Johannesen  <dalej@apple.com>

	* config/rs6000.md (movsf_hardfloat): Accept CTR-to-CTR copy.
	(movdf_hardfloat64): Ditto.

2004-02-23  Kazu Hirata  <kazu@cs.umass.edu>

	* convert.c, gcov-io.c, libgcov.c, sched-int.h, sibcall.c,
	config/rs6000/linux.h, config/rs6000/rs6000-c.c: Update
	copyright.

2004-02-23  Andrew Pinski  <pinskia@physics.uc.edu>

	PR c/14156
	* c-typeck.c (c_expand_return): Change check for VAR_DECL
	to use DECL_P instead.

	* config/rs6000/linux.h (OS_MISSING_POWERPC64): Define.
	* config/rs6000/linux64.h (OS_MISSING_POWERPC64): Define.

2004-02-23  Kazu Hirata  <kazu@cs.umass.edu>

	* Makefile.in (opts.o): Depend on target.h.
	* opts.c (decode_options): Use targetm.default_short_enums
	instead of DEFAULT_SHORT_ENUMS.
	* system.h (DEFAULT_SHORT_ENUMS): Poison.
	* target-def.h (TARGET_DEFAULT_SHORT_ENUMS): New.
	(TARGET_INITIALIZER): Add TARGET_DEFAULT_SHORT_ENUMS.
	* target.h (gcc_target): Add default_short_enums.
	* config/cris/cris.h: Remove a comment about
	DEFAULT_SHORT_ENUMS.
	* config/ip2k/ip2k.h: Likewise.
	* doc/tm.texi (DEFAULT_SHORT_ENUMS): Change to
	TARGET_DEFAULT_SHORT_ENUMS.  Update the description.

2004-02-23  Eric Botcazou  <ebotcazou@libertysurf.fr>
	    Falk Hueffner  <falk@debian.org>

	PR c/14188
	* builtins.c (expand_builtin_va_arg): Emit an informative message
	if a trap is generated.
	* c-typeck.c (build_function_call): Likewise.

2004-02-22  Jakub Jelinek  <jakub@redhat.com>

	* gcov-io.c (gcov_open) [GCOV_LOCKED]: Use open + fdopen instead of
	fopen.
	* libgcov.c: Include sys/stat.h.
	* config/rs6000/linux.h (TARGET_HAS_F_SETLKW): Define.
	* config/rs6000/linux64.h (TARGET_HAS_F_SETLKW): Define.
	* config/sparc/linux.h (TARGET_HAS_F_SETLKW): Define.
	* config/sparc/linux64.h (TARGET_HAS_F_SETLKW): Define.

2004-02-22  Kazu Hirata  <kazu@cs.umass.edu>

	* reorg.c: Remove comments about dead ports.

2004-02-22  Christopher Faylor  <cgf@redhat.com>

	* config.gcc (i[34567]86-*-pe|i[34567]86-*-cygwin*): *Really* specify
	extra host object file when targetting cygwin rather than generic
	object files.

2004-02-22  Josef Zlomek  <zlomekj@suse.cz>

	Merge from tree-ssa:
	2003-11-20  Richard Henderson  <rth@redhat.com>

		* tree-inline.c (insert_decl_map): New.
		(remap_decl, remap_type, remap_block, copy_body_r,
		initialize_inlined_parameters, declare_return_variable,
		remap_save_expr): Use it.

	* function.c (copy_body_r): Add mapping from id->ret_label to
	id->ret_label.  Revert test for ret_label.

2004-02-22  Jakub Jelinek  <jakub@redhat.com>

	* genoutput.c (process_template): Strip trailing whitespace in @
	templates and issue a warning if there was any.

2004-02-21  Christopher Faylor  <cgf@redhat.com>

	* config.gcc (i[34567]86-*-pe|i[34567]86-*-cygwin*): Specify extra host
	object file when targetting cygwin.
	* config/i386/t-cygwin (EXTRA_GCC_OBJS): Remove definition since it is
	overridden by top-level Makefile.

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

	* config/i386/i386.c (standard_80387_constant_p): Also prefer
	the x87's load constant instructions when optimizing for size.

2004-02-21  Kazu Hirata  <kazu@cs.umass.edu>

	* combine.c (SHIFT_COUNT_TRUNCATED): Remove.
	* defaults.h (SHIFT_COUNT_TRUNCATED): Provide the default.
	* expmed.c: Assume SHIFT_COUNT_TRUNCATED is always defined.
	* fold-const.c: Likewise.
	* simplify-rtx.c: Likewise.

2004-02-21  Alan Modra  <amodra@bigpond.net.au>

	* combine.c (can_combine_p): Don't ignore SETs marked with
	REG_EH_REGION notes.
	(try_combine): When attemting to fix unrecognized insns, don't
	split a PARALLEL that contains the original i2.

2004-02-21  Ziemowit Laski  <zlaski@apple.com>

	* config/darwin.h (TARGET_OPTION_TRANSLATE_TABLE): Refer to
	SUBTARGET_OPTION_TRANSLATE_TABLE for architecture-specific options.
	* config/i386/darwin.h (SUBTARGET_OPTION_TRANSLATE_TABLE): Define it.
	* config/rs6000/altivec.h: #error out if '-maltivec' not specified.
	(vector, pixel, bool): #define to __vector, __pixel and __bool.
	(__un_args_eq, __bin_args_eq, __tern_args_eq): Move to C-specific
	portion of header.
	(__altivec_link_error_invalid_argument): Remove prototype; will use
	__builtin_altivec_compiletime_error("vec_*") instead.
	(vec_*): Fix/complete set of available operation overloads given the
	existence of distinct 'vector bool ...' and 'vector pixel' types; tighten
	cv-correctness of pointer arguments; in C, always check for correct
	argument types before macro expansion.
	* config/rs6000/darwin.h (SUBTARGET_OPTION_TRANSLATE_TABLE): New macro
	defining Darwin/PowerPC-specific '-f[no-]altivec' and
	'-W[no-]altivec-long-deprecated' switches.
	* config/rs6000/rs6000-c (rs6000_cpu_cpp_builtins): Pre-define
	'__vector', '__pixel' and '__bool' macros using
	'__attribute__((altivec(...)))' types.
	* config/rs6000/rs6000.c (bool_char_type_node, bool_short_type_node,
	bool_int_type_node, pixel_type_node, bool_V16QI_type_node,
	bool_V8HI_type_node, bool_V4SI_type_node, pixel_V8HI_type_node):
	New type nodes.
	(rs6000_warn_altivec_long, rs6000_warn_altivec_long_switch): New, for
	handling '-W[no-]altivec-long-deprecated'.
	(rs6000_override_options): Handle '-W[no-]altivec-long-deprecated'.
	(rs6000_expand_binop_builtin, rs6000_expand_ternop_builtin,
	altivec_expand_dst_builtin): Remove casts from integer literals.
	(altivec_expand_builtin): Likewise; handle expansion of new
	'__builtin_altivec_compiletime_error' function.
	(rs6000_init_builtins): Initialize 'vector bool ...' and 'vector pixel'
	types, and make them distinct from other vector types; register
	'__builtin_altivec_compiletime_error' function.
	(print_operand): For 'P', print a full target register name instead of
	merely its number.
	(rs6000_attribute_table): Add "altivec" attribute.
	(rs6000_handle_altivec_attribute): New function.
	* config/rs6000/rs6000.h (TARGET_OPTIONS): Describe
	'-m[no-]-warn-altivec-long' (which '-W[no-]altivec-long-deprecated'
	maps to).
	(rs6000_warn_altivec_long, rs6000_warn_altivec_long_switch): Forward
	declare.
	(ALTIVEC_BUILTIN_COMPILETIME_ERROR): New built-in enumeration.

2004-02-20  James E Wilson  <wilson@specifixinc.com>

	* config/ia64/ia64.md (shift_mix4left+1): Delete reload_completed
	check.
	(shift_mix4left+2): Delete redundant pattern.

2004-02-20  Kazu Hirata  <kazu@cs.umass.edu>

	* alias.c (OUTGOING_REGNO): Don't define the default.
	* builtins.c (OUTGOING_REGNO): Likewise.
	(INCOMING_REGNO): Likewise.
	(apply_args_register_offset): Always use OUTGOING_REGNO.
	* combine.c (OUTGOING_REGNO): Likewise.
	* sibcall.c (OUTGOING_REGNO): Likewise.
	* defaults.h (INCOMING_REGNO): Provide the default.
	(OUTGOING_REGNO): Likewise.

2004-02-21  Jan Hubicka  <jh@suse.cz>

	* params.def (max-peeled-insns, max-completely-peeled-insns,
	max-once-peeled-insns): Set to 400.

2004-02-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	PR c++/12007
	* dbxout.c (dbxout_parms): Check that DECL_RTL and DECL_INCOMING_RTL
	are set for parameters before outputing debugging information.

2004-02-20  Falk Hueffner  <falk@debian.org>

	PR target/14201
	* config/alpha/alpha.md (*fix_truncsfsi_ieee): Fix typoed operand
	numbers.

2004-02-20  Per Bothner  <per@bothner.com>

	* input.h: Don't #include line-map.h.  It may cause link problems
	with undefined linemap_line_start when line-map.h is included but
	line-map.o is not linked, as currently happens with gengtype on
	compilers that don't support inline.
	* toplev.c: So we do have to explicitly #include line-map.h here.

2004-02-20  Richard Henderson  <rth@redhat.com>

	* doc/invoke.texi: Add -Wvariadic-macros.

2004-02-20  Kazu Hirata  <kazu@cs.umass.edu>

	* haifa-sched.c (sched_emit_insn): Remove.
	* sched-int.h: Remove the corresponding prototype.

2004-02-20  Kazu Hirata  <kazu@cs.umass.edu>

	Revert:
	2004-02-19  Kazu Hirata  <kazu@cs.umass.edu>
	* opts.c (decode_options): Don't use DEFAULT_SHORT_ENUMS.
	* system.h (DEFAULT_SHORT_ENUMS): Poison.
	* config/cris/cris.h: Remove a comment about
	DEFAULT_SHORT_ENUMS.
	* config/ip2k/ip2k.h: Likewise.
	* doc/tm.texi (DEFAULT_SHORT_ENUMS): Remove.

2004-02-20  Mohan Embar  <gnustuff@thisiscool.com>
	    Tom Tromey  <tromey@redhat.com>

	* doc/install.texi: Moved --disable-libgcj and
	--with-system-zlib documentation to new section for
	Java-specific options.
	Added explicit Cross-Compiler-Specific Options subheading.
	Added section for Java-specific options.

2004-02-20  Matt Kraai  <kraai@alumni.cmu.edu>

	* doc/install.texi (Building the Ada compiler): Remove
	example.

2004-02-20  James E Wilson  <wilson@specifixinc.com>

	* toplev.c (dump_file_index, dump_file): Put ce3 before rnreg.

2004-02-20  Kazu Hirata  <kazu@cs.umass.edu>

	* gcc.c (process_command): Allow translation of the copyright
	symbol but not the rest of the copyright message.
	* gcov.c (print_version): Likewise.  Allow translation of the
	message about warranty.

2004-02-20  Hans-Peter Nilsson  <hp@axis.com>

	* config/cris/cris.md ("*andsi_movu"): Correct parentheses in
	predicate.
	("*andsi_clear"): Tweak constraints to not match postincrement.
	Adjust the predicate to exclude a volatile memory reference.
	("*andhi_clear"): Ditto.  Rename from "*andhi_clear_signed".
	("*andhi_clear_unsigned"): Remove, non-matching pattern.

2004-02-19  Matt Kraai  <kraai@alumni.cmu.edu>

	* move-if-change: Remove.
	* Makefile.in (s-mlib, c-parse.y, s-check, s-gencheck)
	(s-specs, s-options, s-config, s-conditions, s-flags, s-codes)
	(s-constants, s-emit, s-recog, s-opinit, s-extract, s-peep)
	(s-attr, s-attrtab, s-output, s-genrtl, s-modes, s-preds)
	(s-gtyp-gen, s-iov): Use the top level move-if-change.
	* objc/Make-lang.in (objc/objc-parse.y): Likewise.

2004-02-19  James E Wilson  <wilson@specifixinc.com>

	* config/i386/i386.md (doloop_end_internal): Use nonimmediate_operand
	for operand2.  Add condition that requires register_operand operand2
	before reload.

2004-02-19  Richard Sandiford  <rsandifo@redhat.com>
	    Maciej W. Rozycki  <macro@ds2.pg.gda.pl>

	* config/mips/mips.c (mips_address_insns): Treat BLKmode specially.
	* config/mips/mips.md: Expand comment above unaligned loads and stores.

2004-02-19  Richard Henderson  <rth@redhat.com>

	* Makefile.in (STRICT2_WARN): Add -Wno-variadic-macros.
	* tree.c (build0, build1, build2, build3, build4): Split out from...
	(build): ... here.  Call them.
	* tree.h (build, _buildN1, _buildN2, _buildC1, _buildC2): New.

	* convert.c (convert_to_integer): Remove extra build argument.
	* tree-inline.c (expand_call_inline): Likewise.

2004-02-19  Richard Henderson  <rth@redhat.com>

	* c-opts.c (warn_variadic_macros): New.
	(c_common_handle_option): Set it.
	(sanitize_cpp_opts): Copy it to cpp_opts.
	* c.opt (Wvariadic-macros): New.
	* cpplib.h (struct cpp_options): Add warn_variadic_macros.
	* cppinit.c (cpp_create_reader): Initialize it.
	* cppmacro.c (parse_params): Check it.

2004-02-19  David Daney <ddaney@avtrex.com>

	PR preprocessor/14198
	* config/mips/linux.h (TARGET_OS_CPP_BUILTINS): Add
	builtin_assert ("machine=mips")

2004-02-19  Kazu Hirata  <kazu@cs.umass.edu>

	* opts.c (decode_options): Don't use DEFAULT_SHORT_ENUMS.
	* system.h (DEFAULT_SHORT_ENUMS): Poison.
	* config/cris/cris.h: Remove a comment about
	DEFAULT_SHORT_ENUMS.
	* config/ip2k/ip2k.h: Likewise.
	* doc/tm.texi (DEFAULT_SHORT_ENUMS): Remove.

2004-02-19  Zack Weinberg  <zack@codesourcery.com>

	* 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.

2004-02-19  Aldy Hernandez  <aldyh@redhat.com>

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

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

2004-02-19  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/spe.md (spe_fixunssfsi2): Rename to
	spe_fixuns_truncsfsi2.

	* config/rs6000/rs6000.md (fixunssfsi2): Rename to
	fixuns_truncsfsi2.

2004-02-19  Steve Ellcey  <sje@cup.hp.com>

	* config/ia64/ia64.h (HARD_REGNO_CALLER_SAVE_MODE): New macro.
	* testsuite/gcc.dg/20040219-1.c: New test.

2004-02-19  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.md ("*subdf3_cc", "*subdf3_cconly", "*subsf3_cc",
	"*subsf3_cconly"): Subtraction is not commutative.

2004-02-19  Zack Weinberg  <zack@codesourcery.com>

	* sdbout.c (preinit_symbols, sdbout_initialized): New statics.
	(sdbout_symbol): If called before sdbout_init, queue DECL for
	later and return.
	(sdbout_init): Set sdbout_initialized true, process decls
	queued earlier by sdbout_symbol.
	(sdbout_finish): Use size_t for index variable.

2004-02-19  Jeff Law  <law@redhat.com>

	* fold-const.c (invert_truthvalue): Do not call invert_tree_comparison
	for unordered comparison codes.

2004-02-19  Ian Lance Taylor  <ian@wasabisystems.com>

	* reload1.c (reload): Correct comment.
	(scan_paradoxical_subregs): Remove #if 0 and old comment.
	* doc/extend.texi (Local Reg Vars): Remove obsolete comment that
	register variables are not used by reload.

2004-02-19  Hans-Peter Nilsson  <hp@axis.com>

	PR target/14209
	* config/cris/cris.md ("*andsi_movu", "*andhi_movu"): Tweak
	constraints to not match postincrement.  Adjust the predicate to
	exclude a volatile memory reference.

2004-02-19  Kazu Hirata  <kazu@cs.umass.edu>

	* config/mcore/mcore.h (ASM_OUTPUT_EXTERNAL): Remove.

2004-02-19  Kazu Hirata  <kazu@cs.umass.edu>

	* hooks.c (hook_void_tree_int): Remove.
	(hook_void_constcharptr): Likewise.
	(hook_int_void_0): Likewise.
	* hooks.h: Remove the prototypes for the above three
	functions.
	* targhooks.c (hook_bool_machine_mode_true): Remove.
	* targhooks.h: Remove the prototype for
	hook_bool_machine_mode_true.

2004-02-19  Kazu Hirata  <kazu@cs.umass.edu>

	* emit-rtl.c (subreg_realpart_p): Remove.
	(reorder_insns_with_line_notes): Likewise.
	(end_full_sequence): Likewise.
	* rtl.h: Remove the prototype for the above functions.

2004-02-19  Kazu Hirata  <kazu@cs.umass.edu>

	* config/arc/arc.h, config/arm/arm.h, config/frv/frv.h,
	config/h8300/h8300.h, config/i386/i386.h, config/i860/i860.h,
	config/iq2000/iq2000.h, config/m32r/m32r.h,
	config/pdp11/pdp11.h, config/sparc/sparc.h,
	config/xtensa/xtensa.h: Remove commented-out or useless
	definitions of CASE_VECTOR_PC_RELATIVE.

2004-02-19  Kazu Hirata  <kazu@cs.umass.edu>

	* loop.c (all_sets_invariant_p): Remove.

2004-02-19  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR target/12916
	* config/sparc/sparc.h (NPARM_REGS): Delete.
	(BASE_RETURN_VALUE_REG): Likewise.
	(BASE_OUTGOING_VALUE_REG): Likewise.
	(BASE_PASSING_ARG_REG): Likewise.
	(BASE_INCOMING_ARG_REG): Likewise.
	* config/sparc/sparc.c (sparc_strict_argument_naming): Test
	TARGET_ARCH64, not TARGET_V9.
	(function_arg_slotno): Dispatch based on the mode class.
	Handle vector modes like floating-point modes.
	(function_arg_record_value_1): Handle vector types like
	floating-point types.
	(function_arg_record_value_2): Likewise.
	Calculate regno after mode transformation.
	(function_arg): Handle vector modes like floating-point modes.
	(function_arg_partial_nregs): Replace NPARM_REGS by SPARC_INT_ARG_MAX.
	If ARCH64, do not recheck alignment.
	(function_arg_pass_by_reference): Reorder the conditions.
	(sparc_return_in_memory): Move after function_arg_padding.
	Implement calling conventions for vector modes.
	(sparc_struct_value_rtx): Move after sparc_return_in_memory.
	(function_value): Move scope of 'regbase'.
	Implement calling conventions for vector modes.
	(sparc_builtin_saveregs): Replace NPARM_REGS by SPARC_INT_ARG_MAX
	and BASE_INCOMING_ARG_REG by SPARC_INCOMING_INT_ARG_FIRST.
	(sparc_va_arg): Use function_arg_pass_by_reference to test whether
	the argument is passed by reference.
	(sparc_type_code): Handle vector types.

2004-02-19  Alan Modra  <amodra@bigpond.net.au>

	* function.c (assign_parms): When building decl_rtl for
	SPLIT_COMPLEX_ARGS, ensure inner modes of concat match outer.

2004-02-19  Olivier Hainque  <hainque@act-europe.fr>

	* expr.c (is_aligning_offset): Check if we are aligning the
	expressions's address over BIGGEST_ALIGNMENT in bytes, not
	in bits.

2004-02-18  Matt Austern  <austern@apple.com>

	* gcc.c (LIBGCC_SPEC): If REAL_LIBGCC_SPEC is defined, and
	LIBGCC_SPEC isn't, set LIBGCC_SPEC to REAL_LIBGCC_SPEC.
	(init_gcc_spec): Don't define or call if REAL_LIBGCC_SPEC is
	defined.  Instead use REAL_LIBGCC_SPEC, unmodifed, as the libgcc
	spec string.
	* doc/tm.texi (REAL_LIBGCC_SPEC): Document.

2004-02-18  Zack Weinberg  <zack@codesourcery.com>

	* 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.

2004-02-18  Jakub Jelinek  <jakub@redhat.com>

	* config/i386/i386.c (override_options): Don't imply 3DNow! for -m64
	by default.

2004-02-18  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.md ("divmodtidi3"): Use canonical RTL.
	("divmodtisi3"): Likewise.
	("udivmoddi4", "udivmodtidi3"): Likewise.
	("divmodsi4", "divmoddisi3"): Likewise.
	("udivmodsi4", "udivmoddisi3"): Likewise.
	("udivsi3", "umodsi3"): Likewise.

2004-02-18  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.c (s390_mainpool_start): Delete the main pool
	placeholder insn when chunkifying the pool.

2004-02-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* pa.h (PIC_OFFSET_TABLE_REGNUM): Define to INVALID_REGNUM when not
	generating PIC code.

2004-02-18  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300-protos.h: Add a prototype for
	h8300_expand_branch.
	* config/h8300/h8300.c (h8300_expand_branch): New.
	* config/h8300/h8300.md (ble, bleu, bge, bgeu, blt, bltu, bgt,
	bgtu, beq, bne): Call h8300_expand_branch().

2004-02-18  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300-protos.h: Add prototypes for
	h8300_hard_regno_nregs and h8300_hard_regno_mode_ok.
	* config/h8300/h8300.c (h8300_hard_regno_nregs): New.
	(h8300_hard_regno_mode_ok): Likewise.
	* config/h8300/h8300.h (HARD_REGNO_NREGS): Call
	h8300_hard_regno_nregs().
	(HARD_REGNO_MODE_OK): Call h8300_hard_regno_mode_ok().

2004-02-18  Per Bothner  <per@bothner.com>

	* cpphash.h (struct cpp_buffer): Restore return_at_eof field.  This
	partly reverts my 2003-10-01 change, because we're back to logically
	including <command line> inside the main line.
	* cpplex.c (_cpp_get_fresh_line): Check return_at_eof field.
	* cppmacro.c (cpp_scan_nooutput): Set return_at_eof of current buffer.
	Fixes PR preprocessor/14103.

	* cppfiles.c (_cpp_stack_include): When appropriate decrement
	line_table's highest_location, fixing LAST_SOURCE_LINE_LOCATION.
	(cpp_push_include): Don't need to increment pfile's line field.
	* line-map.h (LAST_SOURCE_LINE_LOCATION): Only decrement by 1.

	* c-ppoutput.c (print struct): New first_time field.
	(init_pp_output): Set print.first_time.
	(pp_file_change): Use print.first_time, rather than MAIN_FILE_P,
	which is set also for (say) <command line>.  Clear print.first_time.

	* cppfiles.c (struct _cpp_file): Comment and type for pch field
	does not match the code, so fix both.
	(should_stack_file): Inline include_pch_p function.
	(include_pch_p): Remove pointless function.

	* cpphash.h (struct cpp_buffer): Remove unused search_cached field.

2004-02-18  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (four define_peephole2's): Use
	h8300_regs_ok_for_stm().

2004-02-18  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300-protos.h: Update the prototype for
	expand_a_rotate().
	* config/h8300/h8300.c (expand_a_rotate): Remove the first
	argument.
	* config/h8300/h8300.md: Update all callers.

2004-02-18  Jan Hubicka  <jh@suse.cz>

	* simplify-rtx.c (simplify_unary_operation): Deal with logicals on
	floats.
	(simplify_binary_operation): Deal with logicals on floats.

	* i386.md (SSE fabs splitters): Emit new patterns.
	(SSE cmov splitters): Likewise.
	(sse_andv4sf3, sse_nandv4sf3, sse_iorv4sf3, sse_xorv4sf3
	(sse_andv2df3, sse_nandv2df3, sse_iorv2df3, sse_xorv2df3): Do not use
	subregs.
	(sse_andsf3, sse_nandsf3, sse_xorsf3): Kill.
	(sse_anddf3, sse_nanddf3, sse_xordf3): Kill.

2004-02-18  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.c (expand_a_rotate): Don't generate insns
	by hand.
	(output_a_rotate): Tweak a comment.
	* config/h8300/h8300.md (*rotlqi3_1): Change to rotlqi3_1.
	(*rotlhi3_1): Change to rotlhi3_1.
	(*rotlsi3_1): Change to rotlsi3_1.

2004-02-18  Richard Earnshaw  <rearnsha@arm.com>

	PR target/13866
	* arm.c (load_multiple_operation): Don't insist that the source reg
	of a post-increment component is the same as the destination.
	(store_multiple_operation): Likewise.

2004-02-18  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md: Move movsf patterns into one section
	of the file.

2004-02-18  Kazu Hirata  <kazu@cs.umass.edu>

	* cfgloop.h, cfgloopanal.c, cpplex.c, except.h, loop-init.c,
	loop-unroll.c, scan-decls.c, scan.h, stor-layout.c,
	xcoffout.c, xcoffout.h, config/arm/mmintrin.h,
	config/mips/linux64.h, config/pa/pa-64.h,
	config/rs6000/aix51.h, config/rs6000/aix52.h,
	config/rs6000/spe.md, config/sparc/linux.h,
	config/sparc/linux64.h: Update copyright.

2004-02-18  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md: Move push patterns into one
	section of the file.

2004-02-18  Mark Mitchell <mark@codesourcery.com>

	PR c++/11326
	* config/ia64/ia64.c (ia64_struct_value_rtx): Cope with NULL
	fntype.

2004-02-18  Paul Brook  <paul@codesourcery.com>

	* rtlanal.c (rtx_varies_p): Return 0 for NULL_RTX

2004-02-18  Paul Brook  <paul@codesourcery.com>

	PR debug/12934
	* dwarf2out.c (loc_descriptor_from_tree): Handle
	EXPR_WITH_FILE_LOCATION.

2004-02-18  Jakub Jelinek  <jakub@redhat.com>

	* config/i386/i386.md (zero_extendqidi2, zero_extendqidi2,
	testdi_1_rex64, anddi_2, xordi_1_rex64, xordi_2_rex64): Remove
	trailing whitespace from instructions.

2004-02-17  Geoffrey Keating  <geoffk@apple.com>

	* configure.ac: When generating auto-build.h, pass
	--enable-languages to the sub-configure.
	Put quotes around ${program_transform_name} when generating
	name of as, ld, nm, objdump.
	* configure: Regenerate.

2004-02-17  Matt Kraai  <kraai@alumni.cmu.edu>

	* Makefile.in (s-check, s-config, s-conditions, s-flags)
	(s-codes, s-constants, s-emit, s-recog, s-opinit, s-extract)
	(s-peep, s-attr, s-attrtab, s-output, s-genrtl, s-modes)
	(s-preds, s-iov): Do not depend on move-if-change.

2004-02-17  James E Wilson  <wilson@specifixinc.com>

	* caller-save.c (insert_restore): Pass mem through copy_rtx.
	(insert_save): Likewise.

2004-02-17  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.c (h8300_emit_stack_adjustment): Fix a
	warning.

2004-02-17  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (*one_complsi2_h8300): Change to
	*one_cmplsi2_h8300.
	(*one_complsi2_h8300hs): Change to *one_cmplsi2_h8300hs.

2004-02-17  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300-protos.h: Update the prototype of
	fix_bit_operand().
	* config/h8300/h8300.c (fix_bit_operand): Remove the second
	argument "what".
	* config/h8300/h8300.md: Update all callers.

2004-02-17  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.c (fix_bit_operand): Change the name of
	the last argument to "code" from "type".

2004-02-17  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.c: Remove an extern declaration of
	rtx_equal_function_value_matters.

2004-02-17  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.c (fix_bit_operand): Don't generate insns
	by hand.
	* config/h8300/h8300.md (*andqi3_1): Change to andqi3_1.
	(*iorqi3_1): Change to iorqi3_1.
	(*xorqi3_1): Change to xorqi3_1.

2004-02-17  Kazu Hirata  <kazu@cs.umass.edu>

	* c-common.c, cfghooks.c, rtlanal.c, varasm.c: Fix comment
	typos.

2004-02-17  Jan Hubicka  <jh@suse.cz>

	* i386.c (x86_prologue_using_move, x86_epilogue_using_move): Disable for P4.

2004-02-18  Alan Modra  <amodra@bigpond.net.au>

	PR optimization/14119
	* combine.c (try_combine): When attemting to fix unrecognized insns,
	don't delete SETs marked with REG_EH_REGION notes.

2004-02-17  Ulrich Weigand  <uweigand@de.ibm.com>

	* combine.c (simplify_if_then_else): Do not replace
	(if_then_else (ne reg 0) (0) (const_int)) by (reg) if the
	modes differ.

2004-02-17  Steven Bosscher  <stevenb@suse.de>

	* (c-decl.c, c-semantics.c, calls.c, cgraph.c, cgraphunit.c,
	function.c, integrate.c, print-tree.c, toplev.c, tree-optimize.c,
	tree.h): Replace DECL_SAVED_INSNS with DECL_STRUCT_FUNCTION.
	* ada/utils.c: Likewise.
	* cp/decl.c: Likewise.
	* f/com.c: Likewise.
	* java/class.c: Likewise.

2004-02-17  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md: Fix comment typos.

2004-02-17  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* config/mips/t-iris6gld: Renamed to ...
	* config/mips/t-irix-gld: ... this.
	* config.gcc (mips-sgi-irix6*): Reflect this
	(mips-sgi-irix5*): Use it with GNU ld.

	* config/mips/irix6-crti.asm, config/mips/irix6-crtn.asm: Renamed
	to ...
	* config/mips/irix-crti.asm, config/mips/irix-crtn.asm: ... this.
	* config/mips/t-irix-gld: Reflect this.
	* config/mips/iris6gld.h (STARTFILE_SPEC, ENDFILE_SPEC): Likewise.

	* config/mips/iris5gld.h: New file.
	* config.gcc (mips-sgi-irix5*): Use it with GNU ld.
	Only use collect2 without gas.

	* config/mips/iris6.h (IRIX6_STARTFILE_SPEC, IRIX6_ENDFILE_SPEC):
	Renamed to IRIX_STARTFILE_SPEC, IRIX_ENDFILE_SPEC.
	(STARTFILE_SPEC, ENDFILE_SPEC, SUBTARGET_EXTRA_SPECS): Reflect this.
	* config/mips/iris6gld.h (STARTFILE_SPEC, ENDFILE_SPEC): Likewise.

	* config/mips/iris6.h (SUBTARGET_EXTRA_SPECS): Moved ...
	* config/mips/iris5.h: ... here.

	* config/mips/iris5.h (STARTFILE_SPEC, ENDFILE_SPEC): Renamed to
	IRIX_STARTFILE_SPEC, IRIX_ENDFILE_SPEC.
	(STARTFILE_SPEC, ENDFILE_SPEC): Define.

	* config/mips/iris5gas.h (STARTFILE_SPEC, ENDFILE_SPEC): Simplify
	using irix_startfile_spec, irix_endfile_spec.

2004-02-16  Gunther Nikl  <gni@gecko.de>

	* config/m68k/m68k.c: Remove obsolete support for HPUX_ASM.

2004-02-17  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.c (h8300_expand_prologue): Don't generate
	insns by hand.

2004-02-17  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* cfghooks.c (split_edge): Speed up updating of dominators.

2004-02-17  Mark Mitchell  <mark@codesourcery.com>

	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.

2004-02-17  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.c (h8300_emit_stack_adjustment):
	Don't generate insns by hand.

2004-02-17  Andrew Pinski  <pinskia@physics.uc.edu>

	PR c++/14178
	* doc/invoke.texi (fabi-version): The default is 2 now.

2004-02-17  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* loop-iv.c: New file.
	* Makefile.in (loop-iv.o): New.
	* basic_block.h (FOR_BB_INSNS, FOR_BB_INSNS_REVERSE): New macros.
	* cfgloop.c (fill_sons_in_loop, get_loop_body_in_dom_order,
	num_loop_branches): New functions.
	* cfgloop.h (get_loop_body_in_dom_order, num_loop_branches,
	iv_analysis_loop_init, iv_get_reaching_def, iv_analyse, get_iv_value,
	find_simple_exit, iv_number_of_iterations, iv_analysis_done,
	get_simple_loop_desc, free_simple_loop_desc): Declare.
	(simple_loop_desc): New inline function.
	(struct rtx_iv, struct niter_desc): New.
	* cfgloopmanip.c (loopify): Specify semantics more precisely.
	* expr.c (force_operand): Handle subregs of expressions created by
	loop unroller.
	* loop-init.c (loop_optimizer_init, loop_optimizer_finalize): Move
	parts of the initialization to toplev.c
	* loop-unroll.c (loop_exit_at_end_p): New.
	(unroll_and_peel_loops): Call iv_analysis_done.
	(decide_peel_once_rolling, decide_peel_completely,
	decide_unroll_stupid, decide_unroll_constant_iterations,
	decide_unroll_runtime_iterations, decide_peel_simple,
	peel_loop_simple, unroll_loop_stupid, unroll_loop_constant_iterations,
	unroll_loop_runtime_iterations): Use new simple loop analysis.
	* loop-unswitch.c (compare_and_jump_seq): New.
	(may_unswitch_on_p): Renamed to ...
	(may_unswitch_on): Use new iv analysis.
	(reversed_condition): Export.
	(unswitch_single_loop, unswitch_loop): Use new iv analysis.
	* predict.c (estimate_probability): Use new simple loop analysis.
	* rtl.h (get_mode_bounds, reversed_condition,compare_and_jump_seq,
	canon_condition, simplify_using_condition): Declare.
	* stor-layout.c (get_mode_bounds): New.
	* toplev.c (rest_of_handle_loop2): Some parts of
	initialization/finalization moved here from loop-init.c.

2004-02-17  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.h (FIXED_REGISTERS): Add the soft frame
	pointer.
	(CALL_USED_REGISTERS): Likewise.
	(REG_ALLOC_ORDER): Likewise.
	(REG_CLASS) <GENERAL_REGS>: Likewise.

2004-02-16  Geoffrey Keating  <geoffk@apple.com>

	* doc/md.texi (Insn Canonicalizations): Document left-chaining
	in associative operators.
	* rtlanal.c (commutative_operand_precedence): Create some new
	variables.  Prefer a commutative operand on the left, then
	binary expressions, then NEG and NOT.

2004-02-16  Matthias Klose  <doko@debian.org>

	* config/t-slibgcc-elf-ver: Define SHLIB_NAME and SHLIB_SONAME
	in terms of SHLIB_SOVERSION.
	* config/m68k/t-slibgcc-elf-ver: New file.
	* config/pa/t-slibgcc-elf-ver: New file.
	* config.gcc (m68k-linux, parisc-linux): Use them when not
	sjlj exceptions are not configured.

2004-02-16  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* config/sparc/sparc.c (get_pc_symbol_name): Mark with GTY(()).

2004-02-16  Zack Weinberg  <zack@codesourcery.com>

	* sdbout.c (sdb_debug_hooks): Correct the type_decl entry.

2004-02-16  Joseph S. Myers  <jsm@polyomino.org.uk>

	* doc/sourcebuild.texi: Mention backends.html.

2004-02-16  Kazu Hirata  <kazu@cs.umass.edu>

	* c-decl.c, c-ppoutput.c, cpphash.h, cpplib.h, dbxout.c,
	line-map.c, line-map.h, var-tracking.c: Fix comment
	formatting.

2004-02-16  Richard Henderson  <rth@redhat.com>

	* cse.c (cse_insn): Don't lose REG_NON_LOCAL_GOTO note.

	* fold-const.c (operand_equal_p): Fix VECTOR_CST comparison.

2004-02-15  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md: Remove unnecessary parallels from
	all define_insn and define_split patterns.

2004-02-15  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md: Remove explicit (set_attr "cc"
	"clobber").

2004-02-15  Bernardo Innocenti  <bernie@develer.com>

	* config/m68k/m68k.h (PRINT_OPERAND_PUNCT_VALID_P): Restore support for
	'%#'.

2004-02-15  Kazu Hirata  <kazu@cs.umass.edu>

	* config/ia64/ia64.c, config/mips/mips.c,
	config/mmix/mmix-modes.def: Fix comment typos.

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

	* c-common.h (GET_DIRECTIVE_LINE): Remove unused macro.
	(get_directive_line): Remove unused function prototype.

2004-02-14  Josef Zlomek  <zlomekj@suse.cz>

	* tree-inline.c (copy_body_r): Do not replace ret_label.

2004-02-14  Jan Hubicka  <jh@suse.cz>

	* i386.c (x86_four_jump_limit): New variable.
	(k8_avoid_jump_misspredicts): Rename to ...
	(ix86_avoid_jump_misspredicts): .. this one.
	(ix86_pad_returns): Break out from ...
	(ix86_reorg): ... this one; do ix86_avoid_jump_misspredicts when asked
	to.
	* i386.h (TARGET_FOUR_JUMP_LIMIT): New macro.

2004-02-14  Josef Zlomek  <zlomekj@suse.cz>

	* emit-rtl.c (set_decl_incoming_rtl): Check whether the 0th element of
	PARALLEL is NULL.

2004-02-14  Per Bothner  <per@bothner.com>

	* fix-header.c (line_table): Move local variable in main to global.
	* scan.h (line_table): Use it.
	* scan-decls.c (scan_decls): Need to call linemap_lookup on token's
	line (recently renamed to src_loc) before calling recognized_function.

2004-02-14  Matt Kraai  <kraai@alumni.cmu.edu>

	* Makefile.in: Fix comment typos.

2004-02-14  Olivier Hainque  <hainque@act-europe.fr>

	* loop.c (check_dbra_loop): Use gen_int_mode instead of GEN_INT
	for start_value when it is directly moved into reg, and factorize
	the retrieval of GET_MODE (reg).

2004-02-14  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips-protos.h (mips_load_got_page): Delete.
	(mips_load_got_global): Delete.
	(mips_gotoff_page): Declare.
	* config/mips/mips.md (UNSPEC_LOAD_GOT): New constant.
	(*xgot_lo[sd]i, *got_disp[sd]i, *got_page[sd]i): Build an
	UNSPEC_LOAD_GOT pattern rather than a MEM.
	(*load_got[sd]i): New patterns.
	* config/mips/mips.c (mips_got_alias_set, mips_load_got): Delete.
	(mips_load_got_page, mips_load_got_global): Delete.
	(mips_gotoff_page): New function.
	(override_options): Don't initialize mips_got_alias_set.

2004-02-14  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.h (MASK_DEBUG_[ABEFI], TARGET_DEBUG_[ABEFI]_MODE)
	(TARGET_MIPS4100, TARGET_MIPS4300, TARGET_MIPS4KC, TARGET_MIPS5KC)
	(TARGET_SB1, TUNE_SB1, TUNE_SR71K, BIGGEST_MAX_ARGS_IN_REGISTERS)
	(GO_PRINTF, GO_PRINTF2, GO_DEBUG_RTX, DFMODE_NAN, SFMODE_NAN): Delete.
	(TARGET_SWITCHES): Remove MASK_DEBUG_[ABEFI].
	* config/mips/mips.c: Fix some overly-long lines.
	(SINGLE_WORD_MODE_P, PIC_OFFSET_TABLE_MASK): Delete.
	(init_cumulative_args): Remove TARGET_DEBUG_E_MODE handling.

2004-02-13  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* configure.ac: Search for as, ld below libexec/gcc.
	* configure: Regenerate.

2004-02-14  Ben Elliston  <bje@wasabisystems.com>

	* config/arm/mmintrin.h (_mm_setwcx): Reverse arguments in call to
	__builtin_arm_setwcx ().
	* config/arm/arm.c (arm_expand_builtin): Generate operands
	correctly and reverse their order in call to gen_iwmmxt_tmcr ().

2004-02-14  Ben Elliston  <bje@wasabisystems.com>

	* config/arm/arm.c (bdesc_2arg): Correct builtin names "wmulsh"
	and "wmuluh" to "wmulsm" and "wmulum", respectively.
	* config/arm/arm.h (enum arm_builtins): Rename enumerators to
	ARM_BUILTIN_WMULSM and ARM_BUILTIN_WMULUM.
	* config/arm/mmintrin.h (_mm_mulhi_pi16): Update intrinsic call.
	(_mm_mulhi_pu16): Likewise.

2004-02-13  Zack Weinberg  <zack@codesourcery.com>

	* xcoffout.c (xcoff_assign_fundamental_type_number): Check
	DECL_NAME != 0 before dereferencing.

2004-02-13  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390-protos.h (s390_output_symbolic_const): Remove.
	(s390_output_addr_const_extra): Declare.
	(s390_output_pool_entry): Remove FILE * argument.
	* config/s390/s390.c (s390_output_symbolic_const): Remove.
	(s390_output_addr_const_extra): New function.
	(print_operand_address): Call output_addr_const instead of
	s390_output_symbolic_const.
	(print_operand): Likewise.
	(s390_output_pool_entry): Use assemble_integer for symbolic constants.
	Remove FILE * argument.
	* config/s390/s390.h (OUTPUT_ADDR_CONST_EXTRA): Define.
	* config/s390/s390.md ("*pool_entry"): Adapt s390_output_pool_entry
	call.

2004-02-13  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* cfgloopanal.c (mark_irreducible_loops): Rewriten.
	(struct edge, struct vertex, struct graph): New.
	(dump_graph, new_graph, add_edge, dfs, check_irred, for_each_edge,
	free_graph): New functions.

2004-02-12  Chris Demetriou  <cgd@broadcom.com>

	* config/mips/mips.md (casesi_internal, casesi_internal_di):
	Use ".set macro" to avoid warnings about multi-instruction
	macros, since they're intentional.

2004-02-12  Geoffrey Keating  <geoffk@apple.com>

	* config/darwin.h: Add include guards.  Remove old, now incorrect,
	comment about STANDARD_EXEC_PREFIX.

	* Makefile.in (install-man): Use $(CPP_INSTALL_NAME) and
	$(GCOV_INSTALL_NAME) to install manpages.  Remove generic rule
	for installing .1 manpages.  Add rules for installing cpp
	and gcov manpages under their installed names.

2004-02-12  Alexandre Oliva  <aoliva@redhat.com>

	* configure.ac (gcc_cv_ld): Don't set to LD if target is not
	host, but try LD_FOR_TARGET first.
	* configure: Rebuilt.

2004-02-12  Zack Weinberg  <zack@codesourcery.com>

	* dbxout.c: Move declaration of dbxout_type_decl outside
	#ifdef DBX_DEBUGGING_INFO.
	* c-parse.in: Don't give the asmdef production a type.

2004-02-12  Zack Weinberg  <zack@codesourcery.com>

	* debug.h (struct gcc_debug_hooks): Add type_decl field.
	(debug_nothing_tree_int): Prototype.
	(dwarf_debug_hooks): Delete, unused.
	* debug.c (do_nothing_debug_hooks): Update.
	(debug_nothing_tree_int): New function.
	* langhooks.h (struct lang_hooks_for_decls):
	Remove builtin_type_decls field.
	* langhooks-def.h (LANG_HOOKS_BUILTIN_TYPE_DECLS): Delete.
	(LANG_HOOKS_DECLS): Update.
	* toplev.c (rest_of_decl_compilation, rest_of_type_compilation):
	Use debug_hooks->type_decl.
	* dbxout.c (preinit_symbols): New static.
	(dbx_debug_hooks, xcoff_debug_hooks): Update.
	(dbxout_init): Don't call DBX_OUTPUT_STANDARD_TYPES or
	lang_hooks.decls.builtin_type_decls.  Do scan preinit_symbols
	for symbols to output.
	(dbxout_type_decl): New function.
	(dbxout_symbol): If called before dbxout_init has run, queue
	the symbol for later.  Apply DBX_ASSIGN_FUNDAMENTAL_TYPE_NUMBER
	to TYPE_DECLs before emitting them.
	* xcoffout.c (assign_type_number): Delete.
	(xcoff_type_numbers): New static table.
	(xcoff_assign_fundamental_type_number): New function.
	* xcoffout.h: Define DBX_ASSIGN_FUNDAMENTAL_TYPE_NUMBER, not
	DBX_OUTPUT_STANDARD_TYPES.  Remove unnecessary #ifdefs.
	* sdbout.c: Include varray.h.
	(deferred_global_decls): New static.
	(sdb_debug_hooks): Update.
	(sdbout_global_decl): If we can't emit something right now,
	remember it in deferred_global_decls.
	(sdbout_finish): Just scan deferred_global_decls; don't call getdecls.
	(sdbout_init): Initialize deferred_global_decls.
	* Makefile.in: Update dependencies of sdbout.o.
	* dwarf2out.c (dwarf2out_type_decl): New function.
	(dwarf2_debug_hooks): Update.
	* vmsdbgout.c (vmsdbg_debug_hooks): Update.
	* c-decl.c (getdecls): Just return 0.
	(check_for_loop_decls): Don't use getdecls.
	(record_builtin_type): Call debug_hooks->type_decl on the TYPE_DECL.
	* c-objc-common.c (c_objc_common_finish_file): Don't use getdecls.

2004-02-12  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.c (s390_sched_reorder2): Remove.
	(TARGET_SCHED_REORDER2): Do not redefine.

2004-02-12  Zack Weinberg  <zack@codesourcery.com>

	* c-parse.in (maybe_type_qual): Delete.
	(maybe_volatile, simple_asm_expr, asmdef, asm_stmt)
	(asm_argument): New grammar rules.
	(extdef_1): Use asmdef.
	(maybeasm): Move down with other asm rules; use simple_asm_expr.
	(xexpr): Move up with other expression rules.
	(stmt): Use asm_stmt.

	* c-typeck.c (build_asm_expr): New function - body mostly
	pulled from build_asm_stmt.
	(build_asm_stmt): Just handle tacking on the volatile qualifier.
	* c-tree.h (build_asm_expr, build_asm_stmt): Update prototypes.

2004-02-12  Richard Sandiford  <rsandifo@redhat.com>

	PR bootstrap/13617
	* config/mips/mips-protos.h (mips_output_aligned_decl_common): Declare.
	(mips_declare_object): Make variadic.
	* config/mips/mips.h (ASM_OUTPUT_ALIGNED_DECL_COMMON): Use
	mips_output_aligned_decl_common.
	* config/mips/mips.c (mips_output_aligned_decl_common): New function.
	(mips_declare_object): Make variadic.

2004-02-12  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* function.c (update_epilogue_consts): Teach about binary operations.

	* emit-rtl.c (set_mem_attributes_minus_bitpos): Don't kill
	previous MEM_VOLATILE in REF.
	* function.c (fixup_var_refs): Save volatile_ok and set to 1.
	* expr.c (emit_block_move_via_movstr): Save and restore volatile_ok.

2004-02-12  Gunther Nikl  <gni@gecko.de>

	* config.gcc: Restore support for m68k-openbsd.

2004-02-12  Jan Hubicka  <jh@suse.cz>

	* tree-optimize.c (tree_rest_of_compilation): Do not release
	DECL_ARGUMENTS.

2004-02-11  Matt Kraai  <kraai@alumni.cmu.edu>

	* doc/install.texi: Fix the spelling of "explicitly".

2004-02-11  Eric Christopher  <echristo@redhat.com>

	* cppcharset.c (_cpp_interpret_string_notranslate): Rename and
	duplicate argument structure of cpp_interpret_string.
	* cpphash.h: Move prototype...
	* cpplib.h: Here.
	* cpplib.c: Fix calls to match new function signature.

2004-02-11  Joseph S. Myers  <jsm@polyomino.org.uk>

	PR c/456
	* cppexp.c (num_binary_op): Don't allow comma operators in #if
	constant expressions at all outside C99 mode if pedantic.

2004-02-11  Uros Bizjak  <uros@kss-loka.si>

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

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

2004-02-11  Richard Henderson  <rth@redhat.com>

	PR target/1532
	* flow.c (insn_dead_p): A clobber of a dead hard register is a
	dead insn after reload.

2004-02-11  Ulrich Weigand  <uweigand@de.ibm.com>

	* tree.h (frame_base_decl): Add GTY marker.
	* var-tracking.c (frame_base_decl): Likewise.

2004-02-11  Daniel Berlin  <dberlin@dberlin.org>

	* dwarf2out.c (output_loc_list): Remove no longer necessary, and now
	incorrect, hunk.
	(add_location_or_const_value_attribute): Use text_section_label,
	not TEXT_SECTION_NAME.

2004-02-11  Per Bothner  <per@bothner.com>

	Represent column numbers using line-map's source_location.
	The "next available source_location" is now managed internally by
	line-maps.c rather than by clients.
	* line-map.h (struct line_map): New field column_bits.
	<from_line>: Rename field to start_location.
	(struct line_maps): New fields highest_location and max_column_hint.
	(linemap_check_files_exited): New declaration.
	(linemap_line_start): New declaration.
	(linemap_add): Remove from_line parameter; use highest_location field.
	(SOURCE_LINE, LAST_SOURCE_LINE): Modify to use column_bits.
	(SOURCE_COLUMN, LAST_SOURCE_LINE_LOCATION): New macros.
	(CURRENT_LINE_MAP): Remove macro.
	(linemap_position_for_column): New inline function.
	* line-map.c (linemap_init): Clear new fields.
	(linemap_check_files_exited): New function, extracted from ...
	(linemap_free): Use linemap_check_files_exited.
	(linemap_add): Remove from_line parameter.  Various updates.
	(linemap_line_start): New function.
	(linemap_lookeup): Update for new field names.
	* cpphash.h (struct cpp_reader) <map>: Field removed.  Because
	linemap_position_for_column may unpredictably change the current map,
	it is cleaner and simpler for us to not cache it in cpp_reader.
	(struct cpp_buffer): New sysp field.
	Changed warned_cplusplus_comments and from_stage3 to bitfields.
	* cppinit.c (cpp_read_min_file): pfile->map no longer exists.
	* cpplib.c (do_line, do_linemarker, _cpp_do_file_change): Get
	current map using linemap_lookup.
	(do_linemarker): Also set buffer's sysp field.
	(destringize_and_run): No longer need to decrement current line.
	* cppfiles.c (_cpp_stack_file): Set sysp from and in buffer.
	(search_path_head, open_file_failed): Use buffer's sysp.
	(cpp_make_system_header): Get current map using linemap_lookup.
	Also set buffer's sysp flag.
	* cppmacro.c (_cpp_builtin_macro_text): Likewise use linemap_lookup.
	* cpphash.h (CPP_INCREMENT_LINE): New macro.
	(struct cpp_buffer): Moved fields saved_cur, saved_rlimit to ...
	(struct cpp_reader): ... and adding saved_line_base field.
	* cpptrad.c (_cpp_overlay_buffer, _cpp_remove_overlay):
	Update accordingly.  Don't adjust line.
	(_cpp_scan_out_logical_line): Use CPP_INCREMENT_LINE.
	* cpphash.c (CPP_IN_SYSTEM_HEADER): Replaced macro by ...
	(cpp_in_system_header): ... new inline function, using buffer's sysp.
	* cpperror.c (_cpp_begin_message): Update to use cpp_in_system_header.
	* cpplex.c (_cpp_lex_direct): Likewise.
	* cppmacro.c (_cpp_builtin_macro_text): Likewise.
	* cppmacro.c (_cpp_create_definition): Use buffer's sysp field.
	* cpplib.h (struct cpp_token): Rename line field to src_loc.
	Remove col field as it is now subsumed by src_loc.
	* cpperror.c: Update various field, parameter, and macro names.
	(print_location): If col==0, try SOURCE_COLUMN of line.
	(cpp_error): Use cur_token's src_loc field, rather than line+col.
	* cpplib.c (do_diagnostic): Token's src_loc fields replaces line+col.
	* cpplex.c (_cpp_process_line_notes, _cpp_lex_direct,
	_cpp_skip_block_comment): Use CPP_INCREMENT_LINE.
	(_cpp_temp_token): Replace cpp_token's line+col fields by src_loc.
	(_cpp_get_fresh_line): Don't need to adjust line for missing newline.
	(_cpp_lex_direct): Use linemap_position_for_column.
	* c-ppoutput.c (maybe_print_line, print_line): Don't take map
	parameter.  Instead get it from the line_table global.  Adjust callers.
	(print): Remove map field.  Replace line field to src_line.
	(init_pp_output, account_for_newlines, maybe_print_line): Adjust.
	(cb_line_change): Use SOURCE_COLUMN.  Minor optimizations.
	(pp_file_change): Use MAIN_FILE_P since we cannot checked print.map.
	Use LAST_SOURCE_LINE_LOCATION to "catch up" after #include.
	* cpptrad.c (copy_comment): Rename variable.
	* c-lex.c (map): Remove static variable, for same reason we removed
	cpp_reader's map field.
	(cb_line_change, cb_def_pragma, cb_define, cb_undef): Hence we need
	to call linemap_lookup.
	(cb_line_change): Token's line field replaced by src_loc.
	(fe_file_change): Use MAINFILE_P and LAST_SOURCE_LINE macros.
	Don't save new_map.

	* cpphash.h, cpperror.c, cpplib.h: Some renames of fileline to
	source_location.

2004-02-11  Hartmut Penner  <hpenner@de.ibm.com>

	* config/rs6000/altivec.md (*movv4si_internal): At least one
	operand must be register_operand.
	(*movv8hi_internal1): Likewise.
	(*movv16qi_internal1): Likewise.
	(*movv4sf_internal1): Likewise.

2004-02-10  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/spe.md ("*movv2si_internal"): Check for register
	operand.
	(movv4hi_internal): Same.
	(movv2sf_internal): Same.
	(movv1di_internal): Same.

2004-02-11  Thiemo Seufer  <seufer@csv.ica.uni-stuttgart.de>

	* config/mips/mips.h (TARGET_OLDABI): Define. Use TARGET_NEWABI and
	TARGET_OLDABI consistently.
	* config/mips/mips.c (function_arg,mips_setup_incoming_varargs,
	mips_va_arg,override_options,compute_frame_size,
	mips_initial_elimination_offset,mips16_fp_args,build_mips16_call_stub
	,mips_return_in_memory,mips_strict_argument_naming): Use TARGET_NEWABI
	and TARGET_OLDABI consistently.
	* config/mips/mips.md (exception_receiver): Likewise.
	* config/mips/linux64.h: Likewise.

2004-02-11  Hartmut Penner  <hpenner@de.ibm.com>

	* config/rs6000/rs6000.c (rs6000_override_options)
	Set AltiVec ABI and vrsave as default for ppc64 linux.
	(init_cumulative_args): Post error, if try to return
	value in AltiVec register without enable AltiVec.
	(function_arg_advance): Ditto for passing arguments.

2004-02-11  Richard Sandiford  <rsandifo@redhat.com>

	* emit-rtl.c (mark_label_nuses): Check that a LABEL_REF refers to
	a label before updating its usage count.

2004-02-10  Matt Kraai  <kraai@alumni.cmu.edu>

	* doc/install.texi: Remove extra cd.

2004-02-10  Ziemowit Laski  <zlaski@apple.com>

	* c-common.c (vector_size_helper): Remove; call
	reconstruct_complex_type() instead.
	* tree.c (reconstruct_complex_type): New function
	(formerly vector_size_helper() in c-common.c).
	(make_vector): Make externally visible.
	* tree.h (reconstruct_complex_type, make_vector): Add prototypes.

2004-02-10  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300-protos.h: Add a prototype for
	h8300_regs_ok_for_stm.
	* config/h8300/h8300.c (h8300_regs_ok_for_stm): New.
	* config/h8300/h8300.md (stm_h8300s_2_advanced,
	stm_h8300s_2_normal, stm_h8300s_2, stm_h8300s_3_advanced,
	stm_h8300s_3_normal, stm_h8300s_3, stm_h8300s_4_advanced,
	stm_h8300s_4_normal, stm_h8300s_4, ldm_h8300s_2_advanced,
	ldm_h8300s_2_normal, ldm_h8300s_2, ldm_h8300s_3_advanced,
	ldm_h8300s_3_normal, ldm_h8300s_3, ldm_h8300s_4_advanced,
	ldm_h8300s_4_normal, ldm_h8300s_4): Use
	h8300_regs_ok_for_stm().

2004-02-10  Danny Smith  <dannysmith@users.sourceforge.net>

	PR c/14088
	* real.c (real_from_string): Look for 'X' as well as 'x' in
	hexfloat strings.

2004-02-10  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md: Remove an incorrect comment about
	peephole2.  Add comments.

2004-02-10  Josef Zlomek  <zlomekj@suse.cz>

	PR/14058
	* emit-rtl.c (set_decl_incoming_rtl): New.
	* tree.h (set_decl_incoming_rtl): New.
	* function.c (assign_parms): Use set_decl_incoming_rtl for setting
	DECL_INCOMING_RTL.
	* ada/misc.c (adjust_decl_rtl): Likewise.

2004-02-10  Per Bothner  <per@bothner.com>

	* c-opts.c (c_common_post_options): Don't emit working directory
	in cpp output if -P was specified.

2004-02-10  Paolo Bonzini  <bonzini@gnu.org>

	PR c/14092
	* fold-const.c (fold) <NEGATE_EXPR>: Convert result of
	negate_expr back to the original type.

2004-02-10  Alan Modra  <amodra@bigpond.net.au>

	* config/rs6000/linux64.h (MD_FALLBACK_FRAME_STATE_FOR): Don't
	bump retaddr here.

2004-02-10  Paolo Bonzini  <bonzini@gnu.org>

	* rtl.h (schedule_insns, schedule_ebbs, fix_sched_param,
	gen_lowpart_SUBREG): Move under the file in which they
	are actually declared.

2004-02-10  Arnaud Charlet  <charlet@act-europe.fr>

	* doc/sourcebuild.texi: Add libada documentation.

	* doc/install.texi: Update documentation on Ada build, now
	that the GNAT lib and tools are built automatically.

2004-02-10  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.h (TARGET_GPWORD): Return false for TARGET_NEWABI
	&& TARGET_IRIX.

2004-02-09  Ziemowit Laski  <zlaski@apple.com>

	* objc/objc-act.c (get_super_receiver): Move '#ifdef OBJCPLUS'
	boundaries outside build_component_ref() call (a macro in ObjC++).

2004-02-09  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/xtensa-protos.h (xtensa_copy_incoming_a7): Update.
	(init_cumulative_args): Likewise.
	(a7_overlap_mentioned_p): Delete prototype.
	* config/xtensa/xtensa.c (struct machine_function): Replace
	incoming_a7_copied field with need_a7_copy and vararg_a7 flags.
	Add set_frame_ptr_insn field.
	(xtensa_emit_move_sequence): Update call to xtensa_copy_incoming_a7.
	(xtensa_copy_incoming_a7): Rewrite to check need_a7_copy flag and check
	if the operand is an argument in a7.  If so, copy a7 to a new pseudo
	at the function entry and replace the operand with the pseudo.
	(init_cumulative_args): Remove unused arguments.  Add new "incoming"
	argument and record this flag in CUMULATIVE_ARGS.
	(function_arg): Remove result_mode and special-case code to handle
	arguments in a7.  Instead, set need_a7_copy flag when there is an
	incoming argument in a7.
	(xtensa_expand_prologue): Remove code to search for set_frame_ptr insn
	and use the value recorded in cfun->machine->set_frame_ptr_insn.
	(xtensa_builtin_saveregs): Check for negative gp_left value.  Set
	need_a7_copy and vararg_a7 flags.  Use move_block_from_reg instead of
	special-case code.
	(a7_overlap_mentioned_p): Delete.
	* config/xtensa/xtensa.h (CUMULATIVE_ARGS): Add "incoming" flag.
	(INIT_CUMULATIVE_ARGS, INIT_CUMULATIVE_INCOMING_ARGS): Remove useless
	arguments to init_cumulative_args and pass "incoming" flag instead.
	(BLOCK_REG_PADDING): Delete.
	* config/xtensa/xtensa.md (movdi, movsf, movdf): Remove unnecessary
	checks for reload_in_progress and reload_completed.  Update calls to
	xtensa_copy_incoming_a7.
	(ashlsi3): Rename existing insn to ashlsi3_internal.  Add expander
	to call xtensa_copy_incoming_a7.

2004-02-09  DJ Delorie  <dj@redhat.com>

	* config/i386/xm-djgpp.h (GCC_DRIVER_HOST_INITIALIZATION): No
	longer modify standard_exec_prefix, standard_bindir_prefix, or
	standard_startfile_prefix.

2004-02-09  James E Wilson  <wilson@specifixinc.com>

	PR c++/11295
	* c-common.c (c_expand_expr, case STMT_EXPR): Change expand_expr call
	to expand_expr_real call, and pass in alt_rtl as last argument.

	PR libstdc++/5625
	* builtin-types.def (BT_WORD, BT_FN_WORD_PTR): New.
	* builtins.c (expand_builtin): Handle BUILT_IN_EXTEND_POINTER.
	* builtins.def (BUILT_IN_EXTEND_POINTER): New.
	* except.c (expand_builtin_extend_pointer): New.
	* except.h (expand_builtin_extend_pointer): Declare.

2004-02-09  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.c (rs6000_emit_move): Remove splitting slow
	unaligned loads and stores.

2004-02-09  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* config/mips/iris5.h (BSS_SECTION_ASM_OP): Define.
	* config/mips/iris6.h (BSS_SECTION_ASM_OP): Undef.

	* config/mips/iris6.h (TARGET_ASM_NAMED_SECTION): Moved ...
	* config/mips/iris5.h: ... here.
	* config/mips/iris5gas.h (TARGET_ASM_NAMED_SECTION): Remove.

	* config/mips/iris6.h (EXTRA_SECTION_FUNCTIONS): Move ...
	* config/mips/iris5.h: ... here.

2004-02-09  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* configure.ac: Remove default executable files before AC_PROG_CC.
	* configure: Regenerate.

2004-02-09  Kazu Hirata  <kazu@cs.umass.edu>

	PR target/13721
	* config/h8300/h8300.c (byte_reg): Call abort() if asked to
	print a operand other than a register.

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

	* fold-const.c (fold) <NOP_EXPR>: Use the original type conversion
	tree code rather than call fold_convert, which doesn't specify a
	default floating point to integer conversion.

2004-02-08  Bernardo Innocenti  <bernie@develer.com>

	* config/m68k/m68k.c, config/m68k/m68k.md (SGS, SGS_CMP_ORDER): Remove
	code to support SGS assembler.  Reformat adjacent code where possible.
	* config/m68k/m68k.c (switch_table_difference_label_flag): Remove
	definition.
	* config/m68k/m68k.h (PRINT_OPERAND_PUNCT_VALID_P): Remove support
	for '%#'.
	* config/m68k/linux.h, config/m68k/m68k.c,
	* config/m68k/math-68881.h: Replace `%#' with `#' in inline asm
	macros and asm_printf() format strings.
	* config/m68k/m68kelf.h (ASM_OUTPUT_CASE_END): Remove macro definition.
	* config/m68k/linux.h: Update copyright.
	* config/m68k/linux.h, config/m68k/m68k.c: Remove traling whitespace.

2004-02-08  Andreas Schwab  <schwab@suse.de>
	    Bernardo Innocenti  <bernie@develer.com>

	* config/m68k/m68k.h (REGISTER_NAMES): Prefix each name with
	REGISTER_PREFIX.
	* (M68K_FP_REG_NAME): New macro to specify an alternate name for the
	frame pointer register, overridable by OS targets.
	* (M68K_REGNAME): Macro to obtain register name for asm output,
	eventually replacing %a6 with M68K_FP_REG_NAME.
	* config/m68k/coff.h (REGISTER_NAMES): Don't redefine.
	* config/m68k/linux.h (REGISTER_NAMES): Likewise.
	* config/m68k/m68kelf.h (REGISTER_NAMES): Likewise.
	* config/m68k/netbsd-elf.h (REGISTER_NAMES): Likewise.
	* config/m68k/m68k.c: Use M68K_REGNAME(x) in place of reg_names[x].

2004-02-08  Kazu Hirata  <kazu@cs.umass.edu>

	* target-def.h (TARGET_STRUCT_VALUE_RTX): Define as
	hook_rtx_tree_int_null.
	* targhooks.c (default_struct_value_rtx): Remove.
	* targhooks.h: Remove the prototype for
	default_struct_value_rtx.
	* config/alpha/alpha.c, config/arc/arc.c, config/avr/avr.c,
	config/fr30/fr30.c, config/h8300/h8300.c, config/i386/i386.c,
	config/ip2k/ip2k.c, config/iq2000/iq2000.c,
	config/m32r/m32r.c, config/mcore/mcore.c, config/mips/mips.c,
	config/mn10300/mn10300.c, config/pdp11/pdp11.c,
	config/rs6000/rs6000.c, config/s390/s390.c,
	config/stormy16/stormy16.c, config/v850/v850.c,
	config/xtensa/xtensa.c (TARGET_STRUCT_VALUE_RTX): Remove.
	* doc/tm.texi (TARGET_STRUCT_VALUE_RTX): Document the default.

2004-02-08  Joseph S. Myers  <jsm@polyomino.org.uk>

	* README.Portability: Change "ISO C89" to "ISO C90".
	* c-parse.in (primary, initelt): Likewise.

2004-02-08  Richard Sandiford  <rsandifo@redhat.com>

	* real.c (encode_ibm_extended): Normalize the input value before
	converting it to a double.  Handle the case where a normal value
	rounds to infinity.

2004-02-08  Kazu Hirata  <kazu@cs.umass.edu>

	* c-objc-common.c (c_cannot_inline_tree_fn): Fix a typo in a
	warning.
	* cse.c (preferrable): Change to preferable. Update all of its
	callers.
	* genautomata.c (ainsn): Change
	first_ainsn_with_given_equialence_num to
	first_ainsn_with_given_equivalence_num.  Update all of its
	references.

2004-02-08  Jan Hubicka  <jh@suse.cz>

	* schedule-ebb.c (schedule_ebbs): Do not allocate reg life data.

2004-02-07  David Edelsohn  <edelsohn@gnu.org>

	* function.c (assign_parms): Fix formatting.

2004-02-07  Kazu Hirata  <kazu@cs.umass.edu>

	* default.h (PROMOTE_PROTOTYPES): Remove.
	* system.h (PROMOTE_FUNCTION_RETURN, PROMOTE_PROTOTYPES,
	STRUCT_VALUE_REGNUM, SETUP_INCOMING_VARARGS,
	EXPAND_BUILTIN_SAVEREGS): Poison.
	* target-def.h (TARGET_PROMOTE_FUNCTION_RETURN): Define as
	hook_bool_tree_false.
	(TARGET_PROMOTE_PROTOTYPES): Likewise.
	* target.h: Replace SETUP_INCOMING_VARARGS with
	targetm.calls.setup_incoming_varargs().
	* targhooks.c (default_promote_function_return): Remove.
	(default_promote_prototypes): Likewise.
	(default_struct_value_rtx): Always abort().
	(default_expand_builtin_saveregs): Always print an error
	message.
	(default_setup_incoming_varargs): Do nothing.
	(default_pretend_outgoing_varargs_named): Don't depend on
	SETUP_INCOMING_VARARGS.
	* targhooks.h: Remove the prototype for
	default_promote_function_return and
	default_promote_prototypes.

2004-02-07  Kazu Hirata  <kazu@cs.umass.edu>

	* system.h (SHARED_SECTION_ASM_OP): Poison.
	* varasm.c (data_section): Don't use SHARED_SECTION_ASM_OP.
	* doc/tm.texi (SHARED_SECTION_ASM_OP): Remove.

2004-02-07  Zack Weinberg  <zack@codesourcery.com>

	Bug 13856
	* c-decl.c (diagnose_mismatched_decls): Only give special
	treatment when olddecl is DECL_BUILT_IN, if C_DECL_INVISIBLE
	is also true.
	(merge_decls): Don't clear DECL_BUILT_IN_CLASS and
	DECL_FUNCTION_CODE when defining a built-in function.
	Don't update DECL_ESTIMATED_INSNS.
	* dwarf2out.c (dwarf2out_decl): Don't ignore built-in
	FUNCTION_DECLs.
	* tree.h: Delete DECL_ESTIMATED_INSNS.
	* tree-inline.c (struct inline_data): Delete inlined_insns field.
	(expand_call_inline, optimize_inline_calls): Don't update
	DECL_ESTIMATED_INSNS nor inlined_insns.
	* cgraphunit.c (cgraph_analyze_function): Don't update
	DECL_ESTIMATED_INSNS.

2004-02-07  Zack Weinberg  <zack@codesourcery.com>

	* c-common.c (shadow_warning): Delete.
	* c-common.h (free_parser_stacks, shadow_warning, sw_kind): Delete.
	* c-decl.c (warn_if_shadowing): Issue shadow warnings directly.
	* c-opts.c (c_common_parse_file): Don't call free_parser_stacks.
	* c-parse.in (free_parser_stacks): Delete.

2004-02-07  Nathanael Nerode  <neroden@gcc.gnu.org>

	* Makefile.in, config/t-slibgcc-darwin, config/t-slibgcc-elf-ver,
	config/t-slibgcc-sld, config/mips/t-iris5-6, config/sh/t-linux:
	Use the top level mkinstalldirs, not the one in the gcc subdir.
	* mkinstalldirs: Remove (from the gcc subdir).

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

	PR middle-end/13696
	* fold-const.c (fold_convert): New function to provide type
	conversion to the middle-end without using convert.
	(negate_expr, associate_trees, size_diffop, omit_one_operand,
	operand_equal_for_comparison_p, pedantic_omit_one_operand,
	invert_truthvalue, optimize_bit_field_compare, range_binop,
	decode_field_reference, make_range, build_range_check, unextend,
	fold_truthop, extract_muldiv_1, fold_mathfn_compare,
	fold_binary_op_with_conditional_arg, fold_inf_compare,
	fold_single_bit_test, fold, multiple_of_p): Replace all calls to
	convert with calls to fold_convert.

2004-02-07  Jan Hubicka  <jh@suse.cz>

	* genrecog.c (find_operand): add extra argument stop.
	(validate_pattern): Verify that mach_dup is duplicating operand
	defined lexically earlier.

2004-02-07  Kazu Hirata  <kazu@cs.umass.edu>

	* config.gcc: Don't mention MAX_LONG_TYPE_SIZE.
	* system.h (MAX_LONG_TYPE_SIZE, MAX_LONG_DOUBLE_TYPE_SIZE,
	MAX_WCHAR_TYPE_SIZE, GCOV_TYPE_SIZE): Poison.
	* config/avr/avr.h, config/h8300/h8300.h, config/i386/i386.h,
	config/ia64/ia64.h, config/ip2k/ip2k.h,
	config/iq2000/iq2000.h, config/mips/iris5.h,
	config/mips/mips.h, config/pa/pa-64.h, config/pa/pa.h,
	config/rs6000/aix51.h, config/rs6000/aix52.h,
	config/rs6000/darwin.h, config/rs6000/rs6000.h,
	config/s390/s390.h, config/sh/sh.h, config/sparc/freebsd.h,
	config/sparc/linux.h, config/sparc/linux64.h,
	config/sparc/netbsd-elf.h, config/sparc/sparc.h,
	config/xtensa/xtensa.h: Remove the definitions of
	MAX_LONG_TYPE_SIZE, MAX_LONG_DOUBLE_TYPE_SIZE, and/or
	MAX_WCHAR_TYPE_SIZE.
	* doc/tm.texi (MAX_LONG_TYPE_SIZE, MAX_LONG_DOUBLE_TYPE_SIZE,
	MAX_WCHAR_TYPE_SIZE, GCOV_TYPE_SIZE): Remove.

2004-02-07  Stephane Carrez  <stcarrez@nerim.fr>

	PR bootstrap/13990
	* config/m68hc11/m68hc11.md ("doloop_end"): Pass dummy arguments to
	gen_rtx_NE.

2004-02-07  Josef Zlomek  <zlomekj@suse.cz>

	* var-tracking.c (vt_add_function_parameters): Surround checkings by
	#ifdef ENABLE_CHECKING and #endif.

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

	* fold-const.c (negate_expr_p, negate_expr): Optimize -(A+B) into
	either (-A)-B or (-B)-A, if A or B is easily negated respectively.
	(fold) <MINUS_EXPR>: Optimize (A*C) - (B*C) -> (A-B)*C for both
	integer types and floating point with unsafe_math_optimizations.
	Add similar optimization for (A*C1) - (A*C2) -> A*(C1-C2).
	Optimize A - B as A + (-B), if B is easily negated.

2004-02-07  Kazu Hirata  <kazu@cs.umass.edu>

	* c-ppoutput.c, cfganal.c, diagnostic.h, print-rtl.c,
	config/darwin.c, config/darwin.h, config/ia64/ia64-c.c,
	config/m32r/linux.h, config/rs6000/ppc64-fp.c,
	config/sparc/openbsd.h, doc/makefile.texi, doc/passes.texi:
	Update copyright.

2004-02-07  Kazu Hirata  <kazu@cs.umass.edu>

	* c-ppoutput.c, var-tracking.c: Fix comment typos.

2004-02-06  James E Wilson  <wilson@specifixinc.com>

	* config/ia64/linux.h (MD_FALLBACK_FRAME_STATE_FOR): Only define for
	glibc 2.3 or better.

2004-02-06  Kazu Hirata  <kazu@cs.umass.edu>

	* doc/tm.texi (TARGET_FLOAT_LIB_COMPARE_RETURNS_BOOL): Change
	to FLOAT_LIB_COMPARE_RETURNS_BOOL.

2004-02-07  Alan Modra  <amodra@bigpond.net.au>

	* config/rs6000/t-linux64 (LIB2FUNCS_EXTRA): Add darwin-ldouble.c.
	(SHLIB_MAPFILES): Add libgcc-ppc64.ver.
	(SHLIB_MKMAP_OPTS): Delete.
	(TARGET_LIBGCC2_CFLAGS): Add -specs.
	(bispecs): Add rule.
	* config/rs6000/libgcc-ppc64.ver: New file.
	* config/rs6000/ppc64-fp.c (__fixtfdi, __floatditf): New functions.
	(__floatdidf, __floatdisf): Optimize multiply.
	(__fixunstfdi): New function.
	* config/rs6000/rs6000.c (rs6000_complex_function_value): Allow for
	real and imag parts larger than one register.
	(function_arg): Correct type of reg used when fp arg split partially
	to stack.
	* config/rs6000/darwin-ldouble.c: Protect with #if !_SOFT_FLOAT
	and __MACH__ or __powerpc64__.

2004-02-06  Roger Sayle  <roger@eyesopen.com>
	    Ulrich Weigand  <uweigand@de.ibm.com>

	* builtins.c (expand_builtin_signbit): Use extract_bit_field instead
	of gen_highpart or gen_lowpart when the floating point format is
	wider than the result mode.

2004-02-06  Andrew Pinski  <pinskia@physics.uc.edu>

	* dwarf2out.c (loclabel_num): Move into #ifdef
	DWARF2_DEBUGGING_INFO.

2004-02-06  Ziemowit Laski  <zlaski@apple.com>

	* objc/objc-act.c (build_super_template) the 'class' field of
	'struct _objc_super' shall be named 'super_class' #ifdef OBJCPLUS.
	(get_super_receiver): Likewise.

2004-02-06  Kazu Hirata  <kazu@cs.umass.edu>

	* reload1.c (check_eliminable_occurrences): Optimize the reset
	of can_eliminate.
	(eliminate_regs_in_insn): Likewise.

2004-02-06  Daniel Berlin <dberlin@dberlin.org>
	    Josef Zlomek  <zlomekj@suse.cz>

	* dwarf2out.c (struct gcc_debug_hooks): Call dwarf2out_begin_function
	at the beginning of function, call dwarf2out_var_location for
	NOTE_INSN_VAR_LOCATION note.
	(struct var_loc_node, struct var_loc_list_def, loclabel_num,
	decl_loc_table): New.
	(lookup_decl_loc): New function.
	(add_var_loc_to_decl): New function.
	(based_loc_descr): Added parameter can_use_fbreg, DW_OP_fbreg is used
	only if can_use_fbreg.
	(mem_loc_descriptor): Added parameter can_use_fbreg, pass it to other
	functions.
	(loc_descriptor): Likewise. Process VAR_LOCATION.
	(concat_loc_descriptor): Call loc_descriptor with can_use_fbreg == true.
	(loc_descriptor_from_tree): Call mem_loc_descriptor with
	can_use_fbreg == true.
	(add_location_or_const_value_attribute): Added parameter enum
	dwarf_attribute attr, generate attribute ATTR.  Create the location list.
	(add_bound_info): Call loc_descriptor with can_use_fbreg == true.
	(gen_formal_parameter_die): Call add_location_or_const_value_attribute
	with attr == DW_AT_location.
	(gen_subprogram_die): Generate the location list for DW_AT_frame_base
	if frame_base_decl is defined and has a location list.
	(gen_variable_die): Call add_location_or_const_value_attribute with
	attr == DW_AT_location.
	(dwarf2out_var_location): New function.
	(dwarf2out_begin_function): New function.
	(dwarf2out_init): Create decl_loc_table.

2004-02-06  Ulrich Weigand  <uweigand@de.ibm.com>

	* loop.c (force_movables): Transitively increase the priorities of
	all insns forces by an insn, not just the first one.

2004-02-06  Josef Zlomek  <zlomekj@suse.cz>
	    Daniel Berlin <dberlin@dberlin.org>

	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.

2004-02-06  Jan Hubicka  <jh@suse.cz>

	* flow.c (update_life_info): Allocate reg_deaths when called from
	scheudler.
	(attempt_auto_inc): Update life ranges accordingly.

2004-02-06  Ulrich Weigand  <uweigand@de.ibm.com>

	PR debug/11816
	* dwarf2out.c (gen_decl_die): Handle anonymous struct members.

2004-02-06  Ulrich Weigand  <uweigand@de.ibm.com>

	* cfganal.c (flow_call_edges_add): Never split a libcall block.

2004-02-06  Daniel Berlin  <dberlin@dberlin.org>

	* dwarf2out.c (output_loc_list): Don't use deltas if we have
	a separate line info table in use.
	Use the correct size for terminators.
	(output_die): Use offset, not delta.

2004-02-06  H.J. Lu  <hongjiu.lu@intel.com>

	* doc/invoke.texi: Remove the pni option from -mfpmath=.

2004-02-06  Jan Hubicka  <jh@suse.cz>

	* recog.c (split_all_insns): Do not update reg info.
	* regrename.c (regrename_optimize): Likewise.
	* toplev.c (rest_of_handle_reorder_blocks): Likewise.
	* flow.c (struct propagate_block_info): Add insn_num field.
	(reg_deaths): New array.
	(life_analysis): Free reg_deaths info.
	(allocate_reg_life_data): Allocate reg_deaths array.
	(propagate_one_insn): Use new array.
	(init_propagate_block): Initialize it.
	(free_propagate_block_info): Finish compuation of
	REG_LIVE_LENGTH
	(attempt_auto_inc): Sanity check that REG_INFO is not
	computed at same time.
	(mark_used_regs): Update new array.

	* reg-stack.c (subst_stack_regs): Unshare clobbers before
	substitution.

2004-02-06  Kazu Hirata  <kazu@cs.umass.edu>

	* config/s390/s390.md (*extendsiqi2_short_displ): Change to
	*extendqisi2_short_displ.

2004-02-06  Alan Modra  <amodra@bigpond.net.au>

	* doc/tm.texi (INIT_CUMULATIVE_ARGS): Update doco.
	* calls.c (expand_call): Pass n_named_args to INIT_CUMULATIVE_ARGS.
	(emit_library_call_value_1): Likewise pass nargs.
	* expr.c (block_move_libcall_safe_for_call_parm): Pass 3 here.
	* function.c (assign_parms): Pass -1 to INIT_CUMULATIVE_ARGS.
	* config/rs6000/rs6000.c (init_cumulative_args): Use n_named_args
	parameter instead of scanning TYPE_ARGS_TYPES to count args.
	* config/rs6000/rs6000-protos.h (init_cumulative_args): Update
	prototype.
	* config/rs6000/rs6000.h (INIT_CUMULATIVE_ARGS): Pass extra arg.
	(INIT_CUMULATIVE_INCOMING_ARGS): Set extra arg to 1000.
	(INIT_CUMULATIVE_LIBCALL_ARGS): Set extra arg to 0.
	* config/sh/sh.c (sh_output_mi_thunk): Pass 1 as n_named_args to
	INIT_CUMULATIVE_ARGS.
	* config/alpha/alpha.h (INIT_CUMULATIVE_ARGS): Update.
	* config/alpha/unicosmk.h, config/alpha/vms.h, config/arc/arc.h,
	config/arm/arm.h, config/avr/avr.h, config/c4x/c4x.h,
	config/cris/cris.h, config/fr30/fr30.h, config/frv/frv.h,
	config/h8300/h8300.h, config/i386/i386.h, config/i860/i860.h,
	config/ia64/ia64.h, config/ip2k/ip2k.h, config/iq2000/iq2000.h,
	config/iq2000/iq2000.c, config/m32r/m32r.h, config/m68hc11/m68hc11.h,
	config/m68k/m68k.h, config/mcore/mcore.h, config/mips/mips.h,
	config/mmix/mmix.h, config/mn10300/mn10300.h, config/ns32k/ns32k.h,
	config/pa/pa.h, config/pdp11/pdp11.h, config/s390/s390.h,
	config/sh/sh.h, config/sparc/sparc.h, config/stormy16/stormy16.h,
	config/v850/v850.h, config/vax/vax.h, config/xtensa/xtensa.h: Likewise.

2004-02-06  Kazu Hirata  <kazu@cs.umass.edu>

	* genemit.c (gen_exp) [CONST_INT]: Use const_int_rtx whenever
	possible.

2004-02-06  Kazu Hirata  <kazu@cs.umass.edu>

	* reload1.c (eliminate_regs_in_insn): If a set has a REG_EQUAL
	note containing (plus (reg) (const_int)), where reg is an
	eliminable reg, then perform the register elimination without
	depending on eliminate_regs().

2004-02-06  Kazu Hirata  <kazu@cs.umass.edu>

	* config/arc/arc.c (arc_return_in_memory): Check the return
	value of int_size_in_bytes against -1.  Don't check
	TREE_ADDRESSABLE.
	* config/avr/avr.c (avr_return_in_memory): Check the return
	value of int_size_in_bytes against -1.
	* config/ip2k/ip2k.c (ip2k_return_in_memory): Likewise.
	* config/m68hc11/m68hc11.c (m68hc11_return_in_memory):
	Likewise.
	* config/mcore/mcore.c (mcore_return_in_memory): Likewise.
	* config/stormy16/stormy16.c (xstormy16_return_in_memory):
	Likewise.

2004-02-06  Kazu Hirata  <kazu@cs.umass.edu>

	* config/frv/frv-protos.h: Remove the prototype for
	frv_setup_incoming_varargs.
	* config/frv/frv.c (TARGET_SETUP_INCOMING_VARARGS): New.
	(frv_setup_incoming_varargs): Make it static.
	* config/frv/frv.h (SETUP_INCOMING_VARARGS): Remove.

2004-02-06  Kazu Hirata  <kazu@cs.umass.edu>

	* config/fr30/fr30-protos.h: Remove the prototype for
	fr30_setup_incoming_varargs.
	Update the prototypes for fr30_num_arg_regs and
	fr30_function_arg_partial_nregs.
	* config/fr30/fr30.c (TARGET_STRUCT_VALUE_RTX): New.
	(TARGET_SETUP_INCOMING_VARARGS): Likewise.
	(fr30_setup_incoming_varargs): Make it static.
	Add argument second_time.  Don't do anything when second_time
	is nonzero.
	(fr30_num_arg_regs): Change the type of the first argument to
	enum machine_mode.
	(fr30_function_arg_partial_nregs): Change the type of the
	second argument to enum machine_mode.
	* config/fr30/fr30.h (STRUCT_VALUE): Remove.
	(SETUP_INCOMING_VARARGS): Remove.

2004-02-06  Kazu Hirata  <kazu@cs.umass.edu>

	* config/arc/arc-protos.h: Remove the prototype for
	arc_setup_incoming_varargs.
	* config/arc/arc.c (TARGET_ASM_EXTERNAL_LIBCALL): New.
	(TARGET_SETUP_INCOMING_VARARGS): Likewise.
	(arc_setup_incoming_varargs): Make it static.
	(arc_external_libcall): Likewise.
	* config/arc/arc.h (SETUP_INCOMING_VARARGS): Remove.
	Remove the commented-out definition of
	ASM_OUTPUT_EXTERNAL_LIBCALL.

2004-02-05  SUGIOKA Toshinobu  <sugioka@itonet.co.jp>

	* config/sh/t-linux (SHLIB_INSTALL): Prepend $$(DESTDIR)
	to $$(slibdir) in the installation commands.

2004-02-05  David Edelsohn  <edelsohn@gnu.org>

	* reload.c (refers_to_regno_for_reload_p): Index hard_regno_nregs
	with inner_regno, not regno.
	* rtlanal.c (refers_to_regno_p): Same.

2004-02-05  Kazu Hirata  <kazu@cs.umass.edu>

	* config.gcc: Remove i370 support.

2004-02-05  Kelley Cook  <kcook@gcc.gnu.org>

	* doc/install.texi: Update automake and autoconf version
	requirements.  Note where to find gcj automake version.

2004-02-05  Kelley Cook  <kcook@gcc.gnu.org>

	* Makefile.in (generate-manpages): Move dependencies to ...
	(man): here.
	* doc/makefile.texi: Document new targets.
	* doc/sourcebuild.texi (Make-lang.in): Document new langhooks.

2004-02-05  Kelley Cook  <kcook@gcc.gnu.org>

	PR/13485
	Makefile.in (srcextra): Add a level of indirection to ...
	(gcc.srcextra): ... here.
	(po-generated): Delete.
	(po/$(PACKAGE).pot: Use srcextra instead of po-generated.  Depend on
	options.c.
	(start.encap): Remove superfluous lang.srcextra dependency.
	objc/Make-lang.in (po-generated): Delete.

2004-02-05  Kazu Hirata  <kazu@cs.umass.edu>

	* config/ia64/ia64.c (REG_GP): Remove.

2004-02-05  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* config/mips/iris5gas.h (PREFERRED_DEBUGGING_TYPE): Define.

2004-02-05  Devang Patel  <dpatel@apple.com>

	* dwarf2out.c (force_type_die): Look up input type itself
	instead of root_type() of type.

2004-02-05  Andreas Krebbel  <krebbel1@de.ibm.com>

	* config/s390/s390.md ("*tmqidi_ext"): New insn.
	("*extendqidi2_short_displ", "*extendsiqi2_short_displ"): Old
	pre-reload splitters are transformed to post-reload
	define_insn_and_split patterns.
	("*tmqisi_ext"): Renamed old "*tmqi_ext".

2004-02-05  Kazu Hirata  <kazu@cs.umass.edu>

	* config/cris/cris.h: Replace PROMOTE_PROTOTYPES with
	TARGET_PROMOTE_PROTOTYPES.

2004-02-05  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	PR middle-end/13750
	Revert:
	2004-01-15  Geoffrey Keating  <geoffk@apple.com>
	PR pch/13361
	* c-typeck.c (constructor_asmspec): Delete.
	(struct initializer_stack): Delete field 'asmspec'.
	(start_init): Delete saving of asmspec.
	(finish_init): Don't update constructor_asmspec.
	* dwarf2out.c (rtl_for_decl_location): Duplicate string from tree.
	* stmt.c (expand_asm): Duplicate strings from tree.
	(expand_asm_operands): Likewise.
	* tree.c (tree_size): Update computation of size of STRING_CST.
	(make_node): Don't make STRING_CST nodes.
	(build_string): Allocate string with tree node.
	* tree.def (STRING_CST): Update comment.
	* tree.h (TREE_STRING_POINTER): Adjust for change to STRING_CST.
	(tree_string): Place contents of string in tree node.
	* config/sh/sh.c (sh_handle_sp_switch_attribute): Duplicate string
	from tree.

2004-02-05  Joseph S. Myers  <jsm@polyomino.org.uk>

	* diagnostic.h (DEFINE_DIAGNOSTIC_KIND): Change parameter M to
	msgid.

2004-02-05  Dorit Naishlos  <dorit@il.ibm.com>

	* config/rs6000/altivec.md (*movv4si_internal): At least one
	operand must be altivec_register_operand.
	(*movv8hi_internal1): Likewise.
	(*movv16qi_internal1): Likewise.
	(*movv4sf_internal1): Likewise.

2004-02-05  David Edelsohn  <edelsohn@gnu.org>

	* configure.ac (gcc_cv_as_powerpc_mfcrf): Correct test for mfcr.
	* configure: Regenerate.

2004-02-05  Jonathan Wakely  <redi@gcc.gnu.org>

	* doc/install.texi: Update description of --gxx-include-dir to
	give correct default value.

2004-02-05  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.h (REG_OK_FOR_BASE_NONSTRICT_P): Replace
	8 with MAC_REG.

2004-02-05  Kazu Hirata  <kazu@cs.umass.edu>

	* config/pa/pa.c (emit_hpdiv_const): Replace gen_rtx with
	gen_rtx_PARALLEL.

2004-02-05  Kazu Hirata  <kazu@cs.umass.edu>

	* emit-rtl.c: Update the comment about the file.

2004-02-05  Joseph S. Myers  <jsm@polyomino.org.uk>

	* sourcebuild.texi (Test Idioms): Update testcase naming
	conventions.

2004-02-04  Per Bothner  <per@bothner.com>

	Partially revert/redo 2003-10-01 change; fix -fworking-directory.
	* c-ppoutput.c (pp_dir_change): New function.
	* c-common.h (pp_dir_change): New declaration.
	* cpplib.h (struct cpp_options): Remove working_directory field.
	* cppinit.c (cpp_find_main_file, cpp_push_main_file): Merge back to
	(cpp_read_main_file): as before 10-01.  Call _cpp_stack_file.
	Don't handle -fworking_directory here, but in c_common_post_options.
	(read_original_directory): Don't back up when done.
	Don't clear no-longer used working_directory flag.
	* cpplib.h: Update declarations to match.
	* c-lex.c (cb_dir_change): Move to c-opts.c.
	(init_c_lex): Don't set dir_change callback here, since we want
	to set it even if flag_preprocess_only.
	* c-opts.c (cb_dir_change): Function moved from c-lex.c.
	(c_common_post_options): Set dir_change callback.
	Call pp_dir_change if approporiate.
	(finish_options): Don't call cpp_find_main_file here.	Hence remove
	unneeded parameter and result. Do LC_RENAME for <built-in>.
	(c_common_post_options): Call cpp_read_main_file here instead.
	(c_common_init): Update accordingly.
	(push_command_line_include): Don't cpp_push_main_file.
	Do LC_RENAME rather than LC_LEASE to get back to main file.
	Compared to pre-10-01 version, inline cpp_rename_to_main_file.
	(c_common_parse_file): Call cpp_read_main_file for subsequent main
	files, but call finish_options for all files.
	* c-opts.c (sanitize_cpp_opts): Don't set cpp_opts->working_directory.
	* fix-header.c (read_scan_file): Call cpp_read_main_file instead of
	cpp_find_main_file + cpp_push_main_file.
	* c-lex.c (fe_file_change): Don't set main_input_filename here.
	* opts.c (handle_options): Only set main_input_filename first time.

2004-02-05  Ian Lance Taylor  <ian@wasabisystems.com>

	* config/arm/arm.h (REG_CLASS_NAMES): Add missing comma.

2004-02-04  Geoffrey Keating  <geoffk@apple.com>

	* reload.c (find_equiv_reg): When checking for register overlap,
	don't index hard_regno_nregs with a pseudo-reg.

2004-02-04  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.c (s390_trampoline_template): Remove gen_rtx().

2004-02-04  David Edelsohn  <edelsohn@gnu.org>

	* reload.c (refers_to_regno_for_reload_p): Test regno, not inner_regno,
	against FIRST_PSEUDO_REGISTER.

2004-02-04  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* Makefile.in: Move target, host overrides after per-language
	fragments.

	* config/mips/t-iris5-as (FORCE_DEBUG_ADAFLAGS): Clear.
	(GNATLIBCFLAGS): Remove -g.

2004-02-04  Kazu Hirata  <kazu@cs.umass.edu>

	* 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.

2004-02-04  Kazu Hirata  <kazu@cs.umass.edu>

	* 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.

2004-02-04  Kazu Hirata  <kazu@cs.umass.edu>

	* 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.

2004-02-04  Kazu Hirata  <kazu@cs.umass.edu>

	* alloc-pool.h, c-convert.c, c-lang.c, c-tree.h,
	caller-save.c, df.h, genconfig.c, global.c, lcm.c,
	ra-rewrite.c, ra.c, regclass.c, regs.h, resource.c,
	sched-rgn.c, config/arm/aof.h, config/arm/cirrus.md,
	config/arm/fpa.md, config/arm/iwmmxt.md,
	config/arm/netbsd-elf.h, config/arm/netbsd.h,
	config/m68hc11/m68hc11.md, config/mips/iris5.h,
	config/mn10300/mn10300.md, config/rs6000/altivec.md,
	config/sparc/netbsd-elf.h: Update copyright.

2004-02-04  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* config/sparc/sparc.c (function_arg_pass_by_reference): Return 1
	for all modes whose size is greater than 8 bytes if ARCH32.
	(sparc_va_arg): Handle all modes whose size is greater than 8 bytes
	by reference if ARCH32.

2004-02-04  Aldy Hernandez  <aldyh@redhat.com>

	* cgraphunit.c (cgraph_postorder): Fix typo in comment.

2004-02-04  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.md ("*la_64" + peepholes, "reload_indi"): Move
	to before adddi3 insn patterns.
	("*la_31" + peepholes, "*la_31_and", "*la_31_and_cc", "force_la_31",
	"reload_insi"): Move to before addsi3 insn patterns.

2004-02-04  Mark Mitchell  <mark@codesourcery.com>

	* calls.c (initialize_argument_information): Add CALL_FROM_THUNK_P
	parameter.  Use it instead of current_function_is_thunk.
	* function.h (struct function): Update documentation for is_thunk.
	* tree.h (CALL_FROM_THUNK_P): New macro.
	* config/alpha/alpha.c (alpha_sa_mask): Do not check
	no_new_pseudos when testing current_function_is_thunk.
	* config/rs6000/rs6000.c (rs6000_ra_ever_killed): Likeiwse.

2004-02-04  Kazu Hirata  <kazu@cs.umass.edu>

	* doc/tm.texi: Replace SETUP_INCOMING_VARARGS with
	TARGET_SETUP_INCOMING_VARARGS.

2004-02-04  Kazu Hirata  <kazu@cs.umass.edu>

	* emit-rtl.c (gen_rtx): Remove.
	* genattrtab.c: Don't mention gen_rtx in a comment.
	* rtl.h: Remove the prototype for gen_rtx.
	* doc/md.texi: Replace gen_rtx with gen_rtx_REG.

2004-02-04  Kazu Hirata  <kazu@cs.umass.edu>

	* config/arc/arc.h, config/fr30/fr30.h
	(SETUP_INCOMING_VARARGS): Remove the target-independent
	comments.
	* doc/tm.texi: Don't mention deprecated target macros.

2004-02-04  Kazu Hirata  <kazu@cs.umass.edu>

	* config/fr30/fr30.h (FUNCTION_VALUE): Remove the
	target-independent comment.

2004-02-04  Kazu Hirata  <kazu@cs.umass.edu>

	* doc/interface.texi, doc/tm.texi, doc/trouble.texi: Don't
	mention deprecated target macros.

2004-02-04  Kazu Hirata  <kazu@cs.umass.edu>

	* config.gcc: Remove obsolete ports and configurations.
	* config/linux-aout.h, config/netware.h,
	config/t-linux-gnulibc1, config/d30v/abi,
	config/d30v/d30v-protos.h, config/d30v/d30v.c,
	config/d30v/d30v.h, config/d30v/d30v.md,
	config/d30v/libgcc1.asm, config/d30v/t-d30v,
	config/dsp16xx/dsp16xx-modes.def,
	config/dsp16xx/dsp16xx-protos.h, config/dsp16xx/dsp16xx.c,
	config/dsp16xx/dsp16xx.h, config/dsp16xx/dsp16xx.md,
	config/i370/README, config/i370/i370-c.c,
	config/i370/i370-protos.h, config/i370/i370.c,
	config/i370/i370.h, config/i370/i370.md, config/i370/linux.h,
	config/i370/mvs.h, config/i370/oe.h, config/i370/t-i370,
	config/i386/freebsd-aout.h, config/i386/linux-aout.h,
	config/i386/moss.h, config/i386/netware.h,
	config/i386/svr3.ifile, config/i386/svr3dbx.h,
	config/i386/svr3gas.h, config/i386/svr3z.ifile,
	config/i386/t-udk, config/i386/udk.h, config/i386/vsta.h,
	config/i960/i960-c.c, config/i960/i960-coff.h,
	config/i960/i960-modes.def, config/i960/i960-protos.h,
	config/i960/i960.c, config/i960/i960.h, config/i960/i960.md,
	config/i960/rtems.h, config/i960/t-960bare,
	config/m68k/hp310.h, config/m68k/hp320.h,
	config/m68k/hp320base.h, config/m68k/m68kv4.h,
	config/m68k/netbsd.h, config/m68k/sgs.h, config/m68k/t-hp320:
	Remove.
	* doc/extend.texi, doc/install.texi, doc/invoke.texi,
	doc/md.texi: Remove mentions of obsolete ports.

2004-02-04  Jan Hubicka  <jh@suse.cz>

	* alias.c (find_base_term, get_addr): Do not dereference NULL
	pointer when all VALUE's locations has been invalidated.
	(rtx_equal_for_memref_p): Simplify checking of VALUEs.

2004-02-03  Wolfgang Bangerth  <bangerth@dealii.org>

	* doc/invoke.texi (x86 options): Fix spelling/wording.

2004-02-03  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/iris5.h (ASM_OUTPUT_ASCII): Use mips_output_ascii to
	put the original string in a comment.
	* config/mips/mips-protos.h (mips_output_ascii): Add prefix argument.
	* config/mips/mips.c (mips_output_ascii): Likewise.
	* config/mips/mips.h (ASM_OUTPUT_ASCII): Adjust accordingly.

2004-02-03  Kazu Hirata  <kazu@cs.umass.edu>

	* system.h (GIV_SORT_CRITERION): Poison.
	* config/avr/avr.h (GIV_SORT_CRITERION): Remove.
	* config/ip2k/ip2k.h (GIV_SORT_CRITERION): Likewise.

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

	PR target/9348
	* expr.c (expand_expr_real) <MULT_EXPR>: When performing widening
	multiplies with a multiplication of the wrong signedness, its the
	signedness of the multiplication that we've performed that needs to
	be passed to expand_mult_highpart_adjust.  Avoid emitting a nop-move
	if expand_mult_highpart_adjust places the result in target.

2004-02-03  Richard Henderson  <rth@redhat.com>

	* varasm.c (const_desc_rtx_sym_eq): Compare symbol strings.

2004-02-03  J"orn Rennecke <joern.rennecke@superh.com>

	* config.gcc (sh[234]l): Use little endian fragments.

2004-02-03  Paul Koning  <pkoning@equallogic.com>

	* config/pdp11/pdp11-modes.def: Add RESET_FLOAT_FORMAT calls.
	* config/pdp11/pdp11-protos.h (legitimate_const_double_p): Add.
	* config/pdp11/pdp11.c (encode_pdp11_f, decode_pdp11_f,
	encode_pdp11_d, decode_pdp11_d): New functions to handle PDP11
	floating point format.
	(pdp11_f_format, pdp11_d_format): New real_format descriptors for
	the above functions.
	(output_move_quad): Output float values in correct target format.
	(legitimate_const_double_p): New function.
	* config/pdp11/pdp11.h: Fix typos.
	(FLOAT_WORDS_BIG_ENDIAN): Add definition.
	(TARGET_FLOAT_FORMAT): Ditto.
	(pdp11_f_format, pdp11_d_format): Add external declarations.
	(MAX_REGS_PER_ADDRESS): Corrected.
	(LEGITIMATE_CONSTANT_P): Use legitimate_const_double_p().
	(PRINT_OPERAND): Output float literals in target format.

2004-02-03  Mark Mitchell  <mark@codesourcery.com>

	PR c++/13975
	* tree.h (enum tree_index): Add TI_PUBLIC, TI_PROTECTED, and
	TI_PRIVATE.
	(access_public_node): Redefine.
	(access_protected_node): Likewise.
	(access_private_node): Likewise.
	* tree.c (build_common_tree_nodes): Create access_public_node,
	access_protected_node, and access_private_node.

2004-02-03  Steve Ellcey  <sje@cup.hp.com>

	* config/ia64/ia64.h (MASK_INLINE_INT_DIV_LAT): Change value.
	(MASK_INLINE_INT_DIV_THR): Ditto.
	(MASK_INLINE_SQRT_LAT): Ditto.
	(MASK_INLINE_SQRT_THR): Ditto.
	(MASK_DWARF2_ASM): Ditto.
	(MASK_EARLY_STOP_BITS): Ditto.

2004-02-02  Paul Brook  <paul@codesourcery.com>

	Merge from csl-arm-branch.

	2004-01-30  Paul Brook  <paul@codesourcery.com>

	* aof.h (REGISTER_NAMES): Add vfp reg names
	(ADDITIONAL_REGISTER_NAMES): Ditto.
	* aout.h (REGISTER_NAMES): Ditto.
	(ADDITIONAL_REGISTER_NAMES): Ditto.
	* arm-protos.h: Update/Add Prototypes.
	* arm.c (init_fp_table): Rename from init_fpa_table. Update users.
	Only allow 0.0 for VFP.
	(fp_consts_inited): Rename from fpa_consts_inited.  Update users.
	(values_fp): Rename from values_fpa.  Update Users.
	(arm_const_double_rtx): Rename from const_double_rtx_ok_for_fpa.
	Update users.  Only check valid constants for this hardware.
	(arm_float_rhs_operand): Rename from fpa_rhs_operand.  Update Users.
	Only allow consts for FPA.
	(arm_float_add_operand): Rename from fpa_add_operand.  Update users.
	Only allow consts for FPA.
	(use_return_insn): Check for saved VFP regs.
	(arm_legitimate_address_p): Handle VFP DFmode addressing.
	(arm_legitimize_address): Ditto.
	(arm_general_register_operand): New function.
	(vfp_mem_operand): New function.
	(vfp_compare_operand): New function.
	(vfp_secondary_reload_class): New function.
	(arm_float_compare_operand): New function.
	(vfp_print_multi): New function.
	(vfp_output_fstmx): New function.
	(vfp_emit_fstm): New function.
	(arm_output_epilogue): Output VPF reg restore code.
	(arm_expand_prologue): Output VFP reg save code.
	(arm_print_operand): Add 'P'.
	(arm_hard_regno_mode_ok): Return modes for VFP regs.
	(arm_regno_class): Return classes for VFP regs.
	(arm_compute_initial_elimination_offset): Include space for VFP regs.
	(arm_get_frame_size): Ditto.
	* arm.h (FIXED_REGISTERS): Add VFP regs.
	(CALL_USED_REGISTERS): Ditto.
	(CONDITIONAL_REGISTER_USAGE): Enable VFP regs.
	(FIRST_VFP_REGNUM): Define.
	(LAST_VFP_REGNUM): Define.
	(IS_VFP_REGNUM): Define.
	(FIRST_PSEUDO_REGISTER): Include VFP regs.
	(HARD_REGNO_NREGS): Handle VFP regs.
	(REG_ALLOC_ORDER): Add VFP regs.
	(enum reg_class): Add VFP_REGS.
	(REG_CLASS_NAMES): Ditto.
	(REG_CLASS_CONTENTS): Ditto.
	(CANNOT_CHANGE_MODE_CLASS) Handle VFP Regs.
	(REG_CLASS_FROM_LETTER): Add 'w'.
	(EXTRA_CONSTRAINT_ARM): Add 'U'.
	(EXTRA_MEMORY_CONSTRAINT): Define.
	(SECONDARY_OUTPUT_RELOAD_CLASS): Handle VFP regs.
	(SECONDARY_INPUT_RELOAD_CLASS): Ditto.
	(REGISTER_MOVE_COST): Ditto.
	(PREDICATE_CODES): Add arm_general_register_operand,
	arm_float_compare_operand and vfp_compare_operand.
	* arm.md (various): Rename as above.
	(divsf3): Enable when TARGET_VFP.
	(divdf3): Ditto.
	(movdfcc): Ditto.
	(sqrtsf2): Ditto.
	(sqrtdf2): Ditto.
	(arm_movdi): Disable when TARGET_VFP.
	(arm_movsi_insn): Ditto.
	(movsi): Only split with general regs.
	(cmpsf): Use arm_float_compare_operand.
	(push_fp_multi): Restrict to TARGET_FPA.
	(vfp.md): Include.
	* vfp.md: New file.
	* fpa.md (various): Rename as above.
	* doc/md.texi: Document ARM w and U constraints.

	2004-01-15  Paul Brook  <paul@codesourcery.com>

	* config.gcc: Add with_fpu.  Allow with-float=softfp.
	* config/arm/arm.c (arm_override_options): Rename *-s to *s.
	Break out of loop when we find a float-abi.  Fix typo.
	* config/arm/arm.h (OPTION_DEFAULT_SPECS): Add "fpu".
	Set -mfloat-abi=.
	* doc/install.texi: Document --with-fpu.

	2003-01-14  Paul Brook  <paul@codesourcery.com>

	* config.gcc (with_arch): Add armv6.
	* config/arm/arm.h: Rename TARGET_CPU_*_s to TARGET_CPU_*s.
	* config/arm/arm.c (arm_overrride_options): Ditto.

	2004-01-08  Richard Earnshaw  <rearnsha@arm.com>

	* arm.c (FL_ARCH3M): Renamed from FL_FAST_MULT.
	(FL_ARCH6): Renamed from FL_ARCH6J.
	(arm_arch3m): Renamed from arm_fast_multiply.
	(arm_arch6): Renamed from arm_arch6j.
	* arm.h: Update all uses of above.
	* arm-cores.def: Likewise.
	* arm.md: Likewise.

	* arm.h (CPP_CPU_ARCH_SPEC): Emit __ARM_ARCH_6J__ define for armV6j,
	not arm6j.  Add entry for arch armv6.

	2004-01-07  Richard Earnshaw  <rearnsha@arm.com>

	* arm.c (arm_emit_extendsi): Delete.
	* arm-protos.h (arm_emit_extendsi): Delete.
	* arm.md (zero_extendhisi2): Also handle zero-extension of
	non-subregs.
	(zero_extendqisi2, extendhisi2, extendqisi2): Likewise.
	(thumb_zero_extendhisi2): Only match if not v6.
	(arm_zero_extendhisi2, thumb_zero_extendqisi2, arm_zero_extendqisi2)
	(thumb_extendhisi2, arm_extendhisi2, arm_extendqisi)
	(thumb_extendqisi2): Likewise.
	(thumb_zero_extendhisi2_v6, arm_zero_extendhisi2_v6): New patterns.
	(thumb_zero_extendqisi2_v6, arm_zero_extendqisi2_v6): New patterns.
	(thumb_extendhisi2_insn_v6, arm_extendhisi2_v6): New patterns.
	(thumb_extendqisi2_v6, arm_extendqisi_v6): New patterns.
	(arm_zero_extendhisi2_reg, arm_zero_extendqisi2_reg): Delete.
	(arm_extendhisi2_reg, arm_extendqisi2_reg): Delete.
	(arm_zero_extendhisi2addsi): Remove subreg.  Add attributes.
	(arm_zero_extendqisi2addsi, arm_extendhisi2addsi): Likewise.
	(arm_extendqisi2addsi): Likewise.

	2003-12-31  Mark Mitchell  <mark@codesourcery.com>

	Revert this change:
	* config/arm/arm.h (THUMB_LEGTITIMIZE_RELOAD_ADDRESS): Reload REG
	+ REG addressing modes.

	* config/arm/arm.h (THUMB_LEGTITIMIZE_RELOAD_ADDRESS): Reload REG
	+ REG addressing modes.

	2003-12-30  Mark Mitchell  <mark@codesourcery.com>

	* config/arm/arm.h (THUMB_LEGITIMATE_CONSTANT_P): Accept
	CONSTANT_P_RTX.

	2003-30-12  Paul Brook  <paul@codesourcery.com>

	* longlong.h: protect arm inlines with !defined (__thumb__)

	2003-30-12  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Always define __arm__.

	2003-12-30  Nathan Sidwell  <nathan@codesourcery.com>

	* builtins.c (expand_builtin_apply_args_1): Fix typo in previous
	change.

	2003-12-29  Nathan Sidwell  <nathan@codesourcery.com>

	* builtins.c (expand_builtin_apply_args_1): Add pretend args size
	to the virtual incoming args pointer for downward stacks.

	2003-12-29  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm-cores.def: Add cost function.
	* config/arm/arm.c (arm_*_rtx_costs): New functions.
	(arm_rtx_costs): Remove
	(struct processors): Add rtx_costs field.
	(all_cores, all_architectures): Ditto.
	(arm_override_options): Set targetm.rtx_costs.
	(thumb_rtx_costs): New function.
	(arm_rtx_costs_1): Remove cases handled elsewhere.
	* config/arm/arm.h (processor_type): Add COSTS parameter.

	2003-12-29  Nathan Sidwell  <nathan@codesourcery.com>

	* config/arm/arm.md (generic_sched): arm926 has its own scheduler.
	(arm926ejs.md): Include it.
	* config/arm/arm926ejs.md: New pipeline description.

	2003-12-24  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (arm_arch6j): New variable.
	(arm_override_options): Set it.
	(arm_emit_extendsi): New function.
	* config/arm/arm-protos.h (arm_emit_extendsi): Add prototype.
	* config/arm/arm.h (arm_arch6j): Declare.
	* config/arm/arm.md: Add sign/zero extend insns.

	2003-12-23  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (all_architectures): Add armv6.
	* doc/invoke.texi: Document it.

	2003-12-19  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.md: Add load1 and load_byte "type" attrs.  Modify
	insn patterns to match.
	* config/arm/arm-generic.md: Ditto.
	* config/arm/cirrus.md: Ditto.
	* config/arm/fpa.md: Ditto.
	* config/amm/iwmmxt.md: Ditto.
	* config/arm/arm1026ejs.md: Ditto.
	* config/arm/arm1135jfs.md: Ditto.  Add insn_reservation and bypasses
	for 11_loadb.

	2003-12-18  Nathan Sidwell  <nathan@codesourcery.com>

	* config/arm/arm-protos.h (arm_no_early_alu_shift_value_dep): Declare.
	* config/arm/arm.c (arm_adjust_cost): Check shift cost for
	TYPE_ALU_SHIFT and TYPE_ALU_SHIFT_REG.
	(arm_no_early_store_addr_dep, arm_no_early_alu_shift_dep,
	arm_no_early_mul_dep): Correctly deal with conditional execution,
	parallels and single shift operations.
	(arm_no_early_alu_shift_value_dep): Define.
	* arm.md (attr type): Replace 'normal' with 'alu',
	'alu_shift' and 'alu_shift_reg'.
	(attr core_cycles): Adjust.
	(*addsi3_carryin_shift, andsi_not_shiftsi_si, *arm_shiftsi3,
	*shiftsi3_compare0, *notsi_shiftsi, *notsi_shiftsi_compare0,
	*not_shiftsi_compare0_scratch, *cmpsi_shiftsi, *cmpsi_shiftsi_swp,
	*cmpsi_neg_shiftsi, *arith_shiftsi, *arith_shiftsi_compare0,
	*arith_shiftsi_compare0_scratch, *sub_shiftsi,
	*sub_shiftsi_compare0, *sub_shiftsi_compare0_scratch,
	*if_shift_move, *if_move_shift, *if_shift_shift): Set type
	attribute appropriately.
	* config/arm/arm1026ejs.md (alu_op): Adjust.
	(alu_shift_op, alu_shift_reg_op): New.
	* config/arm/arm1136.md: Add better bypasses for early
	registers. Remove load[234] and store[234] bypasses.
	(11_alu_op): Adjust.
	(11_alu_shift_op, 11_alu_shift_reg_op): New.

	2003-12-15  Nathan Sidwell  <nathan@codesourcery.com>

	* config/arm/arm-protos.h (arm_no_early_store_addr_dep,
	arm_no_early_alu_shift_dep, arm_no_early_mul_dep): Declare.
	* config/arm/arm.c (arm_no_early_store_addr_dep,
	arm_no_early_alu_shift_dep, arm_no_early_mul_dep): Define.
	* config/arm/arm1026ejs.md: Add load-store bypass.
	* config/arm/arm1136jfs.md (11_alu_op): Take 2 cycles.
	Add bypasses between instructions.

	2003-12-10  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (arm_fpu_model): New variable.
	(arm_fload_abi): New variable.
	(target_fpe_name): Rename from target_fp_name.
	(target_fpu_name): New variable.
	(arm_is_cirrus): Remove.
	(fpu_desc): New struct.
	(all_fpus): Define.
	(pf_model_for_fpu): Define.
	(all_loat_abis): Define.
	(arm_override_options): Set fp arch flags based on -mfpu=
	and -float-abi=.
	(FIRST_FPA_REGNUM): Rename from FIRST_ARM_FP_REGNUM.
	(LAST_FPA_REGNUM): Rename from LAST_ARM_FP_REGNUM.
	(*): Use new TARGET_* flags.
	* config/arm/arm.h (TARGET_ANY_HARD_FLOAT): Remove.
	(TARGET_HARD_FLOAT): No longer implies TARGET_FPA.
	(TARGET_SOFT_FLOAT): Ditto.
	(TARGET_SOFT_FLOAT_ABI): New.
	(TARGET_MAVERICK): Rename from TARGET_CIRRUS.  No longer implies
	TARGET_HARD_FLOAT.
	(TARGET_VFP): No longer implies TARGET_HARD_FLOAT.
	(TARGET_OPTIONS): Add -mfpu=.
	(FIRST_FPA_REGNUM): Rename from FIRST_ARM_FP_REGNUM.
	(LAST_FPA_REGNUM): Rename from LAST_ARM_FP_REGNUM.
	(arm_pf_model): Define.
	(arm_float_abi_type): Define.
	(fputype): Add FPUTYPE_VFP.  Change SOFT_FPA->NONE
	* config/arm/arm.md: Use new TARGET_* flags.
	* config/arm/cirrus.md: Ditto.
	* config/arm/fpa.md: Ditto.
	* config/arm/elf.h (ASM_SPEC): Pass -mfloat-abi= and -mfpu=.
	* config/arm/semi.h (ASM_SPEC): Ditto.
	* config/arm/netbsd-elf.h (SUBTARGET_ASM_FLOAT_SPEC): Specify vfp.
	(FPUTYPE_DEFAULT): Set to VFP.
	* doc/invoke.texi: Document -mfpu= and -mfloat-abi=.

	2003-11-22  Phil Edwards  <phil@codesourcery.com>

	PR target/12476
	* config/arm/arm.c (arm_output_mi_thunk): In Thumb mode, use
	'bx' instead of 'b' to avoid branch range restrictions.  Output
	the thunk immediately before the thunked-to function.
	* config/arm/arm.h (ARM_DECLARE_FUNCTION_NAME): Do not emit
	.thumb_func if a thunk is being generated.  Emit .code 16 along
	with .thumb_func if a thunk is not being generated.

	2003-11-15  Nicolas Pitre <nico@cam.org>

	* config/arm/arm.md (ashldi3, arm_ashldi3_1bit, ashrdi3,
	arm_ashrdi3_1bit, lshrdi3, arm_lshrdi3_1bit): New patterns.
	* config/arm/iwmmxt.md (ashrdi3_iwmmxt): Renamed from ashrdi3.
	(lshrdi3_iwmmxt): Renamed from lshrdi3.
	* config/arm/arm.c (IWMMXT_BUILTIN2): Renamed argument accordingly.

	2003-11-12  Steve Woodford  <scw@wasabisystems.com>
	    Ian Lance Taylor  <ian@wasabisystems.com>

	* config/arm/lib1funcs.asm (ARM_DIV_BODY, ARM_MOD_BODY): Add new
	code for __ARM_ARCH__ >= 5 && ! defined (__OPTIMIZE_SIZE__).

	2003-11-05  Phil Edwards  <phil@codesourcery.com>

	* config/arm/arm.md (insn): Add new V6 instruction names.
	(generic_sched): New attr.
	* config/arm/arm-generic.md: Use generic_sched here.
	* config/arm/arm1026ejs.md: Do not model fetch/issue/decode
	stages of pipeline.  Adjust latency counts accordingly.
	* config/arm/arm1136jfs.md: New file.

	2003-10-28  Mark Mitchell  <mark@codesourcery.com>

	* config/arm/arm.h (processor_type): New enumeration type.
	(CPP_ARCH_DEFAULT_SPEC): Set appropriately for ARM 926EJ-S,
	ARM1026EJ-S, ARM1136J-S, and ARM1136JF-S processor cores.
	(CPP_CPU_ARCH_SPEC): Likewise.
	* config/arm/arm.c (arm_tune): New variable.
	(all_cores): Use cores.def.
	(all_architectures): Add representative processor.
	(arm_override_options): Restructure way in which tuning
	information is deduced.
	* arm.md: Update "insn" and "type" attributes throughout.
	(insn): New attribute.
	(type): Compute "mult" from "insn" attribute.  Add load2,
	load3, load4 alternatives.
	(arm automaton): Move to arm-generic.md.
	* config/arm/arm-cores.def: New file.
	* config/arm/arm-generic.md: Likewise.
	* config/arm/arm1026ejs.md: Likewise.

2004-02-03  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* doc/invoke.texi (SPARC options): Remove -mflat and
	all -mxxx (xxx:chip) options.
	* config/sparc/aout.h (DBX_REGISTER_NUMBER): Delete.
	* config/sparc/litecoff.h (DBX_REGISTER_NUMBER): Likewise.
	* config/sparc/netbsd-elf.h (DBX_REGISTER_NUMBER): Likewise.
	* config/sparc/sol2.h (DBX_REGISTER_NUMBER): Likewise.
	* config/sparc/sparc-protos.h: Delete sparc_flat_* prototypes.
	* config/sparc/sparc.c: Likewise.
	(sparc_output_function_prologue): Remove TARGET_FLAT handling.
	(sparc_nonflat_function_prologue): Rename into sparc_function_prologue.
	(sparc_output_function_epilogue): Remove TARGET_FLAT handling.
	(sparc_nonflat_function_epilogue): Rename into sparc_function_epilogue.
	(struct sparc_frame_info, current_frame_info, zero_frame_info): Delete.
	(sparc_flat_must_save_register_p): Likewise.
	(sparc_flat_compute_frame_size): Likewise.
	(sparc_flat_save_restore): Likewise.
	(sparc_flat_function_prologue): Likewise.
	(sparc_flat_function_epilogue): Likewise.
	(sparc_flat_epilogue_delay_slots): Likewise.
	(sparc_flat_eligible_for_epilogue_delay): Likewise.
	(sparc_function_ok_for_sibcall): Remove TARGET_FLAT handling.
	* config/sparc/sparc.h (MASK_FLAT, TARGET_FLAT): Delete.
	(TARGET_SWITCHES): Remove -mflat and all -mxxx (xxx:chip) options.
	(SPARC_INCOMING_INT_ARG_FIRST): Remove TARGET_FLAT handling.
	(CONDITIONAL_REGISTER_USAGE): Likewise.
	(FRAME_POINTER_REQUIRED): Likewise.
	(INITIAL_ELIMINATION_OFFSET): Likewise.
	(BASE_RETURN_VALUE_REG): Likewise.
	(BASE_OUTGOING_VALUE_REG): Likewise.
	(BASE_PASSING_ARG_REG): Likewise.
	(BASE_INCOMING_ARG_REG): Likewise.
	(INCOMING_REGNO): Likewise.
	(OUTGOING_REGNO): Likewise.
	(LOCAL_REGNO): Likewise.
	(DELAY_SLOTS_FOR_EPILOGUE): Likewise.
	(ELIGIBLE_FOR_EPILOGUE_DELAY): Likewise.
	(EPILOGUE_USES): Likewise.
	* config/sparc/sparc.md ("isa" attribute): Change "v6" into "v7".
	("flat" attribute): Delete.
	(do_builtin_setjmp_setup): Remove TARGET_FLAT and "flat" attribute
	handling.
	(call followed by jump define_peephole's): Delete.
	(exception_receiver): Likewise.
	(builtin_setjmp_receiver): Likewise.
	* config/sparc/t-sparclite (MULTILIB_OPTIONS): Remove -mflat.

2004-02-03  Paolo Bonzini  <bonzini@gnu.org>

	PR c/11658
	PR c/13994
	* Makefile.in (c-parse.o, c-convert.o, c-typeck.o): Depend
	on langhooks.h.
	* objc/Make-lang.in (objc-parse.o): Depend on langhooks.h.
	* c-parse.in, c-convert.c, c-typeck.c, objc/objc-act.c:
	Include langhooks.h.  Replace c_common_truthvalue_conversion
	with the truthvalue_conversion language hook throughout.
	(expr_no_commas): Call default_conversion before save_expr
	for the first term of the production 'x ? : y'.
	* c-common.c (c_common_truthvalue_conversion): Remove
	obsolete block.  Invoke recursively the hook instead
	of this function.
	* c-convert.c (convert): handle ERROR_MARK_NODE.
	* c-typeck.c (build_binary_op): handle ERROR_MARK_NODE
	returned by the truthvalue_conversion language hook.
	* c-lang.c (LANG_HOOKS_TRUTHVALUE_CONVERSION): Use
	c_objc_common_truthvalue_conversion.
	* c-objc-common.c (c_objc_common_truthvalue_conversion):
	New function.
	* c-tree.h (c_objc_common_truthvalue_conversion): Declare it.
	* objc/objc-lang.c (LANG_HOOKS_TRUTHVALUE_CONVERSION): Use
	c_objc_common_truthvalue_conversion.

2004-02-03  Kazu Hirata  <kazu@cs.umass.edu>

	* config/c4x/c4x.h (FUNCTION_VALUE): Use gen_rtx_REG instead
	of gen_rtx.
	(LIBCALL_VALUE): Likewise.
	* config/ip2k/ip2k.c (mdr_try_propagate_clr_sequence): Use
	gen_rtx_CC0 instead of gen_rtx.
	* config/m68hc11/m68hc11.c (m68hc11_emit_libcall): Use
	gen_rtx_fmt_e and gen_rtx_fmt_ee instead of gen_rtx.
	(m68hc11_expand_compare): Use gen_rtx_fmt_ee instead of
	gen_rtx.
	(m68hc11_emit_logical): Likewise.

2004-02-03  Kazu Hirata  <kazu@cs.umass.edu>

	* 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.

2004-02-03  Kazu Hirata  <kazu@cs.umass.edu>

	* doloop.c, optabs.c, regmove.c, sched-deps.c,
	config/i386/i386.c, config/i386/i386.md: Use const0_rtx
	instead of GEN_INT (0).  Do the same for other constants that
	are readily available.

2004-02-03  Kazu Hirata  <kazu@cs.umass.edu>

	* combine.c (simplify_set): Use gen_rtx_fmt_e instead of
	gen_rtx.
	* emit-rtl.c (init_emit_once): Use gen_rtx_PC and gen_rtx_CC0
	instead of gen_rtx.
	* reload1.c (init_elim_table): Use gen_rtx_fmt_e instead of
	gen_rtx.
	* config/ns32k/ns32k.md (udivmodhi4): Use gen_rtx_IOR and
	gen_rtx_ASHIFT instead of gen_rtx.
	(udivmodqi4): Likewise.

2004-02-02  Richard Henderson  <rth@redhat.com>

	PR target/13789
	* expr.c (store_expr): Use force_operand before emit_move_insn.

2004-02-02  Jeff Law  <law@redhat.com>
	    Roger Sayle  <roger@eyesopen.com>

	* tree.c (commutative_tree_code, associative_tree_code): New
	functions.
	(iterative_hash_expr): Use commutative_tree_code.
	* tree.h (commutative_tree_code, associative_tree_code): Declare.
	* fold-const.c (operand_equal_p): Use commutative_tree_code
	rather than inlining the commutativity check.
	(fold): Likewise.

2004-02-02  Kazu Hirata  <kazu@cs.umass.edu>

	* system.h (FUNCTION_ARG_KEEP_AS_REFERENCE): Poison.
	* config/frv/frv-protos.h: Remove the prototype for
	frv_function_arg_keep_as_reference.
	* config/frv/frv.c (frv_function_arg_keep_as_reference):
	Remove.
	* config/frv/frv.h (FUNCTION_ARG_KEEP_AS_REFERENCE): Likewise.
	* config/stormy16/stormy16.h: Remove the commented-out
	definition of FUNCTION_ARG_KEEP_AS_REFERENCE.

2004-02-03  Alan Modra  <amodra@bigpond.net.au>

	PR target/13914
	* config/rs6000/linux64.h (MD_FALLBACK_FRAME_STATE_FOR): Use ap
	for retaddr_column.

2004-02-02  Kazu Hirata  <kazu@cs.umass.edu>

	* genemit.c (gen_exp): Generate gen_rtx_fmt_e* instead of
	gen_rtx.

2004-02-02  Eric Christopher  <echristo@redhat.com>
	    Zack Weinberg  <zack@codesourcery.com>

	* c-opts.c (c_common_handle_option): Add -finput-charset.
	* c.opt: Ditto.
	* cppcharset.c (one_iso88591_to_utf8): Remove.
	(convert_iso88591_utf8): Ditto.
	(conversion_tab): Remove 8859-1 converter.
	(_cpp_input_to_utf8): Remove.
	(_cpp_init_iconv_buffer): Ditto.
	(_cpp_close_iconv_buffer): Ditto.
	(_cpp_convert_input): New function.
	(_cpp_default_encoding): Ditto.
	* cpphash.h: Add/remove prototypes for above.
	* cppfiles.c (read_file_guts): Use _cpp_convert_input.
	* cppinit.c (cpp_create_reader): Use _cpp_default_encoding
	for narrow execution and input character sets.
	* cpplib.c (cpp_push_buffer): Delete uses of removed functions.
	* doc/cppopts.texi: Document -finput-charset.

2004-02-02  David Edelsohn  <edelsohn@gnu.org>

	* rtlanal.c (refers_to_regno_p): Test regno, not inner_regno,
	against FIRST_PSEUDO_REGISTER.

2004-02-02  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* doc/invoke.texi (SPARC options): Further improve.

2004-02-02  Kazu Hirata  <kazu@cs.umass.edu>

	* config/arm/arm.md, config/c4x/c4x.md, config/cris/cris.md,
	config/h8300/h8300.c, config/ip2k/ip2k.md,
	config/iq2000/iq2000.c, config/mips/mips.c,
	config/rs6000/rs6000.c, config/rs6000/rs6000.md,
	config/sh/sh.c, config/sh/sh.md, config/stormy16/stormy16.c,
	config/v850/v850.md: Fix indentation.

2004-02-02  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* config/sparc/sparc.c (function_arg_slotno): Align TImode
	arguments on a 16-byte boundary in the parameter array if ARCH64.
	Split handling of TFmode.

2004-02-02  Paolo Bonzini  <bonzini@gnu.org>

	* rtlanal.c (reg_overlap_mentioned_p) [!ENABLE_CHECKING]:
	Don't test CONSTANT_P (x).
	(reg_overlap_mentioned_p): Merge check for STRICT_LOWPART,
	ZERO_EXTRACT, SIGN_EXTRACT with the switch statement.
	Fix misindentation.

2004-02-02  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* doc/invoke.texi (SPARC options): Document that -mflat is deprecated.

2004-02-02  Kazu Hirata  <kazu@cs.umass.edu>

	* config/arc/arc.md, config/arm/arm.c, config/arm/arm.md,
	config/c4x/c4x.c, config/c4x/c4x.md, config/cris/cris.md,
	config/frv/frv.c, config/h8300/h8300.c, config/ip2k/ip2k.md,
	config/iq2000/iq2000.c, config/m32r/m32r.c,
	config/mcore/mcore.c, config/mips/mips.c, config/mmix/mmix.md,
	config/mn10300/mn10300.c, config/rs6000/rs6000.c,
	config/rs6000/rs6000.md, config/sh/sh.c, config/sh/sh.md,
	config/stormy16/stormy16.c, config/v850/v850.md,
	config/xtensa/xtensa.c: Replace gen_rtx with gen_rtx_fmt_e*.

2004-02-01  Kazu Hirata  <kazu@cs.umass.edu>

	* config/mcore/mcore.c (block_move_sequence): Replace
	gen_rtx_CONST_INT with GEN_INT.

2004-02-02  Jan Hubicka  <jh@suse.cz>

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

2004-02-01  Kazu Hirata  <kazu@cs.umass.edu>

	* config/arm/arm.c, config/arm/arm.h, config/arm/arm.md,
	config/arm/linux-gas.h, config/arm/netbsd-elf.h,
	config/arm/netbsd.h, config/arm/pe.c, config/avr/avr.c,
	config/avr/avr.h, config/avr/avr.md, config/c4x/c4x.h,
	config/cris/cris.h, config/fr30/fr30.h, config/frv/frv.c,
	config/frv/frv.h, config/ip2k/ip2k.c, config/iq2000/iq2000.c,
	config/iq2000/iq2000.h, config/m32r/m32r.c,
	config/m68hc11/m68hc11.c, config/m68hc11/m68hc11.h,
	config/m68hc11/m68hc11.md, config/m68k/m68k.md,
	config/mcore/mcore.c, config/mcore/mcore.h,
	config/mcore/mcore.md, config/mips/mips.c,
	config/ns32k/ns32k.h, config/ns32k/ns32k.md,
	config/rs6000/rs6000.c, config/s390/s390.c,
	config/s390/s390.md, config/sparc/sparc.c, config/v850/v850.c,
	config/xtensa/xtensa.h, config/xtensa/xtensa.md: Replace
	"gen_rtx (FOO, " with "gen_rtx_FOO (".

2004-02-01  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (two peephole2's): New.

2004-02-01  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* config/sparc/sol2-bi.h: Handle TARGET_CPU_ultrasparc3.
	(CPP_CPU_SPEC): Handle -mcpu=ultrasparc3.
	(ASM_CPU_SPEC): Likewise
	* config/sparc/sol2.h: Handle TARGET_CPU_ultrasparc3.
	(ASM_CPU_SPEC): Remove -mcpu=v8plus.  Handle -mcpu=ultrasparc3.

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

	* builtins.c (expand_builtin_pow): If flag_unsafe_math_optimizations
	isn't set, don't call expand_builtin_mathfn_2 to use the pow optab.
	(expand_builtin): Always call expand_builtin_pow.

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

	* builtins.def (BUILT_IN_SIGNBIT, BUILT_IN_SIGNBITF,
	BUILT_IN_SIGNBITL): New GCC builtins.
	* builtins.c (expand_builtin_signbit): New function to RTL expand
	calls to signbit, signbitf and signbitl as inline intrinsics.
	(expand_builtin): Call expand_builtin_signbit for BUILT_IN_SIGNBIT*.
	(fold_builtin_signbit): New function to perform constant folding
	of signbit, signbitf and signbitl.
	(fold_builtin): Call fold_builtin_signbit for BUILT_IN_SIGNBIT*.

	* doc/extend.texi: Document new signbit{,f,l} builtins.

2004-02-01  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.md (adddi3_internal_2): Remove superfluous %s.

2004-02-01  Chris Demetriou  <cgd@broadcom.com>

	* config/mips/mips.h (PREDICATE_CODES): Remove entries for
	"mips_const_double_ok" and "simple_memory_operand", which were
	removed from the MIPS port with the mips-3_4-rewrite branch merge.
	* config/mips/mips.c (mips16_lay_out_constants): Update comment
	for removal of simple_memory_operand.

2004-01-31  Kazu Hirata  <kazu@cs.umass.edu>

	* config/c4x/c4x.md: Use GEN_INT instead of
	gen_rtx (CONST_INT, ...).

2004-01-31  Richard Henderson  <rth@redhat.com>

	* varasm.c (output_constant_pool): Don't zap the pool.

2004-01-31  Kazu Hirata  <kazu@cs.umass.edu>

	* genrecog.c (decision_type): Add DT_const_int.
	(write_cond) [DT_const_int]: Print a comparison against small
	constant.
	(write_node): Simplify comparisons against small constants
	before printing tests.

2004-01-31  Kazu Hirata  <kazu@cs.umass.edu>

	* config/m32r/m32r.c (m32r_load_pic_register): Use GEN_INT
	instead of gen_rtx_CONST_INT.

2004-01-31  Kazu Hirata  <kazu@cs.umass.edu>

	* config/xtensa/xtensa.h (DYNAMIC_CHAIN_ADDRESS): Use GEN_INT
	instead of gen_rtx_CONST_INT.

2004-01-31  Kazu Hirata  <kazu@cs.umass.edu>

	* target-def.h (TARGET_STRICT_ARGUMENT_NAMING): Define as
	hook_bool_CUMULATIVE_ARGS_false.
	* targhooks.c (default_strict_argument_naming): Rename to
	hook_bool_CUMULATIVE_ARGS_false.
	* targhooks.h: Update the prototype for
	default_strict_argument_naming.

2004-01-31  Kazu Hirata  <kazu@cs.umass.edu>

	* config/sh/sh.c: Replace "gen_rtx (FOO, " with "gen_rtx_FOO (".
	* config/sh/sh.h: Likewise.
	* config/sh/sh.md: Likewise.

2004-01-31  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* doc/invoke.texi (SPARC options): Restructure and update.

2004-01-31  Kazu Hirata  <kazu@cs.umass.edu>

	* system.h (PROMOTE_FUNCTION_ARGS, STRUCT_VALUE_INCOMING, and
	STRICT_ARGUMENT_NAMING): Poison.
	* target-def.h (TARGET_PROMOTE_FUNCTION_ARGS): Define as
	hook_bool_tree_false.
	* targhooks.c (default_promote_function_args): Remove.
	(default_struct_value_rtx): Don't use STRUCT_VALUE_INCOMING.
	Don't check incoming.
	(default_strict_argument_naming): Don't use
	STRICT_ARGUMENT_NAMING.
	* targhooks.h: Remove the prototype for
	default_promote_function_args.

2004-01-31  Kazu Hirata  <kazu@cs.umass.edu>

	* config/i386/i386-protos.h: Remove the prototype for
	ix86_setup_incoming_varargs.
	* config/i386/i386.c (TARGET_SETUP_INCOMING_VARARGS): New.
	(ix86_setup_incoming_varargs): Make it static.
	* config/i386/i386.h (SETUP_INCOMING_VARARGS): Remove.

2004-01-31  Kazu Hirata  <kazu@cs.umass.edu>

	* alloc-pool.c: Fix comment typos.
	* builtin-types.def: Likewise.
	* builtins.def: Likewise.
	* c-pretty-print.c: Likewise.
	* df.h: Likewise.
	* reload1.c: Likewise.

2004-01-31  Kazu Hirata  <kazu@cs.umass.edu>

	* doc/invoke.texi: Follow spelling conventions.
	* doc/tm.texi: Likewise.

2004-01-31  Kazu Hirata  <kazu@cs.umass.edu>

	* doc/install.texi: Fix typos.
	* doc/invoke.texi: Likewise.

2004-01-31  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.c (s390_decompose_address): Do not treat virtual
	registers as pointers.
	* config/s390/s390.md ("*la_31" second peephole2): Fix incorrect mode.

2004-01-31  Paolo Bonzini  <bonzini@gnu.org>

	* combine.c (cse_main): Set gen_lowpart to gen_lowpart_for_combine
	and restore it to gen_lowpart_general on exit.
	(gen_lowpart_for_combine): Adjust all callers to go through
	gen_lowpart.
	* cse.c (cse_main): Set gen_lowpart to gen_lowpart_if_possible
	and restore it to gen_lowpart_general on exit.
	(gen_lowpart_if_possible): Adjust all callers to go through
	gen_lowpart.
	* emit-rtl.c (gen_lowpart_general): New name of gen_lowpart.
	(gen_lowpart): Declare as pointer to function, initialized to
	gen_lowpart_general.
	* rtl.h (gen_lowpart): Declare as pointer to function.

2004-01-31  Kazu Hirata  <kazu@cs.umass.edu>

	* bt-load.c: Replace "gen_rtx (FOO, " with "gen_rtx_FOO (".
	* calls.c: Likewise.
	* emit-rtl.c: Likewise.
	* function.c: Likewise.
	* reload1.c: Likewise.
	* config/i386/cygming.h: Likewise.
	* config/i386/i386.c: Likewise.
	* config/i386/winnt.c: Likewise.

2004-01-30  Dara Hazeghi  <dhazeghi@yahoo.com>

	PR bootstrap/9249
	* doc/install.texi: document --enable-__cxa_atexit option.
	* configure.ac: Disable __cxa_atexit if not supported.
	* configure: Regenerate.

2004-01-30  Daniel Berlin  <dberlin@dberlin.org>

	* ggc-zone.c (ggc_free): New function.

2004-01-30  Kazu Hirata  <kazu@cs.umass.edu>

	alloc-pool.c, c-lex.c, c-pragma.h, c-semantics.c, cfghooks.c,
	cfghooks.h, cfglayout.c, cfgloopmanip.c, debug.c, debug.h,
	flow.c, genextract.c, ggc-common.c, ggc-page.c, ggc.h,
	ifcvt.c, jump.c, loop-unswitch.c, timevar.c, timevar.def,
	tree-optimize.c, vmsdbgout.c, config/fp-bit.c,
	config/alpha/alpha.c, config/alpha/alpha.h,
	config/alpha/alpha.md, config/alpha/unicosmk.h,
	config/alpha/vms.h, config/arm/linux-elf.h, config/avr/avr.c,
	config/c4x/c4x-protos.h, config/c4x/c4x.md,
	config/d30v/d30v.h, config/frv/frv.md, config/frv/frvbegin.c,
	config/frv/frvend.c, config/i386/cygming.h,
	config/i386/djgpp.h, config/i386/emmintrin.h,
	config/i386/gthr-win32.c, config/i386/i386-interix.h,
	config/i386/i386-protos.h, config/i386/openbsd.h,
	config/i386/winnt.c, config/i386/xm-mingw32.h,
	config/i386/xmmintrin.h, config/ia64/ia64.md,
	config/iq2000/iq2000.md, config/m32r/m32r.md,
	config/m68k/m68k.md, config/mcore/mcore-elf.h,
	config/mcore/mcore.md, config/mips/elf.h, config/mips/elf64.h,
	config/mips/iris5gas.h, config/mips/iris6.h,
	config/mips/iris6gas.h, config/mips/linux.h,
	config/mips/mips.md, config/mips/netbsd.h,
	config/mips/openbsd.h, config/mips/windiss.h,
	config/pa/fptr.c, config/rs6000/aix.h,
	config/rs6000/altivec.h, config/rs6000/darwin.h,
	config/rs6000/xcoff.h, config/s390/s390-protos.h,
	config/s390/s390.c, config/s390/s390.h, config/s390/s390.md,
	config/sh/netbsd-elf.h, config/sh/sh.h, config/sh/vxworks.h,
	config/sparc/sol2.h: Update copyright.

2004-01-30  Kelley Cook  <kcook@gcc.gnu.org>

	* Makefile.in (abs_docdir, abs_srcdir): Define.
	(doc/%.dvi, doc/gccinstall.dvi): Use $(abs_docdir).

2004-01-30  Kazu Hirata  <kazu@cs.umass.edu>

	* genconfig.c (main): Have CC0_P check its operand even on a
	target without cc0.

2004-01-30  Kazu Hirata  <kazu@cs.umass.edu>

	* config/alpha/alpha.c: Remove mentions of deprecates macros
	in comments, remove some target-independent comments about target
	macros, and/or add minimal function comments for target hook
	implementations.
	* config/avr/avr.c: Likewise.
	* config/ia64/ia64.h: Likewise.
	* config/ip2k/ip2k.c: Likewise.
	* config/iq2000/iq2000.c: Likewise.
	* config/m32r/m32r.h: Likewise.
	* config/m68hc11/m68hc11.c: Likewise.
	* config/mcore/mcore.c: Likewise.
	* config/mmix/mmix.c: Likewise.
	* config/mn10300/mn10300.c: Likewise.
	* config/pa/pa.c: Likewise.
	* config/pdp11/pdp11.c: Likewise.
	* config/rs6000/rs6000.h: Likewise.
	* config/sh/sh.c: Likewise.
	* config/sh/sh.h: Likewise.
	* config/sparc/sparc.c: Likewise.
	* config/sparc/sparc.h: Likewise.
	* config/stormy16/stormy16.c: Likewise.
	* config/xtensa/xtensa.c: Likewise.

2004-01-30  Ulrich Weigand  <uweigand@de.ibm.com>

	PR optimization/12147
	* reload1.c (reload_reg_free_p): RELOAD_OTHER conflicts with
	RELOAD_FOR_OPADDR_ADDR.
	(reload_reg_reaches_end_p): RELOAD_FOR_OTHER_ADDRESS register
	might be reused as RELOAD_FOR_OPADDR_ADDR register.

2004-01-30  Jan Hubicka  <jh@suse.cz>

	* reload.c (get_secondary_mem): Fix updating of
	secondary_memlocs_elim_used.

2004-01-30  Richard Henderson  <rth@redhat.com>

	* varasm.c (struct rtx_const, struct pool_constant): Remove.
	(MAX_RTX_HASH_TABLE): Remove.
	(const_rtx_hash_table, const_rtx_sym_hash_table): Remove.
	(first_pool, last_pool, pool_offset): Remove.
	(struct rtx_constant_pool): Split out from ...
	(struct varasm_status): ... here.  Reference one via pointer.
	(struct constant_descriptor_rtx): Merge struct pool_constant.
	(SYMHASH): Remove.
	(decode_rtx_const): Remove.
	(const_hash_rtx, compare_constant_rtx): Remove.
	(record_constant_rtx): Remove.
	(const_desc_rtx_hash, const_desc_rtx_eq): New.
	(const_desc_rtx_sym_hash, const_desc_rtx_sym_eq): New.
	(const_rtx_hash_1, const_rtx_hash): New.
	(init_varasm_status): Allocate a rtx_constant_pool, and its hashes.
	(simplify_subtraction): Use simplify_rtx.
	(force_const_mem): Rewrite to use new data structures.
	(find_pool_constant): Likewise.
	(get_pool_constant, get_pool_constant_mark,
	get_pool_constant_for_function, get_pool_mode,
	get_pool_mode_for_function, get_pool_offset, get_pool_size): Likewise.
	(output_constant_pool_2): Split out from output_constant_pool.
	(output_constant_pool_1): Likewise.  Use new pool datastructures.
	(output_constant_pool): Zap entire pool datastructure.
	(mark_constant): Use new pool datastructures.
	(mark_constants): Use for_each_rtx.
	(mark_constant_pool): Use new pool datastructures.

2004-01-30  Fariborz Jahanian <fjahanian@apple.com>

	* config/rs6000/rs6000.c (rs6000_emit_move): Remove #if 0.
	Copy operands[1] to pseudo for simplify_gen_subreg.

2004-01-30  Kazu Hirata  <kazu@cs.umass.edu>

	* gcse.c (bypass_block): Fix a typo in the previous check-in
	to the file.

2004-01-30  Andrew Pinski <pinskia@physics.uc.edu>

	* toplev.c: Include alloc-pool.h.
	* Makefile.in (toplev.c): Update dependencies.

2004-01-30  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* combine.c (simplify_shift_const, case XOR): Be careful when
	commuting XOR with ASHIFTRT.

2004-01-30  Kazu Hirata  <kazu@cs.umass.edu>
	    Eric Botcazou  <ebotcazou@libertysurf.fr>

	* config/sparc/sparc-protos.h: Remove the prototype for
	sparc_builtin_saveregs.
	* config/sparc/sparc.c (TARGET_PROMOTE_FUNCTION_ARGS): New.
	(TARGET_PROMOTE_FUNCTION_RETURN): Likewise.
	(TARGET_PROMOTE_PROTOTYPES): Likewise.
	(TARGET_STRUCT_VALUE_RTX): Likewise.
	(TARGET_RETURN_IN_MEMORY): Likewise.
	(TARGET_EXPAND_BUILTIN_SAVEREGS): Likewise.
	(TARGET_STRICT_ARGUMENT_NAMING): Likewise.
	(sparc_builtin_saveregs): Make it static.
	(sparc_promote_prototypes): New.
	(sparc_struct_value_rtx): Likewise.
	(sparc_return_in_memory): Likewise.
	* config/sparc/sparc.h: (PROMOTE_FUNCTION_ARGS): Remove.
	(PROMOTE_FUNCTION_RETURN): Likewise.
	(RETURN_IN_MEMORY): Likewise.
	(STRUCT_VALUE): Likewise.
	(STRUCT_VALUE_INCOMING): Likewise.
	(EXPAND_BUILTIN_SAVEREGS): Likewise.
	(STRICT_ARGUMENT_NAMING): Likewise.
	(PROMOTE_PROTOTYPES): Likewise.

	* config/sparc/sparc.h (PROMOTE_MODE): Use word_mode.

2004-01-30  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR c/12818
	* varasm.c (const_hash_1) <STRING_CST>: Use the
	address to compute the hash value if flag_writable_strings.
	(compare_constant) <STRING_CST>: Compare the addresses
	if flag_writable_strings.
	(build_constant_desc): Do not copy the expression for a
	STRING_CST if flag_writable_strings.

2004-01-30  Jan Hubicka  <jh@suse.cz>

	* alloc-pool.c: Include hashtab.h
	(alloc_pool_descriptor): New structure
	(alloc_pool_hash): New global variable.
	(hash_descriptor, eq_descriptor, alloc_pool_descriptor): New.
	(create_alloc_pool): Update statistics.
	(free_alloc_pool): Likewise.
	(pool_alloc): Likewise.
	(output_info): New structure
	(print_statistics, dump_alloc_pool_statistics): New function.
	* alloc-pool.h (alloc_pool_def): Turn name to be constant.
	(dump_alloc_pool_statistics): Declare.
	* toplev.c (finalize): Dump statistics.

	* reload.c (secondary_memlocs_elim_used): New static variable.
	(get_secondary_mem): Update it.
	(find_reloads): Use it.

2004-01-30  Steven Bosscher <s.bosscher@student.tudelft.nl>

	* toplev.c: Fix broken checkin of 2003-12-30, again.

2004-01-30  Ulrich Weigand  <uweigand@de.ibm.com>

	* configure.ac (gcc_cv_as_dwarf2_debug_line): Enable test for
	s390*-*-* targets by specifying a 'nop' insn.
	* configure: Regenerate.

2004-01-30  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR target/11475
	* config/sparc/sparc.md (movhi_lo_sum): Tighten predicates.

2004-01-29  Jakub Jelinek  <jakub@redhat.com>

	* emit-rtl.c (change_address): Use XEXP (memref, 0) instead
	of addr when creating MEM copy.

2004-01-29  Devang Patel  <dpatel@apple.com>

	* dwarf2out.c (gen_field_die): Do not equate decl number to die.

2004-01-28  Ian Lance Taylor  <ian@wasabisystems.com>

	PR inline-asm/6162
	* reload.c (find_reloads): Only support one pair of commutative
	operands.

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

	PR java/13824
	* tree.c (unsafe_for_reeval): Handle EXIT_BLOCK_EXPR nodes specially
	as their EXIT_BLOCK_LABELED_BLOCK operands can lead to unbounded
	recursion.

2004-01-29  Kazu Hirata  <kazu@cs.umass.edu>

	* config/frv/frv.c: Don't mention deprecated macros in
	comments.  Remove some target-independent comments about
	target macros.
	* config/frv/frv.h: Likewise.

2004-01-29  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* cfghooks.c (split_block): Set probability and count of the
	new edge.

2004-01-29  Josef Zlomek  <zlomekj@suse.cz>

	* dwarf2out.c (struct die_struct): Added field decl_id.
	(decl_die_table): Changed to hash table.
	(decl_die_table_allocated): Deleted.
	(decl_die_table_in_use): Deleted.
	(DECL_DIE_TABLE_INCREMENT): Deleted.
	(decl_die_table_hash): New function.
	(decl_die_table_eq): New function.
	(lookup_decl_die): Lookup in a hash table.
	(equate_decl_number_to_die): Insert into a hash table.
	(dwarf2out_init): Init hash table decl_die_table.

2004-01-29  Jakub Jelinek  <jakub@redhat.com>

	PR optimization/13424
	* expr.c (store_constructor): Revert 2003-12-03 change.

	* emit-rtl.c (change_address): Check also if MEM_ATTRS is set as
	expected before returning early.  Avoid sharing RTL if they
	need to be changed.

	* config/i386/i386.c (ix86_expand_movstr): Rework rep_mov and strmov
	handling so that memory attributes are preserved.  Don't call
	ix86_set_move_mem_attrs.
	(ix86_set_move_mem_attrs_1, ix86_set_move_mem_attrs): Removed.
	(ix86_expand_clrstr): Rename src argument to
	dst.  Rework rep_stos and strset handling so that memory attributes
	are preserved.
	(ix86_expand_strlen): Pass src argument to
	ix86_expand_strlensi_unroll_1.  Rework strlenqi_1 handling so that
	memory attributes are preserved.
	(ix86_expand_strlensi_unroll_1): Add src argument.  Use
	change_address instead of gen_rtx_MEM.
	* config/i386/i386.md (strmov, strmov_singleop, rep_mov): New
	expanders.
	(strmovdi_rex64, strmovsi, strmovsi_rex64, strmovhi, strmovhi_rex64,
	strmovqi, strmovqi_rex64): Remove.
	(rep_mov*, strmov*): Prefix insn names with *.
	(strset, strset_singleop, rep_stos): New expanders.
	(strsetdi_rex64, strsetsi, strsetsi_rex64, strsethi, strsethi_rex64,
	strsetqi, strsetqi_rex64): Remove.
	(rep_stos*, strset*): Prefix insn names with *.
	(rep_stosqi_rex64): Likewise.  Fix mode of dirflag reg from DImode
	to SImode.
	(cmpstrsi): Rework cmpstrqi_1 handling so that memory attributes
	are preserved.
	(cmpstrqi_nz_1, cmpstrqi_nz_rex_1, cmpstrqi_1, cmpstrqi_rex_1):
	Prefix insn names with *.
	(cmpstrqi_nz_1, cmpstrqi_1): New expanders.
	(strlenqi_1, strlenqi_rex_1): Prefix insn names with *.
	(strlenqi_1): New expander.
	* config/i386/i386.h (ix86_set_move_mem_attrs): Remove prototype.

2004-01-29  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* Makefile.in (cfghooks.o): Add TIMEVAR_H and toplev.h dependency.
	* basic-block.h (tidy_fallthru_edge, tidy_fallthru_edges, dump_bb,
	verify_flow_info): Declaration removed.
	* cfg.c (verify_flow_info, dump_bb): Moved to cfghooks.c.
	(debug_bb, debug_bb_n): Add argument to dump_bb call.
	* cfgcleanup.c (try_simplify_condjump, try_crossjump_to_edge,
	try_optimize_cfg, delete_unreachable_blocks): Use delete_basic_block
	instead of delete_block.
	* cfghooks.c: Include timevar.h and toplev.h.
	(cfg_hooks): Define here.
	(verify_flow_info, dump_bb): Moved from cfg.c.
	(redirect_edge_and_branch, redirect_edge_and_branch_force,
	split_block, split_block_after_labels, move_block_after,
	delete_basic_block, split_edge, create_basic_block,
	create_empty_bb, can_merge_blocks_p, merge_blocks,
	make_forwarder_block, tidy_fallthru_edge, tidy_fallthru_edges):
	New functions.
	* cfghooks.h (struct cfg_hooks): Added fields name,
	make_forwarder_block, tidy_fallthru_edge and
	move_block_after. Changed type of verify_flow_info, dump_bb,
	split_block fields. Renamed cfgh_split_edge and delete_block
	fields.
	(redirect_edge_and_branch, redirect_edge_and_branch_force,
	split_block, delete_block, split_edge, create_basic_block,
	can_merge_blocks_p, merge_blocks): Macros removed.
	(cfg_hooks): Do not export.
	(verify_flow_info, dump_bb, redirect_edge_and_branch,
	redirect_edge_and_branch_force, split_block, split_block_after_labels,
	move_block_after, delete_basic_block, split_edge, create_basic_block,
	create_empty_bb, can_merge_blocks_p, merge_blocks,
	make_forwarder_block, tidy_fallthru_edge, tidy_fallthru_edges):
	Declare.
	(cfg_layout_rtl_cfg_hooks): Declare.
	* cfgloop.c (update_latch_info, mfb_keep_just, mfb_keep_nonlatch):
	New functions.
	(canonicalize_loop_headers): Use new semantics of make_forwarder_block.
	(redirect_edge_with_latch_update): Removed.
	(make_forwarder_block): Moved to cfghooks.c, semantics changed.
	* cfgloopmanip.c (remove_bbs): Do not update dominators here.
	* cfgrtl.c (cfg_layout_split_block, rtl_split_block, rtl_dump_bb,
	rtl_delete_block, rtl_split_block, rtl_merge_blocks,
	tidy_fallthru_edge, rtl_split_edge, cfg_layout_delete_block,
	cfg_layout_merge_blocks, cfg_layout_split_edge): Partly moved to
	cfghooks.c.
	(rtl_create_basic_block): Coding style fix.
	(rtl_tidy_fallthru_edge, rtl_move_block_after,
	rtl_make_forwarder_block): New functions.
	(update_cfg_after_block_merging): Removed.
	(rtl_cfg_hooks, cfg_layout_rtl_cfg_hooks): Fill in new entries.
	* flow.c (verify_wide_reg, verify_local_live_at_start): Add argument
	to dump_bb.
	* ifcvt.c (merge_if_block, find_cond_trap, find_if_case_1,
	find_if_case_2): Don't update dominators.
	* timevar.def (TV_CFG_VERIFY): New.
	* loop-unswitch.c (unswitch_loop): Don't call add_to_dominance_info.
	* cfglayout.c (copy_bbs): Don't call add_to_dominance_info.
	* cfgloopmanip.c (split_loop_bb): Don't update dominators.
	(remove_bbs): Don't call remove_bbs.
	(create_preheader): Use make_forwarder_block.
	(mfb_keep_just, mfb_update_loops): New static functions.

2004-01-29  Kazu Hirata  <kazu@cs.umass.edu>

	* config/avr/avr.h: Remove target-independent comments about
	target macros.

2004-01-28  Daniel Berlin  <dberlin@dberlin.org>

	* timevar.c (timevar_print): Mention when checking is enabled.

2004-01-28  Giovanni Bajo  <giovannibajo@gcc.gnu.org>

	* c-lex.c (c_lex): Rename to...
	(c_lex_with_flags): Add new parameter to get CPP flags.
	(c_lex): Thunk to c_lex_with_flags while keeping the old interface.
	* c-pragma.h (c_lex_with_flags): Declare.

2004-01-28  Kazu Hirata  <kazu@cs.umass.edu>

	* config/mcore/mcore.c (mcore_external_libcall): Add a
	comment.
	(mcore_return_in_memory): Likewise.

2004-01-28  Kazu Hirata  <kazu@cs.umass.edu>

	* config/mcore/mcore-protos.h: Remove the prototype for
	mcore_setup_incoming_varargs.
	* config/mcore/mcore.c (TARGET_ASM_EXTERNAL_LIBCALL): New.
	(TARGET_PROMOTE_FUNCTION_ARGS): Likewise.
	(TARGET_PROMOTE_FUNCTION_RETURN): Likewise.
	(TARGET_PROMOTE_PROTOTYPES): Likewise.
	(TARGET_STRUCT_VALUE_RTX): Likewise.
	(TARGET_RETURN_IN_MEMORY): Likewise.
	(TARGET_SETUP_INCOMING_VARARGS): Likewise.
	(mcore_setup_incoming_varargs): Make it static.  Receive the
	first argument by reference.  Add argument second_time.
	(mcore_external_libcall): New.
	(mcore_return_in_memory): Likewise.
	* config/mcore/mcore.h (PROMOTE_FUNCTION_ARGS): New.
	(PROMOTE_FUNCTION_RETURN): Likewise.
	(STRUCT_VALUE): Likewise.
	(RETURN_IN_MEMORY): Likewise.
	(SETUP_INCOMING_VARARGS): Likewise.
	(PROMOTE_PROTOTYPES): Likewise.
	(ASM_OUTPUT_EXTERNAL_LIBCALL): Likewise.

2004-01-28  Kazu Hirata  <kazu@cs.umass.edu>

	* config/m32r/m32r-protos.h: Remove the prototype for
	m32r_setup_incoming_varargs.
	* config/m32r/m32r.c (TARGET_PROMOTE_PROTOTYPES): New.
	(TARGET_STRUCT_VALUE_RTX): Likewise.
	(TARGET_RETURN_IN_MEMORY): Likewise.
	(TARGET_SETUP_INCOMING_VARARGS): Likewise.
	(m32r_return_in_memory): New.
	(m32r_setup_incoming_varargs): Make it static.
	* config/m32r/m32r.h: Remove #undef of
	ASM_OUTPUT_EXTERNAL_LIBCALL.  Remove the commented-out
	definitions of PROMOTE_FUNCTION_ARGS and
	PROMOTE_FUNCTION_RETURN.
	(PROMOTE_PROTOTYPES): Remove.
	(RETURN_IN_MEMORY): Likewise.
	(STRUCT_VALUE): Likewise.

2004-01-28  Kazu Hirata  <kazu@cs.umass.edu>

	* config/m68k/m68k.c (TARGET_PROMOTE_PROTOTYPES): New.
	(TARGET_STRUCT_VALUE_RTX): Likewise.
	(m68k_struct_value_rtx): Likewise.
	* config/m68k/m68k.h (STRUCT_VALUE_REGNUM): Rename to
	STRUCT_VALUE_REGNUM.
	(PROMOTE_PROTOTYPES): Remove.
	* config/m68k/m68kelf.h (STRUCT_VALUE_REGNUM): Rename to
	STRUCT_VALUE_REGNUM.
	* config/m68k/m68kv4.h (STRUCT_VALUE_REGNUM): Likewise.
	* config/m68k/netbsd-elf.h (STRUCT_VALUE_REGNUM): Likewise.

2004-01-28  Kazu Hirata  <kazu@cs.umass.edu>

	* config/stormy16/stormy16.c
	(TARGET_BUILD_BUILTIN_VA_LIST_TYPE): Rename to
	TARGET_BUILD_BUILTIN_VA_LIST.

2004-01-28  Kazu Hirata  <kazu@cs.umass.edu>

	* config/v850/v850.c (TARGET_PROMOTE_PROTOTYPES): New.
	(TARGET_STRUCT_VALUE_RTX): Likewise.
	(TARGET_RETURN_IN_MEMORY): Likewise.
	(TARGET_SETUP_INCOMING_VARARGS): Likewise.
	(v850_return_in_memory): Likewise.
	(v850_setup_incoming_varargs): Likewise.
	* config/v850/v850.h (PROMOTE_PROTOTYPES): Remove.
	(SETUP_INCOMING_VARARGS): Likewise.
	(RETURN_IN_MEMORY): Likewise.
	(STRUCT_VALUE): Likewise.

2004-01-28  Kazu Hirata  <kazu@cs.umass.edu>

	* config/fr30/fr30.c (TARGET_PROMOTE_PROTOTYPES): New.
	(fr30_setup_incoming_varargs): Don't use
	STRICT_ARGUMENT_NAMING.
	* config/fr30/fr30.h (PROMOTE_PROTOTYPES): Remove.
	(STRICT_ARGUMENT_NAMING): Likewise.

2004-01-28  Kazu Hirata  <kazu@cs.umass.edu>

	* config/frv/frv-protos.h: Remove the prototype for
	frv_expand_builtin_saveregs.
	* config/frv/frv.c (TARGET_STRUCT_VALUE_RTX): Likewise.
	(TARGET_EXPAND_BUILTIN_SAVEREGS): Likewise.
	(frv_stack_info): Use FRV_STRUCT_VALUE_REGNUM instead of
	STRUCT_VALUE_REGNUM.
	(frv_expand_builtin_saveregs): Make it static.
	(frv_struct_value_rtx): New.
	* config/frv/frv.h (EXPAND_BUILTIN_SAVEREGS): Remove.

2004-01-29  Jan Hubicka  <jh@suse.cz>

	PR c++/12850
	* cgraph.c (cgraph_remove_node): Clear out saved/insns/arguments and
	initial pointers.
	* cgraphunit.c (cgraph_finalize_function): Clear out DECL_SAVED_INSNS
	for functions that will be only inlined.
	(cgraph_mark_function_to_output): Likewise.
	(cgraph_expand_function): Sanity check that DECL_DEFER_OUTPUT is clear;
	do not clear function body.
	* tree-optimize.c (clear_decl_rtl): Use decl_function_context.
	(tree_rest_of_compilation): Reorganize the logic releasing function
	body to use callgraph datastructure.

2004-01-28  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* pa.md: Change predicate of a peephole2 pattern from reg_or_0_operand
	to register_operand.

2004-01-28  Zack Weinberg  <zack@codesourcery.com>

	* config/ia64/ia64.md (fetchadd_acq_si, fetchadd_acq_di)
	(cmpxchg_acq_si, cmpxchg_acq_di): Exchange match_dup and
	match_operand expressions so that all match_dups appear
	lexically after their corresponding match_operands.

2004-01-28  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.c (WORD_REG_USED): Use
	HARD_FRAME_POINTER_REGNUM instead of FRAME_POINTER_REGNUM.
	(compute_saved_regs): Likewise.
	(h8300_expand_prologue): Likewise.  Allocate locals after
	saving registers.
	(h8300_expand_epilogue): Use HARD_FRAME_POINTER_REGNUM instead
	of FRAME_POINTER_REGNUM.  Deallocate locals before saving
	registers.
	(h8300_initial_elimination_offset): Adjust for the new frame
	layout, which swaps flips the order of locals and saved
	registers.
	* config/h8300/h8300.h (FIRST_PSEUDO_REGISTER): Change to 12.
	(HARD_FRAME_POINTER_REGNUM): New.
	(ELIMINABLE_REGS): Add an elimination rule from
	FRAME_POINTER_REGNUM to HARD_FRAME_POINTER_REGNUM.
	(REGISTER_NAMES): Add fp.
	* config/h8300/h8300.md (FP_REG): Change to 11.
	(HFP_REG): New.

2004-01-28  Kazu Hirata  <kazu@cs.umass.edu>

	* genrecog.c (write_node): Remove a useless local variable.

2004-01-28  Ian Lance Taylor  <ian@wasabisystems.com>

	* Makefile.in (options.c options.h): Use stamp file s-options to
	avoid unnecessary rebuilds.
	(options.o): New target listing dependencies.
	(gtyp-gen.h): Use stamp file s-gtyp-gen.
	(STAGESTUFF): Add s-gtyp-gen.

2004-01-28  Richard Henderson  <rth@redhat.com>

	* ggc.h (ggc_free): Declare.
	* ggc-common.c (ggc_realloc): Use it.
	* ggc-page.c: Remove lots of inline markers.
	(globals): Add free_object_list.
	(ggc_alloc): Tidy.
	(ggc_free, validate_free_objects): New.
	(poison_pages): Provide default.
	(ggc_collect): Call validate_free_objects; emit markers to
	the debug file.

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.

2004-01-28  Jan Hubicka  <jh@suse.cz>

	* gcse.c (bypass_block): Prevent edges to be unified when we are
	about to emit compenstation code.

2004-01-28  Nick Clifton  <nickc@redhat.com>

	* config/arm/arm.c (arm_expand_builtin): Force second argument of
	the setcwx insn into a register.

2004-01-28  Richard Sandiford  <rsandifo@redhat.com>

	* config/fp-bit.c (pack_d): When using paired doubles to implement
	a long double, round the high part separately.
	(unpack_d): Fix the case in which the high part is a power of two
	and the low part is a nonzero value of the opposite sign.

2004-01-28  Kazu Hirata  <kazu@cs.umass.edu>

	* config/c4x/c4x.c (TARGET_ASM_EXTERNAL_LIBCALL): New.
	(TARGET_STRUCT_VALUE_RTX): Likewise.
	(c4x_external_libcall): Likewise.
	(c4x_struct_value_rtx): Likewise.
	* config/c4x/c4x.h: Remove.
	(STRUCT_VALUE_REGNUM): Likewise.
	(ASM_OUTPUT_EXTERNAL_LIBCALL): Likewise.

2004-01-28  Kazu Hirata  <kazu@cs.umass.edu>

	* config/i386/i386.c (TARGET_PROMOTE_PROTOTYPES): New.
	(TARGET_STRUCT_VALUE_RTX): Likewise.
	* config/i386/i386.h (STRUCT_VALUE_INCOMING): Remove.
	(STRUCT_VALUE): Likewise.
	(PROMOTE_PROTOTYPES): Likewise.

2004-01-27  Roger Sayle  <roger@eyesopen.com>

	* config/pa/pa.c (emit_move_sequence): Check that operand1 is a
	CONST_INT before using INTVAL.

2004-01-27  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.h (TARGET_DEFAULT): Default to !TARGET_BACKCHAIN.
	* config/s390/s390.c (s390_return_addr_rtx): Fail for all but current
	frame if !TARGET_BACKCHAIN.
	* config/s390/s390.md ("allocate_stack"): Use pattern only if
	TARGET_BACKCHAIN.
	* doc/invoke.texi (-mbackchain/-mno-backchain): Document new default.

2004-01-27  Zack Weinberg  <zack@codesourcery.com>

	* 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.

2004-01-27  Richard Sandiford  <rsandifo@redhat.com>

	PR target/7297
	* except.c (init_eh): Use a 5-word __jbuf for __builtin_setjmp().

2004-01-27  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.c (rs6000_emit_move): #if 0 splitting
	slow, unaligned loads and stores while debugging.  Fix formatting.

2004-01-27  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.md (save_stack_nonlocal): Use Pmode instead
	of computing wmode.
	(restore_stack_nonlocal): Same.

2004-01-27  Devang Patel <dpatel@apple.com>

	* Makefile.in (dwarf2out.o): Depend on input.h
	* dbxout.c (dbx_debug_hooks): Add new empty hook for
	imported_module_or_decl.
	(xcoff_debug_hooks): Same.
	* sdbout.c (sdb_debug_hooks): Same.
	* vmsdbgout.c (vmsdbg_debug_hooks): Same.
	* debug.c (do_nothing_debug_hooks): Same.
	(debug_nothing_tree_tree): New function.
	* debug.h (gcc_debug_hooks): New hook, imported_module_or_decl.
	* dwarf2out.c: Include input.h.
	(dwarf2_debug_hooks): Add new hook for imported_module_or_decl.
	(remove_child_TAG): New function.
	(dwarf_tag_name): Handle DW_TAG_imported_module.
	(gen_subprogram_die): Equate decl number to declaration die. Do not
	remove all children dies while reusing declaration die for definition.
	Instead, selectively remove only formal parameters.
	(gen_variable_die): Equate variable decl to declaration die.
	(gen_field_die): Equate field decl to line number.
	(force_namespace_die): Replace it with ...
	(force_decl_die): ... this.
	(force_type_die): New function.
	(setup_namespace_context): Replace use of force_namespace_die() with
	force_decl_die().
	(gen_namespace_die): Same.
	(dwarf2out_imported_module_or_decl): New function.

2004-01-27  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/xtensa.c (xtensa_copy_incoming_a7): Remove SUBREG
	on CQImode and CHImode incoming arguments in register a7.
	(function_arg): Wrap BLKmode argument in register a7 in a PARALLEL.
	* config/xtensa/xtensa.h (BLOCK_REG_PADDING): Define.
	* config/xtensa/xtensa.md (movdi, movdf): Only call force_reg or
	xtensa_copy_incoming_a7 before reload.

2004-01-27  J"orn Rennecke <joern.rennecke@superh.com>

	* coverage.c (get_coverage_counts): Give a different message
	if flag_guess_branch_prob is set.
	* predict.c (counts_to_freqs): Return an int.
	(estimate_bb_frequencies): If counts_to_freqs returns zero,
	calculate estimates.

2004-01-27  Kazu Hirata  <kazu@cs.umass.edu>

	* config/iq2000/iq2000-protos.h: Remove the prototype for
	iq2000_setup_incoming_varargs.
	* config/iq2000/iq2000.c (TARGET_PROMOTE_FUNCTION_ARGS): New.
	(TARGET_PROMOTE_FUNCTION_RETURN): Likewise.
	(TARGET_PROMOTE_PROTOTYPES): Likewise.
	(TARGET_STRUCT_VALUE_RTX): Likewise.
	(TARGET_RETURN_IN_MEMORY): Likewise.
	(TARGET_SETUP_INCOMING_VARARGS): Likewise.
	(TARGET_STRICT_ARGUMENT_NAMING): Likewise.
	(iq2000_return_in_memory): Likewise.
	(iq2000_setup_incoming_varargs): Make it static.  Receive the
	first argument by reference.
	* config/iq2000/iq2000.h (PROMOTE_FUNCTION_ARGS): Remove.
	(PROMOTE_FUNCTION_RETURN): Likewise.
	(PROMOTE_PROTOTYPES): Likewise.
	(RETURN_IN_MEMORY): Likewise.
	(STRUCT_VALUE): Likewise.
	(SETUP_INCOMING_VARARGS): Likewise.
	(STRICT_ARGUMENT_NAMING): Likewise.

2004-01-24  James A. Morrison  <ja2morri@uwaterloo.ca>

	* fixinc/fixinc.c (test_test): Initialize res.
	(start_flexer): Initialize pz_cmd_save.

2004-01-27  Zack Weinberg  <zack@codesourcery.com>

	* doc/rtl.texi (Arithmetic): Rewrite entries for PLUS,
	SS_PLUS, US_PLUS, LO_SUM, MINUS, SS_MINUS, US_MINUS.

2004-01-27  Zack Weinberg  <zack@codesourcery.com>

	PR 7198
	* config/ia64/ia64.md (*nmaddsf4, *nmadddf4, *nmadddf4_alts)
	(*nmadddf4_trunc, *nmaddxf4, *nmaddxf4_truncsf, *nmaddxf4_truncdf)
	(*nmaddxf4_alts, *nmaddxf4_truncdf_alts):
	Rewrite pattern as (minus (op 3) (mult (op 1) (op 2))).
	Possibly rename pattern for consistency.
	Remove ??? comments suggesting that this be done.
	(*nmaddsf4_alts, *nmadddf4_truncsf_alts, *nmaddxf4_truncsf_alts):
	New patterns.
	(divsi3_internal, divdi3_internal_lat, divdi3_internal_thr)
	(divsf3_internal_lat, divsf3_internal_thr, sqrtsf2_internal_thr)
	(divdf3_internal_lat, divdf3_internal_thr, sqrtdf2_internal_thr)
	(divxf3_internal_lat, divxf3_internal_thr, sqrtxf2_internal_thr):
	Update to match.

2004-01-27  Ian Lance Taylor  <ian@wasabisystems.com>

	* config/arm/arm.c (output_return_instruction): Only restore IP
	into SP if frame_pointer_needed.

2004-01-27  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* config/sparc/sparc.c (function_arg_pass_by_reference): Return 1
	for SCmode and DCmode if ARCH32.
	(sparc_va_arg): Handle SCmode and DCmode by reference if ARCH32.
	* config/sparc/sparc.h (RETURN_IN_MEMORY): Return 0 for TCmode
	if ARCH32.
	(BASE_RETURN_VALUE_REG): Return 32 for all FP modes except TFmode
	if ARCH32.
	(BASE_OUTGOING_VALUE_REG): Likewise.

2004-01-27  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR target/10904
	PR target/13058
	* config/sparc/sparc.h (CANNOT_CHANGE_MODE_CLASS): New.
	Forbid mode changes from SImode for lower FP regs if ARCH64.

2004-01-27  J"orn Rennecke <joern.rennecke@superh.com>

	* Makefile.in (bt-load.o): Depend on except.h.
	* bt-load.c (except.h): #include.
	(compute_defs_uses_and_gen): If insn at end of BB can throw
	within this function, consider registers used by it unavailable for
	btr migration.
	(move_btr_def): If insn at end of BB can throw, insert before rather
	than after.

	* flags.h (flag_btr_bb_exclusive): Declare.
	* toplev.c (flag_btr_bb_exclusive): New variable.
	(f_options): Add btr-bb-exclusive.
	* bt-load.c (augment_live_range): Restore old behaviour if
	flag_btr_bb_exclusive is set.
	* common.opt: Add entry for -fbtr-bb-exclusive.
	* opts.c (common_handle_options): Same.
	* doc/invoke.texi: Document -fbtr-bb-exclusive.

	* bt-load.c (btrs_live_at_end): New variable.
	(compute_defs_uses_and_gen): Compute its pointed-to array.
	(clear_btr_from_live_range, add_btr_to_live_range): Update it.
	(augment_live_range): When augmenting with a new dominator,
	use only its btrs_live_at_end set, but also add in the full set
	of the old dominator.
	(btr_def_live_range): Use btrs_live_at_end.
	(move_btr_def): Set other_btr_uses_before_def, and move new set
	to the end of the basic block, if appropriate.
	(migrate_btr_defs): Allocate and free btrs_live_at_end.

	* bt-load.c (basic_block_freq): Remove outdated comment.

2004-01-27  Alan Modra  <amodra@bigpond.net.au>

	* config/rs6000/rs6000.h: Correct target_flags free bits comment.
	(PREDICATE_CODES): Remove duplicate.
	* config/rs6000/linux64.h (CPP_SYSV_SPEC): Don't define.
	(SUBSUBTARGET_OVERRIDE_OPTIONS): Disallow 32 bit TARGET_PROFILE_KERNEL.
	(MASK_PROFILE_KERNEL): Adjust define.

2004-01-27  Jakub Jelinek  <jakub@redhat.com>

	* config/i386/i386.c (ix86_constant_alignment): Decrease alignment
	of long string literals from 32 bytes to sizeof (void *) when !-Os
	and to 1 with -Os.

2004-01-26  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.c (h8300_tiny_constant_address_p): Accept
	constant addresses in the normal mode.

2004-01-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* system.h (CHAR_BITFIELD): Delete.
	(BOOL_BITFIELD): New.
	* c-decl.c (c_scope): Use BOOL_BITFIELD.
	* gengtype-lex.l: Recognize BOOL_BITFIELD instead of CHAR_BITFIELD.

2004-01-26  Kazu Hirata  <kazu@cs.umass.edu>

	* config/arc/arc.c (TARGET_PROMOTE_FUNCTION_ARGS): New.
	(TARGET_PROMOTE_FUNCTION_RETURN): Likewise.
	(TARGET_PROMOTE_PROTOTYPES): Likewise.
	(TARGET_STRUCT_VALUE_RTX): Likewise.
	(TARGET_RETURN_IN_MEMORY): Likewise.
	(arc_return_in_memory): Likewise.
	* config/arc/arc.h (PROMOTE_FUNCTION_ARGS): Remove.
	(PROMOTE_FUNCTION_RETURN): Likewise.
	(RETURN_IN_MEMORY): Likewise.
	(STRUCT_VALUE): Likewise.

2004-01-26  Richard Henderson  <rth@redhat.com>

	* c-parse.in (extension): Use itype.
	(SAVE_EXT_FLAGS): Don't allocate a tree.
	(RESTORE_EXT_FLAGS): Don't read a tree.

2004-01-26  Jan Hubicka  <jh@suse.cz>

	* cselib.c (discard_useless_values): Clear out value pointer pointing
	to datastructure to be recycled.

2004-01-25  Jan Hubicka  <jh@suse.cz>

	* genextract.c (main): Do not output the memset when not checking.

2004-01-26  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.c (h8300_tiny_constant_address_p): Use a
	switch statement instead of a chain of if statements.

2004-01-26  Jeff Law  <law@redhat.com>

	* doc/contrib.texi: Minor cleanup for Paolo Carlini's entry.  Add
	acute accents for Petur Runolfsson's entry.

2004-01-26  Kazu Hirata  <kazu@cs.umass.edu>

	* config/pdp11/pdp11.c (TARGET_STRUCT_VALUE_RTX): New.
	(TARGET_RETURN_IN_MEMORY): Likewise.
	* config/pdp11/pdp11.h (STRUCT_VALUE): Remove.
	(RETURN_IN_MEMORY): Likewise.

2004-01-26  Fariborz Jahanian  <fjahanian@apple.com>

	 * config/rs6000/rs6000.c (rs6000_emit_move): split slow
	 unaligned load/store into smaller loads and stores.

2004-01-26  Fariborz Jahanian  <fjahanian@apple.com>

	* function.c (assign_parms): Do not assign
	long long argument to memory in prologue if
	is it loaded into register.

2004-01-26  Fariborz Jahanian  <fjahanian@apple.com>

	 PR middle-end/13779
	 * expr.c (emit_group_load): split constant
	 correctly into register components of PARALLEL insn.

2004-01-26  Fariborz Jahanian  <fjahanian@apple.com>

	* config/rs6000/rs6000.md (save_stack_nonlocal):
	Use adjust_address_nv directly with appropriate mode.
	(restore_stack_nonlocal): Ditto.

2004-01-26  Kazu Hirata  <kazu@cs.umass.edu>

	* config/xtensa/xtensa-protos.h: Remove the prototype for
	xtensa_builtin_saveregs.
	* config/xtensa/xtensa.c (TARGET_PROMOTE_FUNCTION_ARGS): New.
	(TARGET_PROMOTE_FUNCTION_RETURN): Likewise.
	(TARGET_PROMOTE_PROTOTYPES): Likewise.
	(TARGET_STRUCT_VALUE_RTX): Likewise.
	(TARGET_RETURN_IN_MEMORY): Likewise.
	(TARGET_EXPAND_BUILTIN_SAVEREGS): Likewise.
	(xtensa_builtin_saveregs): Make it static.
	(xtensa_return_in_memory): New.
	* config/xtensa/xtensa.h (PROMOTE_FUNCTION_ARGS: Remove.
	(PROMOTE_FUNCTION_RETURN): Likewise.
	(PROMOTE_PROTOTYPES): Likewise.
	(STRUCT_VALUE): Likewise.
	(RETURN_IN_MEMORY): Likewise.
	(EXPAND_BUILTIN_SAVEREGS): Likewise.

2004-01-26  Kazu Hirata  <kazu@cs.umass.edu>

	* config/arm/arm.c (TARGET_SETUP_INCOMING_VARARGS): New.
	(arm_setup_incoming_varargs): Likewise.
	* config/arm/arm.h (SETUP_INCOMING_VARARGS): Remove.

2004-01-26  Kazu Hirata  <kazu@cs.umass.edu>

	* config/cris/cris.c (TARGET_SETUP_INCOMING_VARARGS): New.
	(cris_setup_incoming_varargs): Likewise.
	* config/cris/cris.h (SETUP_INCOMING_VARARGS): Remove.

2004-01-26  Kazu Hirata  <kazu@cs.umass.edu>

	* config/ns32k/ns32k.c (TARGET_STRUCT_VALUE_RTX): New.
	(ns32k_struct_value_rtx): Likewise.
	* config/ns32k/ns32k.h (STRUCT_VALUE_REGNUM): Rename to
	NS32K_STRUCT_VALUE_REGNUM.

2004-01-26  Kazu Hirata  <kazu@cs.umass.edu>

	* config/arm/arm.c (TARGET_PROMOTE_FUNCTION_ARGS): New.
	(TARGET_PROMOTE_PROTOTYPES): Likewise.
	(TARGET_STRUCT_VALUE_RTX): Likewise.
	(arm_struct_value_rtx): Likewise.
	* config/arm/arm.h (PROMOTE_FUNCTION_ARGS): Remove.
	(STRUCT_VALUE): Likewise.
	(STRUCT_VALUE_REGNUM): Likewise.
	(PROMOTE_PROTOTYPES): Likewise.

2004-01-26  Kazu Hirata  <kazu@cs.umass.edu>

	* 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.

2004-01-26  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR target/13666
	* config/sparc/sparc.c (function_arg_union_value): New function.
	(function_arg): Use it to deal with unions.
	(function_value): Likewise.  Define 'regbase' only for ARCH64.
	Replace a conditional statement by a simpler one.

2004-01-26  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.c (mips16_optimize_gp): Delete.
	(mips_reorg): Don't call it.

2004-01-26  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* config/c4x/c4x.md (addqi3_noclobber): Move up pecking order.
	(floatunsqihf2): Remove operand 6.
	(fixhfqi_set, fix_trunchfqi2, fixuns_trunchfqi2): Group with other
	fix patterns.
	(ldi_conditional, ldf_conditional): Validate operands.

2004-01-26  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* config/c4x/c4x.h (BCT_CHECK_LOOP_ITERATIONS): Remove.
	(HAVE_GAS_HIDDEN): Undefine as interim measure.

2004-01-26  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* config/c4x/c4x.c (c4x_legitimate_address_p): Invalidate direct
	memory references if TARGET_EXPOSE_LDP nonzero.

2004-01-26  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* config/c4x/c4x.c (legitimize_operands): Truncate invalid shift counts.

2004-01-26  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* config/c4x/c4x.c (c4x_valid_operands): More aggressively reject
	invalid operand combinations.

2004-01-26  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* config/c4x/c4x.c (c4x_check_legit_addr): Rename to
	c4x_legitimate_address_p.  Fix post_modify check.

	* config/c4x/c4x-protos.h (c4x_check_legit_addr): Adjust.
	* config/c4x/c4x.h (c4x_check_legit_addr): Adjust.

2004-01-25  Kazu Hirata  <kazu@cs.umass.edu>

	* config/pa/pa-protos.h: Remove the prototype for
	hppa_builtin_saveregs.  Add a prototype for
	pa_return_in_memory.
	* config/pa/pa.c (TARGET_PROMOTE_FUNCTION_RETURN): New.
	(TARGET_PROMOTE_PROTOTYPES): Likewise.
	(TARGET_STRUCT_VALUE_RTX): Likewise.
	(TARGET_RETURN_IN_MEMORY): Likewise.
	(TARGET_EXPAND_BUILTIN_SAVEREGS): Likewise.
	(pa_struct_value_rtx): Likewise.
	(pa_return_in_memory): Likewise.
	* config/pa/pa.h (STRUCT_VALUE_REGNUM): Rename to
	PA_STRUCT_VALUE_REGNUM.
	(INIT_CUMULATIVE_ARGS): Use pa_return_in_memory.
	(EXPAND_BUILTIN_SAVEREGS): Remove.
	(PROMOTE_PROTOTYPES): Likewise.
	(PROMOTE_FUNCTION_RETURN): Likewise.

2004-01-25  Kazu Hirata  <kazu@cs.umass.edu>

	* config/vax/vax.c (TARGET_PROMOTE_PROTOTYPES): New.
	(TARGET_STRUCT_VALUE_RTX): Likewise.
	(vax_struct_value_rtx): Likewise.
	* config/vax/vax.h (STRUCT_VALUE_REGNUM): Rename to
	VAX_STRUCT_VALUE_REGNUM.
	(PROMOTE_PROTOTYPES): Remove.

2004-01-26  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* config/c4x/c4x.h (LEGITIMIZE_RELOAD_ADDRESS): Handle symref.

2004-01-25  Chris Demetriou  <cgd@broadcom.com>

	* config/mips/mips.h (ISA_HAS_HILO_INTERLOCKS): MIPS32, MIPS32r2,
	and MIPS64 have HI/LO interlocks.  Update comment.

2004-01-25  Kazu Hirata  <kazu@cs.umass.edu>

	* config/stormy16/stormy16-protos.h: Remove the prototype for
	xstormy16_setup_incoming_varargs.
	* config/stormy16/stormy16.c
	(xstormy16_setup_incoming_varargs): Remove.
	(xstormy16_return_in_memory): New.
	(TARGET_PROMOTE_FUNCTION_ARGS): Likewise.
	(TARGET_PROMOTE_FUNCTION_RETURN): Likewise.
	(TARGET_PROMOTE_PROTOTYPES): Likewise.
	(TARGET_STRUCT_VALUE_RTX): Likewise.
	(TARGET_RETURN_IN_MEMORY): Likewise.
	* config/stormy16/stormy16.h (PROMOTE_FUNCTION_ARGS): Remove.
	(PROMOTE_FUNCTION_RETURN): Likewise
	(PROMOTE_PROTOTYPES): Likewise
	(RETURN_IN_MEMORY): Likewise
	(STRUCT_VALUE): Likewise
	(SETUP_INCOMING_VARARGS): Likewise

2004-01-25  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.c (mips_offset_within_object_p): New function.
	(mips_symbolic_constant_p): Use it in the SYMBOL_SMALL_DATA and
	SYMBOL_CONSTANT_POOL cases.  Also use it for SYMBOL_GENERAL if the
	ABI has 64-bit pointers and the object file only allows 32-bit symbols.

2004-01-25  Kazu Hirata  <kazu@cs.umass.edu>

	* config/sh/sh.h (PROMOTE_FUNCTION_ARGS): Remove.
	(PROMOTE_FUNCTION_RETURN): Likewise.

2004-01-25  Kazu Hirata  <kazu@cs.umass.edu>

	* config/mn10300/mn10300-protos.h: Remove the prototype for
	mn10300_builtin_saveregs.
	* config/mn10300/mn10300.c (TARGET_PROMOTE_PROTOTYPES): New.
	(TARGET_STRUCT_VALUE_RTX): Likewise.
	(TARGET_RETURN_IN_MEMORY): Likewise.
	(TARGET_EXPAND_BUILTIN_SAVEREGS): Likewise.
	(mn10300_return_in_memory): Likewise.
	(mn10300_builtin_saveregs): Make it static.
	* config/mn10300/mn10300.h (PROMOTE_PROTOTYPES): Remove.
	(RETURN_IN_MEMORY): Likewise.
	(STRUCT_VALUE): Likewise.
	(EXPAND_BUILTIN_SAVEREGS): Likewise.

2004-01-25  Eric Botcazou  <ebotcazou@act-europe.fr>

	PR bootstrap/13853
	* cfgcleanup.c (try_optimize_cfg): Explicitly test against 0.

2004-01-25  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/lib1funcs.asm (divnorm, modnorm): Optimize by
	using ccr.

2004-01-25  Kazu Hirata  <kazu@cs.umass.edu>

	* config/i860/i860-protos.h: Remove the prototype for
	i860_saveregs.
	* config/i860/i860.c (i860_saveregs): Make it static.
	(i860_struct_value_rtx): New.
	(TARGET_STRUCT_VALUE_RTX): Likewise.
	(TARGET_EXPAND_BUILTIN_SAVEREGS): Likewise.
	* config/i860/i860.h (STRUCT_VALUE_REGNUM): Rename to
	I860_STRUCT_VALUE_REGNUM.
	(EXPAND_BUILTIN_SAVEREGS): Remove.

2004-01-25  Kazu Hirata  <kazu@cs.umass.edu>

	* config/m68hc11/m68hc11.c (TARGET_STRUCT_VALUE_RTX): New.
	(TARGET_RETURN_IN_MEMORY): Likewise.
	(m68hc11_struct_value_rtx): Likewise.
	(m68hc11_return_in_memory): Likewise.
	* config/m68hc11/m68hc11.h: Remove a commented-out definition
	of PROMOTE_PROTOTYPES.
	(RETURN_IN_MEMORY): Remove.
	(STRUCT_VALUE_REGNUM): Likewise.

2004-01-25  Kazu Hirata  <kazu@cs.umass.edu>

	* config/mmix/mmix-protos.h: Remove the prototype for
	mmix_setup_incoming_varargs.
	* config/mmix/mmix.c (TARGET_PROMOTE_FUNCTION_ARGS): New.
	(TARGET_STRUCT_VALUE_RTX): Likewise.
	(TARGET_SETUP_INCOMING_VARARGS): Likewise.
	(mmix_setup_incoming_varargs): Make it static.
	(mmix_struct_value_rtx): New.
	* config/mmix/mmix.h (PROMOTE_FUNCTION_ARGS): Remove.
	Remove a commented-out definition of PROMOTE_FUNCTION_RETURN.
	(STRUCT_VALUE_REGNUM): Remove.
	(SETUP_INCOMING_VARARGS): Likewise.

2004-01-25  Kazu Hirata  <kazu@cs.umass.edu>

	* config/mips/mips-protos.h: Remove the prototypes for
	mips_setup_incoming_varargs and mips_return_in_memory.
	* config/mips/mips.c (TARGET_PROMOTE_FUNCTION_ARGS): New.
	(TARGET_PROMOTE_FUNCTION_RETURN): Likewise.
	(TARGET_PROMOTE_PROTOTYPES): Likewise.
	(TARGET_STRUCT_VALUE_RTX): Likewise.
	(TARGET_RETURN_IN_MEMORY): Likewise.
	(TARGET_SETUP_INCOMING_VARARGS): Likewise.
	(TARGET_STRICT_ARGUMENT_NAMING): Likewise.
	(mips_setup_incoming_varargs): Match the prototype for
	TARGET_SETUP_INCOMING_VARARGS.
	(mips_return_in_memory): Make it static.  Add argument fntype.
	(mips_strict_argument_naming): New.
	* config/mips/mips.h (PROMOTE_PROTOTYPES): Remove.
	(PROMOTE_FUNCTION_ARGS): Likewise.
	(PROMOTE_FUNCTION_RETURN): Likewise.
	(STRUCT_VALUE): Likewise.
	(RETURN_IN_MEMORY): Likewise.
	(SETUP_INCOMING_VARARGS): Likewise.
	(STRICT_ARGUMENT_NAMING): Likewise.

2004-01-25  Kazu Hirata  <kazu@cs.umass.edu>

	* config/ip2k/ip2k.c (TARGET_STRUCT_VALUE_RTX): New.
	(TARGET_RETURN_IN_MEMORY): Likewise.
	(TARGET_SETUP_INCOMING_VARARGS): Likewise.
	(ip2k_return_in_memory): Likewise.
	(ip2k_setup_incoming_varargs): Likewise.
	* config/ip2k/ip2k.h (RETURN_IN_MEMORY): Remove.
	(STRUCT_VALUE): Likewise.
	(STRUCT_VALUE_INCOMING): Likewise.
	(SETUP_INCOMING_VARARGS): Likewise.

2004-01-25  Kazu Hirata  <kazu@cs.umass.edu>

	* config/avr/avr.c (TARGET_STRUCT_VALUE_RTX): New.
	(TARGET_RETURN_IN_MEMORY): Likewise.
	(TARGET_STRICT_ARGUMENT_NAMING): Likewise.
	(avr_return_in_memory): Remove.
	* config/avr/avr.h (RETURN_IN_MEMORY): Remove.
	(STRUCT_VALUE): Likewise.
	(STRUCT_VALUE_INCOMING): Likewise.
	(STRICT_ARGUMENT_NAMING): Likewise.

2004-01-25  Jan Hubicka  <jh@suse.cz>

	* combine.c (recog_for_combine): Avoid allocating unnecesary RTX.

2004-01-25  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips-protos.h (mips_reg_mode_ok_for_base_p): Delete.
	(mips_regno_mode_ok_for_base_p): Declare.
	* config/mips/mips.h (ARG_POINTER_REGNUM): Renumber to 77.
	(FRAME_POINTER_REGNUM): Renumber to 78.
	(FIRST_PSEUDO_REGISTER): Update comment accordingly.
	(BASE_REG_P, GP_REG_OR_PSEUDO_STRICT_P): Delete.
	(GP_REG_OR_PSEUDO_NONSTRICT_P): Delete.
	(REGNO_MODE_OK_FOR_BASE_P): Use mips_regno_mode_ok_for_base_p.
	(REG_MODE_OK_FOR_BASE_P): Likewise.
	* config/mips/mips.c (mips_reg_names, mips_sw_reg_names): Change
	entry for 77 to "$arg" and entry for 78 to "$frame".
	(mips_regno_to_class): Map 77 and 78 to ALL_REGS.
	(mips_reg_mode_ok_for_base_p): Remove.
	(mips_regno_mode_ok_for_base_p): New function, derived from old
	BASE_REG_P macro.  Don't enforce the mips16 stack pointer
	restrictions unless we're being strict.
	(mips_valid_base_register_p): Use mips_regno_mode_ok_for_base_p.

2004-01-24  Kazu Hirata  <kazu@cs.umass.edu>

	* c-common.h: Fix comment typos.
	* c-decl.c: Likewise.
	* cgraphunit.c: Likewise.
	* combine.c: Likewise.
	* et-forest.c: Likewise.
	* flow.c: Likewise.
	* function.c: Likewise.
	* ifcvt.c: Likewise.
	* integrate.c: Likewise.
	* jump.c: Likewise.
	* postreload.c: Likewise.
	* varray.c: Likewise.

2004-01-24  Kazu Hirata  <kazu@cs.umass.edu>

	* doc/frontends.texi: Update copyright.
	* doc/gcov.texi: Likewise.
	* doc/gty.texi: Likewise.
	* doc/sourcebuild.texi: Likewise.
	* doc/standards.texi: Likewise.

2004-01-24  Herman A.J. ten Brugge  <hermantenbrugge@home.nl>

	PR target/12978
	* c4x.md: (movstrqi*) Use match_scratch instead of match_dup.
	Remove movstrqi_small because it conflicts with movstrqi_large.

2004-01-24  Kazu Hirata  <kazu@cs.umass.edu>

	* config/cris/cris.c (TARGET_PROMOTE_FUNCTION_ARGS): New.
	(TARGET_STRUCT_VALUE_RTX): Likewise.
	(cris_struct_value_rtx): Likewise.
	* config/cris/cris.h (PROMOTE_FUNCTION_ARGS): Remove.
	(CRIS_STACKADJ_REG): Use CRIS_STRUCT_VALUE_REGNUM instead of
	STRUCT_VALUE_REGNUM.
	(STRUCT_VALUE_REGNUM): Rename to CRIS_STRUCT_VALUE_REGNUM.

2004-01-24  Ian Lance Taylor  <ian@wasabisystems.com>

	PR bootstrap/13848
	* cse.c (cse_cc_succs): Change the mode of the source expression
	as soon as decide we need a new mode.  Don't permit changing modes
	if we found a match in a successor block.
	(cse_condition_code_reg): Save original mode of source expression
	so that we know whether we have to change the mode in other
	insns.

2004-01-24  Jan Hubicka  <jh@suse.cz>

	* emit-rtl.c (change_address, adjust_address_1, offset_address,
	widen_memory_access): Return early when there is nothing to change.

2004-01-24  Jakub Jelinek  <jakub@redhat.com>

	* simplify-rtx.c (simplify_relational_operation): Don't
	simplify address == constant into address + -constant == 0.

2004-01-24  Kazu Hirata  <kazu@cs.umass.edu>

	* gcc.c (process_command): Don't internationalize the
	Copyright message.
	* mips-tfile.c (main): Likewise.

2004-01-24  Andreas Tobler  <a.tobler@schweiz.ch>

	* cse.c: (cse_cc_succs) Fix comparison warning.

2004-01-24  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md: Remove extraneous USE in expanders.

2004-01-24  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300-protos.h: Provide prototypes for
	h8300_legitimate_constant_p and h8300_legitimate_address_p.
	* config/h8300/h8300.c (h8300_legitimate_constant_p): New.
	(h8300_rtx_ok_for_base_p): Likewise.
	(h8300_legitimate_address_p): Likewise.
	* config/h8300/h8300.h (LEGITIMATE_CONSTANT_P): Use
	h8300_legitimate_constant_p.
	(RTX_OK_FOR_BASE_P): Remove.
	(GO_IF_LEGITIMATE_ADDRESS): Use h8300_legitimate_address_p.

2004-01-24  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.h (REG_OK_FOR_INDEX_NONSTRICT_P): New.
	(REG_OK_FOR_BASE_NONSTRICT_P): Likewise.
	(REG_OK_FOR_INDEX_STRICT_P): Likewise.
	(REG_OK_FOR_BASE_STRICT_P): Likewise.
	(REG_OK_FOR_INDEX_STRICT_P): Use REGNO_OK_FOR_INDEX_P.
	(REG_OK_FOR_BASE_STRICT_P): Use REGNO_OK_FOR_BASE_P.
	(REG_OK_FOR_INDEX_P): Use REG_OK_FOR_INDEX_STRICT_P.
	(REG_OK_FOR_BASE_P): Use REG_OK_FOR_BASE_STRICT_P.

2004-01-24  Jan Hubicka  <jh@suse.cz>

	* cselib.c (remove_useless_values): Do not access discarded values.

2004-01-24  Joseph S. Myers  <jsm@polyomino.org.uk>

	* c-typeck.c (build_conditional_expr): Do not allow non-lvalue
	arrays.

2004-01-23  Kazu Hirata  <kazu@cs.umass.edu>

	* recog.c: Fix a typo in copyright.

2004-01-23  Andrew Pinski  <apinski@apple.com>

	* config/rs6000/rs6000.md (call): Fix misappiled patch.
	(call_value): Likewise.

2004-01-23  Richard Henderson  <rth@redhat.com>

	PR opt/12941
	* combine.c (SHIFT_COUNT_TRUNCATED): Provide default value.
	(simplify_comparison): Don't simplify (eq (zero_extract c 1 r) 0)
	if SHIFT_COUNT_TRUNCATED is set.

2004-01-23  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/xtensa.c (xtensa_va_arg): Handle complex values as
	separate real and imaginary parts.
	* config/xtensa/xtensa.h (SPLIT_COMPLEX_ARGS): Define.

2004-01-23  Hartmut Penner <hpenner@de.ibm.com>

	PR target/13674
	* config/rs6000/rs6000.md (movdf_hardfloat64): Do not disparage
	loading into GPR.

2004-01-23  Jan Hubicka  <jh@suse.cz>

	* emit-rtl.c (change_address_1): Do not re-generate the RTX if nothing
	change.

	* alloc-pool.c (align_four): Kill.
	(create_alloc_pool): Align size to eight.
	(free_alloc_pool, free_pool): Invalidate deallocated data.

2004-01-23  Ian Lance Taylor  <ian@wasabisystems.com>

	PR gcc/1532
	* cse.c (cse_change_cc_mode): New static function.
	(cse_change_cc_mode_insns, cse_cc_succs): Likewise.
	(cse_condition_code_reg): New function.
	* rtl.h (cse_condition_code_reg): Declare.
	* toplev.c (rest_of_handle_cse2): Call cse_condition_code_reg.
	* target.h (struct gcc_target): Add fixed_condition_code_regs and
	cc_modes_compatible.
	* target-def.h (TARGET_FIXED_CONDITION_CODE_REGS): Define.
	(TARGET_CC_MODES_COMPATIBLE): Define.
	(TARGET_INITIALIZER): Add new initializers.
	* targhooks.c (default_cc_modes_compatible): New function.
	* targhooks.c (default_cc_modes_compatible): Declare.
	* hooks.c (hook_bool_intp_intp_false): New function.
	* hooks.h (hook_bool_intp_intp_false): Declare.
	* config/i386/i386.c (TARGET_FIXED_CONDITION_CODE_REGS): Define.
	(TARGET_CC_MODES_COMPATIBLE): Define.
	(ix86_fixed_condition_code_regs): New static function.
	(ix86_cc_modes_compatible): Likewise.
	* doc/tm.texi (Condition Code): Document new hooks.

2004-01-23  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* fixinc/inclhack.def (bad_lval): Renamed to ...
	(alpha_bad_lval): ... this.
	Removed file list.
	Restrict to alpha*-dec-osf*.
	* fixinc/fixincl.x: Regenerate.
	* fixinc/tests/base/dirent.h: Remove, moving test ...
	* fixinc/tests/base/testing.h: ... here, reflecting new name.

2004-01-23  Zack Weinberg  <zack@codesourcery.com>

	PR c/13814
	* c-decl.c (diagnose_mismatched_decls): Also discard a
	built-in if we encounter an old-style definition with the
	same name.

2004-01-23  Jakub Jelinek  <jakub@redhat.com>

	* config.gcc (powerpc*-*): Clear $with_cpu or $with_tune if it was
	set to default{32,64}.

2004-01-21  Jakub Jelinek  <jakub@redhat.com>

	* config/rs6000/linux64.h (MD_FALLBACK_FRAME_STATE_FOR)
	[!__powerpc64__]: Corrected to handle kernels with changed ucontext.

2004-01-23  Eric Botcazou  <ebotcazou@act-europe.fr>
	    Olivier Hainque  <hainque@act-europe.fr>

	* fold-const.c (fold_binary_op_with_conditional_arg): Only
	build a COMPOUND_EXPR if 'arg' is really a SAVE_EXPR.

2004-01-23  Daniel Jacobowitz  <drow@mvista.com>

	* config/arm/arm.c (arm_legitimate_address_p): Don't check the mode
	size for minipool references.

2004-01-23  Roger Sayle  <roger@eyesopen.com>

	* real.c (real_floor, real_ceil): Tweak to allow input and output
	arguments to overlap.
	(real_round): New function to implement round(3m) semantics.
	* real.h (real_round): Prototype here.
	* builtins.c (fold_builtin_round): New function to constant fold
	round, roundf and roundl.
	(fold_builtin): Call fold_builtin_round for BUILT_IN_ROUND{,F,L}.

2004-01-23  Alexandre Oliva  <aoliva@redhat.com>

	PR optimization/13819
	* config/sh/sh.c (sh_reorg): Compensate for sharing of CLOBBERs
	introduced by 2004-01-20's Jan Hubicka's copy_insn change.
	(sh_handle_sp_switch_attribute): Remove warning.

2004-01-23  Jan Hubicka  <jh@suse.cz>

	* i386.c (ix86_emit_restore_regs_using_mov): Deal with large offsets.

2004-01-23  J"orn Rennecke <joern.rennecke@superh.com>

	* doc/tm.texi: Insert some weasel words when LOAD_EXTEND_OP
	may or may not return non-NIL.
	* postreload.c (reload_cse_simplify_operands): In LOAD_EXTEND_OP code,
	check CANNOT_CHANGE_MODE_CLASS

2004-01-23  Jan Hubicka  <jh@suse.cz>

	* basic-block.h (PROP_POSTRELOAD): New macro.
	(CLEANUP_LOG_LINKS): New.
	* cfgcleanup.c (cleanup_cfg): Only PROP_LOG_LINKS when asked to.
	* toplev.c (rest_of_handle_life): Preserve LOG_LINKS trought cleanup_cfg.

	* cselib.c (value_pool): New.
	(new_cselib_val): Use pool.
	(cselib_init): Initialize value_pool
	(cselib_finish): Free pool.

2004-01-23  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* config/sparc/sparc.c (scan_record_type): New function.
	(function_arg_slotno): Use it to determine which kinds of
	registers the record can be passed in.

2004-01-22  James A. Mmorrison  <ja2morri@uwaterloo.ca>

	* config/pa/fptr.c: Fix old-style definition.

2004-01-22  Paolo Bonzini  <bonzini@gnu.org>

	PR optimization/13724
	* cse.c (fold_rtx) <SUBREG>: Fold a SUBREG to zero if it
	represents the zero bits produced by a ZERO_EXTEND operation.

2004-01-22  Roger Sayle  <roger@eyesopen.com>

	PR optimization/13821
	* simplify-rtx.c (simplify_subreg): Use subreg_lowpart_offset to
	correctly calculate the lowpart offset of the contracted subreg.

2004-01-22  Ian Lance Taylor  <ian@wasabisystems.com>

	* doc/invoke.texi (Optimize Options): Note that --param arguments
	are subject to change without notice.

2004-01-22  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* config.gcc (mips-sgi-irix6*o32): Removed.
	* config/mips/iris6-o32-as.h: Likewise.
	* config/mips/iris6-o32-gas.h: Likewise.
	* config/mips/iris6-o32.h: Likewise.

2004-01-22  Jan Hubicka  <jh@suse.cz>

	* cfgcleanup.c (first_pass): New static variable.
	(try_forward_edges): Add work limiting check for threading.
	(try_crossjump_bb): Add work limiting check for crossjumping.
	(try_optimize_cfg): Maintain first pass variable.

2004-01-22  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/xtensa.c (function_arg): Generalize logic so that it
	handles complex and vector modes.

2004-01-22  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.h (REG_OK_FOR_INDEX_P_STRICT): Remove.
	(REG_OK_FOR_BASE_P_STRICT): Likewise.
	(STRICT): Likewise.

2004-01-22  Daniel Jacobowitz  <drow@mvista.com>

	* c-semantics.c (genrtl_while_stmt, genrtl_do_stmt_1)
	(genrtl_for_stmt): Remove emit_nop calls.

2004-01-22  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	PR target/13713
	PR target/13324
	* pa.md (movstrsi_prereload, movstrsi_postreload, movstrdi_prereload,
	movstrdi_postreload, clrstrsi_prereload, clrstrsi_postreload,
	clrstrdi_prereload, clrstrdi_postreload): Fix constraints.

2004-01-22  Daniel Jacobowitz  <drow@mvista.com>

	* config/arm/arm.c: Include "debug.h".
	(thumb_pushpop): Take two new arguments.  Add some commentary.
	Output frame information when pushing.
	(thumb_exit, thumb_unexpanded_epilogue): Update calls to
	thumb_pushpop.
	(thumb_output_function_prologue): Likewise.  Accumulate a CFA
	offset, and pass it to thumb_pushpop.  Output CFI information.
	(thumb_expand_prologue): Add some frame-related markers and notes.

2004-01-22  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.c (s390_frame_info): Allow large frame sizes
	for TARGET_64BIT.
	(s390_arg_frame_offset): Change return type to HOST_WIDE_INT.
	* config/s390/s390-protos.h (s390_arg_frame_offset): Likewise.

2004-01-22  Roger Sayle  <roger@eyesopen.com>
	    Paolo Bonzini  <bonzini@gnu.org>

	* rtlanal.c (subreg_lsb_1): New function split out from subreg_lsb.
	(subreg_lsb): Change to call new subreg_lsb_1 helper function.
	* rtl.h (subreg_lsb_1): Prototype here.
	* simplify-rtx.c (simplify_subreg): Optimize subregs of zero and
	sign extensions.

2004-01-22  Kazu Hirata  <kazu@cs.umass.edu>

	* doc/tm.texi (CASE_VECTOR_PC_RELATIVE): Mention that the
	macro need not be defined if jump-tables should contain
	relative addresses only when -fPIC or -fPIC is in effect.

2004-01-22  Jan Hubicka  <jh@suse.cz>

	* alias.c (reg_base_value): Turn into varray.
	(reg_base_value_size): Kill.
	(old_reg_base_value): New deletable varray.
	(alias_invariant_size): New variable.
	(REG_BASE_VALUE): Update to use varray.
	(find_base_value): Likewise.
	(record_set): Likewise.
	(record_base_value): Likewise.
	(memrefs_conflict_p): Likewise.
	(record_set): Likewise
	(record_base_value): Likewise.
	(memrefs_conflict_p): Use alias_invariant_size.
	(init_alias_analysis): Use varray; set alias_invariant_size;
	rescale other arrays to be sized by maxreg.
	(end_alias_analysis): Save reg_base_value; clear alias_invariant_size.

2004-01-22  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* config/sparc/sparc.c (function_arg_slotno): Use
	FLOAT_TYPE_P to detect FP fields in structures.
	(function_arg_record_value_1): Likewise.
	(function_arg_record_value_2): Likewise.

2004-01-22  Jan Hubicka  <jh@suse.cz>

	* function.c (allocate_struct_function): Do not initialize expr, emit
	and varasm.
	(prepare_function_start): Do it here.
	* c-parse.in (maybe_type_qual): Do not produce line number notes.

2004-01-22  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR target/13559
	* config/sparc/sparc.c (function_arg_record_value_3): Revert
	to 'word_mode' once the first slot has been filled.

2004-01-22  Olivier Hainque  <hainque@act-europe.fr>

	* config/sparc/sparc.c (function_arg_record_value_1): Fix
	computation of the number of integer registers required.

2004-01-21  Kazu Hirata  <kazu@cs.umass.edu>

	* config/i386/i386.md: Simplify certain comparisons of
	const_int.

2004-01-21  Andrew Pinski  <apinski@apple.com>

	PR target/13785
	* config/rs6000/rs6000.md (call_value): Force operand
	1 not operand 0 into a register.

2004-01-21  Kazu Hirata  <kazu@cs.umass.edu>

	* cpperror.c, cpptrad.c, longlong.h, params.def, rtl.def,
	unwind-dw2-fde.h: Update copyright.

2004-01-21  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* pa-protos.h: Update copyright.
	* pa.h: Likewise.
	* pa.md: Likewise.

2004-01-21  Caroline Tice  <ctice@apple.com>

	PR target/12308
	* config/i386/i386.md (fix_truncxfdi2): Add clause to clobber
	flags register.
	(fix_truncdfdi2): Likewise.
	(fix_truncsfdi2): Likewise.
	(*fix_truncdi_1): Likewise.
	(fix_truncxfsi2): Likewise.
	(fix_truncdfsi2): Likewise.
	(fix_truncsfsi2): Likewise.
	(*fix_truncsi_1): Likewise.
	(fix_truncxfhi2): Likewise.
	(fix_truncdfhi2): Likewise.
	(fix_truncsfhi2): Likewise.
	(*fix_trunchi_1): Likewise.

2004-01-21  Kazu Hirata  <kazu@cs.umass.edu>

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

2004-01-21  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/coff.h: Update copyright.
	* config/h8300/elf.h: Likewise.
	* config/h8300/h8300-protos.h: Likewise.
	* config/h8300/h8300.c: Likewise.
	* config/h8300/h8300.h: Likewise.
	* config/h8300/h8300.md: Likewise.

2004-01-21  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* fixinc/inclhack.def (hpux10_stdio_declarations, ultrix_const3,
	ultrix_locale, ultrix_stdlib, ultrix_strings, ultrix_sys_time,
	ultrix_unistd): New hacks.
	* fixinc/tests/base/stdio.h (HPUX10_STDIO_DECLARATIONS_CHECK,
	ULTRIX_CONST2_CHECK): Add checks.
	* fixinc/tests/base/stdlib.h (ULTRIX_STDLIB_CHECK): Likewise.
	* fixinc/tests/base/strings.h (ULTRIX_STRINGS2_CHECK): Likewise.
	* fixinc/tests/base/unistd.h (ULTRIX_UNISTD_CHECK): Likewise.
	* fixinc/tests/base/sys/time.h (ULTRIX_SYS_TIME_CHECK): Likewise.
	* fixinc/tests/base/locale.h: New file.
	* fixinc/fixincl.x: Rebuilt.

2004-01-21  Andreas Jaeger  <aj@suse.de>
	    Michael Matz  <matz@suse.de>

	* doc/extend.texi (Extended Asm): Clarify memory clobber.

2004-01-21  Jakub Jelinek  <jakub@redhat.com>

	* crtstuff.c (frame_dummy, __do_global_ctors_1): Call
	_Jv_RegisterClasses through a function pointer.

2004-01-21  Falk Hueffner  <falk@debian.org>

	PR target/12898
	* config/alpha/alpha.c (alpha_emit_set_const_1): If
	no_new_pseudos, use gen_rtx_SET directly for SImode constants
	which need multiple instructions to emit.

2004-01-21  Inaoka Kazuhiro  <inaoka.kazuhiro@renesas.com>

	* config/m32r/m32r.h (CPP_SPEC): Define.

2004-01-21  Zack Weinberg  <zack@codesourcery.com>

	* c-decl.c (merge_decls): Kill different_binding_level and
	different_tu arguments; simplify throughout.
	(duplicate_decls): Likewise.
	(pushdecl, merge_translation_unit_decls): Update calls to
	duplicate_decls.

2004-01-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (pretty-print.o): Depend on $(CONFIG_H) and
	$(SYSTEM_H).
	(print-rtl1.o): Depend on $(SYSTEM_H).

2004-01-20  Kelley Cook  <kcook@gcc.gnu.org>

	PR bootstrap/12730
	* configure.ac: Delete definition and subsitution of docdir.
	Add info, man, srcman and srcinfo to target hooks. Create doc/
	directory.
	* configure: Regenerate.
	* Makefile.in: Don't substitute docdir and delete all references
	throughout.
	(MAKEINFOFLAGS): Define.
	(stmp-docobjdir): Delete.
	(INFOFILES, MANFILES): Define.
	(info): Call lang.info, srcinfo and lang.srcinfo.
	(generated-manpages): Call lang.man, srcman and lang.srcman.
	(srcinfo, srcman): New rules to copy back files to source directory.
	(doc/%.info, doc/%.dvi, doc/%.1, doc/%.7): New implict rule.
	(install-man): Revamp rule.
	(clean): Update dvi directory.
	(distclean): Delete TAGS from front end directorys.
	(maintainer-clean): Delete all document files in source directory.

	objc/Make-lang.in (objc.man, objc.info): Dummy entries.
	(objc.srcman, objc.srcinfo): Likewise.

2004-01-20  Bruce Korb  <bkorb@gnu.org>

	* fixinc/inclhack.def(math_exception): bypass only for glibc.
	(matherr_decl): rename & relocate as exception_structure.
	This fix must precede the math_exception fix.

2004-01-20  Roger Sayle  <roger@eyesopen.com>

	* fold-const.c (fold_convert): Rename to fold_convert_const.
	(fold_convert_const): Change arguments to take a tree_code,
	a type and the operand/expression to be converted.  Return
	NULL_TREE if no simplification is possible.  Add support for
	FIX_CEIL_EXPR and FIX_FLOOR_EXPR in addition to FIX_TRUNC_EXPR.
	(fold): Handle FIX_CEIL_EXPR and FIX_FLOOR_EXPR.
	Adjust call to fold_convert to match new fold_convert_const.
	Avoid modifying the tree passed to fold in-place.

2004-01-21  Alan Modra  <amodra@bigpond.net.au>

	* config/rs6000/sysv4.h (DWARF2_FRAME_REG_OUT): Define.
	* dwarf2out.c (output_cfi): Map regs using DWARF2_FRAME_REG_OUT.
	* doc/tm.texi (DWARF_FRAME_REGNUM, DWARF2_FRAME_REG_OUT): Document.

2004-01-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* pa-protos.h (compute_frame_size): Use HOST_WIDE_INT for frame sizes.
	* pa.c (store_reg, store_reg_modify, load_reg, set_reg_plus_d):
	Likewise.  Handle frames larger than 0x7fffffff on 64-bit ports.
	(emit_move_sequence): Check scratch_reg first in various if statements.
	Extend source simplification to handle all 64-bit CONST_INTs.
	(pa_output_function_prologue): Use HOST_WIDE_INT_PRINT_DEC for printing
	frame size.
	(hppa_expand_prologue, hppa_expand_epilogue): Use HOST_WIDE_INT for
	frame offset calculations.
	* pa.h (NEW_HP_ASSEMBLER): Add comment.
	(MAX_LEGIT_64BIT_CONST_INT, MIN_LEGIT_64BIT_CONST_INT,
	LEGITIMATE_64BIT_CONST_INT_P): Define.
	(LEGITIMATE_CONSTANT_P): Use LEGITIMATE_64BIT_CONST_INT_P.  Treat
	any CONST_INT as legitimate during and after reload.
	(VAL_32_BITS_P, INT_32_BITS): Define.
	(LEGITIMIZE_RELOAD_ADDRESS): Handle large frame offsets.

2004-01-20  Jan Hubicka  <jh@suse.cz>

	* emit-rtl.c (verify_rtx_sharing, copy_insn_1,
	emit_copy_of_insn_after, emit_copy_of_insn_after): Clobbers
	containing hard regs are shared.
	(gen_hard_reg_clobber): New function.
	(hard_reg_clobbers): New array.
	* genemit.c (gen_exp): Use gen_hard_reg_clobber.
	(copy_rtx): Do not copy clobbers containing hard regs.
	* rtl.h (gen_hard_reg_clobber): Declare.

2004-01-20  Jan Hubicka  <jh@suse.cz>

	* varray.c: Include hashtab.h
	(varray_descriptor): New structure.
	(hash_descriptor, eq_descriptor, varray_descriptor,
	print_statistics): New static functions
	(varray_init, varray_grow): Update statistics
	(dump_varray_statistics): New function.
	* varray.h (dump_varray_statistics): Declare.
	* toplev.c (finalize): Call it.
	* Makefile.in (varray.o): Add dependency.

2004-01-20  Jan Hubicka  <jh@suse.cz>

	* cselib.c: Include alloc-pool.h
	(empty_vals, empty_elt_lists, empty_elt_loc_lists): Kill.
	(elt_loc_list_pool, elt_list_pool, cselib_val_pool): Declare.
	(new_elt_list, new_elt_loc_list, unchain_one_elt_list,
	unchain_one_elt_loc_list_pool, unchain_one_value,
	new_cselib_val): Simplify using allocpool.
	(cselib_init): Initialize allocpools.
	(cselib_finish): Finish allocpools.
	* Makefile.in (cselib.o): Depend on alloc-pool.h

2004-01-20  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.c (mips_load_call_address): Make the call insn
	use $gp if it could be calling a lazy binding stub.

2004-01-20  Kazu Hirata  <kazu@cs.umass.edu>

	* config/s390/s390.c (TARGET_PROMOTE_FUNCTION_ARGS): Define.
	(TARGET_PROMOTE_FUNCTION_RETURN): Likewise.
	(TARGET_STRUCT_VALUE_RTX): Likewise.
	* config/s390/s390.h (PROMOTE_FUNCTION_ARGS): Remove.
	(PROMOTE_FUNCTION_RETURN): Remove.
	(STRUCT_VALUE): Remove.

2004-01-20  Denis Chertykov  <denisc@overta.ru>

	PR bootstrap/13735
	* config/avr/avr.h (BASE_REG_CLASS): Don't permit to use X
	register as pointer after reload.

2004-01-20  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	PR optimization/12440
	* loop.c: Include ggc.h.
	(loop_optimize): Run garbage collector between optimization of loops.
	* Makefile.in (loop.o): Add GGC_H dependency.

2004-01-20  Hartmut Penner  <hpenner@de.ibm.com>

	* config/rs6000/rs6000.c (function_arg) Handle
	vector register special in function without prototype.
	(function_arg_advance): Vector parameters get always
	GPRs allocated for the linux64 target.

2004-01-20  Kazuhiro Inaoka  <inaoka.kazuhiro@renesas.com>

	* config/m32r/m32r.h (TARGET_M32R2). Test for TARGET_M32R2_MASK
	not TARGET_M32RX_MASK.

2004-01-20  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR target/13557
	* config/sparc/sparc.c (function_arg): Reorder the cases.

2004-01-19  Per Bothner  <per@bothner.com>

	Move cpp_reader's line_maps field to a shared global.
	* cpphash.h (cpp_reader): Rename line_maps field to line_table
	and change the type to a pointer rather than a struct.
	* cppinit.c (cpp_push_main_field): Adjust accordingly.
	* cpplib.c (do_include_common, _cpp_do_file_change, cpp_get_callbacks):
	Likewise.
	* cppfiles.c (validate_pch): Likewise.
	* cppmacro.c (_cpp_warn_if_unused_macro, _cpp_builtin_macro_text):
	Likewise.
	* cpperror.c (print_location): Likewise.
	* cpplib.h (cpp_create_reader): New line_maps pointer parameter.
	* cppinit.c (cpp_create_reader): Handle new parameter.
	(cpp_destroy): Don't free line_maps - that's no longer our job.
	* input.h (line_table): New variable.
	* toplev.c (line_table): Declare variable.
	(general_init): Initialize line_table.
	* c-opts.c (c_common_init_options): Pass line_table to
	cpp_create_reader.
	* fix-header.c (read_scan_file): New local variable line_table.
	Initialize, and pass it to cpp_create_reader.
	* Makefile.in (LIBS, LIBDEPS): Add libcpp.a.
	(C_AND_OBJC_OBJS, fix-header): Remove redundant libcpp.a.

2004-01-19  Per Bothner  <per@bothner.com>

	Implement a cache for linemap_lookup.
	* line-map.h (struct_line_maps): Add cache field.
	* line-map.c (linemap_init): Zero cache field.
	(linemap_add): Set cache field to offset of newly allocated map.
	(linemap_lookup): Use and set cache field.

2004-01-20  Kaz Kojima  <kkojima@gcc.gnu.org>

	PR optimization/13567
	* cse.c (cse_basic_block): Call cse_insn with a non-null
	libcall_insn for the last SET insn of a no-confilict block.

2004-01-20  Kelley Cook  <kcook@gcc.gnu.org>

	* Makefile.in (target_noncanonical, program_transform_name): Use
	immediate define instead of deferred.
	(GCC_INSTALL_NAME, GCC_TARGET_INSTALL_NAME, CPP_INSTALL_NAME,
	PROTOIZE_INSTALL_NAME, UNPROTOIZE_INSTALL_NAME, GCOV_INSTALL_NAME,
	GCCBUG_INSTALL_NAME): Define via a immediate $(shell) instead of
	deferred backquote.

2004-01-20  Joseph S. Myers  <jsm@polyomino.org.uk>

	* c-decl.c (c_init_decl_processing): Set pedantic_lvalues to
	true unconditionally.
	* c-typeck.c (unary_complex_lvalue, pedantic_lvalue_warning):
	Remove.
	(build_unary_op, build_modify_expr): Don't handle extended
	lvalues.
	(build_component_ref, build_conditional_expr): Call non_lvalue
	instead of pedantic_non_lvalue.
	(build_c_cast): Don't condition use of non_lvalue on pedantic.
	* fold-const.c (fold): Don't check pedantic directly for
	COMPOUND_EXPR.  Ensure that results for COMPOUND_EXPR are
	passed to pedantic_non_lvalue.
	* doc/extend.texi: Remove documentation of extended lvalues.

2004-01-19  Roger Sayle  <roger@eyesopen.com>

	PR optimization/5263
	* simplify-rtx.c (associative_constant_p): Delete.
	(simplify_associative_operation): Rewrite to linearize terms, and
	attempt to simplify new term against both left and right subterms.
	(simplify_binary_operation): Call swap_commutative_operands_p on
	op0 and op1, not trueop0 and trueop1.  Move the initialization of
	trueop0 and trueop1 down to where first needed.
	(simplify_relational_operation): Likewise.
	* rtlanal.c (commutative_operand_precedence): Also order constant
	operands using avoid_constant_pool_reference.

2004-01-19  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.c (aligned_memory_operand): Check MEM_ALIGN,
	don't check memory mode.
	(unaligned_memory_operand): Likewise.
	(reload_inqi, reload_inhi, reload_outqi, reload_outhi): Don't
	abort for op0 not MEM.

	* config/alpha/alpha.c (alpha_expand_mov_nobwx): If the destination
	is not a reg, copy to a scratch first.
	(aligned_loadqi, aligned_loadhi, unaligned_loadqi, unaligned_loadhi,
	unaligned_loadqi_le, unaligned_loadqi_be, unaligned_loadhi_le,
	unaligned_loadhi_be): Expect op0 in DImode; don't SUBREG.
	(reload_inqi, reload_inhi): Fix mode of op0.
	(reload_inqi_help, reload_inhi_help, reload_outqi_help,
	reload_outhi_help): Likewise.  Use define_insn_and_split.

	* config/alpha/alpha.md (call peepholes): Check for REG_NORETURN
	as well as $29 dead.

2004-01-19  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* config/sparc/sol2.h (ASM_DECLARE_OBJECT_NAME): New.  Emit
	"tls_object" for thread-local objects.
	* config/sparc/sparc.c (sparc_elf_asm_named_section): Emit
	"#tls" for thread-local sections.
	* configure.ac (thread-local checks): Specify --fatal-warnings in
	every binutils-specific checks.  For sparc*-*-*, test whether the
	OS is Solaris and the tools are native and act accordingly.
	* configure: Rebuild.

2004-01-19  Jeff Law  <law@redhat.com>

	* contrib.texi: Update Paolo Carlini's entry.  New entries for
	Jerry Quinn and Petur Runolfsson.

2004-01-19  Roger Sayle  <roger@eyesopen.com>

	* config/i386/i386.md (*movhi_1, *movqi_1): When optimizing for
	size, don't use the larger zero-extending loads.

2004-01-19  Richard Henderson  <rth@redhat.com>

	* alpha.h (HARD_REGNO_MODE_OK): Disallow SImode in FP regs.
	* alpha.md (UNSPEC_NT_LDA): Remove.
	(UNSPEC_CVTLQ, cvtlq): New.
	(extendsidi2_1): Rename from extendsidi2_nofix; remove f/f.
	(extendsidi2_fix): Remove.
	(extendsidi2 splitter): Use cvtlq.
	(extendsidi2 fp peepholes): Remove.
	(cvtql): Use SFmode instead of SImode.
	(fix_trunc?fsi): Update to match.
	(floatsisf2_ieee, floatsisf2, floatsidf2_ieee, floatsidf2): New.
	(movsi): Rename from movsi_nofix, remove f alternatives.
	(movsi_nt_vms): Similarly.
	(movsi_fix, movsi_nt_vms_fix): Remove.
	(nt_lda): Remove.
	* alpha.c (alpha_expand_prologue): Use adddi3, not nt_lda.

2004-01-19  Jan Hubicka  <jh@suse.cz>

	* cgraph.c (cgraph_remove_node): Fix removal from linked list.
	* cgraphunit.c (cgraph_finalize_compilation_unit): Clear next_needed
	list.
	(cgraph_remove_unreachable_nodes): New function
	(cgraph_decide_inlining_of_small_function): Fix pasto.
	(cgraph_decide_inlining_incrementally): Fix pasto.
	(cgrpah_decide_inlining): Likewise; remove unreachable nodes.

2004-01-19  Steven Bosscher  <stevenb@suse.de>

	* gengtype.c (header_file): Make it static.
	(write_types_process_field, write_enum_defn): Minor whitespace fixes.
	* gengtype.h (header_file): No longer extern.

2004-01-18  Kazu Hirata  <kazu@cs.umass.edu>

	* defaults.h (CASE_VECTOR_PC_RELATIVE): Provide the default.
	* expr.c (CASE_VECTOR_PC_RELATIVE): Remove.
	* stmt.c (CASE_VECTOR_PC_RELATIVE): Likewise.

2004-01-18  Kazu Hirata  <kazu@cs.umass.edu>

	* stmt.c (HAVE_casesi): Define it not already defined.
	(HAVE_tablejump): Likewise.
	(expand_end_case_type): Resort to the binary tree method if
	neither casesi or tablejump is available.

2004-01-18  Daniel Jacobowitz  <drow@mvista.com>

	* final.c (final_scan_insn): Make non-static again.
	* output.h (final_scan_insn): Re-add prototype.
	* config/arc/arc.c (arc_output_function_epilogue): Add NULL
	to final_scan_insn call.
	* config/cris/cris.c (cris_target_asm_function_epilogue): Likewise.
	* config/mips/mips.c (mips_output_conditional_branch): Likewise.
	* config/pa/pa.c (output_lbranch, output_call): Likewise.
	* config/sh/sh.c (print_slot): Likewise.
	* config/sparc/sparc.c (sparc_nonflat_function_epilogue): Likewise.
	(output_sibcall, sparc_flat_function_epilogue): Likewise.

2004-01-18  Jan Hubicka  <jh@suse.cz>

	* basic-block.h (try_redirect_by_replacing_jump): Declare.
	* cfgcleanup.c (try_optimize_cfg): Use it.
	* cfgrtl.c (try_redirect_by_replacing_jump): Export.
	(rtl_redirect_edge_and_branch, cfg_layout_redirect_edge_and_branch):
	Kill hack.
	(cfg_layout_merge_blocks): Use try_redirect_by_replacing_jump.

	Revert:
	2004-01-16  Geoffrey Keating  <geoffk@apple.com>

		* cfgrtl.c (try_redirect_by_replacing_jump): Optimize tablejumps
		even after reload, just don't remove the actual jump tables.

2004-01-18  Kazu Hirata  <kazu@cs.umass.edu>

	* config/rs6000/rs6000.h (STRICT_ARGUMENT_NAMING): Remove.

2004-01-18  Kazu Hirata  <kazu@cs.umass.edu>

	* defaults.h (ASM_OUTPUT_ADDR_VEC_ELT): Fix the computation of
	the size of a pointer in bytes.

2004-01-18  Roger Sayle  <roger@eyesopen.com>

	* builtins.c (expand_builtin_expect_jump): Fix thinko of reusing
	live "next" variable, which could lead to an infinite loop.

2004-01-18  Andrew Pinski  <pinskia@physics.uc.edu>

	* config/rs6000/altivec.h: Wrap C++ functions in extern "C++"
	block.

	* config/rs6000/rs6000.c (rs6000_special_round_type_align):
	Check for NULL in the chain and remove repeated code.

2004-01-18  Jan Hubicka  <jh@suse.cz>

	* coverage.c (checksum_string): Rename to ...
	(coverage_checksum_string): ... this one, Use crc32_string; recognize
	names containing random number and zero the number out in order to get
	match.

2004-01-18  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.c (mips_got_alias_set): Mark for PCH.

2004-01-18  Joseph S. Myers  <jsm@polyomino.org.uk>

	* doc/c-tree.texi, doc/cpp.texi, doc/extend.texi,
	doc/frontends.texi, doc/gcov.texi, doc/gty.texi, doc/install.texi,
	doc/invoke.texi, doc/libgcc.texi, doc/md.texi, doc/rtl.texi,
	doc/sourcebuild.texi, doc/standards.texi, doc/tm.texi,
	doc/trouble.texi: Remove trailing whitespace.

2004-01-18  Richard Sandiford  <rsandifo@redhat.com>

	PR target/7618
	* config/mips/mips.c: Include cfglayout.h.
	(TARGET_ASM_OUTPUT_MI_THUNK, TARGET_ASM_CAN_OUTPUT_MI_THUNK): Define.
	(mips_unspec_offset_high): Add temporary register argument.
	(mips_load_call_address): New function, split out from...
	(mips_expand_call): ...here.
	(mips_output_cplocal): New function.
	(mips_output_function_prologue, mips_output_function_epilogue): Use it.
	(mips_emit_loadgp): New function, split out from...
	(mips_expand_prologue): ...here.
	(mips_output_mi_thunk): New function.

2004-01-17  Bernardo Innocenti  <bernie@develer.com>

	* longlong.h (mc68020, __mc68030__, mc68030, __mc68040__, mc68040,
	mcpu32): Remove redundant checks for implied target predefines.

2004-1-17  Andrew Pinski  <pinskia@physics.uc.edu>

	* config/rs6000/rs6000.c (rs6000_special_round_type_align):
	Return type is unsigned int not int.
	* config/rs6000/rs6000-protos.h (rs6000_special_round_type_align):
	Likewise.

2004-01-18  Joseph S. Myers  <jsm@polyomino.org.uk>

	* doc/contrib.texi, doc/cppenv.texi, doc/extend.texi,
	doc/install.texi, doc/invoke.texi, doc/tm.texi: Consistently use
	"GNU/Linux" and "Microsoft Windows" terminology.

2004-01-18  Joseph S. Myers  <jsm@polyomino.org.uk>

	* doc/c-tree.texi, doc/compat.texi, doc/cpp.texi,
	doc/cppopts.texi, doc/extend.texi, doc/install.texi,
	doc/interface.texi, doc/invoke.texi, doc/libgcc.texi, doc/md.texi,
	doc/objc.texi, doc/rtl.texi, doc/tm.texi, doc/trouble.texi: Use
	@smallexample instead of @example.

2004-01-17  Ziemowit Laski  <zlaski@apple.com>

	* objc/objc-act.c (build_objc_method_call): Use target
	hooks instead of macros to determine if ..._stret
	dispatchers should be used (NeXT runtime only).

2004-01-17  Roger Sayle  <roger@eyesopen.com>

	* builtins.c (expand_builtin_expect_jump): Fix mistake in my
	last patch.  Use XEXP (x, 0) to get a LABEL_REF's CODE_LABEL.

2004-01-17  Daniel Jacobowitz  <drow@mvista.com>

	* rtl.h (emit_insn_before_sameloc, emit_jump_insn_before_sameloc)
	(emit_call_insn_before_sameloc, emit_insn_after_sameloc)
	(emit_jump_insn_after_sameloc, emit_call_insn_after_sameloc): New
	macros.
	* reload1.c (emit_reload_insns): Use them.
	* emit-rtl.c (emit_insn_before_sameloc, emit_insn_after_sameloc)
	(emit_jump_insn_after_sameloc, emit_call_insn_after_sameloc): Check
	for NULL PATTERN.

2004-01-17  Daniel Jacobowitz  <drow@mvista.com>

	* final.c (SEEN_BB, SEEN_NOTE, SEEN_EMITTED): Define.
	(final_scan_insn): Update to take an additional SEEN argument.  Emit
	a line note after the prologue.  Make static.
	(line_note_exists): Remove.
	(final): Don't initialize line_note_exists.  Update call to
	final_scan_insn.
	* output.h (final_scan_insn): Remove prologue.
	* function.c (set_insn_locators): Update comment.
	(thread_prologue_and_epilogue_insns): Add a comment.

2004-01-17  Andrew Pinski  <pinskia@physics.uc.edu>

	PR target/10781
	* config/rs6000/rs6000-protos.h (rs6000_special_round_type_align):
	Prototype.
	* config/rs6000/rs6000.c (rs6000_special_round_type_align):
	New function.
	* config/rs6000/linux64.h (ROUND_TYPE_ALIGN): Use it.
	* config/rs6000/aix.h (ROUND_TYPE_ALIGN): Likewise.
	* config/rs6000/darwin.h (ROUND_TYPE_ALIGN): Likewise.

2004-01-17  Jan Hubicka  <jh@suse.cz>

	* toplev.c (rest_of_handle_reorder_blocks): Fix pasto in previous
	commit.

	* toplev.c (HAVE_conditional_execution): Provide default.
	(rest_of_handle_reorder_blocks): For conditional_execution target
	update liveness once after all transformations
	(rest_of_compilation): Do crossjumping before ce3.

2004-01-17  Geoffrey Keating  <geoffk@apple.com>

	* alias.c (new_alias_set): Mark last_alias_set for PCH.
	(get_varargs_alias_set): Rename 'set' to 'varargs_set' and mark it
	for PCH.
	(get_frame_alias_set): Likewise, except rename it to 'frame_set'.
	* config/rs6000/rs6000.c (rs6000_sr_alias_set): Mark for PCH.
	(get_TOC_alias_set): Mark 'set' for PCH.

2004-01-16  Geoffrey Keating  <geoffk@apple.com>

	* cfgrtl.c (try_redirect_by_replacing_jump): Optimize tablejumps
	even after reload, just don't remove the actual jump tables.

2004-01-17  J. Brobecker  <brobecker@gnat.com>

	* dwarf2out.c (is_subrange_type): Renamed from is_ada_subrange_type().
	Remove checks for is_ada() and TREE_UNSIGNED.
	(subrange_type_die): Emit a byte_size attribute if the subrange
	type size is different from the base type size.
	(modified_type_die): Replace call to is_ada_subrange_type() by
	call to is_subrange_type().

2004-01-16  Andrew Pinski  <pinskia@physics.uc.edu>

	* config/sh/sh.c: Include ggc.h.

2004-01-16  Geoffrey Keating  <geoffk@apple.com>

	* Makefile.in (MD5_H): New.
	(fold-const.o): Depend on md5.h.
	(dwarf2out.o): Likewise.
	(cppfiles.o): Likewise.
	* cppfiles.c: Include md5.h.
	(should_stack_file): Check against list read from PCH file.
	(struct pchf_data): New.
	(pchf): New variable.
	(struct pchf_adder_info): New.
	(pchf_adder): New.
	(pchf_save_compare): New.
	(_cpp_save_file_entries): New.
	(_cpp_read_file_entries): New.
	(struct pchf_compare_data): New.
	(pchf_compare): New.
	(check_file_against_entries): New.
	* cpphash.h (_cpp_save_file_entries): Prototype.
	(_cpp_read_file_entries): Prototype.
	* cpppch.c (cpp_write_pch_state): Write the list of headers.
	(cpp_read_state): Read the list of headers.

2004-01-17  Jan Hubicka  <jh@suse.cz>

	* c-common.c (c_estimate_num_insns_1): Handle builtin_constant_p and
	builtin_expect specially.
	* params.def (PARAM_MAX_INLINE_INSNS_AUTO): Set to 100.
	(PARAM_LARGE_FUNCTION_INSNS): Set to 3000.
	* invoke.texi (max-inline-insns-single): Set to 100.
	(large-function-insns): Set to 3000.

2004-01-16  Eric Christopher  <echristo@redhat.com>
	    Chandrakala Chavva <cchavva@redhat.com>

	* cppcharset.c (one_iso88591_to_utf8): New function.
	(convert_iso88591_utf8): Ditto. Use.
	(conversion_tab): Use.
	(_cpp_input_to_utf8): New function.
	(_cpp_init_iconv_buffer): Ditto.
	(_cpp_close_iconv_buffer): Ditto.
	* cpphash.h: Prototype new functions.
	(cpp_buffer): Add input_cset_desc.
	* cppinit.c: Add input_charset default.
	* cpplib.c (cpp_push_buffer): Support init and
	close of iconv.
	* cpplib.h (cpp_options): Add input_charset.

2004-01-16  Kazu Hirata  <kazu@cs.umass.edu>

	* system.h (ASM_OUTPUT_SECTION_NAME): Poison.
	* config/alpha/unicosmk.h: Remove a commented-out definition
	of ASM_OUTPUT_SECTION_NAME.
	* config/stormy16/stormy16.h: Likewise.

2004-01-16  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* fixinc/inclhack.def (alpha___extern_prefix): Renamed to ...
	(alpha___extern_prefix_sys_stat): ... this.
	Apply to <sys/mount.h>, too.
	Tweak to match more variations.
	* fixinc/tests/base/sys/stat.h: Adapt for new hackname.

	* fixinc/inclhack.def (alpha___extern_prefix,
	alpha___extern_prefix_standards): New hacks to obey
	__PRAGMA_EXTERN_PREFIX.
	* fixinc/tests/base/testing.h [ALPHA___EXTERN_PREFIX_CHECK]: New
	test.
	* fixinc/tests/base/standards.h: Likewise.

	* fixincl/inclhack.def (alpha_pthread): Tweak to match more
	variations.
	New testcase.
	* fixinc/tests/base/pthread.h: Handle it.

	* fixincl/inclhack.def (bad_lval): Sort file list.
	Add many missing files up to Tru64 UNIX V5.1B.
	* fixinc/tests/base/libgen.h: Renamed to ...
	* fixinc/tests/base/dirent.h: ... this to match new file list
	order.

	* fixinc/fixincl.x: Regenerate.

2004-01-16  Mark Mitchell  <mark@codesourcery.com>

	* version.c (version_string): Change to 3.5.0.
	* doc/include/gcc-common.texi (version-GCC): Likewise.

2004-01-16  Jan Hubicka  <jh@suse.cz>

	* i386.md (load_tp_di): Fix pasto.

	PR opt/13608
	* i386.c (ix86_compute_frame_layout): Fix for alloca on leaf function.

	* c-pretty-print.c (pp_c_type_cast, pp_c_abstract_declarator,
	pp_c_character_constant, pp_c_floating_constant,
	pp_c_additive_expression, pp_c_shift_expression,
	pp_c_equality_expression, pp_c_and_expression,
	pp_c_exclusive_or_expression, pp_c_inclusive_or_expression,
	pp_c_logical_and_expression): Remove inline modifier.
	* dwarf2out.c (get_AT): Likewise.
	* et-forest.c (et_splay): Likewise.
	* ra.h (ra_alloc, ra_calloc): Likewise

2004-01-16  Kazu Hirata  <kazu@cs.umass.edu>

	* config/frv/frv-protos.h: Fix comment formatting.
	* config/frv/frv.c: Likewise.
	* config/frv/frv.h: Likewise.
	* config/frv/frv.md: Likewise.
	* config/frv/frvbegin.c: Likewise.
	* config/frv/frvend.c: Likewise.

2004-01-16  Kazu Hirata  <kazu@cs.umass.edu>

	* system.h (LINKER_DOES_NOT_WORK_WITH_DWARF2): Poison.
	* doc/tm.texi (PREFERRED_DEBUGGING_TYPE): Don't mention
	LINKER_DOES_NOT_WORK_WITH_DWARF2.
	(LINKER_DOES_NOT_WORK_WITH_DWARF2): Remove.

2004-01-16  J"orn Rennecke <joern.rennecke@superh.com>

	PR 11864
	* postreload.c (reload_cse_simplify_operands): Don't remove
	implicit extension from LOAD_EXTEND_OP.

2004-01-16  Jan Hubicka  <jh@suse.cz>

	PR opt/11350
	* cfgcleanup.c (try_optimize_cfg): Suppress tablejump removal
	after reload.
	* cfgrtl.c (rtl_can_merge_blocks, cfglayout_can_merge_blocks,
	rtl_try_redirect_by_replacing_branch): Likewise.

2004-01-15  Geoffrey Keating  <geoffk@apple.com>

	PR pch/13689
	* alias.c (struct alias_set_entry): Mark for GC.
	(alias_sets): Make static, mark for GC.
	(record_alias_subset): Use GC to allocate alias structures.
	* varray.c (element): Make generic varrays GCed.

	PR pch/13361
	* c-typeck.c (constructor_asmspec): Delete.
	(struct initializer_stack): Delete field 'asmspec'.
	(start_init): Delete saving of asmspec.
	(finish_init): Don't update constructor_asmspec.
	* dwarf2out.c (rtl_for_decl_location): Duplicate string from tree.
	* stmt.c (expand_asm): Duplicate strings from tree.
	(expand_asm_operands): Likewise.
	* tree.c (tree_size): Update computation of size of STRING_CST.
	(make_node): Don't make STRING_CST nodes.
	(build_string): Allocate string with tree node.
	* tree.def (STRING_CST): Update comment.
	* tree.h (TREE_STRING_POINTER): Adjust for change to STRING_CST.
	(tree_string): Place contents of string in tree node.
	* config/sh/sh.c (sh_handle_sp_switch_attribute): Duplicate string
	from tree.

	* config/rs6000/rs6000.c (rs6000_va_arg): No need to special-case
	altivec operands.

2004-01-15  Kazu Hirata  <kazu@cs.umass.edu>

	* c-common.h: Fix comment formatting.
	* c-cppbuiltin.c: Likewise.
	* c-pragma.c: Likewise.
	* calls.c: Likewise.
	* collect2.c: Likewise.
	* cppcharset.c: Likewise.
	* cpptrad.c: Likewise.
	* dbxout.c: Likewise.
	* defaults.h: Likewise.
	* dwarf2out.c: Likewise.
	* fold-const.c: Likewise.
	* genautomata.c: Likewise.
	* genconditions.c: Likewise.
	* genflags.c: Likewise.
	* gengtype.c: Likewise.
	* integrate.c: Likewise.
	* loop.c: Likewise.
	* predict.c: Likewise.
	* sdbout.c: Likewise.

2004-01-15  Zack Weinberg  <zack@codesourcery.com>

	* 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.

2004-01-15  Kelley Cook  <kcook@gcc.gnu.org>

	* Makefile.in (MAINT): Make it an immediate assignment.

2004-01-15  Kazu Hirata  <kazu@cs.umass.edu>

	* config/m32r/m32r.md: Remove useless calls to gen_lowpart.

2004-01-15  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/coff.h: Replace Hitachi with Renesas.
	* config/h8300/elf.h: Likewise.
	* config/h8300/h8300-protos.h: Likewise.
	* config/h8300/h8300.c: Likewise.
	* config/h8300/h8300.h: Likewise.
	* config/h8300/h8300.md: Likewise.
	* config/h8300/lib1funcs.asm: Likewise.

2004-01-15  Andrew Pinski  <apinski@apple.com>

	* config/rs6000/rs6000.c (uses_TOC): Wrap #if TARGET_ELF
	around it.

2004-01-15  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.c (h8300_return_in_memory): New.
	(TARGET_STRUCT_VALUE_RTX): Likewise.
	(TARGET_RETURN_IN_MEMORY): Likewise.
	* config/h8300/h8300.h (STRUCT_VALUE): Remove.
	(RETURN_IN_MEMORY): Likewise.

2004-01-15  Richard Earnshaw  <rearnsha@arm.com>

	PR optimization/13375
	* gcse.c (handle_avail_expr): Just return if the source is not a
	single set.

2004-01-15  Richard Earnshaw  <rearnsha@arm.com>
	    Daniel Jacobowitz  <drow@mvista.com>

	* arm/lib1funcs.asm (ARM_FUNC_START): Correct interworking case.
	(EQUIV): Define.
	(ARM_FUNC_ALIAS): New macro.
	* arm/ieee754-df.S (gedf2, ledf2, nedf2, eqdf2): Use it.
	* arm/ieee754-sf.S (gesf2, lesf2, nesf2, eqsf2): Use it.

2004-01-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	PR optimization/12372
	* calls.c (expand_call): Add call_fusage data for stack arguments in
	constant calls.

2004-01-15  Alan Modra  <amodra@bigpond.net.au>

	* config/rs6000/rs6000.c (uses_TOC): Correct comment.  Make static.
	(rs6000_elf_declare_function_name): Formatting.
	* config/rs6000/rs6000-protos.h (uses_TOC): Remove declaration.

2004-01-15  Jan Hubicka  <jh@suse.cz>

	PR bootstrap/13692
	* sched-deps.c (sched_analyze_1, sched_analyze_2): Fix thinko in
	previous patch.

2004-01-15  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.h (REG_ALLOC_ORDER): Reorder fp regs after
	integer regs of the same call-savedness.

2004-01-15  Andreas Schwab  <schwab@suse.de>

	PR bootstrap/13562
	* config/m68k/m68k.c (output_move_const_into_data_reg): Clear cc
	status for NOTB/NOTW/NEGW methods.

2004-01-15  Kazu Hirata  <kazu@cs.umass.edu>

	* doc/invoke.texi: Update dump file names.  Fix a typo.

2004-01-15  Kazu Hirata  <kazu@cs.umass.edu>

	* builtins.c (expand_builtin_va_end): Don't use
	EXPAND_BUILTIN_VA_END.
	* system.h (EXPAND_BUILTIN_VA_END): Poison.
	* config/d30v/d30v.h: Remove a commented-out definition of
	EXPAND_BUILTIN_VA_END.
	* config/stormy16/stormy16.h: Likewise.

2004-01-15  Kazu Hirata  <kazu@cs.umass.edu>

	* system.h (STRUCT_VALUE_INCOMING_REGNUM): Poison.
	* targhooks.c (default_struct_value_rtx): Don't use
	STRUCT_VALUE_INCOMING_REGNUM.

2004-01-15  Kelley Cook  <kcook@gcc.gnu.org>

	PR bootstrap/12744
	* configure.in: Revamp enable-generated-files-in-srcdir rule to define
	GENINSRC and not parsedir.  Define srcextra as a langhook.
	* configure: Regenerate.
	* Makefile.in: Suppress default .l.c rule.  Don't substitute
	parsedir and delete all references throughout.  Conditionally define
	rule for srcextra dependent on GENINSRC.
	(stmp-docobjdir): Delete.
	(c-parse.o, gengtype-lex.o, gengtype-yacc.o): Use implicit build rule.
	(srcextra): Copy c-parse.y, c-parse.c, gengtype-lex.c, gengtype-yacc.c,
	and gengtype-yacc.h back to source directory.
	(maintainer-clean): Delete all parse files in source directory.
	(distclean): Delete generated files.

	* objc/Make-lang.in (objc-parse.o): Use implicit build rule.
	(objc-parse.c, objc-parse.y): Don't use parsedir.
	(objc.srcextra): Copy objc-parse.y and objc-parse.c back to source
	directory if requested.
	(po-generated): Don't use parsedir.
	(objc.maintainer-clean): Delete above files from source directory.

2004-01-14  Kazu Hirata  <kazu@cs.umass.edu>

	* doc/tm.texi (FUNCTION_VALUE): Fix a typo.

2004-01-14  Kazu Hirata  <kazu@cs.umass.edu>

	* doc/tm.texi: Replace RETURN_IN_MEMORY with
	TARGET_RETURN_IN_MEMORY.

2004-01-15  Jan Hubicka  <jh@suse.cz>

	* builtins.c (std_expand_builtin_va_arg): Align operand when needed.
	* i386.c (init_cumulative_args): Set warn_sse; fix handling of variadic
	functions accepting SSE arguments
	(function_arg): Warn only when asked to warn.
	* i386.h (ix86_args): Add warn_sse/warn_mmx fiels.

2004-01-14  Joseph S. Myers  <jsm@polyomino.org.uk>

	* c-parse.in (stmts_and_decls): Make label at end of compound
	statement a hard error.

2004-01-14  Jan Hubicka  <jh@suse.cz>

	* cgraph.c (create_edge): Use local.redefined_extern_inline.
	* cgraph.h (cgraph_local_info): Sort fields by size; add
	redefined_extern_inline
	(cgraph_global_info): Sort fields by size.
	(cgraph_node): Likewise.
	* cgraphunit.c (cgraph_finalize_function): Se
	local.redefined_extern_inline on redefinition.
	(cgraph_analyze_function): Use it; fix formating.

2004-01-14  Jan Hubicka  <jh@suse.cz>

	PR c++/10776
	* sched-deps.c (trye_dependency_cache, anti_dependency_cache,
	outptu_dependency_cache, forward_dependency_cahe): Trun to vectors of
	bitmaps
	(cache_size): New variable
	(add_dependence): Update use; canonize early memory locations
	(sched_analyze_1): Likewise.
	(sched_analyze_2): Likewise.
	(init_dependency_caches): Initialize bitmaps.
	(free_dependency_caches): Free bitmaps

2004-01-14  Kazu Hirata  <kazu@cs.umass.edu>

	* calls.c: Replace STRICT_ARGUMENT_NAMING in comments with
	targetm.calls.strict_argument_naming().
	* target.h: Likewise.

2004-01-14  Richard Henderson  <rth@redhat.com>

	PR debug/13231
	* dwarf2out.c (dwarf2out_stack_adjust): Skip prologue and epilogue
	instructions.

2004-01-14  Richard Henderson  <rth@redhat.com>

	PR c++/12491
	* except.c (struct eh_region): Add u.fixup.resolved.
	(resolve_one_fixup_region): Split out from ...
	(resolve_fixup_regions): ... here.

2004-01-14  Kazu Hirata  <kazu@cs.umass.edu>

	* config/mn10300/mn10300.h (STRUCT_VALUE): Change to 0.

2004-01-14  Kazu Hirata  <kazu@cs.umass.edu>

	* config/alpha/alpha.h (STRUCT_VALUE): Remove.
	* config/alpha/vms.h (STRUCT_VALUE_REGNUM): Remove #undef.
	(STRUCT_VALUE): Remove.

2004-01-14  Steven Bosscher  <stevenb@suse.de>

	* system.h: Poison PROMOTED_MODE
	* integrate.c (expand_inline_function): Don't mention the
	PROMOTED_MODE.
	* loop.c (update_giv_derive): Same.
	* tree.h (DECL_RTL): Same.

2004-01-14  J"orn Rennecke <joern.rennecke@superh.com>

	PR target/9365
	* sh.c (gen_block_redirect): Add special handling of RETURN.
	(gen_far_branch) Don't call gen_stuff_delay_slot if there is no
	far branch target (i.e. it's a return).

2004-01-14  Kazu Hirata  <kazu@cs.umass.edu>

	* regrename.c (find_oldest_value_reg): Fix a warning.

2004-01-14  Richard Earnshaw  <rearnsha@arm.com>

	PR bootstrap/12527
	* config.gcc (arm*-*-linux*): Don't include unknown-elf.h in tm_file.
	Move linux-gas.h and linux-elf.h before aout.h.
	* arm/arm.h (INITIALIZE_TRAMPOLINE): Only define if not already.
	* arm/linux-elf.h (SUBTARGET_CPU_DEFAULT): Define.

2004-01-14  Kazu Hirata  <kazu@cs.umass.edu>

	* config/m32r/m32r.md: Use GEN_INT instead of gen_rtx
	(CONST_INT, VOIDmode, ...).

2004-01-14  Richard Earnshaw  <rearnsha@arm.com>

	* regrename.c (find_oldest_value_reg): If the replacement uses
	multiple hard registers, check that all of them are in CLASS.

2004-01-14  Jan Hubicka  <jh@suse.cz>

	* alias.c (get_alias_set): Initialize alias set to 0 when subset is
	impossible.

2004-01-14  Kelley Cook  <kcook@gcc.gnu.org>

	* Makefile.in: Define MAINT from --enable-maintainer-mode.

2004-01-14  Hartmut Penner  <hpenner@de.ibm.com>

	* config/rs6000/rs6000.c (rs6000_stack_info)
	Calculate always vrsave_mask if TARGET_ALTIVEC.
	(rs6000_emit_prologue): Emit code for vrsave
	only if TARGET_ALTIVEC_VRSAVE.
	(rs6000_emit_epilogue): Likewise.

2004-01-14  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* config/sparc/sparc.md (tie_add32): Fix pasto.
	(tie_add64): Likewise.

2004-01-14  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* config/i386/i386.md (*addqi_1_slp): Do not access operands[2].

2004-01-13  Kazu Hirata  <kazu@cs.umass.edu>

	* config/iq2000/iq2000-protos.h: Fix comment formatting.
	* config/iq2000/iq2000.c: Likewise.
	* config/iq2000/iq2000.md: Likewise.

2004-01-14  J. Brobecker  <brobecker@gnat.com>

	* dwarf2out.c (is_ada_subrange_type): No longer check the TYPE_NAME.
	(subrange_type_die): Add handle for nameless subrange types.

2004-01-13  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300-protos.h: Replace do_movsi with
	h8300_expand_movsi.
	* config/h8300/h8300.c (do_movsi): Change to
	h8300_expand_movsi.
	* config/h8300/h8300.md (movsi): Replace do_movsi with
	h8300_expand_movsi.
	(movsf): Likewise.

2004-01-13  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.c (dosize): Change to
	h8300_emit_stack_adjustment.  Update callers.

2004-01-13  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (movstrictqi): Add an alternative with
	the source being post_inc.  Tighten the predicate for the
	destination to register_operand.
	(movstricthi): Likewise.

2004-01-13  Kazu Hirata  <kazu@cs.umass.edu>

	* system.h (SHARED_BSS_SECTION_ASM_OP): Poison.
	* varasm.c (bss_section): Don't use SHARED_BSS_SECTION_ASM_OP.
	* doc/tm.texi (SHARED_BSS_SECTION_ASM_OP): Remove.

2004-01-14  Jan Hubicka  <jh@suse.cz>

	Partial fix PR c++/12850
	* cgraphunit.c (cgraph_finalize_function): Always ggc_collect when
	at zero nest level.

2004-01-13  Bernardo Innocenti  <bernie@develer.com>

	* config/m68k/netbsd-elf.h (REGISTER_NAMES): Add missing "argptr"
	pseudo-register.

2004-01-13  Devang Patel <dpatel@apple.com

	PR debug/7078
	* dbxout.c (dbxout_symbol_name): Emit mangled names for
	NAMESPACE_DECL memebers.

2004-01-13  Andrew Pinski  <pinskia@physics.uc.edu>

	PR c++/12709
	* c-common.c (finish_fname_decls): Use the chain only if the
	tree is an expr_stmt.

2004-01-13  Vladimir Makarov  <vmakarov@redhat.com>

	* rtl.def: Add comment about new option in automata_option.

	* genautomata.c (PROGRESS_OPTION): New macro.
	(progress_flag): New global variable.
	(gen_automata_option): Process `progress'.
	(transform_insn_regexps, check_unit_distributions_to_automata,
	make_automaton, NDFA_to_DFA, build_automaton, create_automata,
	expand_automata, write_automata): Print about the progress only if
	progress_flag.  Remove fflush.
	(initiate_automaton_gen): Process command line flag `-progress'.

	* doc/md.texi: Describe the new option.

2004-01-13  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* cfg.c (dump_bb): Dump entry edges.

2004-01-13  Richard Earnshaw  <rearnsha@arm.com>

	* arm.c (thumb_legitimate_address_p): Only allow constant pool
	references from SImode.
	* arm.md (thumb_movhi_insn): Don't allow minipool references.

2004-01-13  Kazu Hirata  <kazu@cs.umass.edu>

	* system.h (TEXT_SECTION): Poison.
	* varasm.c (text_section): Don't use TEXT_SECTION.
	* config/sh/sh.c (sh_file_start): Fix a comment typo.
	* doc/tm.texi (TEXT_SECTION): Remove.

2004-01-13  Ben Elliston  <bje@wasabisystems.com>

	* doc/rtl.texi (Vector Operations): Remove defunct vec_const item.

2004-01-12  James E Wilson  <wilson@specifixinc.com>

	* unwind-libunwind.c: Delete.

2004-01-12  Zack Weinberg  <zack@codesourcery.com>

	PR 13656
	* c-decl.c (diagnose_mismatched_decls): Whenever newtype or
	oldtype is set, set *newtypep or *oldtypep too.  Do not set
	them at the very end.
	(validate_proto_after_old_defn): Restructure for comprehensibility;
	make error messages clearer.

2004-01-12  Zack Weinberg  <zack@codesourcery.com>

	* varray.h (VARRAY_POP): Add checking variant, aborts on underflow.
	(VARRAY_TOP): Use VARRAY_CHECK so the access is bounds-checked.
	* varray.c: No need to prototype error.
	(varray_check_failed): Wrap long string onto two lines.
	(varray_underflow): New function.

2004-01-13  Steven Bosscher  <stevenb@suse.de>

	PR c++/13376
	* function.h (struct function): Kill `name' field.
	(current_function_name): Make it an extern function.
	* function.c (current_function_name): New function.
	* graph.c: Update all uses of current_function_name.
	* gcse.c: Likewise.
	* config/alpha/alpha.c, config/avr/avr.c, config/c4x/c4x.c,
	config/mips/mips.c, config/pdp11/pdp11.c: Likewise.
	* config/ip2k/ip2k.c (function_prologue): Use MAIN_NAME_P
	instead of a strcmp with "main".

2004-01-13  Jan Hubicka  <jh@suse.cz>

	* c-decl.c (diagnose_mismatched_decls): Fix warning calls.

	* cgraphunit.c (cgraph_optimize_function): Always do
	optimize_inline_calls when there is always_inline callee.
	(cgraph_decide_inlining): Fix formating.
	* tree-inline.c (inlinable_function_p): Do sorry for alwaysinline
	functions.
	(expand_call_inline): Likewise.
	* toplev.h (sorry): Fix prototype.

2004-01-12  Roger Sayle  <roger@eyesopen.com>

	* builtins.c (expand_builtin_expect_jump): Simplify logic. Handle
	conditional jumps that drop through to unconditional jumps or the
	end of the sequence.

2004-01-13  Jan Hubicka  <jh@suse.cz>

	* alias.c (new_alias_set): Construct the alias_set varray.
	(init_alias_once): Don't do it here.

2004-01-12  Marc Espie <espie@openbsd.org>

	* system.h: handle YYBYACC like YYBISON.

2004-01-12  Jonathan Merriman <jonm@dualitymedia.com>

	PR target/10847
	* config.gcc: No longer includes conflicting header sparc/sol2.h when
	building on sparc64-*-openbsd*.

2004-01-12  Andrew Pinski  <pinskia@physics.uc.edu>

	PR debug/13539
	* dbxout.c (dbxout_type): Protected inheritance is not
	private but protected.

2004-01-12  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.c (mips_symbolic_constant_p): Revert last patch.

2004-01-12  Kazu Hirata  <kazu@cs.umass.edu>

	PR optimization/12508.
	* combine.c (try_combine): Remove a dead set in a parallel
	even if its destination is a subreg.

	Revert:
	2003-06-03  Kazu Hirata  <kazu@cs.umass.edu>
	* combine.c (simplify_set): Don't move a subreg in SET_SRC to
	SET_DEST if WORD_REGISTER_OPERATIONS is not defined.

2004-01-12  Geoffrey Keating  <geoffk@apple.com>

	* real.c: Update copyright date.
	* emit-rtl.c: Likewise.
	* rtl.h: Likewise.
	* dwarf2out.c: Likewise.
	* config/rs6000/darwin-ldouble.c: Likewise.
	* config/rs6000/rs6000.md: Likewise.

2004-01-12  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.c (rs6000_init_libfuncs): Add AIX
	TFmode to SImode libfuncs.

2004-01-12  Roger Sayle  <roger@eyesopen.com>

	PR middle-end/11397
	* varasm.c (assemble_alias): Remove weak aliases from weak_decls.

2004-01-12  Jan Hubicka  <jh@suse.cz>

	PR opt/12826
	* loop.c (insert_loop_mem): Preffer VOLATILE memory references to be
	stored.

	PR opt/12863
	* cfgcleanup.c (label_is_jump_target_p): Move to...
	* rtlanal.c (label_is_jump_target_p): ... here.
	* cfgrtl.c (cfg_layout_redirect_edge_and_branch): Fix redirecting of fallthru
	edges unified with branch edges.

2004-01-12  Richard Earnshaw  <rearnsha@arm.com>

	* simplify-rtx.c (simplify_immed_subreg): Correctly extract the
	high word of an integral CONST_DOUBLE.

2004-01-12  Paul Brook  <paul@codesourcery.com>

	* simplify-rtx.c (simplify_plus_minus): Always generate canonical form.

2004-01-12  J"orn Rennecke <joern.rennecke@superh.com>

	PR target/13585
	* sh-protos.h (check_use_sfunc_addr): Declare.
	* sh.c (extract_sfunc_addr, check_use_sfunc_addr): New functions.
	* sh.md (use_sfunc_addr): Use check_use_sfunc_addr in insn predicate.

2004-01-12  Jan Hubicka  <jh@suse.cz>

	* alias.c: Invlude varray.h
	(alias_sets): Turn into varray.
	(get_alias_set_entry): Use VARRAY; mark inline.
	(mems_in_disjoint_alias_sets_p): Mark inline.
	(record_alias_subset): Use varray.
	(init_alias_once): Initialize varray.
	(new_alias_set): Grow array.
	* varray.c: Make VARRAY_GENERIC_PTR non GTYized.

2004-01-12  Jan Hubicka  <jh@suse.cz>

	Partial fix for PR opt/10776 II
	* cselib.c: Include params.h
	(cselib_invalidate_mem): Limit amount of nonconflicting memory
	locations.
	* params.def (PARAM_MAX_CSELIB_MEMORY_LOCATIONS): New.
	* Makefile.in (cselib.o): Depend on params.h

2004-01-12  Richard Sandiford  <rsandifo@redhat.com>

	* combine.c (combine_simplify_rtx): Don't pass VOIDmode to
	simplify_unary_operation if the operand has a known mode.

2004-01-12  Hartmut Penner  <hpenner@de.ibm.com>

	PR target/13534
	* config/rs6000/rs6000.c (word_offset_memref_operand): New
	predicate to handle 'ld' conform addresses.
	* config/rs6000/rs6000.h (EXTRA_CONSTRAINT): New 'Y'
	contraint.
	(EXTRA_MEMORY_CONSTRAINT): Tell reload which constraint
	are memory contraints.
	* config/rs6000/rs6000-protos.h (word_offset_memref_operand):
	New prototype.
	* config/rs6000/rs6000.md (*movdf_hardfloat64):
	Change 'o' to 'Y' constraint.
	(*movdf_softfloat64): Ditto.

2004-01-12  Bernardo Innocenti  <bernie@develer.com>

	* config/m68k/m68k.md: Switch from the "*..." syntax to the
	brace-enclosed syntax in all C output statements.

2004-01-12  David Edelsohn  <edelsohn@gnu.org>

	PR target/13401
	* config/rs6000/rs6000.c (rs6000_output_function_epilogue):
	Objective-C language type value is 14.

2004-01-12  Markus F.X.J. Oberhumer  <markus@oberhumer.com>

	PR c/12148
	* config/m68k/fpgnulib.c: Fix `-mshort' bugs: Use `long' instead of
	`int' in a number of places to make sure we always have a SImode
	and not a HImode.  Add a 'L' suffix to a number of constants.

2004-01-11  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* pa.c: Don't include obstack.h.

	* pa.md: Correct constraint in pattern for loading PIC label address.

2004-01-11  Kaz Kojima  <kkojima@gcc.gnu.org>

	* config/sh/linux.h (ASM_PREFERRED_EH_DATA_FORMAT): Undefine
	 before defining.

2004-01-11  Steven Bosscher  <stevenb@suse.de>

	PR fortran/9972
	* toplev.c (rest_of_handle_inline): Also consider functions
	for deferral if the language is GNU F77.

2004-01-11  Zack Weinberg  <zack@codesourcery.com>

	* c-decl.c (diagnose_arglist_conflict): Add missing space to
	diagnostic messages.

2004-01-11  Jakub Jelinek  <jakub@redhat.com>

	PR middle-end/13392
	* builtins.c (expand_builtin_expect_jump): Handle conditional jumps
	to drop through label.  Don't fall back to SCC even when conditional
	jump has not been found.

2004-01-11  Jan Hubicka  <jh@suse.cz>

	* invoke.texi: Fix syntax error in previous patch.

	Partial fix for PR opt/10776
	* Makefile.in (reload.o): Include param.h
	* params.def (PARAM_MAX_RELOAD_SEARCH_INSNS): New parameter.
	* reload.c: Include params.h.
	(find_equiv_reg): Work limiting check.
	* invoke.texi: Document.

2004-01-11  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.c (mips_symbolic_constant_p): Don't allow
	out-of-bounds accesses to string constants.  Simplify mips16
	case accordingly.

2004-01-11  Richard Sandiford  <rsandifo@redhat.com>

	PR optimization/13469
	* toplev.c (rest_of_compilation): Call purge_all_dead_edges after
	reload_cse_regs (-fnon-call-exceptions only).

2004-01-11  Kazu Hirata  <kazu@cs.umass.edu>

	* config/mcore/lib1.asm: Fix comment formatting.
	* config/mcore/mcore-elf.h: Likewise.
	* config/mcore/mcore.c: Likewise.
	* config/mcore/mcore.h: Likewise.
	* config/mcore/mcore.md: Likewise.

2004-01-10  Zack Weinberg  <zack@codesourcery.com>

	* c-decl.c (duplicate_decls): Break apart into...
	(diagnose_arglist_conflict, validate_proto_after_old_defn)
	(locate_old_defn, diagnose_mismatched_decls, merge_decls):
	... these new functions.  Restructure for comprehensibility.
	Remove various archaic special cases.  Always report the
	location of the previous declaration when a diagnostic is issued.
	(redeclaration_error_message): Fold into diagnose_mismatched_decls.
	(match_builtin_function_types): Delete unnecessary forward declaration.

2004-01-10  Zack Weinberg  <zack@codesourcery.com>

	* genautomata.c (make_automaton, NDFA_to_DFA):
	Print progress bars with '.' characters instead of '*'.
	(build_automaton): Change notes to match.

2004-01-10  Kazu Hirata  <kazu@cs.umass.edu>

	* config/m32r/m32r.md: Use define_constants for unspec and
	unspec_volatile.

2004-01-10  Jan Hubicka  <jh@suse.cz>

	PR opt/11635
	* expr.c (expand_expr_real): More curefully expand union casts.

2004-01-10  Kazu Hirata  <kazu@cs.umass.edu>

	* config/m32r/m32r.md (flush_icache): Use 1 for
	unspec_volatile.

2004-01-10  David Edelsohn  <edelsohn@gnu.org>
	    James E Wilson  <wilson@specifixinc.com>

	PR debug/12860
	* dbxout.c (dbxout_symbol): Remove initialization of
	current_sym_code, current_sym_value, and current_sym_addr.
	(dbxout_symbol_location): Same.
	(dbxout_prepare_symbol): Zero current_sym_code,
	current_sym_value, and current_sym_addr.

2004-01-10  Richard Sandiford  <rsandifo@redhat.com>

	* tree.c (get_unwidened): Reorder conditions so that the null pointer
	check is done first.

2004-01-09  Eric Christopher  <echristo@redhat.com>

	* toplev.c (rest_of_handle_cfg): Add reg_scan pass
	if we're running mark_constant_function.

2004-01-09  Jeff Bailey  <jbailey@nisa.net>

	PR target/12561
	* config/t-gnu: Rename SYSTEM_HEADER_DIR to NATIVE_SYSTEM_HEADER_DIR.

2004-01-09  Andrew Pinski <pinskia@physics.uc.edu>

	PR debug/11231
	* dbxout.c (dbxout_type_fields): Return if any item is
	error_mark_node or the type is error_mark_node.

2004-01-09  Geoffrey Keating  <geoffk@apple.com>

	* config/rs6000/darwin-ldouble.c: Add big comment explaining
	exactly what is expected as a 'long double'.
	(_xlqadd): When a value to be returned is representable as a
	'double', just return it directly, do not construct it using a union.
	Also, correct final fixup.
	(_xlqmul): Likewise.
	(_xlqdiv): Likewise.
	* real.c (encode_ibm_extended): Make consistent with darwin-ldouble.c.

	* config/rs6000/rs6000.md (fix_trunctfdi2): Delete.

2004-01-09  Richard Henderson  <rth@redhat.com>

	* recog.c (constrain_operands): Validate mem operands.

2004-01-09   James E Wilson  <wilson@specifixinc.com>

	* gcc.c (init_spec): Remove -lunwind from shared case.
	* conifg/ia64/t-hpux (SHLIB_LINK): Add -lunwind.

2004-01-09  Steve Ellcey  <sje@cup.hp.com>

	* configure.ac: (gcc_cv_ld_hidden) Set to true for ia64*-*-hpux*.
	* configure: Regenerate

2004-01-09  Joseph S. Myers  <jsm@polyomino.org.uk>

	PR c/11234
	* c-typeck.c (build_c_cast): If pedantic, warn for conversions
	between function and object pointers.
	(digest_init): When comparing a pointer to function type to the
	target type, only apply TREE_TYPE once to the pointer to function
	type.
	* except.c (for_each_eh_label_1): Treat data as a pointer to a
	function pointer rather than casting it to a function pointer.
	(for_each_eh_label): Update caller.
	* recog.h (struct insn_data): Use a struct or union for output.
	* genoutput.c (output_insn_data): Update.
	* final.c (get_insn_template): Update.

2004-01-09  Mark Mitchell  <mark@codesourcery.com>

	* expr.h (expand_expr): Make it a macro, not a function.
	(expand_expr_real): New function.
	* expr.c (store_expr): Adjust logic for deciding whether or not to
	copy the value returned by expand_expr.
	(expand_expr): Rename to ...
	(expand_expr_real): ... this.  Add alt_rtl parameter.  Adjust
	calls to language hooks.
	* c-common.h (c_expand_expr): Adjust prototype.
	* c-common.c (c_expand_expr): Add alt_rtl parameter.
	* langhooks-def.h (lhd_expand_expr): Change prototype.
	* langhooks.c (lhd_expand_expr): Add all_rtl parameter.
	* langhooks.h (lang_hooks): Change type of expand_expr.
	* stmt.c (stmt_status): Add x_last_expr_alt_rtl.
	(last_expr_alt_rtl): Likewise.
	(expand_expr_stmt_value): Set last_expr_alt_rtl.
	(clear_last_expr): Clear it.
	(expand_end_stmt_expr): Set RTL_EXPR_ATL_RTL.
	(expand_end_bindings): Save and restor last_expr_alt_rtl.
	* tree.def (RTL_EXPR): Give it an additional operand.
	* tree.h (RTL_EXPR_ALT_RTL): New macro.

2004-01-09  Kazuhiro Inaoka  <inaoka.kazuhiro@renesas.com>

	* config/m32r/m32r.h (TARGET_CPU_CPP_BUILTINS): Add __m32r__.
	* config/m32r/m32r.c (call26_operand): Allow in PIC mode.

2004-01-09  Kazu Hirata  <kazu@cs.umass.edu>

	PR target/13380.
	* config/m32r/m32r.md: Replace (reg:SI 17) with (reg:CC 17)
	or (ne:SI (reg:CC 17) (const_int 0)).
	Be specific about modes wherever possible.

2004-01-09  Kazu Hirata  <kazu@cs.umass.edu>

	* config/m32r/m32r.c (m32r_expand_block_move): Call
	gen_movestrsi_internal with two more arguments.
	(m32r_output_block_move): Adjust operand numbers.
	Properly update the source and destination pointers.
	* config/m32r/m32r.md (movstrsi_internal): Use 'r' instead of
	'r+'.  Change the set detinations to match_operand.

2004-01-09  Kazu Hirata  <kazu@cs.umass.edu>

	* final.c (FIRST_INSN_ADDRESS): Remove.
	(shorten_branches): Don't use FIRST_INSN_ADDRESS.
	* system.h (FIRST_INSN_ADDRESS): Poison.
	* config/avr/avr.h: Remove a comment about FIRST_INSN_ADDRESS.
	* config/m32r/m32r-protos.h: Remove the prototype for
	m32r_first_insn_address.
	* config/m32r/m32r.c (m32r_first_insn_address): Remove.
	* config/m32r/m32r.h (FIRST_INSN_ADDRESS): Likewise.
	* doc/md.texi (FIRST_INSN_ADDRESS): Likewise.

2004-01-09  J. Brobecker  <brobecker@gnat.com>

	* dwarf2out.c (gen_enumeration_type_die): Return the DIE that
	we just created.
	(is_ada_subrange_type): DIEs for enumeration subtypes should be
	emitted as subrange types too.
	(subrange_type_die): Add handling of enumeration subtypes.

2004-01-08  Richard Henderson  <rth@redhat.com>

	PR opt/12441
	Revert: Sat Mar 30 14:08:55 CET 2002  Jan Hubicka  <jh@suse.cz>
	* i386.c (aligned_operand): Be prepared for SUBREGed registers.
	(ix86_decompose_address): Use REG_P instead of GET_CODE (...) == REG.
	(ix86_address_cost): Be prepared for SUBREGed registers.
	(legitimate_address_p): Accept SUBREGed registers.

2004-01-08  Kelley Cook  <kcook@gcc.gnu.org>

	* Makefile.in: Rename configure.in to configure.ac
	* doc/sourcebuild.texi: Likewise.
	* configure: Regenerate.
	* config.in: Regenerate.

2004-01-08  Stuart Hastings  <stuart@apple.com>

	* config/i386/i386.md: Typos in MMX/SSE immediate shifts.

2004-01-08  Jan Hubicka  <jh@suse.cz>

	* cgraphunit.c (cgraph_decide_inlining): Fix typo.

2004-01-08  Geoffrey Keating  <geoffk@apple.com>

	* config/rs6000/rs6000.md (cmptf_internal1): Correct branch offset.
	(UNSPEC_FIX_TRUNC_TF): New constant.
	(movtf_internal): Make splitter active only when insn is active.
	(extenddftf2): Rewrite to properly load zero into low part.
	(extenddftf2_internal): New.
	(extendsftf2): Rewrite.
	(truncdftf2): Correct length.
	(floatditf2): Delete.
	(fix_trunc_helper): New.
	(fix_trunctfdi2): Use fix_trunc_helper.
	(fix_trunctfsi2): Likewise.fix_trunc
	(fix_trunctfsi2_internal): New.

	* config/rs6000/rs6000.c (legitimate_lo_sum_address_p): lo_sum
	addresses are legitimate on Darwin even when flag_pic.
	(rs6000_legitimize_reload_address) [TARGET_MACHO]: Don't create
	non-offsettable addresses for loads of TFmode constants.

2004-01-08  Kazuhiro Inaoka  <inaoka.kazuhiro@renesas.com>

	* config/m32r/m32r.h (ASM_OUTPUT_ALIGNED_BSS): Actually emit
	variables in the appropriate bss section.

2004-01-09  Alan Modra  <amodra@bigpond.net.au>

	* config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Ensure
	target_flags has MASK_POWERPC64 when -m64.
	* config/rs6000/rs6000.c (processor_target_table): Add MASK_POWERPC64
	to 620, 630, power3, power4 and rs64a entries.
	* config/rs6000/rs6000.h (MASK_64BIT): Expand comment.

2004-01-08  Richard Sandiford  <rsandifo@redhat.com>

	* simplify-rtx.c (simplify_immed_subreg): Fix construction of
	floating-point constants.

2004-01-08  J. Brobecker  <brobecker@gnat.com>

	* dwarf2out.c (subrange_type_die): Add context_die parameter.
	Create the subrange_type DIE using the given context DIE.
	(modified_type_die): Update call to subrange_type_die.

2004-01-08  Zack Weinberg  <zack@codesourcery.com>

	* dwarf2.h, unwind-dw2-fde.h, unwind-pe.h, unwind.h:
	Add multiple-include guard.

2004-01-08  Hartmut Penner  <hpenner@de.ibm.com>

	* config/rs6000/rs6000.c (easy_vector_constant): Accept
	all vector constant loadable by vsplt*.
	(output_vec_const_move): Likewise.

2004-01-07  Joseph S. Myers  <jsm@polyomino.org.uk>

	PR c/6024
	* c-typeck.c (comptypes): Only treat enumerated types in the same
	translation unit as compatible with each other when they are the
	same type.
	* doc/extend.texi: Update.

2004-01-07  Joseph S. Myers  <jsm@polyomino.org.uk>

	PR c/12165
	* c-decl.c (grokdeclarator): Take type qualifiers of typedefed
	array type from the array element type.

2004-01-07  Alan Modra  <amodra@bigpond.net.au>

	* config/rs6000/rs6000.c (rs6000_dbx_register_number): New function.
	* config/rs6000/rs6000-protos.h (rs6000_dbx_register_number): Declare.
	* config/rs6000/rs6000.h (DWARF_FRAME_REGNUM): Define.
	(DWARF_REG_TO_UNWIND_COLUMN): Correct column adjustment and comment.
	* config/rs6000/sysv4.h (DBX_REGISTER_NUMBER): Define.

2004-01-06  Eric Christopher  <echristo@redhat.com>

	* config/mips/mips.h (MDEBUG_ASM_SPEC): Change for dwarf2 default.
	(DWARF2_DEBUGGING_INFO): Define.
	(PREFERRED_DEBUGGING_TYPE): Set to dwarf2.
	* config/mips/openbsd.h (PREFERRED_DEBUGGING_TYPE): Remove.
	* config/mips/iris6.h (SUBTARGET_ASM_DEBUGGING_SPEC): Only pass -g0
	for irix as.
	(SUBTARGET_ASM_OPTIMIZING_SPEC): Only pass O0 for irix as.
	* config/mips/iris6gas.h (MDEBUG_ASM_SPEC): Remove.
	* config/mips/iris5gas.h: Ditto.
	(DBX_DEBUGGING_INFO): Remove.
	(DWARF2_DEBUGGING_INFO): Ditto.
	(MIPS_DEBUGGING_INFO): Ditto.
	(PREFERRED_DEBUGGING_TYPE): Ditto.
	* config/mips/elf.h (DWARF2_DEBUGGING_INFO): Remove.
	(PREFERRED_DEBUGGING_TYPE): Ditto.
	(SUBTARGET_ASM_DEBUGGING_SPEC): Ditto.
	* config/mips/elf64.h: Ditto.

2004-01-06  Jan Hubicka  <jh@suse.cz>

	* Makefile.in (STAGEPROFILE_FLAGS_TO_PASS): Use -fprofile-generate.
	(STAGEFEEDBACK_FLAGS_TO_PASS): Use -fprofile-use.

2004-01-06  Geoffrey Keating  <geoffk@apple.com>

	* config/rs6000/t-darwin (LIB2FUNCS_EXTRA): Compile darwin-ldouble.c.
	(TARGET_LIBGCC2_CFLAGS): Use -mlong-double-128.
	* config/rs6000/darwin-ldouble.c: New.

	* emit-rtl.c (gen_lowpart_common): Use simplify_gen_subreg
	for constants.
	(constant_subword): Delete.
	* rtl.h (constant_subword): Delete prototype.
	(immed_double_const): Is not in varasm.c.
	* simplify-rtx.c (simplify_immed_subreg): New.
	(simplify_subreg): Use simplify_immed_subreg.

	* config/rs6000/rs6000.md (floatsitf2): Use expand_float rather
	than trying to generate RTL directly.
	(fix_trunctfsi2): Use expand_fix rather than trying to generate
	RTL directly.

	* dwarf2out.c (add_const_value_attribute): Remove incorrect comment.

2004-01-06  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/xcoff.h (EXTRA_SECTION_FUNCTIONS): Split each
	function into a separate macro.
	(read_only_data_section): Add void argument.
	(private_data_section): Same.
	(read_only_private_data_section): Same.
	(toc_section): Same.

2004-01-06  Jan Hubicka  <jh@suse.cz>

	* invoke.texi: Remove typo in last change.

	PR target/10301
	* config.gcc: Accept opteron and athlon-64 as variants
	of k8.
	* i386.c (override_options): Likewise.
	* invoke.texi (i386 -mtune): Expand documentation.

2004-01-06  Kazu Hirata  <kazu@cs.umass.edu>

	* alias.c: Fix comment typos.
	* builtins.c: Likewise.
	* cfg.c: Likewise.
	* df.c: Likewise.
	* dominance.c: Likewise.
	* dwarf2out.c: Likewise.
	* emit-rtl.c: Likewise.
	* expr.c: Likewise.
	* final.c: Likewise.
	* fold-const.c: Likewise.
	* gcse.c: Likewise.
	* genattrtab.c: Likewise.
	* genrecog.c: Likewise.
	* gensupport.c: Likewise.
	* ggc-zone.c: Likewise.
	* integrate.c: Likewise.
	* local-alloc.c: Likewise.
	* loop.c: Likewise.
	* recog.c: Likewise.
	* regmove.c: Likewise.
	* reg-stack.c: Likewise.
	* reorg.c: Likewise.
	* rtlanal.c: Likewise.
	* rtl.h: Likewise.
	* sched-ebb.c: Likewise.
	* simplify-rtx.c: Likewise.
	* toplev.c: Likewise.
	* varasm.c: Likewise.

2004-01-06  Kazu Hirata  <kazu@cs.umass.edu>

	* doc/install.texi: Fix typos.
	* doc/invoke.texi: Likewise.
	* doc/md.texi: Likewise.

2004-01-06  Kazuhiro Inaoka  <inaoka.kazuhiro@renesas.com>

	* config/m32r/m32r.h (TRAMPOLINE_LINE_SIZE): Changed

2004-01-06  Jan Hubicka  <jh@suse.cz>

	* i386.c (init_cumulative_args): Add handling of MMX_REGPARM.
	(function_arg_advance): Do not pass aggregates in SSE; deal handling
	of MMX_REGPARM.
	(function_arg): Add new warnings about ABI changes;  fix SSE_REGPARM;
	add MMX_REGPARM.
	* i386.h (ix86_args): Add mmx_words/mmx_regs/mmx_regno fields.
	(SSE_REGPARM_MAX): Default to 3 on i386 -msse ABI.
	(MMX_REGPARM_MAX): Similarly for -mmmx.

2004-01-05  Kazu Hirata  <kazu@cs.umass.edu>

	* config/sh/linux.h: Fix comment formatting.
	* config/sh/netbsd-elf.h: Likewise.
	* config/sh/sh.c: Likewise.
	* config/sh/sh.h: Likewise.
	* config/sh/vxworks.h: Likewise.

2004-01-05  Kazu Hirata  <kazu@cs.umass.edu>

	* system.h (ASM_OUTPUT_MAIN_SOURCE_FILENAME): Poison.
	* toplev.c (output_file_directive): Don't use
	ASM_OUTPUT_MAIN_SOURCE_FILENAME.

2004-01-05  Steven Bosscher <s.bosscher@student.tudelft.nl>

	* toplev.c: Fix broken checkin of 2003-12-30.

2004-01-05  Daniel Berlin  <dberlin@dberlin.org>

	* ggc-zone.c: Remove everything in #ifdef USING_MALLOC_PAGE_GROUPS
	(USING_MMAP): We don't support non-mmap.
	(struct alloc_chunk): Steal 1 bit from typecode, use it to mark
	large objects.
	(struct page_entry): Remove bytes_free.
	(struct page_table_chain): Remove.
	(struct globals): Remove page_table member.
	(loookup_page_table_entry): Function deleted.
	(set_page_table_entry): Ditto.
	(ggc_allocated_p): No longer need page table lookups.
	(ggc_marked_p): Ditto.
	(alloc_small_page): Don't care about bytes_free anymore.
	(alloc_large_page): Round up size.
	(ggc_alloc_zone_1): Mark large objects as such, and calculate
	their size the new way.
	Remove page table lookups and setting.
	(ggc_get_size): Calculate large object size the new way.
	(sweep_pages): Redo to account for fact that we no longer have
	bytes_free.
	(ggc_collect): No longer need to reincrement bytes_free.
	(ggc_pch_alloc_object): Handle new large objects properly.
	(ggc_pch_read): Put PCH stuff into it's own uncollected zone.

2004-01-05  Kazu Hirata  <kazu@cs.umass.edu>

	* doc/invoke.texi: Remove a page break.

2004-01-05  Kazu Hirata  <kazu@cs.umass.edu>

	* config/avr/avr.c (avr_output_function_prologue): Remove an
	extra pair of curly braces.

2004-01-05  Kazu Hirata  <kazu@cs.umass.edu>

	* config/mn10300/mn10300.c: Fix comment formatting.
	* config/mn10300/mn10300.h: Likewise.

2004-01-05  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* tree.h: Update documentation on nothrow_flag.
	* print-tree.c (print_node): Print TREE_NOTHROW as "align-ok" for
	types.

2004-01-05  Kazu Hirata  <kazu@cs.umass.edu>

	* doc/invoke.texi: Remove traces of dead ports.

2004-01-05  Richard Sandiford  <rsandifo@redhat.com>

	* doc/invoke.texi: Add documentation for the MIPS -mexplicit-relocs
	option.

2004-01-05  Richard Sandiford  <rsandifo@redhat.com>

	PR target/12945
	* coverage.c (coverage_counter_alloc): Set SYMBOL_FLAG_LOCAL for
	counter labels.
	* config/mips/mips.c (INTERNAL_SYMBOL_P): Delete.
	(mips_classify_symbol): Always treat SYMBOL_REF_FLAG as indicating
	string constants if TARGET_MIPS16.  Use SYMBOL_REF_DECL to check
	the binding of decl symbols, otherwise check SYMBOL_REF_LOCAL_P.
	(mips_symbol_insns): Don't trust the local/global classification.
	(m16_usym8_4, m16_usym5_4): Same mips16 change as mips_classify_symbol.
	(override_options): Make -mabicalls -fno-unit-at-a-time imply
	-mno-explicit-relocs.
	(mips_encode_section_info): Don't use SYMBOL_REF_FLAG to distinguish
	between local and global symbols.

2004-01-05  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips-protos.h (mips_dangerous_for_la25_p): Declare.
	(mips_preferred_reload_class): Declare.
	* config/mips/mips.h (DANGEROUS_FOR_LA25_P): Replace with function.
	(EXTRA_CONSTRAINT): Update accordingly.
	(PREFERRED_RELOAD_CLASS): Use mips_preferred_reload_class.
	* config/mips/mips.c (mips_dangerous_for_la25_p): New function.
	(mips_preferred_reload_class): New function.  Prefer LEA_REGS if
	mips_dangerous_for_la25_p.
	(mips_secondary_reload_class): Use LEA_REGS rather than GR_REGS
	if mips_dangerous_for_la25_p.

2004-01-05  Bernardo Innocenti  <bernie@develer.com>

	* config/m68k/m68k.c (output_andsi3): Fix signed/unsigned comparison
	warning.

2004-01-04  Nathanael Nerode  <neroden@gcc.gnu.org>

	* configure.ac: Use AC_PROG_CPP_WERROR.
	* configure: Regenerate.

2004-01-04  Zack Weinberg  <zack@codesourcery.com>

	* .cvsignore: Add autom4te.cache.

2004-01-04  Richard Sandiford  <rsandifo@redhat.com>

	* doc/invoke.texi: Revamp documentation of MIPS options.  Remove
	-mabi=meabi, -mabi-fake-default, -mmips-as, -mgas, -mmips-tfile,
	-m4650, -mfix7000 and -(m)no-crt0.  Put endianness options first,
	then architecture options, then ABI options.  General rewording.

2004-01-04  Joseph S. Myers  <jsm@polyomino.org.uk>

	PR c/3414
	* doc/extend.texi: Clarify definition of malloc attribute.

2004-01-04  Jan Hubicka  <jh@suse.cz>

	* Makefile.in (cgraph.o, cgraphunit.o): Add intl.h dependency.
	* cgraph.c (create_edge, dump_cgraph): Update to use inline_failed
	* cgraph.h (cgraph_edge): Replace inline_call by inline_failed
	(cgraph_inline_p): Add extra argument reason.
	* cgraphunit.c: Minor formating fixes.
	cgraph_first_inlined_callee): New functions.
	(record_call_1): Record builtins too.
	(cgraph_analyze_function): Update inline_failed messages.
	(cgraph_mark_functions_to_output, cgraph_expand_function, cgraph_inlined_into,
	cgraph_inlined_callees, cgraph_estimate_growth): Update to use inline_failed.
	(cgraph_check_inline_limits): Likewise; Add argument reason.
	(cgraph_set_inline_failed): New static function.
	(cgraph_decide_inlining_of_small_function, cgraph_decide_inlining): Set
	reasons.
	(cgraph_inline_p): Add new argument reason.
	* tree-inline.c (expand_call_inline): Update warning.

2004-01-03  Nathanael Nerode  <neroden@gcc.gnu.org>

	* configure.ac: Replace AC_INIT, AC_OUTPUT, AC_CANONICAL_SYSTEM
	with modern equivalents.
	* configure: Regenerate.

	* configure.ac: Replace gcc_AC_CHECK_TYPE with AC_CHECK_TYPE.
	* aclocal.m4 (gcc_AC_CHECK_TYPE): Remove.
	* configure: Regenerate.

	* doc/install.texi: Note that 'gcc' is now a 2.57 directory.

	* configure.in: Rename to configure.ac.
	* configure.ac: Renamed from configure.in; make minimum necessary
	changes for autoconf 2.5x.
	* aclocal.m4: Make minimum necessary changes for autoconf 2.5x.
	* configure: Regenerate with autoconf 2.57.

2004-01-03  Kazu Hirata  <kazu@cs.umass.edu>

	* config/mips/linux.h: Fix comment formatting.
	* config/mips/mips.c: Likewise.
	* config/mips/mips.h: Likewise.
	* config/mips/mips.md: Likewise.
	* config/mips/netbsd.h: Likewise.
	* config/mips/windiss.h: Likewise.

2004-01-02  Richard Henderson  <rth@redhat.com>

	* config/i386/i386.md (fp constant pool splitter): Reorg suppression
	for sse and 387; add suppression for mmx.

2004-01-02  Andrew Pinski  <pinskia@physics.uc.edu>

	* loop.c (loop_optimize): Free all loops_info's mems.

	* c-typeck.c (finish_init): Free spelling_base before
	setting it again.

	* cfgloop.c (flow_loops_find): Always free the sbitmap
	headers.

	* predict.c (estimate_probability): Free bbs after being
	done with it.

2004-01-02  Kazu Hirata  <kazu@cs.umass.edu>

	* config/mn10300/mn10300.h (PREDICATE_CODES): Add
	const_8bit_operand and call_address_operand.

2004-01-02  Jan Hubicka  <jh@suse.cz>

	* cgraphunit.c (cgraph_optimize_function): Call optimize_inline_calls
	when there is nothing to inline but warnings are requested.
	(cgraph_decide_inlining): Fix memory leak.

2004-01-02  Jan Hubicka  <jh@suse.cz>

	* expr.c (store_constructor): Fix pasto in previous patch.

2004-01-02  Kazu Hirata  <kazu@cs.umass.edu>

	* config/i386/cygming.h: Fix comment formatting.
	* config/i386/djgpp.h: Likewise.
	* config/i386/gthr-win32.c: Likewise.
	* config/i386/i386-interix.h: Likewise.
	* config/i386/i386.c: Likewise.
	* config/i386/i386.h: Likewise.
	* config/i386/openbsd.h: Likewise.
	* config/i386/winnt.c: Likewise.
	* config/i386/xm-mingw32.h: Likewise.

2004-01-02  Joseph S. Myers  <jsm@polyomino.org.uk>

	* doc/gcc.texi, doc/invoke.texi, doc/install.texi: Update
	copyright and last modification dates.

2004-01-02  Andreas Jaeger  <aj@suse.de>, Gerald Pfeifer  <gp@suse.de>

	* doc/install.texi (Specific): Mention x86_64.

2004-01-01  Hans-Peter Nilsson  <hp@bitrange.com>

	* builtins.c (expand_builtin_apply_args_1) [STACK_GROWS_DOWNWARD]:
	Call force_operand on plus_constant result.

2004-01-01  Jan Hubicka  <jh@suse.cz>

	* expmed.c (store_bit_field, extract_bit_field): Use new named patterns
	* expr.c (store_constructor): Use vec_init pattern.
	* genopinit.c (optabs): Initailize vec_set/vec_extract/vec_init.
	* optabs.h (optab_index): ADD OTI_vec_set/OTI_vec_extract/OTI_vec_init
	(vec_set_optab, vec_extract_optab, vec_init_optab): New.
	* i386.md (vec_setv2df, vec_extractv2df, vec_setv4sf, vec_extractv4sf):
	New patterns.
	(sse2_unpc?pd): Fix pattern.
	(sse2_movlpd): Kill.
	(sse2_movsd): Deal with movlpd too.
	* i386.c (ix86_expand_builtin): Use sse2_movsd instead of sse2_movlpd.
	(ix86_expand_vector_init): New.
	* emmintrin.h (__mm_set_pd, __mm_set_ps): Use vector extensions.
	* md.texi (vec_set, vec_extract): Document


Copyright (C) 2004 Free Software Foundation, Inc.

Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.
