2004-11-04  Release Manager

	* GCC 3.4.3 released.

2004-10-31  Jakub Jelinek  <jakub@redhat.com>

	PR middle-end/18129
	* varasm.c (copy_constant): Don't copy STRING_CSTs if
	flag_writable_strings.
	(build_constant_desc): Call copy_constant unconditionally.

2004-10-30  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-27  Andrew Pinski  <pinskia@physics.uc.edu>

	PR other/18186
	* common.opt (--param): Fix spelling of parameter.

2004-10-27  Andreas Krebbel  <krebbel1@de.ibm.com>

	* config/s390/s390.md ("*subdf3_cc"): Replaced plus by minus.

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  Roger Sayle  <roger@eyesopen.com>
	    John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	Backport 3.4 regression fix from mainline
	* 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  Jakub Jelinek  <jakub@redhat.com>

	* dwarf2out.c (rtl_for_decl_location): Avoid segfault if
	DECL_INCOMING_RTL is NULL.

2004-10-21  Eric Christopher  <echristo@redhat.com>

	* config/rs6000/rs6000.c (setup_incoming_varargs): Align DFmode
	saves.

2004-10-22  Bernardo Innocenti  <bernie@develer.com>

	Backport from the mainline:
	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-21  Giovanni Bajo  <giovannibajo@gcc.gnu.org>

	* config/arc/lib1funcs.asm (___umulsidi3): Fix typo.

2004-10-21  Aldy Hernandez  <aldyh@redhat.com>

	PR 18004.
	* expmed.c (store_bit_field): Pass original 'value' before
	recursing.

2004-10-21  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-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/mips/t-iris5-6 (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  Jakub Jelinek  <jakub@redhat.com>

	* config/i386/i386.md (addqi_1_slp): Test for incdec_operand
	operand 1 instead of 2

2004-10-17  David O'Brien  <obrien@FreeBSD.org>

	* config/rs6000/sysv4.h (LINK_OS_FREEBSD_SPEC): Sync '-p' handling with
	other FreeBSD platforms.

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

	PR debug/14492
	* dwarf2out.c (loc_descriptor_from_tree): Handle FIX_*_EXPR.

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

	PR c/17023
	* c-parse.in (compstmt_primary_start): Check last_tree non-null,
	not current_function_decl non-null.

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

	PR other/17361
	* c-opts.c (c_common_init_options): Scan command line options for
	"-lang-asm" and if found allow any of the C-family front-end options.
	Likewise, scan all command line options for g77's -traditional-cpp.

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-13  Andrew Pinski  <pinskia@physics.uc.edu>

	* dwarf2out.c (rtl_for_decl_location): Do not use MEM_P but use
	GET_CODE == MEM.

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-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/emmintrin.h (__v2df): Fix base type.
	* config/i386/xmmintrin.h (__m128, __v4sf): Likewise.

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

	PR debug/13841
	* function.c (instantiate_decl): Recurse for CONCAT.

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.md (movdi): Remove redundant test.

2004-10-12  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-10-10  Roger Sayle  <roger@eyesopen.com>

	PR rtl-optimization/17853
	* combine.c (combine_simplify_rtx): Don't attempt any simplifications
	of vector mode comparison operators.
	* cse.c (fold_rtx): Likewise.
	* simplify-rtx.c (simplify_gen_relational):  Avoid calling
	simplify_relational_operation with vector mode comparison operators.
	(simplify_rtx): Likewise.

2004-10-09  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  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  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-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>

	* doc/install.texi (*-*-solaris2*): Fix marker for URL.

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

	PR target/17770
	* config/mips/mips.md (mov_lwl): Remove hazard=none attribute.

2004-10-07  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR rtl-optimization/17027
	Backport from mainline:
	* cfglayout.c (fixup_fallthru_exit_predecessor): If the first block
	falls through to exit, split it.
	* cfgrtl.c (rtl_split_block): If no insn is specified, split on the
	first insn in the basic block.

2004-10-06  H.J. Lu  <hongjiu.lu@intel.com>

	* doc/invoke.text (freorder-functions): Add a leading `.' to
	"text.hot" and "text.unlikely" sections.

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  Alan Modra  <amodra@bigpond.net.au>

	PR 16406
	* doc/tm.texi (LIBGCC_SPEC): Mention modifications.
	(USE_LD_AS_NEEDED, LINK_EH_SPEC): Document.

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-01  Nick Clifton  <nickc@redhat.com>

	* config/stormy16/stormy16.c (TARGET_BUILD_BUILTIN_VA_LIST_TYPE):
	Fix typo in macro name, it should be: TARGET_BUILD_BUILTIN_VA_LIST.

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

	* config/alpha/qrnnd.asm: Mark for noexecstack.

2004-09-30  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  David Edelsohn  <edelsohn@gnu.org>

	PR target/17493
	Backport from mainline
	2004-07-16  Segher Boessenkool  <segher@kernel.crashing.org>
	* config/rs6000/eabi.asm (__eabi_convert): Fix typo (cmpi vs. cmpwi).

2004-09-28  Giovanni Bajo  <giovannibajo@gcc.gnu.org>

	PR target/14064
	Backport from mainline
	2004-09-01  James E Wilson  <wilson@specifixinc.com>
	* config/avr/avr.c (avr_unique_section): Delete prototype and
	definition.
	(TARGET_ASM_UNIQUE_SECTION): Delete.

2004-09-26  Roger Sayle  <roger@eyesopen.com>

	PR other/15526
	Backport from mainline
	2004-05-20  Falk Hueffner  <falk@debian.org>
	* libgcc2.c (__mulvsi3): Fix overflow test.

2004-09-24  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-23  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-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-23  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  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-20  Richard Sandiford  <rsandifo@redhat.com>

	PR target/17565
	* config/mips/mips.md (define_asm_attributes): Set can_delay to no.

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  Alan Modra  <amodra@bigpond.net.au>

	* config/rs6000/linux64.h (MD_FALLBACK_FRAME_STATE_FOR): Save
	location of CR.
	* config/rs6000/linux.h (MD_FALLBACK_FRAME_STATE_FOR): Ditto.

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

	* doc/install.texi (sparc-sun-solaris2*): Properly format warning.

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

	PR rtl-opt/17186
	* function.c (expand_function_end): Revert last change.

	* sibcall.c (call_ends_block_p): Fix thinko finding the
	last real insn in a block.

2004-09-14  Joseph S. Myers  <jsm@polyomino.org.uk>

	PR c/15498
	* doc/invoke.texi (Environment Variables): Correct example locale.

2004-09-14  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-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-11  Ramana Radhakrishnan <ramana.radhakrishnan@codito.com>

	PR target/11476
	* gcc/config/arc/arc.c (arc_va_args): Call build1 instead
	of build for unary tree operators.

2004-09-11  Andrew Pinski  <apinski@apple.com>

	PR target/17167
	backport from the mainline:
	2004-02-28  Andrew Pinski  <pinskia@physics.uc.edu>
	* config/darwin.h (machopic_finish): Output stub even if
	the symbol is already defined.
	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.

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-09  Kaz Kojima  <kkojima@gcc.gnu.org>

	PR 15886
	Backport from mainline:
	2004-06-11  J"orn Rennecke <joern.rennecke@superh.com>

	* sh.h (ALLOCATE_INITIAL_VALUE): Use return_address_pointer_rtx.

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

	* config/rs6000/rs6000.c (rs6000_stack_info): Correct alignment of
	save_size.

2004-09-08  H.J. Lu  <hongjiu.lu@intel.com>

	* configure: Regenerated.

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  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-07  Mark Mitchell  <mark@codesourcery.com>

	* version.c (version_string): Restore pre-release marker.
	* doc/include/gcc-common.texi: Set version to 3.4.3.

2004-09-06  Release Manager

	* GCC 3.4.2 released.

2004-09-05  Mark Mitchell <mark@codesourcery.com>

	PR bootstrap/17325
	Backport from mainline
	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-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-09-03  Kaz Kojima  <kkojima@gcc.gnu.org>

	PR target/17303
	Backport from mainline:
	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-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  Jakub Jelinek  <jakub@redhat.com>

	* fold-const.c (operand_equal_p): Require equal sign also for
	FIX_{CEIL,TRUNC,FLOOR,ROUND}_EXPR.

2004-08-31  Jeff Law  <law@redhat.com>

	* gcse.c (remove_reachable_equiv_notes): Scan loops where
	the store expression is killed for REG_EQUAL/REG_EQUIV notes
	that need to be removed.

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-29  Mark Mitchell  <mark@codesourcery.com>

	PR rtl-optimization/16590
	* gcse.c (pre_delete): Do not create invalid REG_EQUAL notes.

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

	* config/alpha/alpha.h (HARD_REGNO_MODE_OK): Allow complex float
	modes.

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 Henderson  <rth@redhat.com>

	* config/alpha/alpha.c (alpha_cannot_force_const_mem): New.
	(TARGET_CANNOT_FORCE_CONST_MEM): New.

2004-08-25  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-08-25  Richard Earnshaw  <rearnsha@arm.com>

	* PR target/15948
	* arm.md (bicsi3_cbranch): Add alternative to handle tying operands
	one and two.

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  Paolo Bonzini  <bonzini@gnu.org>

	PR target/17113
	* config/i386/i386.md (movv16qi_internal): Fix typo.

2004-08-24  Kazuhiro Inaoka  <inaoka.kazuhiro@renesas.com>

	PR target/17093
	* config/m32r/m32r.md (movsi_sda): Add SI mode specification to
	UNSPEC.

2004-08-24  Jonathan Wakely  <redi@gcc.gnu.org>

	* doc/trouble.texi (C++ misunderstandings): Fix example code.

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

	PR rtl-optimization/17078
	* c-semantics.c (expand_unreachable_if_stmt): If the end of the
	specified statement list is reachable, always return a non-NULL
	pointer.  If necessary, return error_mark_node.

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

	PR c/14492
	* dwarf2out.c (loc_descriptor_from_tree): Robustify.

	PR c/16180
	* jump.c (duplicate_loop_exit_test): If the location reached by
	the unconditional jump at the top of the loop is outside the loop,
	then do not treat it as the exit test.

2004-08-23  Janis Johnson  <janis187@us.ibm.com>

	Backports from mainline:

	2004-02-11  Ziemowit Laski  <zlaski@apple.com>
	2004-02-21  Ziemowit Laski  <zlaski@apple.com>
	2004-02-27  Ziemowit Laski  <zlaski@apple.com>
	2004-03-04  Ziemowit Laski  <zlaski@apple.com>
	2004-03-20  Ziemowit Laski  <zlaski@apple.com>
	2004-03-24  Ziemowit Laski  <zlaski@apple.com>
	2004-05-11  Fariborz Jahanian <fjahanian@apple.com>
 	2004-07-23  Janis Johnson  <janis187@us.ibm.com>
 	2004-08-12  Janis Johnson  <janis187@us.ibm.com>
	2004-08-12  Ben Elliston <bje@au.ibm.com>
 	2004-08-16  Janis Johnson  <janis187@us.ibm.com>

	* c-common.c (vector_size_helper): Remove; call
	reconstruct_complex_type() instead.
	* 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.
	* 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.
	* doc/extend.texi (AltiVec builtins): Document additional differences
	from the Motorola AltiVec PIM.
	* doc/tm.texi (TARGET_MANGLE_FUNDAMENTAL_TYPE): Document.
	* 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.
	Change vector to __vector (except for the `vector' macro itself).
	(__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.
	(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.
	(vec_dst, vec_dstst, vec_dststt, vec_dstt, vec_sld, vec_splat): Add
	prototypes, marked with always_inline attribute.
	* 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.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.
	(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.
	(altivec_expand_dst_builtin): Treat expansion as completed even if
	literal argument is invalid (so that other expansions are not tried
	in vain).
	(TARGET_MANGLE_FUNDAMENTAL_TYPE): Point target hook at
	rs6000_mangle_fundamental_type.
	(rs6000_mangle_fundamental_type): 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-08-20  Jakub Jelinek  <jakub@redhat.com>

	PR target/16195
	* config/rs6000/rs6000.h (CONDITIONAL_REGISTER_USAGE): Make r30
	fixed if TARGET_TOC && TARGET_MINIMAL_TOC.
	* config/rs6000/rs6000.c (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-08-17  Joseph S. Myers  <jsm@polyomino.org.uk>

	* c-decl.c (grokdeclarator): Allow for function definition where
	innermost declarator has attributes.

2004-08-17  Daniel Bornstein  <danfuzz@milk.com>

	PR target/17019
	* arm.md (addsi3_cbranch_scratch): Correct case labels.

2004-08-14  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-14  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-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-13  J"orn Rennecke <joern.rennecke@superh.com>

	* sh.md (cbranch define_delay) Use cond_delay_slot for
	non-anulled condition too.

2004-08-11  Mark Mitchell  <mark@codesourcery.com>

	PR c++/16618
	* ginclude/stddef.h (offsetof): Refine C++ definition.

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

	Merge from mainline.
	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-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-07  Roger Sayle  <roger@eyesopen.com>

	PR middle-end/16790
	* fold-const.c (expand_muldiv_1) <NOP_EXPR>: Disallow local
	truncations, not just global truncations.

2004-08-07  Alan Modra  <amodra@bigpond.net.au>

	* config/rs6000/rs6000.c (function_arg_padding): Revert 2004-07-28.

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

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

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-07-31  Andrew Pinski  <apinski@apple.com>

	PR other/16842
	* mkheaders.in (libsubdir): s/gcc-lib/gcc/.

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  Alan Modra  <amodra@bigpond.net.au>

	* config/rs6000/rs6000.c (function_arg_padding): Pad SFmode upwards.

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-26  David Edelsohn  <edelsohn@gnu.org>

	PR target/16239
	* config/rs6000/rs6000.md (movdi_internal64): Further disparage
	f->f.

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.
	* loop-init.c (loop_optimizer_init): Pass 0 to cfg_layout_initialize.
	* rtl.h (tracer): Add a flags parameter.
	* tracer.c (tracer): Pass it to cfg_layout_initialise.
	* toplev.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.

2004-07-24  Zack Weinberg  <zack@codesourcery.com>

	* config/ia64/hpux.h: Do not disable TLS.

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-21  Jakub Jelinek  <jakub@redhat.com>
	    Jan Hubicka  <jh@suse.cz>

	PR middle-end/15345
	PR c/16450
	* toplev.c (rest_of_handle_inlining): Set DECL_DEFER_OUTPUT on C
	nested functions as well.
	* tree-optimize.c (tree_rest_of_compilation): Don't clear decl rtls
	for deferred nested inlines.

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 and ANSIfy.
	* 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-16  Andris Pavenis  <pavenis@latnet.lv>

	PR preprocessor/16366
	* internal.h (struct cpp_reader): New field dir_hash.
	* files.c (make_cpp_dir): Use dir_hash, not file_hash.
	(_cpp_init_files, _cpp_cleanup_files): Update for new field.

2004-07-15  James E Wilson  <wilson@specifixinc.com>

	Backport from mainline:
	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-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-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-14  Eric Botcazou  <ebotcazou@libertysurf.fr>

	Backport from mainline:
	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  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-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  Anthony Heading  <aheading@jpmorgan.com>

	* configure.ac (gcc_cv_as_offsetable_lo10): Fix a typo.
	* configure: Rebuilt.

2004-07-12  Vladimir Makarov  <vmakarov@redhat.com>

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

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  James E Wilson  <wilson@specifixinc.com>

	* config/gofast.h (gofast_maybe_init_libfuncs): Use SImode for litodp.

2004-07-10  Jakub Jelinek  <jakub@redhat.com>

	* Backport from mainline:
	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-07  Jakub Jelinek  <jakub@redhat.com>

	* config/i386/i386.c (override_options): Don't set x86_prefetch_sse
	from -mtune= option.

2004-07-10  Jakub Jelinek  <jakub@redhat.com>

	PR tree-optimization/16372
	* fold-const.c (build_range_check): Use TYPE_MODE's precision for
	enumerals.

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  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  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  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-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  Jason Merrill  <jason@redhat.com>

	PR c++/15815
	* doc/extend.texi (C++ Interface): Correct information and
	discourage use.

2004-07-07  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-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  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-07  Richard Sandiford  <rsandifo@redhat.com>

	PR target/15869
	* config/mips/mips.c (mips_avoid_hazards): Call split_all_insns_noflow.

2004-07-06  Mark Mitchell  <mark@codesourcery.com>

	* doc/include/gcc-common.texi: Increment version number.
	* version.c (version_string): Likewise.

2004-07-06  Joseph S. Myers  <jsm@polyomino.org.uk>

	* doc/sourcebuild.texi: Use semicolons instead of commas in
	section title.

2004-07-06  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/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-06  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-06  Eric Christopher  <echristo@redhat.com>

	PR rtl-optimization/14700
	Backport from mainline:
	2004-06-30  Zack Weinberg  <zack@codesourcery.com>
	* combine.c (distribute_notes): Don't look at global_regs for
	pseudos.

	2004-06-24  Eric Christopher  <echristo@redhat.com>
	* combine.c (distribute_notes): Don't delete sets to
	global register variables.

2004-07-04  Gerald Pfeifer  <gerald@pfeifer.com>

	* doc/contrib.texi (Contributors): Adjust link for GNU Classpath.

2004-07-01  Release Manager

	* GCC 3.4.1 released.

2004-06-28  Neil Booth  <neil@duron.akihabara.co.uk>

	PR preprocessor/16192
	PR preprocessor/15913
	PR preprocessor/15572
	* cppexp.c (_cpp_parse_expr): Handle remaining cases where an
	expression is missing.
	* cppinit.c (post_options): Traditional cpp doesn't do // comments.
	* doc/cpp.texi: Don't document what we do for ill-formed expressions.
	* doc/cppopts.texi: Clarify processing of command-line defines.

2004-06-28  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  Philip Blundell  <philb@gnu.org>

	PR wrong-code/15089
	* loop.c (scan_loop): Do not move user-specified register
	assignments.

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-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-24  Alan Modra  <amodra@bigpond.net.au>

	* calls.c (expand_call): Call INIT_CUMULATIVE_ARGS earlier, and
	pass raw n_named_args to it.

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

	PR middle-end/16026
	* function.c (assign_parms): Don't abort for overaligned PARALLEL.

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  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 Sandiford  <rsandifo@redhat.com>

	PR rtl-optimization/15159
	* tree.c (unsafe_for_reeval): Return 2 for TRY_CATCH_EXPRs.

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  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-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-16  James E Wilson  <wilson@specifixinc.com>

	PR c++/14808
	* config/i386/cygwin.h (TARGET_IS_PE_COFF): Delete duplicate macro.

2004-06-16  Bernardo Innocenti  <bernie@develer.com>

	Backport from mainline:
	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  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-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  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  Giovanni Bajo  <giovannibajo@gcc.gnu.org>

	* gccbug.in: Update optimization -> tree-optimization/rtl-optimization.

2004-06-14  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* real.c: Fix bit count in head comment.

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  Jakub Jelinek  <jakub@redhat.com>

	PR target/15178
	* config/i386/sol2.h (ASM_OUTPUT_DEF_FROM_DECLS): Define.

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  Alan Modra  <amodra@bigpond.net.au>

	Apply mainline 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-06-13  Hans-Peter Nilsson  <hp@axis.com>

	PR rtl-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-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-11  Bernardo Innocenti  <bernie@develer.com>

	PR target/8309
	PR target/13312
	Backport from mainline:

	2004-05-27  Peter Jakubek  <peter@laseranimation.com>

	* reload.c (find_reloads): Force reload for pseudo registers on big
	endian machines.

2004-06-11  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-11  Hartmut Penner  <hpenner@de.ibm.com>

	Backport from mainline:

	* 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-06-10  Joseph S. Myers  <jsm@polyomino.org.uk>

	* doc/sourcebuild.texi (Front End): Add details of more
	installation documentation required.

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  Bernardo Innocenti  <bernie@develer.com>

	PR target/13803
	Backport from mainline:

	2004-05-05  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-06-10  Alan Modra  <amodra@bigpond.net.au>

	Apply from mainline:
	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-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  Alan Modra  <amodra@bigpond.net.au>

	PR target/15191
	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-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  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-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-06-10  Alan Modra  <amodra@bigpond.net.au>

	PR target/14960
	2004-04-24  Alan Modra  <amodra@bigpond.net.au>
	* 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-06-10  Alan Modra  <amodra@bigpond.net.au>

	PR target/14567
	2004-03-13  Alan Modra  <amodra@bigpond.net.au>
	* 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-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-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-08  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	PR rtl-optimization/15761
	* cfgloopanal.c (count_strange_loop_iterations,
	count_loop_iterations): Use gen_int_mode instead
	of GEN_INT.

2004-06-08  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-08  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-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-07  James E Wilson  <wilson@specifixinc.com>

	PR target/15569
	* config/ia64/ia64.md (call_value_nogp): Add constraints for op0.
	(vall_value_gp): Likewise.

2004-06-07  Dan Kegel  <dank@kegel.com>

	PR c++/14808
	* config/i386/cygwin.h (TARGET_IS_PE_COFF): New.
	* config/i386/cygming.h (TARGET_IS_PE_COFF): New.

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.

2004-06-07  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.

	* pa.md: Disable the peephole2 patterns that generate indexed
	floating-point stores when indexing is disabled.

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  Richard Henderson  <rth@redhat.com>

	PR rtl-opt/15193
	* expmed.c (extract_bit_field): Fix vector_extract return.

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  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  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-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-04  Eric Christopher  <echristo@redhat.com>

	Backport from mainline:
	2004-06-02  Eric Christopher  <echristo@redhat.com>

	* c-typeck.c (common_type): Don't lose type qualifiers
	when creating new variants.

2004-06-03  Bernardo Innocenti  <bernie@develer.com>

	PR target/15782
	Backport from mainline:

	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  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  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-05-31  Kaz Kojima  <kkojima@gcc.gnu.org>

	PR target/13250
	Backport from mainline:

	2004-05-28  Kaz Kojima  <kkojima@gcc.gnu.org>
	* config/sh/sh.md (rotlsi3): Use emit_move_insn.

2004-05-31  H.J. Lu  <hongjiu.lu@intel.com>

	PR middle-end/15666
	* cgraph.c (cgraph_remove_node): Don't call htab_clear_slot if
	we can't find the slot. Abort if we can't find slot and the
	node isn't for a builtin function.

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  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  Danny Smith  <dannysmith@users.sourceforge.net>

	* c-incpath.c (add_path): Canonicalize paths to use '/' if
	HAVE_DOS_BASED_FILESYSTEM.

2004-05-28  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	PR bootstrap/14671
	* alias.c (init_alias_analysis): Allocate alias_invariant array with
	ggc_calloc instead of xrealloc.
	(end_alias_analysis): Don't free alias_invariant.

2004-05-28  DJ Delorie  <dj@redhat.com>

	* stor-layout.c (place_field): Revert erroneous commit.

2004-05-28  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-05-27  Kaz Kojima  <kkojima@gcc.gnu.org>

	Backport from mainline:

	* config/sh/t-linux (SHLIB_MAPFILES): Use sh specific
	libgcc-std.ver.
	* config/sh/libgcc-std.ver: New file.

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  Alan Modra  <amodra@bigpond.net.au>

	PR target/14478
	* config/rs6000/rs6000.c (reg_or_neg_short_operand): Don't allow zero.

2004-05-26  Aldy Hernandez  <aldyh@redhat.com>

	PR/14924
	* config/rs6000/rs6000.c (spe_expand_stv_builtin): New.

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-21  Jakub Jelinek  <jakub@redhat.com>

	* config/sparc/linux64.h (OPTION_DEFAULT_SPECS): If SPARC_BI_ARCH,
	override sparc.h definition.

2004-05-20  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-18  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 for DI, SI, HI and QI modes.  Remove
	move to shift amount register in DF mode.

2004-05-18  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-18  Kaz Kojima  <kkojima@gcc.gnu.org>

	PR optimization/15100
	Backport from mainline:

	2004-05-11  Kaz Kojima  <kkojima@gcc.gnu.org>
	* combine.c (distribute_notes): Don't create a dangling
	REG_LIBCALL/REG_RETVAL note.

2004-05-17  H.J. Lu  <hongjiu.lu@intel.com>

	Backport from mainline

	PR target/15301
	PR target/15302
	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-15  Joseph S. Myers  <jsm@polyomino.org.uk>

	* doc/extend.texi: Update WG14 URL.

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-10  Kaz Kojima  <kkojima@gcc.gnu.org>

	PR target/15130
	Backport from mainline:

	* 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-09  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/spe.md ("tstsflt_gpr"): Fix typo in unspec.

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  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  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-06  Richard Henderson  <rth@redhat.com>

	* stmt.c (parse_output_constraint): Don't warn for read-write
	memory operand.

2004-05-06  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-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-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-02  Josef Zlomek  <zlomekj@suse.cz>

	* cfgrtl.c (cfg_layout_redirect_edge_and_branch): Print the debug
	message before redirecting the edge.

2004-05-02  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR optimization/15112
	* reload1.c (reload): Don't record unchanging memory locations.

2004-04-30  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	PR other/1963
	* config/alpha/osf.h (SWITCHES_NEED_SPACES): Define.

2004-04-30  David Edelsohn  <edelsohn@gnu.org>

	Backport from mainline:

	2004-04-19  David Edelsohn  <edelsohn@gnu.org>

	* doc/install.texi (*-ibm-aix*): Add AIX 5.1 assembler and archiver
	fix information.

	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-07  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.c (processor_target_table): Add MASK_MFCRF
	to power4 and power5 entries.

	2004-04-05  David Edelsohn

	* config/rs6000/rs6000.c (VTABLE_NAME_P): Add _ZTI to special
	symbol handling.

	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-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-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-04  David Edelsohn  <edelsohn@gnu.org>
		    GP <gp@qnx.com>

	* config/rs6000/rs6000.c (output_function_profiler): Append @plt
	when compiling PIC.

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,
	eliminating duplicates.

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  Philip Blundell  <philb@gnu.org>

	* Merge from trunk:
	2004-04-20  Paul Brook  <paul@codesourcery.com>

	* config/arm/arm.c (arm_legitimate_address_p): Use rtx_equal_p.

2004-04-29  Aldy Hernandez  <aldyh@redhat.com>

	PR/12028
	* 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.
	(ccr_bit): Remove E500 specific code.
	Remove miscompilation warning for e500.
	(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.
	(rs6000_override_options): Error when user wants altivec and e500
	instructions.

	* 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-protos.h (output_e500_flip_gt_bit):
	Protoize.

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  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  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-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  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-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-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  Nick Clifton  <nickc@redhat.com>

	* Import this patch from mainline:
	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-22  Per Bothner  <per@bothner.com>

	* cppinit.c (cpp_read_main_file):  Return NULL rather than false.
	Fixes PR preprocessor/15067.

2004-04-22  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-04-22  Ulrich Weigand  <uweigand@de.ibm.com>

	* dbxout.c (dbxout_symbol_location): Do not output references
	to optimized-out constant pool symbols.

2004-04-22  Ulrich Weigand  <uweigand@de.ibm.com>

	* expr.c (store_constructor): Use gen_int_mode to correctly
	sign-extend CONST_INT value.

2004-04-22  Ulrich Weigand  <uweigand@de.ibm.com>

	* combine.c (if_then_else_cond): Check for NULL return value of
	simplify_gen_subreg.

2004-04-22  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-22  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

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

2004-04-21  Kaz Kojima  <kkojima@gcc.gnu.org>

	Backport from mainline:

	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-21  H.J. Lu  <hongjiu.lu@intel.com>

	PR target/14813
	Backport from mainline:

	* 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  Richard Henderson  <rth@redhat.com>

	PR bootstrap/14671
	* 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): Don't free reg_known_value.
	* 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-04-21  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* pa64-hpux.h (LIB_SPEC): Fix library specification used with GNU ld.

2004-04-21  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* doc/install.texi (Specific, mips-sgi-irix5): Fix IRIX 5.3 IDO
	download URL.

2004-04-21  H.J. Lu  <hongjiu.lu@intel.com>

	PR target/14857
	Backport from mainline:

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

2004-04-21  H.J. Lu  <hongjiu.lu@intel.com>

	* PR target/14723
	Backport from mainline:
	2004-02-14  Jan Hubicka  <jh@suse.cz>

	* config.gcc: Add support for nocona/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-04-20  Mark Mitchell  <mark@codesourcery.com>

	* version.c (version_string): Mark as prerelease.
	* doc/include/gcc-common.texi: Bump version number.

2004-04-18  Release Manager

	* GCC 3.4.0 released.

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

	PR bootstrap/14992
	* configure.ac: Define HAVE_LD_AS_NEEDED only for linux.
	* configure: Regenerate.
	* gcc.c (init_gcc_specs): Revert earlier change.

2004-04-18  Mark Mitchell  <mark@codesourcery.com>

	PR other/14918
	* doc/invoke.texi (-fprofile-generate): Document requirement to
	use -fprofile-generate when linking.

	PR bootstrap/14992
	* gcc.c (init_gcc_specs): Only honor HAVE_LD_AS_NEEDED on
	GNU/Linux.

	* doc/extend.texi (Strong Using): Warn users against using this
	feature.

2004-04-17  Richard Sandiford  <rsandifo@redhat.com>

	* configure.ac (gcc_cv_ld_as_needed): Use AC_CACHE_CHECK.
	* configure: Regenerate.

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  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* aclocal.m4 (gcc_AC_PROG_GNAT): Check if ${CC} produces object
	file for Ada compilation.
	Fix gcc_cv_cc_supports_ada spelling.
	* configure: Regenerate.

2004-04-14  Zack Weinberg  <zack@codesourcery.com>

	PR 14936
	Backport from mainline:
	2004-03-12  Matt Austern  <austern@apple.com>

	* varasm.c (make_decl_one_only): Don't use DECL_COMMON if
	we're compiling for a SUPPORTS_ONE_ONLY target.

2004-04-09  Zack Weinberg  <zack@codesourcery.com>

	* 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-08  Mark Mitchell  <mark@codesourcery.com>

	* doc/invoke.texi (Precompiled Headers): Warn about known
	problems.

2004-04-08  Joel Sherrill <joel@oarcorp.com>

	PR ada/14538
	* ada/5rosinte.adb: Remove fake mprotect() body.
	* ada/5rosinte.ads: Add SA_SIGINFO.  Make pthread_key_t a type
	which can be set since Finalize_TCB in 7staprop.adb does not
	go through the Set_Specific interface.
	* 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  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-06  Mark Mitchell  <mark@codesourcery.com>

	* config/darwin.h (LINK_COMMAND_SPEC): Change c++filt3 to c++filt.

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

	* doc/install.texi: Update HP-UX 11 installation procedure.

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  Alexandre Oliva  <aoliva@redhat.com>

	* cppinit.c (cpp_read_main_file): Return file name obtained by
	read_original_filename.  Missed in 2004-02-04's check in to 3.4
	branch by Per Bothner.

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  Mark Mitchell  <mark@codesourcery.com>

	PR c++/14804
	* varasm.c (initializer_constant_valid_p): Allow NOP_EXPRs to
	RECORD_TYPEs.

2004-04-02  Jakub Jelinek  <jakub@redhat.com>
	    Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR optimization/13424, optimization/12419
	* explow.c (maybe_set_unchanging): Revert 2003-04-07 patch.
	Set RTX_UNCHANGING_P even for read-only DECL_EXTERNAL decls.
	* expr.c (store_constructor): When clearing aggregate because
	of an incomplete or mostly zero constructor, do the clearing
	without /u flag and then emit a blockage.

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-03-30  Aldy Hernandez  <aldyh@redhat.com>

	PR 14219
	* c-typeck.c (build_binary_op): Do not allow comparisons of
	vectors.

2004-03-26  Ian Lance Taylor  <ian@wasabisystems.com>

	PR target/14206
	* doc/install.texi (Specific): Document that exec-shield-randomize
	interferes with precompiled headers.

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

	PR 11527
	* c-typeck.c (pop_init_level): Emit pending init elements earlier
	rather than later.

2004-03-25  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-25  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-03-24  Steven Bosscher  <stevenb@suse.de>

	PR pch/14137
	* c-pch.c (struct c_pch_validity): New flags_info field.
	(FLAG_UNIT_AT_A_TIME_SET): New definition.
	(pch_init): Write out the flags_info field to the PCH.  Set the
	FLAG_UNIT_AT_A_TIME_SET bit of the field if flag_unit_at_a_time
	is set.
	(c_common_valid_pch): Make sure the flag settings used for compiling
	the PCH are the same as those used in the current compilation.

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  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  Jason Merrill  <jason@redhat.com>

	PR c++/14587
	* config/i386/winnt.c (associated_type): Look for attributes on
	the TYPE_MAIN_VARIANT of *this.

2004-03-21  Mark Mitchell  <mark@codesourcery.com>

	PR c/13129
	* c-decl.c (warn_if_shadowing): Don't warn about a new declaration
	of a file-scope entity.

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  Ralf Corsepius <corsepiu@faw.uni-ulm.de>

	PR target/14260
	* config/rtems.h: Add STD_LIB_SPEC and LIB_SPEC.

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  Danny Smith  <dannysmith@users.sourceforge.net>

	* gcov-io.h: Update copyright year.

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  Roger Sayle  <roger@eyesopen.com>

	PR target/13889
	* cse.c (fold_rtx): Avoid substituting constants into unary
	conversion operations.

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-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  Joseph S. Myers  <jsm@polyomino.org.uk>

	PR other/14630
	* doc/install.texi: Add info directory category and entry.

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-18  Mark Mitchell  <mark@codesourcery.com>

	* c-common.c (pointer_int_sum): Do not complain about using
	pointers to pointers-to-members.

	* 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-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  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  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  Nathanael Nerode  <neroden@gcc.gnu.org>

	PR bootstrap/12974
	* Makefile.in: Pass $(INCLUDES) down to libgcc.mk explicitly.

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

	PR middle-end/14535
	* except.c (collect_one_action_chain): Create action record for
	cleanup outer of exception spec.

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-15  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-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-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-13  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR c/14114
	* c-decl.c (merge_decls): Do not copy the C_DECL_INVISIBLE flag
	from the new decl to the old decl.
	(pushdecl): Use lookup_name to search for a previous decl with the
	same identifier.

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  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  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.  Document use of Bash to speed up configuration.

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

	* doc/tm.texi (registers) <Values in Registers>: Add
	entry for REGMODE_NATURAL_SIZE.

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

	PR target/14539
	* config/alpha/alpha.h (STACK_BOUNDARY): Set to 128.

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

	* real.c (encode_ibm_extended): Do round low word.

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

	PR middle-end/14477
	* except.c (remove_unreachable_regions): Look thru CALL_PLACEHOLDER.

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  Kelley Cook  <kcook@gcc.gnu.org>

	PR other/14536
	* configure: Regenerated with autoconf 2.57.
	* config.in: Regenerated with autoheader 2.57.

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

	* config/rs6000/linux64.h (MD_FALLBACK_FRAME_STATE_FOR): Don't
	bump retaddr here.

2004-03-11  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-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  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.

2004-03-10  Joel Sherrill  <joel@oarcorp.com>

	PR target/14480
	* config.gcc (powerpc*-*-rtems*): Use rs6000/t-rtems.

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-10  Alan Modra  <amodra@bigpond.net.au>
	    Hartmut Penner  <hpenner@de.ibm.com>

	* config/rs6000/rs6000.c (invalid_gpr_mem): New function.
	(base_reg_operand): New function.
	(legitimate_offset_address_p): Don't test modes in an attempt to
	distinguish gpr vs fpr mem loads/stores.  Don't prohibit offsets
	invalid for 64-bit gpr loads/stores here.
	(secondary_reload_class): Add "inp" parameter.	Generate a reload
	for 64-bit gpr loads/stores.
	* config/rs6000/rs6000.h (SECONDARY_RELOAD_CLASS): Delete.
	(SECONDARY_INPUT_RELOAD_CLASS, SECONDARY_OUTPUT_RELOAD_CLASS): Define.
	(PREDICATE_CODES): Add invalid_gpr_mem and base_reg_operand.
	(DISPARAGE_RELOAD_CLASS): Define.
	* config/rs6000/rs6000-protos.h (secondary_reload_class): Update.
	* config/rs6000/rs6000.md (movdf_hardfloat64): Correct attrs.
	Add m->b alternative and split.
	(movdi_internal64): Replace r->m and m->r with r->Y and Y->r.
	Add m->b alternative and split.
	* reload.c (find_reloads): Invoke DISPARAGE_RELOAD_CLASS.

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  Ralf Corsepius <corsepiu@faw.uni-ulm.de>

	* config/h8300/t-rtems (h8300-*-rtems*): New.
	* config.gcc: Use config/h8300/t-rtems.

2004-03-09  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  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-09  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/d30v/d30v.h, config/dsp16xx/dsp16xx.h,
	config/fr30/fr30.h, config/frv/frv.h, config/h8300/h8300.h,
	config/i370/i370.h, config/i386/i386.h, config/i860/i860.h,
	config/i960/i960.h, config/ia64/ia64.h, config/ip2k/ip2k.h,
	config/iq2000/iq2000.c, config/iq2000/iq2000.h, 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-03-09  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-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>

	* fold-const.c (fold) <EQ_EXPR>: Rewrite optimization to transform
	"foo++ == const" into "++foo == const+incr".

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  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  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  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-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  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  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  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  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR c/14465
	PR c/14114
	* c-decl (pushdecl): Revert previous change.

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  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR target/14343
	* config/i386/i386.md (movv2di_internal): Conditionalize on
	TARGET_SSE, not TARGET_SSE2.

2004-03-06  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR c/14114
	* c-decl (pushdecl): Do not record a previous, not-in-scope,
	external decl for restoration.

2004-03-05  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-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  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  Nathan Sidwell  <nathan@codesourcery.com>

	PR driver/13577
	* gcc.c (cc1_options): Robustify -auxbase-strip from multiple -o
	options.

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-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  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-03  Stephane Carrez  <stcarrez@nerim.fr>

	* config/m68hc11/m68hc11.c (m68hc11_override_options): Disable -fweb
	because it breaks the 32-bit shift patterns that rely on a match_dup.
	(print_operand): Don't print a * before the base address.

2003-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  Nicolas Pitre <nico@cam.org>

	* config/arm/ieee754-df.S (muldf3, divdf3): Fix denormalization of
	small negative values.

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  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  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  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  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  Loren James Rittle  <ljrittle@acm.org>

	* gcc/doc/install.texi (*-*-freebsd*): Update target information.

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

	PR bootstrap/14356
	* gcc.c (process_command): Remove const-qualification from argv.
	(main): Likewise.

2004-03-01  Mircea Namolaru  <namolaru@il.ibm.com>

	* cfgloop.h (get_var_set_from_bct, is_bct_cond): Declaration of
	new functions.
	* cfgloopanal.c: Include loop.h.
	(get_var_set_from_bct): New function.
	(is_bct_cond): New function.
	(blocks_single_set_registers): Handle branch and count jumps.
	(count_loop_iterations): Likewise.
	(simple_increment): Likewise
	* doloop.c (doloop_condition_get): Export.
	* loop-init.c (fixup_loop_exit_succesor): New function.
	(loop_optimizer_finalize): Handle loops ending with branch and
	count jumps.
	* loop-unroll.c: Include toplev.h
	(discard_increment): New function.
	(expand_bct): New function.
	(peel_loop_completely): Handle the removal of branch and count jumps.
	(unroll_loop_constant_iterations): Likewise.
	(unroll_loop_runtime_iterations): Likewise
	* loop.h (doloop_condition_get): Declare.

2004-02-29  Mark Mitchell  <mark@codesourcery.com>

	PR debug/14328
	* dwarf2out.c (gen_enumeration_type_die): Output all enumeration
	constants as signed values.

2004-02-29  Mark Mitchell  <mark@codesourcery.com>

	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  Kazu Hirata  <kazu@cs.umass.edu>

	* doc/cppopts.texi: Fix a typo.

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-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  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  Daniel Jacobowitz  <drow@mvista.com>

	* config/arm/arm.c (arm_legitimate_address_p): Don't check the mode
	size for minipool references.

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-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  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/xtensa.h (TARGET_CPU_CPP_BUILTINS): Define __xtensa__.

2004-02-25  James E Wilson  <wilson@specifixinc.com>

	* gcc-simple.c (rtl_zone, tree_zone, garbage_zone, ggc_alloc_typed,
	ggc_alloc_zone): New.
	(ggc_pch_count_object, gcc_pch_alloc_object, ggc_pch_write_object):
	Add bool is_string parameter.

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

	* gcse.c (delete_null_pointer_checks_1): Set stop_insn to end, not
	beginning of block.  Do not delete CC setter unless HAVE_cc0.

2004-02-25  Kelley Cook  <kcook@gcc.gnu.org>

	* doc/contrib.texi: Add an entry for myself.

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  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  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-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  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  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-24  Richard Earnshaw  <rearnsha@arm.com>

	* invoke.texi (ARM Options): Mark -mapcs-26 and -mno-alignment-traps
	as deprecated.  Remove already deprecated synonyms.
	* arm.c (arm_override_options): Generate an inform message if the
	user tries to invoke the compiler in apcs-26 mode.
	* arm.h (TARGET_SWITCHES): Remove help comments from deprecated
	switches. Delete deprecated synonyms for -malignment-traps.
	(TARGET_DEFAULT): Default to alignment traps.
	* arm/coff.h (TARGET_DEFAULT): Default to alignment traps.
	* arm/elf.h arm/netbsd.h arm/pe.h arm/semi.h arm/semiaof.h: Likewise.
	* arm/unknown-elf.h arm/wince-pe.h: Likewise.

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

	* config/i386/i386.h: Deprecate -mpni/-mno-pni.

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  Andrew Pinski  <pinskia@physics.uc.edu>

	* config/rs6000/linux.h (OS_MISSING_POWERPC64): Define.
	* config/rs6000/linux64.h (OS_MISSING_POWERPC64): Define.

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  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  Matthias Klose  <doko@debian.org>

	Taken from mainline:

	2004-02-12  Geoffrey Keating  <geoffk@apple.com>

	* 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-22  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.
	("*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-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  Alan Modra  <amodra@bigpond.net.au>

	* combine.c (can_combine_p): Don't ignore SETs marked with
	REG_EH_REGION notes.

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  Falk Hueffner  <falk@debian.org>

	PR target/14201
	* config/alpha/alpha.md (*fix_truncsfsi_ieee): Fix typoed operand
	numbers.

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  James E Wilson  <wilson@specifixinc.com>

	* toplev.c (dump_file_index, dump_file): Put ce3 before rnreg.

2004-02-20  Josef Zlomek  <zlomekj@suse.cz>

	* tree-inline.c (copy_body_r): Do not replace ret_label.

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-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  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-20  Alan Modra  <amodra@bigpond.net.au>

	* function.c (assign_parms): Correct leakage of mainline code
	in last commit.  Also leakage from INIT_CUMULATIVE_ARGS patch.

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.
	(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-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  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  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-19  Jan Hubicka  <jh@suse.cz>

	* genextract.c (main): Do not output the memset when not checking.

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 ("divmoddisi3"): Fix incorrect mode.

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

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  Paul Brook  <paul@codesourcery.com>

	* rtlanal.c (rtx_varies_p): Return 0 for NULL_RTX

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>

	PR debug/12934
	* dwarf2out.c (loc_descriptor_from_tree): Handle
	EXPR_WITH_FILE_LOCATION.

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.h (STRUCT_VALUE_REGNUM): Remove.
	* config/ia64/ia64.c (TARGET_STRUCT_VALUE_RTX): Define it.
	(ia64_struct_retval_addr_is_first_parm_p):
	New function.
	(ia64_output_mi_thunk): Use it.
	(ia64_struct_value_rtx): New function.

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  Jan Hubicka  <jh@suse.cz>

	PR bootstrap/14180
	* cselib.c (remove_useless_values): Do not access released
	memory.

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  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.
	* patches.summary (http):

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  Jonathan Wakely  <redi@gcc.gnu.org>

	* doc/install.texi: Update description of --gxx-include-dir to
	give correct default value. (merged from mainline)

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  Joseph S. Myers  <jsm@polyomino.org.uk>

	* doc/sourcebuild.texi: Mention backends.html.

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

	Backport from mainline:

	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-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-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-15  SUGIOKA Toshinobu  <sugioka@itonet.co.jp>

	Backport from mainline:

	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-15  Roger Sayle  <roger@eyesopen.com>

	Backport from mainline:

	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.
	(fold): Adjust call to fold_convert to match new fold_convert_const.
	Avoid modifying the tree passed to fold in-place.

2004-02-15  Jan Hubicka  <jh@suse.cz>

	* cselib.c (value_pool): New.
	(new_cselib_val): Use pool.
	(cselib_init): Initialize value_pool
	(cselib_finish): Free pool.

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

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

	Backport from mainline:

	2002-04-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-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-13  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* configure.ac: Search for as, ld below libexec/gcc.
	* configure: Regenerate.

2004-02-13  Jan Hubicka  <jh@suse.cz>

	* combine.c (recog_for_combine): Avoid allocating unnecesary RTX.

	* genrecog.c (find_operand): add extra argument stop.
	(validate_pattern): Verify that mach_dup is duplicating operand
	defined lexically earlier.

2004-02-13  Ian Lance Taylor  <ian@wasabisystems.com>

	PR other/10584
	* c-opts.c (c_common_post_options): Disable function inlining when
	using -finstrument-functions.
	* doc/invoke.texi (Code Gen Options): Document this restriction.

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

	* cselib.c (discard_useless_values):  Clear out value pointer pointing
	to datastructure to be recycled.

	* gcse.c (bypass_block): Prevent edges to be unified when we are
	about to emit compenstation code.

	* gcse.c (bypass_block): Fix a typo in the previous check-in
	to the file.

	* alloc-pool.c (align_four): Kill.
	(create_alloc_pool): Align size to eight.
	(free_alloc_pool, free_pool): Invalidate deallocated data.

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  Jan Hubicka  <jh@suse.cz>

	* tree-optimize.c (tree_rest_of_compilation): Do not release DECL_ARGUMENTS

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

	PR inline-asm/6162
	* reload.c (find_reloads): Only support one pair of commutative
	operands.

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

	PR target/1532
	Backport from mainline:

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

	* flow.c (insn_dead_p): A clobber of a dead hard register is a
	dead insn after reload.

	2004-01-24  Ian Lance Taylor  <ian@wasabisystems.com>

	* 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  Andreas Tobler  <a.tobler@schweiz.ch>

	* cse.c: (cse_cc_succs) Fix comparison warning.

	2004-01-23  Ian Lance Taylor  <ian@wasabisystems.com>

	* 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-02-12  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-12  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR target/14113
	Backport from mainline:

	2004-02-03  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* config/sparc/sparc.md (call followed by jump define_peephole's):
	Delete.

2004-02-12  Hartmut Penner  <hpenner@de.ibm.com>

	* gcc/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  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-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  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  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  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  Jakub Jelinek  <jakub@redhat.com>

	PR optimization/13424
	Backport from mainline:

	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-28  Jakub Jelinek  <jakub@redhat.com>
	* 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-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-02-10  David Edelsohn  <edelsohn@gnu.org>

	* configure.ac (gcc_cv_as_powerpc_mfcrf): Correct test for mfcr.
	* configure: Regenerate.

2004-02-10  Ulrich Weigand  <uweigand@de.ibm.com>

	* cfganal.c (flow_call_edges_add): Never split a libcall block.

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

	* config/mips/mips.h (TARGET_GPWORD): Return false for TARGET_NEWABI
	&& TARGET_IRIX.

2004-02-09  Geoffrey Keating  <geoffk@apple.com>

	PR 12028
	* config/rs6000/rs6000.c (ccr_bit): Don't let consistency check
	failure stop compilation, just print helpful message.

2004-02-09  Fariborz Jahanian <fjahanian@apple.com>

	* expr.c (emit_group_load): split constant
	correctly into register components of PARALLEL insn.

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  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  Nick Clifton  <nickc@redhat.com>

	* Import these patches from mainline sources:

	2004-01-21  Inaoka Kazuhiro  <inaoka.kazuhiro@renesas.com>

	* config/m32r/m32r.h (CPP_SPEC): Define.

	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-02-09  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* cpplib.h (cpp_get_line_maps): Un-constify the structure
	pointed to by the pointer returned by the function.
	* cpplib.c (cpp_get_line_maps): Likewise.

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

	* c-objc-common.c (c_cannot_inline_tree_fn): Fix a typo in a
	warning.

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-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  Kazu Hirata  <kazu@cs.umass.edu>

	* c-opts.c, c-ppoutput.c, cppfiles.c, cpphash.h, cppinit.c,
	cpplib.h, diagnostic.h, fix-header.c, config/fp-bit.c,
	config/mips/iris5.h, doc/makefile.texi: Update copyright.

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  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  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-02-06  H.J. Lu  <hongjiu.lu@intel.com>

	* doc/invoke.texi: Remove the pni option from -mfpmath=.

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  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* config/mips/iris5gas.h (PREFERRED_DEBUGGING_TYPE): Define.

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  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  Paul Brook  <paul@codesourcery.com>

	Backport from mainline.

	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-05  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-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-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  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  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  Kazu Hirata  <kazu@cs.umass.edu>

	* doc/interface.texi, doc/tm.texi, doc/trouble.texi: Don't
	mention deprecated target macros.

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  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  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-03  Kelley Cook  <kcook@gcc.gnu.org>

	* opts.c (OPT_fwritable_strings): Deprecate -fwritable-strings.

2004-02-03  Steven Bosscher  <s.bosscher@student.tudelft.nl>

	* toplev.c: Fix broken checkin of 2003-12-30, again.

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 (_cpp_convert_input): New function.
	(_cpp_default_encoding): Ditto.
	* cpphash.h: Add 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.
	* doc/cppopts.texi: Document -finput-charset.

2004-02-02  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* doc/invoke.texi (SPARC options): Further improve.

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  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* doc/invoke.texi (SPARC options): Document that -mflat is deprecated.

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  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-02-01  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.md (adddi3_internal_2): Remove superfluous %s.

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>

	* 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  Jan Hubicka  <jh@suse.cz>

	Revert the following patch until after AIX linker bug is fixed:
	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-31  Kazu Hirata  <kazu@cs.umass.edu>

	alloc-pool.c, alloc-pool.h, c-lex.c, c-pragma.h,
	tree-optimize.c, config/alpha/alpha.c, config/alpha/alpha.h,
	config/alpha/alpha.md, config/alpha/vms.h, config/arm/arm.h,
	config/arm/linux-elf.h, config/avr/avr.c, config/c4x/c4x.c,
	config/c4x/c4x.md, config/d30v/d30v.h,
	config/frv/frv-protos.h, config/frv/frv.c, config/frv/frv.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/i386.c, config/i386/i386.h, config/i386/openbsd.h,
	config/i386/winnt.c, config/i386/xm-mingw32.h,
	config/i386/xmmintrin.h, config/ia64/ia64-protos.h,
	config/ia64/ia64.c, config/ia64/ia64.md, config/ip2k/ip2k.c,
	config/iq2000/iq2000-protos.h, config/iq2000/iq2000.c,
	config/iq2000/iq2000.md, config/m32r/m32r-protos.h,
	config/m32r/m32r.c, config/m32r/m32r.md, config/m68k/m68k.md,
	config/m68k/netbsd-elf.h, config/mcore/mcore-elf.h,
	config/mcore/mcore.c, config/mcore/mcore.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/mn10300/mn10300.c, config/mn10300/mn10300.h,
	config/pdp11/pdp11.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, config/stormy16/stormy16.h: Update
	copyright.

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  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-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  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  Andrew Pinski <pinskia@physics.uc.edu>

	* toplev.c: Include alloc-pool.h.
	* Makefile.in (toplev.c): Update dependencies.

2004-01-30  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* config/sparc/sparc.h: Update copyright.

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>

	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.

	* reload.c (secondary_memlocs_elim_used): New static variable.
	(get_secondary_mem): Update it.
	(find_reloads): Use it.

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

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

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

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

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  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.
	* fixinc/fixincl.x: regen

2004-01-29  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-29  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-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-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  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-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-28  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-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-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  Richard Sandiford  <rsandifo@redhat.com>

	PR target/7297
	* except.c (init_eh): Use a 5-word __jbuf for __builtin_setjmp().

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  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  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-27  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-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  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-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  Eric Botcazou  <ebotcazou@libertysurf.fr>

	Backport from mainline:

	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-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-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  Eric Botcazou  <ebotcazou@act-europe.fr>

	PR bootstrap/13853
	* cfgcleanup.c (try_optimize_cfg): Explicitly test against 0.

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>

	* doc/frontends.texi: Update copyright.
	* doc/gcov.texi: Likewise.
	* doc/gty.texi: Likewise.
	* doc/sourcebuild.texi: Likewise.

2004-01-24  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-24  Hartmut Penner <hpenner@de.ibm.com>

	PR target/13674
	* config/rs6000/rs6000.md (movdf_hardfloat64): Do not disparage
	loading into GPR.

2004-01-24  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-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-23  Kazu Hirata  <kazu@cs.umass.edu>

	* recog.c: Fix a typo in copyright.

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

	* alias.c, basic-block.h, c-common.c, c-common.h,
	c-cppbuiltin.c, c-pragma.c, c-pretty-print.c, c-semantics.c,
	calls.c, cfg.c, cfgcleanup.c, cfgrtl.c, cgraph.h, collect2.c,
	combine.c, cppcharset.c, cpptrad.c, cse.c, cselib.c, cselib.h,
	defaults.h, df.c, dominance.c, et-forest.c, expmed.c, expr.c,
	expr.h, fold-const.c, function.h, gcc.c, gcse.c, genattrtab.c,
	genautomata.c, genconditions.c, genflags.c, gengtype.c,
	genopinit.c, genrecog.c, gensupport.c, ggc-zone.c, graph.c,
	haifa-sched.c, integrate.c, langhooks-def.h, langhooks.c,
	langhooks.h, local-alloc.c, optabs.c, optabs.h, postreload.c,
	ra.h, recog.c, reg-stack.c, regmove.c, reload.c, reorg.c,
	rtlanal.c, sched-deps.c, sched-ebb.c, sdbout.c, system.h,
	target.h, targhooks.c, toplev.h, tree-inline.c,
	unwind-dw2-fde.h, unwind-pe.h, unwind.h, varray.c, varray.h:
	Update copyright.

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

	* fixinc/fixincl.x: Regenerate.

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/libgen.h: Remove, moving test ...
	* fixinc/tests/base/testing.h: ... here, reflecting new name.

2004-01-23  Ian Lance Taylor  <ian@wasabisystems.com>

	* doc/invoke.texi (Optimize Options): Note that --param arguments
	are subject to change without notice.

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.

2003-11-30  Jan Hubicka  <jh@suse.cz>

	* i386.c (ix86_emit_restore_regs_using_mov):  Deal with large offsets.

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  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* configure.ac (enable_werror): Fixed typo.
	* configure: Regenerate.

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  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  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  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  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  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-22  Hartmut Penner  <hpenner@de.ibm.com>

	* gcc/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-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  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* pa-protos.h: Update copyright.
	* pa.h: Likewise.
	* pa.md: Likewise.

	* 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.
	* 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  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  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  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  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-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  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-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  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  Eric Botcazou  <ebotcazou@libertysurf.fr>

	PR target/13557
	* config/sparc/sparc.c (function_arg): Reorder the cases.

2004-01-19  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-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  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-18  Roger Sayle  <roger@eyesopen.com>

	* builtins.c (expand_builtin_expect_jump): Fix thinko of reusing
	live "next" variable, which can lead to an infinite loop.

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.

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  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  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  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  Joseph S. Myers  <jsm@polyomino.org.uk>

	* doc/invoke.texi, doc/standards.texi: Point to 3.4 version of
	c99status.html.

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  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  Mark Mitchell  <mark@codesourcery.com>

	* configure.ac: Do not do internal checking or -Werror by default.
	* configure: Regenerated.

	* doc/include/gcc-common.texi (DEVELOPMENT): @clear it.
	* version.c (version_string): Mark as prerelease.

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

	* config/sh/sh.c: Include ggc.h.

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

2003-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>

	* gcc/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
	* gcc/config/rs6000/rs6000.c (word_offset_memref_operand): New
	predicate to handle 'ld' conform addresses.
	* gcc/config/rs6000/rs6000.h (EXTRA_CONSTRAINT): New 'Y'
	contraint.
	(EXTRA_MEMORY_CONSTRAINT): Tell reload which constraint
	are memory contraints.
	* gcc/config/rs6000/rs6000-protos.h (word_offset_memref_operand):
	New prototype.
	* gcc/config/rs6000/rs6000.md (*movdf_hardfloat64):
	Change 'o' to 'Y' constraint.
	(*movdf_softfloat64): Ditto.

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

	* gcc/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>

	* gcc/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

2003-12-31  Jan Hubicka  <jh@suse.cz>

	PR opt/13473
	* recog.c (validate_replace_rtx_1):  Take care for RTL sharing inside
	ASM input operands

	PR opt/12617
	* toplev.c (dump_file_index): Reorder ce3 and bbro.
	(dump_file): Likewise.
	(rest_of_compilation): Likewise.

	PR debug/13367
	* cgraph.c (cgraph_function_possibly_inlined):  Even with
	flag_really_no_inline we inline always_inline functions.
	* cgraphunit.c (cgraph_analyze_function): Clear inlinable flag
	for non-always_inline functions when there is flag_really_no_inline.
	(cgraph_decide_inlining): Limit work done when not inlining.
	(cgraph_decide_inlining_incrementally): Likewise.
	(cgraph_optimize_function): Check whether something got inlined.
	* c-objc-common.c (c_disregard_inline_limits): Do not always inline
	extern inline functions when not inlining.

	* opts.c (decode_options):  Disable crossjumping at -O1
	* invoke.texi (-O1): Document change.

See ChangeLog.10 for earlier changes.
