2002-06-30  Devang Patel  <dpatel@apple.com>

	* objc/objc-act.c (finish_file): Avoid finish_objc() if
	-fsyntax-only.

Fri Jun 28 17:22:37 2002  Denis Chertykov  <denisc@overta.ru>
			  Frank Ch. Eigler  <fche@redhat.com>
			  Matthew Green  <mrg@redhat.com>
			  Richard Henderson <rtl@redhat.com>
			  Dave Hudson  <dave.hudson@ubicom.com>
			  Jeff Johnston  <jjohnstn@redhat.com>
			  Alan Lehotsky <apl@alum.mit.edu>
			  Bernd Schmidt  <bernds@redhat.com>
			  Graham Stott  <grahams@redhat.com>

	* doc/extend.texi: Add ip2k port to description of attribute
	naked.
	* doc/install.texi (Specific): Add ip2k description.
	* doc/install-old.texi (Configurations): Add ip2k to possible
	cpu types.
	* doc/md.texi: Document ip2k constraints.
	* config/ip2k/crt0.S: New file.
	* config/ip2k/ip2k-protos.h: New file.
	* config/ip2k/ip2k.c: New file.
	* config/ip2k/ip2k.h: New file.
	* config/ip2k/ip2k.md: New file.
	* config/ip2k/libgcc.S: New file.
	* config/ip2k/t-ip2k: New file.

2002-06-30  Hans-Peter Nilsson  <hp@bitrange.com>

	* config/mmix/mmix.md ("return"): New pattern.
	* config/mmix/mmix.h (TARGET_MASK_USE_RETURN_INSN)
	(TARGET_USE_RETURN_INSN): New macros.
	(TARGET_DEFAULT): Include TARGET_MASK_USE_RETURN_INSN.
	(TARGET_SWITCHES): Add -msingle-exit and -mno-single-exit.
	* config/mmix/mmix.c (MMIX_OUTPUT_REGNO): Fix spacing.
	(MMIX_POP_ARGUMENT): New macro.
	(mmix_target_asm_function_prologue): When no epilogue is executed,
	just emit a blank line.  Use MMIX_POP_ARGUMENT with final POP insn.
	(mmix_print_operand) <case '.'>: New case.
	(mmix_print_operand_punct_valid_p): Match '.'.
	(mmix_use_simple_return): New function.
	* config/mmix/mmix-protos.h (mmix_use_simple_return): Prototype.
	* doc/invoke.texi (Option Summary) <MMIX Summary>: Add
	-msingle-exit, -mno-single-exit.
	(MMIX Options): Ditto.

2002-06-30  Aldy Hernandez  <aldyh@redhat.com>

	* config/i386/i386.c (ix86_init_mmx_sse_builtins): Fix typos.

2002-06-30  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* gengtype.c (oprintf): Move VA_CLOSE after all fixedarg uses.

2002-06-30  Alan Modra  <amodra@bigpond.net.au>

	* unroll.c (loop_iterations): Handle EQ loops.

2002-06-29  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.md (ctrdi): Allocate pseudo for FPR
	constraint in define_expand, not splitter.
	Formatting.

2002-06-29  Aldy Hernandez  <aldyh@redhat.com>

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

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

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

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

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

	* tree.h: Add build_function_type_list prototype.

	* tree.c (build_function_type_list): New.

2002-06-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* collect2.c (scan_prog_file): Fix typo in message.

2002-06-28  Aaron Lehmann  <aaronl@vitelus.com>

	* fold-cont.c: Remove unused CHARMASK.

2002-06-29  Neil Booth  <neil@daikokuya.co.uk>

	PR preprocessor/7150
	* cppmain.c (scan_translation_unit_trad): Simplify.
	* cppmacro.c (cpp_scan_nooutput): Handle traditional case.

2002-06-29  Neil Booth  <neil@daikokuya.demon.co.uk>

	* config/i386/crtdll.h: Define EXTRA_OS_CPP_BUILTINS.
	Don't use CPP_PREDEFINES.
	* config/i386/cygwin.h (EXTRA_OS_CPP_BUILTINS): New.
	Used TARGET_OS_CPP_BUILTINS in preference to CPP_PREDEFINES.
	* config/i386/djgpp.h, config/i386/i386-coff.h,
	config/i386/i386-interix.h, config/i386/i386-interix3.h,
	config/i386/lynx-ng.h, config/i386/lynx.h, config/i386/mingw32.h,
	config/i386/openbsd.h, config/i386/ptx4-i.h, config/i386/sysv3.h,
	config/i386/uwin.h: Similarly.

2002-06-29  Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>

	* c4x.h: (TARGET_CPU_CPP_BUILTINS): Check flag_inline_functions and
	flag_inline_trees to enable inlining.

2002-06-28  Phil Edwards  <pme@gcc.gnu.org>

	* configure.in (gcc_gxx_include_dir):  Change to match versioned
	C++ headers if --enable-version-specific-runtime-libs is used.
	* configure:  Regenerate.

2002-06-28  Jan Hubicka  <jh@suse.cz>

	* gcse.c (gcse_emit_move_after): Use gen_move_insn to produce the move.

2002-06-28  Stephen Clarke  <stephen.clarke@superh.com>

	* combine.c (combine_simplify_rtx): Pass the mode of the
	shift count, not the shift operation when trying to simplify
	a shift on a SHIFT_COUNT_TRUNCATED target.

2002-06-28  Stephane Carrez  <stcarrez@nerim.fr>

	* config/m68hc11/m68hc11.md ("*addsi3"): Use 'o' constraint to
	avoid the auto increment addressing modes.
	("*subsi3"): Likewise.
	(split for add/sub on address): For 68HC12 push the value on
	the stack and do the operation with a pop.

2002-06-28  Neil Booth  <neil@daikokuya.co.uk>

	* cpplib.c (_cpp_handle_directive): Move #define-specific
	code to the #define handler...
	(do_define): ...here.
	(lex_macro_node): No longer a need to check for comments here.

2002-06-28  Stephane Carrez  <stcarrez@nerim.fr>

	* config/m68hc11/m68hc11.h (OPTIMIZATION_OPTIONS): Define.
	* config/m68hc11/m68hc11-protos.h (m68hc11_optimization_options):
	Declare.
	* config/m68hc11/m68hc11.c (m68hc11_optimization_options): New,
	do not reorder basic blocks at the end when optimizing for size.

2002-06-28  Stephane Carrez  <stcarrez@nerim.fr>

	* config/m68hc11/m68hc11.c (autoinc_mode): New function.
	(m68hc11_make_autoinc_notes): New function.
	(m68hc11_split_move): Be very cautious when spliting a move with
	auto increment/decrement modes because this may result in incompatible
	directions; add REG_INC notes to the resulting insn for CSE reg.

2002-06-28  Stephane Carrez  <Stephane.Carrez@nerim.fr>

	* config/m68hc11/m68hc11.c (register_indirect_p): For 68HC12 a constant
	can be a valid address.

2002-06-28  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/rs6000.c: Remove unusued variables from last
	patch.

2002-06-27  Aldy Hernandez  <aldyh@redhat.com>

	Revert:
	* config/rs6000/rs6000.c (rs6000_override_options): Move
	*SUBTARGET_OVERRIDE_OPTIONS before the -m options.

2002-06-27  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/rs6000.c (altivec_expand_builtin): Move
	lvx/stv/dst builtins...
	(altivec_expand_ld_builtin): ...to here.
	(altivec_expand_st_builtin): ...here.
	(altivec_expand_dst_builtin): ...and here (respectively).

2002-06-28  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/xtensa.h (RETURN_IN_MEMORY): Update comment.

2001-06-08  Bernd Schmidt  <bernds@redhat.com>

	* emit-rtl.c (gen_lowpart_common): Don't create paradoxical FLOAT_MODE
	subregs.
	* recog.c (general_operand, register_operand): Disallow them.

2002-06-28  Neil Booth  <neil@daikokuya.co.uk>

	PR preprocessor/7138
	* cpplib.c (_cpp_handle_directive): Do traditional
	preparation after setting state.angled_headers.
	* cpptrad.c (scan_out_logical_line): Fix potential
	quote bug.

2002-06-27  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/rs6000.c (rs6000_override_options): Move
	*SUBTARGET_OVERRIDE_OPTIONS before the -m options.

2002-06-27  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/xtensa.md: Give "*xxx" names to all unnamed insn's.
	(*lsiu, *ssiu, movstrsi_internal, zero_cost_loop_start,
	zero_cost_loop_end): Remove unnecessary "parallel" from insns.

2002-06-27  Roger Sayle  <roger@eyesopen.com>

	* config/d30v/d30v.h: Remove commented out STACK_REGS #defines.
	* config/stormy16/stormy16.h: Likewise.

	* config/stormy16/stormy16.h (CUMULATIVE_ARGS): Replace typedef
	with #define.

2002-06-26  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* doc/install.texi (Binaries): Add Sinix/Reliant Unix.  Move
	Hitachi entry.  Make punctuation more consistent.

2002-06-27  Matt Kraai  <kraai@alumni.cmu.edu>

	* doc/install.texi: Change ` bit' to `-bit'.
	* doc/md.texi: Change `-bits' to `-bit'.
	* doc/tm.texi: Change `-bits' to ` bits'.

2002-06-27  Daniel Berlin  <dberlin@dberlin.org>

	* gcse.c (hoist_code): Rewrite to only get list of dominated
	blocks once per BB. Also fix reversed test (by removing need for
	the test at all).

2002-06-27  Neil Booth  <neil@daikokuya.co.uk>

	* cpphash.h (_cpp_set_trad_context): Remove.
	* cpplib.c (prepare_directive_trad): Do nothing for #define.
	(cpp_push_buffer, _cpp_pop_buffer): Don't call _cpp_set_trad_context.
	* cpptrad.c: Update comments.
	(_cpp_read_logical_line_trad): Let scan_logical_line handle
	updating the current context.
	(scan_logical_line): Update the current context.
	(_cpp_create_trad_definition): Similarly.
	(_cpp_set_trad_context): Remove.

2002-06-27  Neil Booth  <neil@daikokuya.co.uk>

	PR preprocessor/7070
	* c-lex.c (cb_def_pragma): Don't try to spell CPP_EOF.

2002-06-26  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/xtensa-protos.h (xtensa_return_addr): Declare.
	config/xtensa/xtensa.c (xtensa_return_addr): New function.
	config/xtensa/xtensa.h (RETURN_ADDR_RTX): Use xtensa_return_addr.
	config/xtensa/xtensa.md (fix_return_addr): New pattern.

2002-06-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* mips.c (coprocessor_operand, coprocessor2_operand,
	symbolic_operand): Move prototypes from here...
	* mips-protos.h (coprocessor_operand, coprocessor2_operand,
	symbolic_operand): ...to here.

Wed Jun 26 16:32:57 2002  J"orn Rennecke <joern.rennecke@superh.com>

	* config/sh/crt1.asm: remove _stack label definition
	and sentinel value.

2002-06-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* varasm.c: Include real.h before output.h.

2002-06-26  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/rs6000.h (ALTIVEC_VECTOR_MODE): Revert change to
	check for TARGET_ALTIVEC.

2002-06-26  Nathanael Nerode  <neroden@gcc.gnu.org>

	* config.gcc (vax-*-vms*): Make obselete.

2002-06-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* gcc.c (warn_std): Delete.

2002-06-25  Loren J. Rittle  <ljrittle@acm.org>

	* doc/extend.texi: Fix formatting of last checkin.

2002-06-25  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* config/alpha/alpha.h (TARGET_CPU_CPP_BUILTINS): Remove leading
	underscore from __IEEE_FP and __IEEE_FP_INEXACT.

2002-06-25  Aldy Hernandez  <aldyh@redhat.com>

	* doc/extend.texi (PowerPC AltiVec Built-in Functions): Document
	discrepancies from motorola's documentation.

Tue Jun 25 21:51:13 2002  J"orn Rennecke <joern.rennecke@superh.com>

	* optabs.c (expand_vector_binop, expand_vector_unop): Don't assume
	GET_MODE_UNIT_SIZE (mode) == UNITS_PER_WORD.

	* config/sh/lib1funcs.asm (udivdi3): Make first divide step
	produce a 32 bit result before normalization, then normalize with a
	left shift.  Compute approximative error of 2nd reciprocal
	approximation in 2's complement.  Fix mask generation from upper
	longword of second divide stage result.
	For large divisor, fix shift count used to truncate first stage
	divide result; make decision if to adjust upwards based on comparison
	of higher parts of normalized values.
	(udivdi): Likewise.  Undo normalization of result for large divisor
	case.

2002-06-25  David S. Miller  <davem@redhat.com>

	* config/sparc/sparc.md: Change \\{t,n} to \{t,n}.

2002-06-25  Neil Booth  <neil@daikokuya.co.uk>

	* cpplib.c (do_include_common): Revert to correct line number
	if -traditional.
	* cpptrad.c (scan_out_logical_line): Treat null directive as
	white space.  Invlidate MI optimization for non-whitespace
	text outside a directive.

2002-06-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (SHELL): Set to @SHELL@.
	* fixinc/Makefile.in (SHELL): Likewise.

	* mips.md (fixuns_truncdfsi2, fixuns_truncdfdi2,
	fixuns_truncsfsi2, fixuns_truncsfdi2): Avoid automatic aggregate
	initialization.

2002-06-24  Jeff Law <law@redhat.com>

	* flow.c (propagate_one_insn): When removing an insn
	with a REG_LIBCALL note but not the entire libcall sequence,
	delete the associated REG_RETVAL note.

Mon Jun 24 21:05:09 2002  J"orn Rennecke <joern.rennecke@superh.com>

	* lib1funcs.asm (sdivsi3): Add optimized SH64 implementations.
	(udivsi3): Likewise.  Rewrite SH1 implementation.
	(udivdi3, divdi3, umoddi3, moddi3): New SHmedia functions.
	* sh.md (R20_REG, R21_REG, R22_REG, R23_REG, FR23_REG): New constants.
	(udivsi3_i1_media, divsi3_i1_media): Fix clobber list.
	* config/sh/t-sh64 (LIB1ASMFUNCS): (_udivdi3, _divdi3, _umoddi3): Add.
	(_moddi3): Likewise.

	* lib1funcs.asm (ic_invalidate): Add data cache line writeback.

	* sh.h (FUNCTION_ARG_ADVANCE): Take SHCOMPACT_FORCE_ON_STACK
	arguments into account for stack_regs.

2002-06-24  Matt Kraai  <kraai@alumni.cmu.edu>

	* doc/extend.texi: Change `@dots{}' to `/* @r{@dots{}} */'
	in examples.

2002-06-24  Art Haas  <ahaas@neosoft.com>

	* doc/extend.texi (Other Builtins): Change `...' to `@dots{}'.
	* doc/tm.texi (Frame Layout): Likewise.

2002-06-20  Steve Ellcey  <sje@cup.hp.com>

	* gcc/config.gcc (ia64*-*-hpux*): Set use_collect2 to no.
	Set float_format to i128.

2002-06-24  David S. Miller  <davem@redhat.com>

	* config/sparc/sparc.c (INIT_TARGET_OPTABS): If ARCH64, set the
	32-bit ABI libfuncs to NULL.

	* config/sparc/sparc.md: Use define_insn_and_split.  Use braced
	strings instead of quoted strings for code blocks.

	* expmed.c (expand_divmod): Do not set optab1/optab2 to the shift
	optabs if op1 is const0_rtx.

	* Makefile.in (GTFILES): Add basic-block.h
	* basic-block.h (label_value_list, tail_recursion_label_list):
	Mark with GTY.

2002-06-24  Neil Booth  <neil@daikokuya.co.uk>

	* cpptrad.c (scan_out_logical_line): Check recursing only when
	we know we have a macro invocation in the function-like case.
	Only call _cpp_handle_directive if we know we have a good
	directive, or we want to reject a bad directive.

2002-06-24  Alan Modra  <amodra@bigpond.net.au>

	* doloop.c (doloop_valid_p): Correct comment.
	(doloop_modify_runtime <abs_inc != 1>): Simplify.
	(doloop_modify_runtime <do-while>): Don't emit code when NE.

Thu Jun 20 00:26:53 2002  Denis Chertykov  <denisc@overta.ru>

	* config.gcc: Add support for ip2k.

2002-06-23  Jan Hubicka  <jh@suse.cz>
	    Jeff Law <law@redhat.com>

	* function.h (struct emit_status): Clarify potential contents
	of regno_reg_rtx array.
	* integrate.c (copy_rtx_and_substitute): Update comments.  Make
	sure entry in regno_reg_rtx is a REG before checking REG_POINTER.

	* reg-stack.c (convert_regs_exit): Push the registers to stack in
	proper order.

2002-06-22  Ulrich Weigand  <uweigand@de.ibm.com>

	PR middle-end/6963
	* function.c (assign_stack_temp_for_type): Do not return
	the same MEM rtx for multiple uses of a stack slot.

2002-06-22  David S. Miller  <davem@redhat.com>

	PR target/6841 target/6770 target/6719
	* config/sparc/sparc.h (PREFERRED_RELOAD_CLASS): Return
	NO_REGS	for constant X when CLASS is GENERAL_OR_FP_REGS or
	GENERAL_OR_EXTRA_FP_REGS.

2002-06-22  Neil Booth  <neil@daikokuya.co.uk>

	* cpptrad.c (struct fun_macro): Add line number.
	(scan_out_logical_line): Set it, and use it to report unterminated
	macro invocations.

2002-06-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* genautomata.c (copy_node, VLA_PTR_CREATE, VLA_PTR_EXPAND,
	VLA_PTR_ADD, VLA_HWINT_CREATE, VLA_HWINT_EXPAND, VLA_HWINT_ADD,
	DECL_UNIT, DECL_BYPASS, DECL_AUTOMATON, DECL_EXCL, DECL_PRESENCE,
	DECL_ABSENCE, DECL_RESERV, DECL_INSN_RESERV, REGEXP_UNIT,
	REGEXP_RESERV, REGEXP_SEQUENCE, REGEXP_REPEAT, REGEXP_ALLOF,
	REGEXP_ONEOF, check_name): Const-ify.

2002-06-21  Matt Thomas  <matt@3am-software.com>

	* config/vax/vax.c (vax_output_function_prologue): Use
	REGISTER_PREFIX.  Fix some indentation.
	* config/vax/vax.h (FUNCTION_PROFILER): Use reg_names[].
	(VAX_ISTREAM_SYNC): Define.
	(INITIALIZE_TRAMPOLINE): Use VAX_ISTREAM_SYNC.  Move the
	i-stream sync to the end.
	(REGISTER_PREFIX): Define as "".
	(ASM_OUTPUT_MI_THUNK): Use REGISTER_PREFIX.

2002-06-21  Jason Thorpe  <thorpej@wasabisystems.com>

	* config.gcc (ns32k-*-netbsd*): Remove from list of obsolete
	configurations.

2002-06-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* tree.c (tree_node_kind, tree_node_counts, tree_node_sizes,
	tree_node_kind_names): Wrap in GATHER_STATISTICS macro.

2002-06-21  Matt Thomas  <matt@3am-software.com>

	* config/vax/netbsd.h: Adjust a comment.
	(TARGET_DEFAULT): Redefine as 0.

2002-06-21  Richard Henderson  <rth@redhat.com>

	* bb-reorder.c (make_reorder_chain_1): Search harder for the
	vax casesi fallthru edge.
	* cfglayout.c (cleanup_unconditional_jumps): Use
	redirect_edge_succ_nodup.  Do not delete ADDR_VEC insns as dead.
	* cfgrtl.c (force_nonfallthru_and_redirect): Place redirection
	block after ADDR_VEC.

2002-06-21  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* config/sparc/t-linux64 (EXTRA_MULTILIB_PARTS): Add crtfastmath.o.

2002-06-21  Neil Booth  <neil@daikokuya.co.uk>

	* cpperror.c (cpp_error): For traditional CPP, default to
	diagnostics on pfile->line.
	* cpplib.c (prepare_directive_trad): Set line number for
	diagnostics for #define too.
	* cpptrad.c (skip_whitespace): Skip comments properly.
	(_cpp_expansions_different_trad): Initialize quote2.

2002-06-21  Hans-Peter Nilsson  <hp@bitrange.com>

	* config/mmix/mmix.md: Change GNU CC to GCC in file header comment.
	* config/mmix/mmix.h: Ditto.
	* config/mmix/mmix-protos.h: Ditto.
	* config/mmix/mmix.c: Ditto.  Fix typo in comment.
	* config/mmix/mmix-modes.def: Change GNU CC to GCC in file header
	comment.  Comment extra CC modes.

2002-06-20 Jan Hubicka  <jh@suse.cz>

	* cfglayout.c (scope_to_insns_initialize): Call set_block_levels.
	(scope_to_insns_finalize): Do not call set_block_levels; handle
	sequences.
	(choose_inner_scope): New.
	* rtl.h (choose_inner_scope): Declare.

2002-06-20  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* pa-protos.h (pa_asm_output_mi_thunk): Change third argument to
	HOST_WIDE_INT.
	* pa.c (pa_asm_output_mi_thunk): Likewise.
	(n_deferred_plabels): Change type to size_t.
	(output_deferred_plabels, output_call): Use size_t instead of int.

2002-06-20  Richard Henderson  <rth@redhat.com>

	PR target/4041
	* config/m68k/m68k.md (zero_extendsidi2): Create expander; duplicate
	pattern and adjust constraints for coldfire.

2002-06-20  Richard Henderson  <rth@redhat.com>

	* explow.c (probe_stack_range): Use gen_rtx_fmt_ee.

2002-06-20  Chris Demetriou  <cgd@broadcom.com>

	* config.gcc (mipsisa64-*-elf*, mipsisa64el-*-elf*): New targets.

2002-06-20  Chris Demetriou  <cgd@broadcom.com>

	* config/mips/mips.h (ISA_HAS_FP4): Fix comment to reflect use.

2002-06-20  Stan Shebs  <shebs@apple.com>

	* dominance.c: Include errors.h instead of error.h.

2002-06-20  Neil Booth  <neil@daikokuya.co.uk>

	* cppexp.c (cpp_interpret_integer): Don't force traditional
	numbers to be unsigned.
	* cpplib.c (prepare_directive_trad): Set line number for
	diagnostics.
	* cpptrad.c (scan_out_logical_line): Continue scanning out
	at start of buffer.
	* gcc.c (trad_capable_cpp): Use cc1 always.

2002-06-20  Jeffrey Law  <law@redhat.com>

	* i386.h (TARGET_DEFAULT): Do not turn on frame pointer
	elimination in leaf functions by default yet.

2002-06-20  Richard Sandiford  <rsandifo@redhat.com>

	* combine.c (make_extraction): Reapply to the argument of an ASHIFT.

2002-06-20  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* config/sparc/t-crtfm (crtfastmath.o): Prefix with $(T) for
	multilibs.
	* config/sparc/t-sol2-64 (EXTRA_MULTILIB_PARTS): Add crtfastmath.o.
	Fixes PR other/6836.

Thu Jun 20 19:42:21 CEST 2002  Jan Hubicka  <jh@suse.cz>
			       Pavel Nejedly  <bim@atrey.karlin.mff.cuni.cz>

	Mon Jun 10 20:42:34 CEST 2002  Jan Hubicka  <jh@suse.cz>

	* basic-block.h: Do not include et-forest.h
	(dominance_info): Declare as struct dominance-info.
	* cfglayout.c (cleanup_unconditional_jumps): Remove the edge before
	deleting block.
	* dominance.c (struct dominance_info): Define.
	(BB_NODE, SET_BB_NODE): New macros.
	(bb_hash_func, bb_eq_func): Kill.
	(calculate_dominace_info, free_dominacne_info, set_immediate_dominator,
	nearest_common_dominator, dominated_by_p, recount_dominator,
	add_to_dominance_info, delete_from_dominance_info): update for new
	representation.
	(get_dominated_by, redirect_immediate_dominators): Rewrite using
	enumerate_sons.
	* ifcvt.c (process_double_test_block, merge_if_block, find_cond_trap,
	find_if_case_1, find_if_case_2): Remove killed blocks from dominance
	structure.

	* et-forest.h: Update copyright; revamp all function to operate on
	nodes
	(et_forest_value): Kill.
	(et_forest_enumerate_sons, et_forest_node_value): New.
	* et-forest.c: Update copyright.
	* et-forest.h: Update copyright; revamp all function to operate on
	nodes
	(et_forest_value): Kill.
	(et_forest_enumerate_sons, et_forest_node_value): New.

	Thu Jun  6 22:43:43 CEST 2002  Jan Hubicka  <jh@suse.cz>

	* basic-block.h: Inlude et-forest.h
	(basic_block_def): Kill dominator.
	(dominance_info): New type.
	(loops): Use dominace_info.
	(dominace handling functions): Take dominace_info as argument
	instead of bitmaps.
	(create_preheader): Likewise.
	* cfg.c (entry_exit_blocks): Kill dominator.
	(dump_flow_info): Do not dump dominators.
	* cfglayout.c (cleanup_unconditonal_jumps): Delete deleted block from
	dominators.
	* cfgloop.c (flow_pre_header_find): Use dominacne_info.
	(flow_loops_pre_header_scan, make_forwarder_block,
	canonicale_loop_headers, flow_loops_find): Likewise.
	* dominance.c: Include error.h
	(idoms_to_doms): Kill.
	(bb_hash_func, bb_eq_func): New static functions.
	(debug_dominace_info): New global function.
	(calculate_dominance_info): Use new et forest structure.
	(free_dominace_info, get_immediate_dominator, set_immediate_dominator,
	get_dominated_by, redirect_immediate_dominators,
	nearest_common_dominator, dominated_by_p, verify_dominators,
	recount_dominator, iterate_fix_dominators, add_to_dominace_info,
	delete_from_dominance_info): New global functions.
	* gcse.c (domnators): CHange to dominance_info.
	(alloc_hoist_mem): Do not alloc dominators
	(free_code_hoist_mem): Use free_dominance_info.
	(compute_code_hoist_data): Use dominance_info.
	(hoist_code): Likewise.
	* ifcvt.c (post_dominators): Likewise.
	(find_if_case_2, if_convert): Likewise.
	* predict.c (process_note_predictions, process_note_prediction,
	estimate-probability): Likewise.
	* sched-rgn.c (find_rgns, init_regions): Likewise.
	* ssa-dce.c (find_all_control_dependences, fint_control_depemndence,
	find_pdom, delete_insn_bb, ssa_eliminate_dead_code): Likewise.
	* ssa.c (compute_dominance_frontiers_1, rename_block, rename_registers,
	find_evaluations, convert_to_ssa): Likewise.
	* ssa.h (compute_dominance_frontiers): Likewise.

	Thu Jun  6 22:57:34 CEST 2002  Pavel Nejedly <bim@atrey.karlin.mff.cuni.cz>

	* Makefile.in (et-forest.c): Add.
	* et-forest.c: New file.
	* at-forest.h: New file.

2002-06-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* c-decl.c (c_decode_option): Use ARRAY_SIZE in lieu of explicit
	array size calculation.
	* gengtype.c (NUM_BASE_FILES, create_file, write_gc_root):
	Likewise.

	* diagnostic.c (diagnostic_kind_text): Const-ify.
	* gengtype.c (lang_names): Likewise.

Thu Jun 20 17:25:29 CEST 2002  JAn HUbicka  <jh@suse.cz>

	* combine.c (subst): Be prepared for simplify_subreg to return VOIDmode.

2002-06-20  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* config/sol2.h: New file.
	* config.gcc (i?86-*-solaris2*): Include it before i386/sol2.h.
	(sparc64-wrs-vxworks*): Include it before sparc/sol2.h.
	(sparc-*-chorusos*): Likewise.
	(sparc-*-elf*): Likewise.
	(sparc-*-rtems*, sparc-*-rtemself*): Likewise.
	(sparc64-*-solaris2*, sparcv9-*-solaris2*): Likewise.
	(sparc-hal-solaris2*): Likewise.
	(sparc-*-solaris2*): Likewise.
	(sparclite-*-elf*): Likewise.
	(sparc86x-*-elf*): Likewise.
	(sparc64-*-elf*): Likewise.

	* config/i386/sol2.h (PREFERRED_DEBUGGING_TYPE): Moved to
	config/sol2.h.
	(ASM_SPEC): Override config/sol2.h version for now.
	Removed obsolete GAS_REJECTS_MINUS_S variant.
	(WINT_TYPE, WINT_TYPE_SIZE): Moved to config/sol2.h.
	(HANDLE_PRAGMA_REDEFINE_EXTNAME): Likewise.
	(TARGET_OS_CPP_BUILTINS): Likewise.
	Assert system=unix.
	(CPP_SPEC): Simplified using new CPP_SUBTARGET_SPEC.
	(LIB_SPEC, ENDFILE_SPEC, STARTFILE_SPEC, LINK_SPEC): Moved to
	config/sol2.h.
	(SWITCH_TAKES_ARG, STDC_0_IN_SYSTEM_HEADERS): Likewise.
	(ASM_CPU_SPEC): Define.
	(SUBTARGET_EXTRA_SPECS): Define.

	* config/sparc/sol2-bi.h (LONG_DOUBLE_TYPE_SIZE): Removed, already
	in config/sparc/sol2.h.
	(ASM_SPEC): Moved to config/sol2.h.
	(CPP_CPU_SPEC): Simplified.
	(STARTFILE_SPEC32): Likewise, renamed to STARTFILE_ARCH32_SPEC for
	consistency.
	(STARTFILE_SPEC64): Renamed to STARTFILE_ARCH64_SPEC.
	(STARTFILE_ARCH_SPEC): Use new names STARTFILE_ARCH32_SPEC,
	STARTFILE_ARCH64_SPEC.
	(STARTFILE_SPEC): Moved to config/sol2.h
	(SUBTARGET_EXTRA_SPECS): Add startfile_arch.
	(LINK_ARCH32_SPEC): Moved to config/sol2.h.
	(LINK_ARCH64_SPEC): Simplified.
	(LINK_ARCH_SPEC): Redefined config/sol2.h version for 64-bit support.
	(LINK_SPEC): Moved to config/sol2.h

	* config/sparc/sol2.h (WCHAR_TYPE, WCHAR_TYPE_SIZE): Moved to
	config/sol2.h.
	Use BITS_PER_WORD for size.
	(WINT_TYPE, WINT_TYPE_SIZE): Likewise.
	(HANDLE_PRAGMA_REDEFINE_EXTNAME): Likewise.
	(CPP_PREDEFINES): Removed OS-specific part handled by
	TARGET_OS_CPP_BUILTINS.
	(CPP_SUBTARGET_SPEC): Moved to config/sol2.h.
	(CPLUSPLUS_CPP_SPEC): Removed, handled by TARGET_OS_CPP_BUILTINS.
	(ASM_SPEC): Moved to config/sol2.h.
	(PREFERRED_DEBUGGING_TYPE): Likewise.
	(STARTFILE_SPEC, LIB_SPEC, LINK_SPEC): Likewise.
	(SWITCH_TAKES_ARG, STDC_0_IN_SYSTEM_HEADERS): Likewise.
	(TARGET_DEFAULT): Reordered to match config/sparc/sol2-bi.h version.
	(TRANSFER_FROM_TRAMPOLINE): Moved to config/sol2.h

	* config.gcc (i?86-*-solaris2*): Removed obsolete gas support.
	* config/i386/sol2gas.h: Removed.

Thu Jun 20 12:14:01 CEST 2002  Jan Hubicka  <jh@suse.cz>

	* i386.md (xorqi_1_slp, xorqi_2_slp): New patterns.

2002-06-16  Aldy Hernandez  <aldyh@redhat.com>

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

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

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

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

	* expr.c (vector_mode_valid_p): New.

	* expr.h: Add vector_mode_valid_p.

	* defaults.h (VECTOR_MODE_SUPPORTED_P): Set default.

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

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

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

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

2002-05-20  Richard Henderson  <rth@redhat.com>

	* c-common.c (c_common_get_alias_set): Correctly handle characters.
	Rearrange order of expressions; don't handle vectors here.
	* alias.c (get_alias_set): Let vectors match their components.

2002-06-19  Chris Demetriou  <cgd@broadcom.com>

	* config/mips/mips.c (mips_emit_prefetch): Use hints which
	match desired locality.

2002-06-19  Dhananjay R. Deshpande  <dhananjayd@kpit.com>

	* config/h8300/h8300.c (TARGET_INSERT_ATTRIBUTES): Define.
	(h8300_insert_attributes): New.

2002-06-19  Akim Demaille  <akim@epita.fr>

	* c-parse.in (initelt: identifier ':' initval): Add an empty
	action to fix a type clash.
	(aliasdecl, classdef): Add the missing closing `;'.
	Whitespace changes.
	* gengtype-yacc.y (typedef_struct): Add an empty action to preevnt
	$$ = $1 type clashes.

2002-06-19  Eric Christopher  <echristo@redhat.com>

	* config/mips/mips.c (symbol_operand): New function.
	(mips_emit_prefetch): Ditto.
	* config/mips/mips-protos.h: Define.
	* config/mips/mips.h (ISA_HAS_PREFETCH): Define.
	(CONSTANT_ADDRESS_P): Adjust, use TARGET_GAS.
	(LEGITIMIZE_ADDRESS): Ditto.
	* config/mips/mips.md (prefetch, prefetch_si_address,
	prefetch_si, prefetch_di_address, prefetch_di): New patterns.

2002-06-19  Eric Christopher  <echristo@redhat.com>

	* config/fp-bit.h: Add unordered defines for gofast.

2002-06-19  Vladimir Makarov  <vmakarov@redhat.com>

	* genautomata.c (DECL_UNIT, DECL_BYPASS, DECL_AUTOMATON,
	DECL_EXCL, DECL_PRESENCE, DECL_ABSENCE, DECL_RESERV,
	DECL_INSN_RESERV, REGEXP_UNIT, REGEXP_RESERV, REGEXP_SEQUENCE,
	REGEXP_REPEAT, REGEXP_ALLOF, REGEXP_ONEOF): New macros with
	checking and without it.
	(decl_name, decl_mode_check_failed, regexp_name,
	regexp_mode_check_failed): New functions.
	(gen_cpu_unit, gen_query_cpu_unit, gen_bypass, gen_excl_set,
	gen_presence_set, gen_absence_set, gen_automaton,
	gen_regexp_repeat, gen_regexp_allof, gen_regexp_oneof,
	gen_regexp_sequence, gen_reserv, gen_insn_reserv,
	automaton_decl_hash, automaton_decl_eq_p): Use the macros.
	(find_automaton_decl): Ditto.  Set up mode of work_automaton_decl.
	(insn_decl_hash, insn_decl_hash, insn_decl_eq_p): Use the macros.
	(find_insn_decl): Ditto.  Set up mode of work_insn_decl.
	(decl_hash, decl_eq_p): Use the macros.
	(find_decl): Ditto.  Set up mode of work_decl.
	(process_excls, process_presence_absence, process_decls,
	check_automaton_usage, process_regexp, process_regexp_decls,
	check_usage, loop_in_regexp, check_loops_in_regexps,
	process_regexp_cycles, add_advance_cycle_insn_decl,
	initiate_states, initiate_excl_sets,
	initiate_presence_absence_sets, copy_insn_regexp, transform_1,
	transform_2): Use the macros.
	(transform_3): Ditto.  Check mode before making transformations of
	ALLOF.
	(regexp_transform_func, transform_insn_regexps,
	process_unit_to_form_the_same_automaton_unit_lists,
	form_the_same_automaton_unit_lists_from_regexp,
	form_the_same_automaton_unit_lists,
	process_seq_for_forming_states, process_alts_for_forming_states,
	create_alt_states, form_ainsn_with_same_reservs, make_automaton,
	form_arcs_marked_by_insn, NDFA_to_DFA, set_new_cycle_flags,
	estimate_one_automaton_bound, compare_max_occ_cycle_nums,
	units_to_automata_heuristic_distr, create_ainsns,
	units_to_automata_distr, create_automata): Use the macros.
	(form_regexp): Ditto.  Fix typo in access to fields of ALLOF.
	(longest_path_length, min_issue_delay_pass_states,
	output_dead_lock_vect, output_tables, output_insn_code_cases,
	output_internal_insn_latency_func, output_print_reservation_func,
	output_description, output_automaton_units, generate): Use the
	macros.
	(make_insn_alts_attr): Ditto.  Check case when there are not
	alternatives in the reservation.
	(make_internal_dfa_insn_code_attr, make_default_insn_latency_attr,
	make_bypass_attr, form_important_insn_automata_lists,
	expand_automata): Use the macros.

2002-06-20  Tim Josling  <tej@melbpc.org.au>

	* Makefile.in: Clean up code to check for misspecified languages
	in enable-languages.

2002-06-19  Andrew Pinski <pinskia@physics.uc.edu>

	* cpptrad.c (_cpp_replacement_text_len): initialize len.

2002-06-19  Jason Merrill  <jason@redhat.com>

	* Makefile.in (unstrap, restrap): New targets.
	(bootstrap): Mention restrap.

2002-06-19  Matt Kraai  <kraai@alumni.cmu.edu>

	* except.c (ehl_free): Remove.

	* doc/tm.texi (TARGET_CPU_CPP_BUILTINS): Correct misnamings of
	builtin_define and builtin_define_std.

2002-06-19  Ian Dall  <ian@sibyl.beware.dropbear.id.au>

	* config/ns32k/ns32k.md: Give "*xxx" names to all unnamed insn's.
	(sCOND): Restrict operand class so that gcc knows how to reload them.
	(bitfield_set): Merge two unnamed insn's using alternatives.
	(call_value): Remove constraint on unused uperand.
	(udivmodhi4, udivmodsi4, udivmoddihi4_internal): Remove.
	(udivmoddiqi4_internal, udivmoddihi4, udivmoddiqi4): Remove.

	* longlong.h (count_trailing_zeros): Escape newline and beautify.

2002-06-19  Mark Mitchell  <mark@codesourcery.com>

	* Makefile.in (QMTEST_DIR): Simplify definition.

2002-06-19  Nick Clifton  <nickc@cambridge.redhat.com>

	* config/d30v/d30v.h (CUMULATIVE_ARGS): Replace typedef with
	#define.

2002-06-19  Neil Booth  <neil@daikokuya.co.uk>

	* cpphash.h (struct cpp_reader): Make date and time strings.
	(_cpp_builtin_macro_text, _cpp_copy_replacement_text,
	_cpp_replacement_text_len): New.
	* cppinit.c (cpp_create_reader): Update.
	(init_builtins): Register appropriate builtins for -traditional-cpp.
	* cppmacro.c (new_number_token): Remove.
	(_cpp_builtin_macro_text): New.
	(builtin_macro): Use it.
	(cpp_macro_definition): Update to handle traditional macros.
	* cppmain.c (cb_line_change): Don't do column positioning for
	traditional output.
	* cpptrad.c (enum ls): Rename ls_fun_macro to ls_fun_open.  New
	state ls_fun_close.
	(skip_whitespace): Fix.
	(maybe_start_funlike): Don't set state.parsing_args.
	(scan_out_logical_line): Remove duplicate error.  Use lex_state
	rather than state.parsing_args.
	(push_replacement_text): Handle builtins.
	(_cpp_replacement_text_len, _cpp_copy_replacement_text): New.

2002-06-18  Hans-Peter Nilsson  <hp@axis.com>
	    Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* config/fp-bit.c (_fpmul_parts, _fpdiv_parts): Mark with
	attribute __always_inline__.

2002-06-18  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/xtensa.h (FUNCTION_PROFILER): Respect flag_pic
	when generating the call to _mcount.
	(NO_PROFILE_COUNTERS): Define.

2002-06-18  Richard Henderson  <rth@redhat.com>

	* print-rtl.c (print_rtx): Adjust NOTE argument numbers for
	2002-06-02 change.

Tue Jun 18 20:53:32 2002  J"orn Rennecke <joern.rennecke@superh.com>

	* t-sh (MULTILIB_EXCEPTIONS): Set to ml.
	config/sh/t-linux (MULTILIB_EXCEPTIONS): Clear.
	* config/sh/t-netbsd (MULTILIB_EXCEPTIONS): Likewise.
	* config/sh/t-sh64 (MULTILIB_EXCEPTIONS): Likewise.

	* sh-protos.h (sh_pr_interrupt): Declare.
	* sh.c (sh_pr_interrupt): New function.
	(print_operand, calc_live_regs, sh_expand_prologue): Use it.
	(sh_hard_regno_rename_ok): Likewise.
	* sh.h (NORMAL_MODE): FP_MODE_NONE for interupt handlers.

2002-06-18  Vladimir Makarov  <vmakarov@redhat.com>

	* rtl.def (DEFINE_AUTOMATON): Add description of new options
	`time' and `v'.  Fix incorrect description of option `w'.

	* doc/md.texi: Ditto.

	* genautomata.c (TIME_OPTION, V_OPTION): New macros.
	(gen_automata_option): Process the new options.
	(transform_2, transform_3): Initialize some variables.
	(initiate_automaton_gen): Use the new macros.

2002-06-18  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips-protos.h (mips_initial_elimination_offset): Declare.
	(mips_set_return_address, mips_restore_gp): Declare.
	* config/mips/mips.h (struct mips_frame_info): Move to mips.c
	(current_frame_info): Remove.
	(INITIAL_ELIMINATION_OFFSET): Use mips_initial_elimination_offset.
	* config/mips/mips.c: Remove uses of current_frame_info.
	(struct mips_frame_info): Moved from mips.h.  Remove 'insns_len'.
	(struct machine_function): Add 'frame' and 'insns_len'.
	(current_frame_info, zero_frame_info): Remove.
	(mips_restore_gp, mips_set_return_address): New.
	(mips_initial_elimination_offset): New.
	* config/mips/mips.md (exception_receiver): Use mips_restore_gp.
	(eh_return define_split): Use mips_set_return_address.

2002-06-18  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cpplib.c (dtable): Update.
	(end_directive): Decrement expansion prevention count.
	Clear state.in_expression.
	(prepare_directive_trad): Set state.in_expression.
	Increment expansion prevention count.
	* cpptrad.c (enum ls): New.
	(_cpp_overlay_buffer): Set overlaid_buffer.
	(_cpp_remove_overlay): Use overlaid_buffer.
	(_cpp_read_logcial_line_trad): Update buffer when it might
	have changed.
	(scan_out_logical_line): Handle state transitions for assertions
	and defined() in #if, and for funlike invocations including the
	directive case.  Handle '<' and '>' as a quote mechanism in
	#include.  Warn about unterminated macro invocations.
	* cpphash.h (struct lexer_state): New member in_expression.
	(struct cpp_reader): New member overlaid buffer.

2002-06-18  Hans-Peter Nilsson  <hp@axis.com>

	* config/cris/arit.c (do_31div, __Udiv, __Umod): Mark prototype
	__always_inline__.

2002-06-18  Alan Modra  <amodra@bigpond.net.au>

	* config/ia64/ia64.md (doloop_end_internal): Correct rtl.

	* doloop.c (doloop_optimize): Extract pattern from insn.

2002-06-17  Matt Kraai  <kraai@alumni.cmu.edu>

	* doc/extend.texi (Function Attributes): Remove `,...' from @var.

2002-06-17  Jeff Law <law@redhat.com>

	* libgcc2.c: Do not include symcat.h or machmode.h.

2002-06-17  Richard Henderson  <rth@redhat.com>

	PR target/6922
	* expmed.c (make_tree): Handle SIGN_EXTEND/ZERO_EXTEND.

2002-06-17  Tom Tromey  <tromey@redhat.com>

	* dwarfout.c: Include function.h.

2002-06-17  Andreas Schwab  <schwab@suse.de>

	* print-rtl.c (print_rtx): Print space before vector, not after.
	(debug_rtx): Clear sawclose before printing.
	(debug_rtx_list): Print newline after each list element.
	(debug_rtx_range): Likewise.

2002-06-17  Richard Henderson  <rth@redhat.com>

	* function.h (struct function) [funcdef_no]: Rename profile_label_no.
	(current_function_funcdef_no): Similarly.
	* function.c (funcdef_no): Similarly.
	(prepare_function_start): Set current_function_funcdef_no.
	(expand_function_start): Don't set current_function_profile_label_no.
	* dwarf2out.h (current_funcdef_number): Remove.
	* dwarf2out.c (current_funcdef_number): Remove.  Replace with
	current_function_funcdef_no throughout.
	* dwarfout.c, vmsdbgout.c: Similarly.
	* except.c (sjlj_funcdef_number): Remove.
	(sjlj_emit_function_enter): Use current_function_funcdef_no instead.
	(output_function_exception_table): Likewise.
	* final.c (profile_function): Use current_function_funcdef_no
	instead of current_function_profile_label_no.

2002-06-17  Vladimir Makarov  <vmakarov@redhat.com>

	* sched-ebb.c (init_ready_list): Check INSN_P first.

Mon Jun 17 17:26:15 2002  J"orn Rennecke <joern.rennecke@superh.com>

	* sh.md (divsi3): Update way how to find insns in a sequence.

	* reload1.c (merge_assigned_reloads): Don't change reloads
	other than RELOAD_FOR_INPUT_ADDRESS / RELOAD_FOR_INPADDR_ADDRESS
	to RELOAD_OTHER when there are conflicting input reloads.

2002-06-17  Richard Earnshaw  (rearnsha@arm.com)

	* function.c (epilogue_done): Correctly build a sequence of insns for
	a sibcall epilogue.

2002-06-17  Nick Clifton  <nickc@cambridge.redhat.com>

	* config/fr30/fr30.h (CUMULATIVE_ARGS): Replace typedef with
	#define.

	* config/m32r/m32r.md: Replace gen_sequence with get_insns.

2002-06-16  Richard Henderson  <rth@redhat.com>

	* config/i386/i386.h (BIGGEST_FIELD_ALIGNMENT): Define instead
	of ADJUST_FIELD_ALIGN if IN_TARGET_LIBS.

2002-06-16  Richard Henderson  <rth@redhat.com>

	PR opt/6722
	* regclass.c (globalize_reg): Update regs_invalidated_by_call.

2002-06-16  Neil Booth  <neil@daikokuya.demon.co.uk>

	* config.gcc: Add i386/sysv4-cpp.h; remove i386-aout.h from vxworks.
	* config/i386/i386-aout.h, config/i386/i386elf.h,
	config/i386/sysv4.h: Remove CPP_PREDEFINES.
	* config/i386/linux64.h, config/i386/i386elf.h, config/i386/mach.h,
	config/i386/netware.h, config/i386/rtemself.h, config/i386/sco5.h,
	config/i386/sol2.h, config/i386/vsta.h, config/i386/vxi386.h,
	config/i386/win32.h: Use TARGET_OS_CPP_BUILTINS rather than
	CPP_PREDEFINES and part of CPP_SPEC.
	* config/i386/sysv4-cpp.h: New.

2002-06-16  Richard Henderson  <rth@redhat.com>

	PR c/7030
	* dwarf2out.c (modified_type_die): Don't assign the qualified die
	to the unqualified type.

Sun Jun 16 22:16:10 CEST 2002  Jan Hubicka  <jh@suse.cz>

	* i386-protos.h (x86_field_alignment): Declare.
	* i386.c (x86_field_alignment): Define.
	* i386.h (ADJUST_FIELD_ALIGNMENT): New.
	(BIGGEST_FIELD_ALIGNMENT): Kill.

2002-06-16  Richard Henderson  <rth@redhat.com>

	* vax.md (casesi): Use emit_jump_insn.  Tidy expander pattern.

2002-06-16  Richard Henderson  <rth@redhat.com>

	* c-common.c (flag_ms_extensions): Move from c++ front end.
	* c-common.h (flag_ms_extensions): Declare.
	* c-decl.c (c_decode_option): Add -fms-extensions.
	(grokfield): Don't accept anonymous structures in ISO C mode;
	accept only unnamed anonymous structures in GNU C mode; accept
	Plan 9 extensions in MS mode.
	* c-parse.in (SAVE_EXT_FLAGS, RESTORE_EXT_FLAGS): Rename from
	SAVE/RESTORE_WARN_FLAGS; add flag_iso frobbing; update all callers.
	(extension): Clear flag_iso.
	* doc/invoke.texi (C Dialect Options): Add -fms-extensions.

2002-06-16  Hans-Peter Nilsson  <hp@axis.com>

	PR target/7042
	* reorg.c (make_return_insns) [DELAY_SLOTS_FOR_EPILOGUE]: Exit
	early if current_function_epilogue_delay_list is non-empty.
	* config/cris/cris.md ("return"): Add sanity check asserting that
	current_function_epilogue_delay_list is empty.

2002-06-16  Jeff Law <law@redhat.com>

	* emit-rtl.c (gen_rtx_REG): Temporarily turn off automatic
	sharing of hard registers.

	* toplev.c (rest_of_compilation): Remove redundant conditional.

	* toplev.c (rest_of_compilation): Perform a simpler, less costly
	cleanup of the CFG when not optimizing.

2002-06-16  Alan Modra  <amodra@bigpond.net.au>

	* gcc.c (main): Correct startfile_prefix_spec check.

2002-06-12  Geoffrey Keating  <geoffk@redhat.com>

	* config.gcc: Revert rth's patch of 2002-05-18.  Instead,
	include both darwin.o and rs6000-c.o.

2002-06-15  Roger Sayle  <roger@eyesopen.com>

	* expr.c (compare_from_rtx): Call simplify_relational_operation
	on all comparisons, not just those between integer constants,
	with the correct (possibly unsigned) comparison code.
	(do_compare_rtx_and_jump): Likewise.

2002-06-15  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* Makefile.in (tm_defines): New configuration variable.
	(cs-config.h, cs-hconfig.h, cs-tconfig.h): Rename DEFINES to XM_DEFINES.
	Pass tm_defines in TM_DEFINES.
	(cs-tm_p.h): Rename DEFINES to XM_DEFINES.  Pass TM_DEFINES.
	* config.gcc (tm_defines): New configuration variable.
	(hppa*-*-* | parisc*-*-*): Use tm_defines instead of pa-700.h and
	pa-7100.h headers.  Change hppa1* scheduling default to 7100LC.
	* configure.in: Substitute tm_defines.
	* configure: Rebuilt.
	* mkconfig.sh: Rename DEFINES to XM_DEFINES.  Output TM_DEFINES.
	* doc/install.texi: Update.
	* pa/pa-700.h: Delete file.
	* pa/pa-7100.h: Delete file.

2002-06-15  Roger Sayle  <roger@eyesopen.com>

	* fold-const.c (comparison_to_compcode): New function to convert
	an comparison TREE CODE into a bit-based representation.
	(compcode_to_comparison): New function to convert from this bit
	based representation back to a comparison TREE CODE.
	(fold_truthop): Simplify (x<y) && (x==y) and related composite
	comparisons.

2002-06-15  Aldy Hernandez  <aldyh@redhat.com>

	* tm.texi (MEMBER_TYPE_FORCES_BLK): Document MODE argument.

	* stor-layout.c (compute_record_mode): Remove check for
	FUNCTION_ARG_REG_LITTLE_ENDIAN and VOIDmode when checking for
	MEMBER_TYPE_FORCES_BLK.  Pass new mode field to
	MEMBER_TYPE_FORCES_BLK.

	* config/ia64/hpux.h (MEMBER_TYPE_FORCES_BLK): Same.

	* config/c4x/c4x.h (MEMBER_TYPE_FORCES_BLK): Same.

2002-06-14  Jeff Sturm  <jsturm@one-point.com>

	* config/sparc/sparc.h (DYNAMIC_CHAIN_ADDRESS): Add SPARC_STACK_BIAS.

2002-06-14  Steve Ellcey  <sje@cup.hp.com>

	* configure.in (USE_UNWIND_EXCEPTIONS): Add support to set
	USE_UNWIND_EXCEPTIONS if --enable-libunwind-exceptions is set.
	* configure, config.in: Regenerate.

2002-06-14  Eric Botcazou  <ebotcazou@multimania.com>

	* loop.c (check_final_value): Use v->always_executed
	instead of v->always_computable.
	* unroll.c (final_giv_value): Don't calculate the final
	value as a function of the biv if the giv is not computed
	for every loop iteration.

2002-06-14  Eric Botcazou  <ebotcazou@multimania.com>

	* loop.c (for_each_insn_in_loop): Fix formatting and comments.

2002-06-14  Eric Botcazou  <ebotcazou@multimania.com>

	PR c/6677
	* convert.c (convert_to_integer) [LSHIFT_EXPR]: Don't pass
	the truncation down when the target type is signed.
	[trunc1]: Use unsigned arithmetic for LSHIFT_EXPR.
	* fold-const.c (extract_muldiv) [NOP_EXPR]: Don't pass through
	the conversion if the target type is a smaller type.

2002-06-14  Richard Henderson  <rth@redhat.com>

	* fold-const.c (fold) [compare ops]: Move X>=C / X<C transfomation
	earlier.  Re-factor comparisons vs extrema.

2002-06-14  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.md (builtin_zapnot): Fix op2 mode.

2002-06-14  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* rtl.h (SCHED_GROUP_P): Disallow CODE_LABEL, BARRIER and NOTE.
	* sched-deps.c (add_dependence): Likewise.
	(group_leader): Likewise.
	* sched-rgn.c (init_ready_list): Likewise.
	* doc/rtl.texi: Adjust accordingly.

2002-06-13  Jeffrey Law  <law@redhat.com>

	* gcse.c (delete_null_pointer_checks_1): Inform caller if any
	null pointer checks were eliminated.  Update prototype.
	(delete_null_pointer_checks): Similarly.
	* rtl.h (delete_null_pointer_checks): Update prototype.
	* toplev.c (rest_of_compilation): Only run cleanup_cfg if
	delete_null_pointer_checks deletes one or more null
	pointer checks.  Do not run cleanup_cfg before gcse, the
	CFG is accurate and optimized at that point..

	* rs6000.c (rs6000_frame_related): Avoid unwanted sharing
	of hard registers.

2002-06-14  Ulrich Weigand  <uweigand@de.ibm.com>

	* Makefile.in (libgcc.mk): Depend on specs.

Fri Jun 14 12:15:11 2002  J"orn Rennecke <joern.rennecke@superh.com>

	* sh.md (mulsi3): Update way how to find insns in a sequence.

Fri Jun 14 12:04:02 2002  Dhananjay R. Deshpande <dhananjayd@kpit.com>

	* sh.h: Define HARD_REGNO_RENAME_OK
	* sh.c: sh_hard_regno_rename_ok: New. If current function has
	interrupt_handler attribute, only registers saved on stack are OK.
	* sh-protos.h: Declare sh_hard_regno_rename_ok.

2002-06-14  Kaz Kojima  <kkojima@gcc.gnu.org>

	* config/sh/sh.md (jump): Emit jump insn.
	(call_pcrel): Get pattern of the result of gen_call_site.
	(call_value_pcrel, sibcall_pcrel, GOTaddr2picreg): Likewise.

2002-06-14  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cpphash.h (struct cpp_buffer): Remove saved_line_base.
	* cpptrad.c: Update comments.
	(skip_whitespace, copy_comment): Take a new parameter.
	(skip_escaped_newlines): Don't duplicate escaped newline test.
	(copy_comment): Different location for CUR, decide here how
	to copy / replace the comment.
	(skip_whitespace): Copy whitespace.
	(_cpp_overlay_buffer, _cpp_remove_overlay): Don't play with line_base.
	(scan_out_logical_line): Let copy comment handle keeping or
	replacing comments.
	(scan_parameters, _cpp_create_trad_definition): Update.

2002-06-13  Alan Lehotsky  <apl@alum.mit.edu>

	* reload.c (get_secondary_mem,find_reloads_address,
	find_reloads_address_1): Pass reference to MEM to find_reloads_address
	so that LEGITIMIZE_RELOAD_ADDRESS will be called.

2002-06-13  Jessica Han  <jessica@cup.hp.com>

	* defaults.h (TARGET_VTABLE_ENTRY_ALIGN): New.
	(TARGET_VTABLE_DATA_ENTRY_DISTANCE): New.
	* doc/tm.texi: Document them.
	* config/ia64/ia64.h (TARGET_VTABLE_ENTRY_ALIGN): New.
	(TARGET_VTABLE_DATA_ENTRY_DISTANCE): New.
	(TARGET_VTABLE_USES_DESCRIPTORS): 4 word descriptors for 32-bit mode.
	(ASM_OUTPUT_FDESC): Likewise.

2002-06-13  Eric Christopher  <echristo@redhat.com>

	* diagnostic.c (output_format): Fix thinko.

Thu Jun 13 22:34:33 2002  J"orn Rennecke <joern.rennecke@superh.com>

	* config/sh/coff.h (HAS_INIT_SECTION, INVOKE__MAIN): Don't define.
	(DWARF2_UNWIND_INFO): Define to 0.

	* config/sh/sh.c (calc_live_regs): Don't use initial_value
	optimization for PR_MEDIA_REG.

2002-06-13  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cpphash.h (_cpp_lex_identifier_trad): Remove.
	* cpplib.c (end_directive): Don't skip, always remove overlay
	apart from #define.
	(prepare_directive_trad): Handle NULL pfile->directive.
	(_cpp_handle_directive): Always call prepare_directive_trad
	if traditional.
	* cppmain.c (check_multiline_token): Rename account_for_newlines,
	generalize inputs.
	(scan_translation_unit_trad): Use it.
	* cpptrad.c (skip_comment): Rename copy_comment, copy comment to
	output, get escaped newline in comment close correct.
	(check_output_buffer, skip_whitespace): Update.
	(_cpp_lex_identifier_trad): Remove.
	(scan_out_logical_line): Handle -C and comments in directives
	properly.

Thu Jun 13 20:18:38 2002  J"orn Rennecke <joern.rennecke@superh.com>

	* config.gcc: Add support for sh[234]*-*-elf*, sh[2346lbe]*-*-linux*.
	* config/sh/linux.h (TARGET_DEFAULT): Use TARGET_CPU_DEFAULT.
	* sh.h (SELECT_SH1, SELECT_SH2, SELECT_SH3, SELECT_SH3E): New macros.
	(SELECT_SH4_NOFPU, SELECT_SH4_SINGLE_ONLY, SELECT_SH4): Likewise.
	(SELECT_SH4_SINGLE, SELECT_SH5_64, SELECT_SH5_64_NOFPU): Likewise.
	(SELECT_SH5_32, SELECT_SH5_32_NOFPU, SELECT_SH5_COMPACT): Likewise.
	(SELECT_SH5_COMPACT_NOFPU): Likewise.
	(TARGET_SWITCHES): Use them.
	(TARGET_CPU_DEFAULT): Define if not already defined.
	(TARGET_DEFAULT): Use it.
	(LINK_DEFAULT_CPU_EMUL): Value now depends on TARGET_CPU_DEFAULT.
	* config/sh/t-linux (MULTILIB_OPTIONS): Use MULTILIB_ENDIAN.
	* config/sh/t-monolib: New file.

2002-06-13  Roger Sayle  <roger@eyesopen.com>

	* toplev.c (rest_of_compilation): Simplify (and correct) the
	logic of the first delete-null-pointer-checks pass.

Thu Jun 13 18:24:17 CEST 2002  Jan Hubicka  <jh@suse.cz>

	* i386.c (ix86_expand_movstr):  Fix pasto.

Thu Jun 13 18:18:17 CEST 2002  Jan Hubicka  <jh@suse.cz>

	* reload.c (find_valid_class):  Fix thinko in my previous patch.

2002-06-13  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.h (TARGET_CPU_CPP_BUILTINS): New macro.
	* config/s390/linux.h (TARGET_OS_CPP_BUILTINS): New macro.
	(CPP_PREDEFINES, CPP_SPEC, CPP_ARCH31_SPEC, CPP_ARCH64_SPEC): Remove.
	(EXTRA_SPECS): Remove cpp_arch31 and cpp_arch64.

2002-06-13  Gabriel Dos Reis  <gdr@codesourcery.com>

	* tree-inline.c (expand_call_inline): Don' mess with _DECL
	fields.

2002-06-13  Gabriel Dos Reis  <gdr@codesourcery.com>

	* diagnostic.c (output_format): Recognize "%H" as a format
	specifier for a location_t.
	(text_specifies_location): New function.
	(diagnostic_set_info): Use it.

2002-06-13  Jeffrey Law  <law@redhat.com>

	* emit-rtl.c (static_regno_reg_rtx): Define.
	(init_emit_once): Initialize static_regno_reg_rtx.
	(init_emit): Copy static_regno_reg_rtx into regno_reg_rtx instead
	of building new hard reg objects once per function.
	(gen_rtx_REG): Try to share hard regs.
	* regclass.c (init_fake_stack_mems): New function broken out from
	init_regs.
	* rtl.h (init_fake_stack_mems): Declare.
	* toplev.c (lang_independent_init): Call init_regs before
	init_emit_once.  Call init_fake_stack_mems after init_emit_once.

	* i386.md (extenddfxf2, extenddftf2): Fix typo/thinko.

	* alias.c (argument_registers): Remove.
	(init_alias_once): Initialize static_reg_base_value here.  Remove
	initialization of argument_registers.
	(init_alias_once_per_function): Remove.
	(init_alias_analysis): Copy all the entries from static_reg_base_value
	into new_reg_base_value all at once.
	* rtl.h (init_alias_once_per_function): Remove declaration.
	* function.c (prepare_function_start): Do not call
	init_alias_once_per_function.

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

2002-06-13  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/r3900.h (MIPS_CPU_STRING_DEFAULT): Make lower case.

2002-06-13  David S. Miller  <davem@redhat.com>

	* expmed.c (init_expmed): Remove duplicate init of 'reg'.

2002-06-13  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cpplib.c (end_directive): Handle line skipping.  Only remove
	the rest of the line if the directive was valid.
	* cppmacro.c (_cpp_push_text_context): Set NODE_DISABLED when
	expanding a traditional macro.
	* cpptrad.c (recursive_macro): New.
	(read_logical_line_trad): Handle skipping.
	(scan_out_logical_line): Continue after a successful directive.
	Don't expand macros whilst skipping, or if recursing.
	(_cpp_create_trad_definition): scan_out_logical_line now sets
	the output current position.

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

	From Chris Demetriou  <cgd@broadcom.com>
	* config/mips/mips.h (ISA_HAS_FP4): Add ISA_MIPS64 and fix
	comment.
	(ISA_HAS_MADD_MSUB): Ditto.
	(ISA_HAS_NMADD_NMSUB): Ditto.

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

	* config.gcc: Consolidate little endian handling and
	little/big endian targets.
	* config/mips/elfl.h: Remove file.
	* config/mips/elfl64.h: Ditto.
	* config/mips/ecoffl.h: Ditto.
	* config/mips/r3900.h (SUBTARGET_CPP_SPEC): Remove.

2002-06-12  Geoffrey Keating  <geoffk@redhat.com>

	* gengtype.h (xvasprintf): New prototype.
	(xasprintf): New prototype.
	(struct outf): New.
	(get_output_file): Return an outf_p.
	(header_file): Is now an outf_p.
	(base_files): Now are outf_p.
	(oprintf): New.
	* gengtype.c: Replace all output FILE * with outf_p; use oprintf
	rather than stdio operations.  Use xasprintf in a few places,
	when appropriate.
	(xvasprintf): New.
	(xasprintf): New.
	(struct filemap): Delete.
	(files): Delete.
	(output_files): New.
	(oprintf): New.
	(create_file): Create an outf_p.  Add parameter to indicate output
	file name, change all callers.
	(open_base_files): Create gtype-desc.c here.
	(get_output_file_with_visibility): Rewrite.
	(get_output_file_name): Just look at 'name' field in struct outf.
	(close_output_files): Rewrite.

2002-06-12  Jason Thorpe  <thorpej@wasabisystems.com>

	* config/vax/vax.h (MASK_UNIX_ASM, MASK_VAXC_ALIGNMENT)
	(MASK_G_FLOAT): Define.
	(TARGET_UNIX_ASM, TARGET_VAXC_ALIGNMENT, TARGET_G_FLOAT): Use them.
	(TARGET_SWITCHES): Likewise.
	(TARGET_DEFAULT): Likewise.

2002-06-12  Daniel Jacobowitz  <drow@mvista.com>

	* config/mips/elf.h (DWARF2_DEBUG_INFO): Define.
	* config/mips/mips.c (mips_output_filename): Don't print a
	".file" directive if we are using DWARF-2.
	(mips_output_function_prologue): Do not emit source file
	name for TARGET_GAS.

Wed Jun 12 16:45:13 CEST 2002  Jan Hubicka  <jh@suse.cz>

	* i386.md (shift patterns): Use (TARGET_SHIFT1 || optimize_size) to
	decide whether emit the short opcode.
	* i386.h (x86_shift1): Declare.
	(TARGET_SHIFT1): New macro.
	* i386.c (x86_shift1): New global variable.

	* toplev.c (rest_of_compilation): Call find_basic_block pre-loop
	unconditionally; make loop to rebuild CFG; kill unnecesary
	find_basic_block calls; kill compute_bb_for_insn call.
	* cfgbuild.c (find_basic_blocks): Kill compute_bb_for_insn call.
	* haifa-sched.c (sched_init): Likewise.
	* ssa-ccp.c (ssa_const_prop): Likewise.
	* ssa-dce.c (ssa_eliminate_dead_code): Likewise.

2002-06-11  David S. Miller  <davem@redhat.com>

	* emit-rtl.c (emit_*_scope): Only access INSN_SCOPE if
	active_insn_p.

2002-06-11  Richard Henderson  <rth@redhat.com>

	* c-common.c (builtin_define_type_max): New.
	(cb_register_builtins): Define __SCHAR_MAX__, __SHRT_MAX__,
	__INT_MAX__, __LONG_MAX__, __LONG_LONG_MAX__, __CHAR_BIT__.

	From Joseph S. Myers:
	* glimits.h: Rewrite to expect the double underscore definitions
	from the compiler.

	* config/alpha/unicosmk.h, config/avr/avr.h, config/h8300/h8300.h,
	config/i386/linux64.h, config/ia64/aix.h, config/ia64/hpux.h,
	config/ia64/ia64.h, config/m68hc11/m68hc11.h, config/m68hc11/m68hc12.h,
	config/mips/mips.h, config/mmix/mmix.h, config/mn10200/mn10200.h,
	config/pa/pa.h, config/rs6000/aix43.h, config/rs6000/aix51.h,
	config/rs6000/linux64.h, config/s390/linux.h, config/sh/sh.h,
	config/stormy16/stormy16.h: Don't define any of __SHRT_MAX__,
	__INT_MAX__, __LONG_MAX__, or __LONG_LONG_MAX__.

2002-06-11  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.c (ALPHA_BUILTIN_THREAD_POINTER): New.
	(ALPHA_BUILTIN_SET_THREAD_POINTER): New.
	(code_for_builtns): Update.
	(alpha_init_builtins): Add __builtin_thread_pointer and
	__builtin_set_thread_pointer.
	(alpha_expand_builtin): Handle void builtins.
	* doc/extend.texi (Alpha Built-in Functions): Update.

2002-06-11  Hans-Peter Nilsson  <hp@axis.com>

	PR target/6997
	* config/cris/cris.md ("sleu"): Set attribute "cc" to "none".

2002-06-11  Zack Weinberg  <zack@codesourcery.com>

	* config.gcc: Make the name of the extra-modes file adjustable
	by target stanzas.
	(s390x, strongarm, xscale stanzas): Use this facility.
	* configure.in: Update to match.
	* configure: Regenerate.

2002-06-11  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/rs6000.c (rs6000_emit_minmax): Treat unsigned
	max/mins as unsigned GE compares.

2002-06-11  Jason Thorpe  <thorpej@wasabisystems.com>

	* config.gcc (vax-*-bsd*): Add vax/bsd.h to ${tm_file}.
	* config/vax/bsd.h: New file.
	* config/vax/netbsd.h: Add missing notice.
	(CPP_PREDEFINES): Remove.
	(TARGET_OS_CPP_BUILTINS): Define.
	(CPP_SPEC): Use NETBSD_CPP_SPEC.
	* config/vax/openbsd.h: Update copyright years.
	(CPP_PREDEFINES): Remove.
	(TARGET_OS_CPP_BUILTINS): Define.
	* config/vax/ultrix.h: Likewise.
	* config/vax/vaxv.h: Likewise.
	* config/vax/vms.h: Likewise.
	* config/vax/vax.h (TARGET_CPU_CPP_BUILTINS): Define.
	(CPP_PREDEFINES, CPP_SPEC): Remove.

Wed Jun 12 01:50:28 CEST 2002  Jan Hubicka  <jh@suse.cz>

	* i386.md (addqi_1_slp, subqi_1_slp
	(andqi_ext0, testqi_ext0): Remove unnecesary check.
	(addhi*, addqi*): Simplify "dec" condition.
	(testsi to testqi splitters): Remove TARGET_PROMOTE_QImode check.
	(and, or, xor to QImode splitters): New.
	(iorqi_ext*): New.
	(xorqi_ext_0): New.
	(xorqi_ext_1): Rename to xorqi_ext_2; bring to sync with and versions.
	(andqi_ext_1_rex64): New.
	(ashrqi*_slp): New.
	(ashlqi*_slp): New.
	(lshlqi*_slp): New.
	(rotrqi3*_slp): New.
	(rotlqi3*_slp): New.

2002-06-11  Geoffrey Keating  <geoffk@redhat.com>

	* config.gcc (powerpc*-*-*, rs6000-*-*-*): Don't bother including
	softfloat.h.
	* config/rs6000/vxppc.h (CPP_ENDIAN_BIG_SPEC): Delete.
	(CPP_ENDIAN_LITTLE_SPEC): Delete.
	* config/rs6000/sysv4le.h (CPP_ENDIAN_DEFAULT_SPEC): Delete.
	* config/rs6000/sysv4.h (CPP_SYSV_SPEC): Delete _SOFT_FLOAT setting,
	__LONG_DOUBLE_128__ setting, _CALL_* setting.
	(CPP_DEFAULT_SPEC): Delete.
	(CPP_FLOAT_DEFAULT_SPEC): Delete.
	(CPP_LONGDOUBLE_DEFAULT_SPEC): Delete.
	(CPP_SYSV_DEFAULT_SPEC): Delete.
	(CPP_ENDIAN_BIG_SPEC): Delete.
	(CPP_ENDIAN_LITTLE_SPEC): Delete.
	(CPP_ENDIAN_SPEC): Delete.
	(CPP_SPEC): Don't include cpp_endian, cpp_cpu.
	(SUBTARGET_EXTRA_SPECS): Delete cpp_sysv_default, cpp_endian_default,
	cpp_endian, cpp_endian_big, cpp_endian_little, cpp_float_default,
	cpp_longdouble_default.
	* config/rs6000/softfloat.h: Delete.
	* config/rs6000/rs6000.h (CPP_CPU_SPEC): Delete.
	(EXTRA_SPECS): Delete cpp_cpu.
	(TARGET_CPU_CPP_BUILTINS): New.
	* config/rs6000/rs6000-protos.h (rs6000_cpu_cpp_builtins): New
	prototype.
	* config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): New.
	* config/rs6000/linux64.h (CPP_PREDEFINES): Remove endianness defines.
	(CPP_DEFAULT_SPEC): Delete.
	* config/rs6000/eabiaix.h (CPP_SYSV_DEFAULT_SPEC): Delete.
	* config/rs6000/darwin.h (CPP_PREDEFINES): Don't define __BIG_ENDIAN__.
	* config/rs6000/beos.h (CPP_SPEC): Remove cpp_cpu.
	(CPP_DEFAULT_SPEC): Delete.
	* config/rs6000/aix51.h (CPP_SPEC): Remove cpp_cpu, -D_ARCH_PPC.
	(CPLUSPLUS_CPP_SPEC): Likewise.
	(CPP_CPU_SPEC): Delete.
	(CPP_DEFAULT_SPEC): Delete.
	* config/rs6000/aix43.h (CPP_SPEC): Remove cpp_cpu, -D_ARCH_PPC.
	(CPLUSPLUS_CPP_SPEC): Likewise.
	(CPP_CPU_SPEC): Delete.
	(CPP_DEFAULT_SPEC): Delete.
	* config/rs6000/aix41.h (CPP_SPEC): Remove cpp_cpu.
	(CPP_DEFAULT_SPEC): Delete.
	* config/rs6000/aix.h (CPP_SPEC): Remove cpp_cpu.
	(CPP_DEFAULT_SPEC): Delete.

	* doc/gty.texi: Small updates.

2002-06-12  Gabriel Dos Reis  <gdr@codesourcery.com>

	* objc/objc-act.c (warn_with_ivar): Adjust calls to
	diagnostic_count_error.
	(warn_with_method): Likewise.

	* diagnostic.h (warnings_are_errors_message): New field of
	diagnostic_context.
	(diagnostic_count_error): Rename to diagnostic_count_diagnostic to
	match semantics.
	* diagnostic.c: Adjust calls to diagnostic_count_error through out.
	(diagnostic_count_diagnostic): Make aware of other kinds of
	diagnostics.
	(diagnostic_initialize): Initialize warnings_are_errors_message field.

2002-06-11  Tom Tromey  <tromey@redhat.com>

	For PR java/6520:
	* fold-const.c (fold_convert): Don't modify existing tree's type.

2002-06-11  Geoffrey Keating  <geoffk@redhat.com>

	* config/rs6000/ppc-asm.h: Remove some Windows NT leftovers.

2002-06-11  Richard Henderson  <rth@redhat.com>

	* caller-save.c (init_caller_save): Clear INSN_CODE each iteration.

2002-06-11  Richard Henderson  <rth@redhat.com>

	* defaults.h (EH_FRAME_SECTION_NAME): Don't define if
	DWARF2_UNWIND_INFO is false.

2002-06-11  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/t-xtensa (LIBGCC1_TEST, CROSS_LIBGCC1): Delete.

	* config/s390/s390.c (emit_prologue): gen_store_multiple
	returns an insn now, not a pattern.

2002-06-11  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* Makefile.in (gccinstall.dvi): Pass absolute pathnames to
	$(TEXI2DVI) -o.

Tue Jun 11 21:53:37 CEST 2002  Jan Hubicka  <jh@suse.cz>

	* i386.c (x86_promote_QImode): Set for Athlon
	(x86_fast_prefix): New global variable.
	(x86_arch_always_fancy_math_387): Fix formating.
	* i386.h (x86_fast_prefix): Declare
	(TARGET_FAST_PREFIX): define.
	* i386.md (and to strict_low_part, HI to SI
	promoting splitter): Use new macro.

	* i386.h (RTX_COSTS): float_extend is not for free for SSE.

2002-06-11  Zack Weinberg  <zack@codesourcery.com>

	* Makefile.in (distclean): Delete junk left in testsuite
	directory, too.

2002-06-11  Jeffrey Law <law@redhat.com>

	* emit-rtl.c (try_split): Use INSN_LAST, not LAST_INSN to get the
	last insn created by the splitter.

	* caller-save.c (init_caller_save): Move creation of SAVEINSN
	and RESTINSN into into the scope of the sequence.

	* mips.c (mips_expand_prologue): Use emit_jump_insn for trivial
	RETURN insns.

	* loop.c (loop_regs_scan): Avoid useless generation of REG objects.

	* mips.c (function_arg_advance): gen_ashldi3 returns an INSN now,
	not the pattern.  So extract the pattern from the insn.

	* mips.c (embedded_pic_fnaddr_reg): Fix typo.

2002-06-11  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.md (movsi): Only use floating point
	register alternatives when operands are already fprs.
	(movdi_31, movdi_64): Likewise.

2002-06-11  David S. Miller  <davem@redhat.com>

	* emit-rtl.c (try_split): Do not abort on non-INSN_P.
	Only run RTX equality checks on INSN_P rtl.

2002-06-11  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.md (reload_base, ltorg): Remove.
	* s390.c (s390_stop_dump_lit_p, s390_dump_literal_pool,
	s390_asm_output_pool_prologue, s390_pool_start_insn): Remove.
	* s390-protos.h (s390_stop_dump_lit_p, s390_dump_literal_pool,
	s390_asm_output_pool_prologue): Likewise.
	* s390.h (s390_pool_start_insn): Likewise.

	* s390.c (s390_output_symbolic_const): Remove support for
	old-style pool chunks.
	(s390_function_epilogue): Likewise.
	(s390_output_constant_pool): Likewise.  Also, fix incorrect
	alignment for 64-bit literal pools.
	(print_operand_address): Remove 'y' and 'Y' format flags.
	* s390.h (ASM_OUTPUT_POOL_PROLOGUE): Remove support for
	old-style pool chunks.
	(ASM_OUTPUT_SPECIAL_POOL_ENTRY): Likewise.
	(ASM_OUTPUT_POOL_EPILOGUE): Remove.
	(S390_CHUNK_MAX, S390_CHUNK_OV, S390_POOL_MAX): Remove.

	* s390.c (consttable_operand): New function.
	* s390-protos.h (consttable_operand): Declare it.
	* s390.h (PREDICATE_CODES): Add consttable_operand.
	* s390.md (consttable_qi, consttable_hi, consttable_si, consttable_di,
	consttable_sf, consttable_df, pool_start_31, pool_end_31,
	pool_start_64, pool_end_64, reload_base, reload_base2): New insns.
	* s390.c (struct constant, struct constant_pool): New data types.
	(constant_modes, gen_consttable): New variables.
	(s390_start_pool, s390_end_pool, s390_add_pool,
	s390_dump_pool, s390_free_pool): New functions.
	(s390_chunkify_pool): Completely reimplement literal pool
	overflow handling.

	* s390.c (s390_pool_overflow): New variable.
	* s390.h (s390_pool_overflow): Declare it.
	* s390.md (cjump, icjump): Use it to adapt length for out-of-range
	jumps in literal pool overflow situations.

	* s390.c (s390_decompose_address): Accept new-style pool chunk offsets.
	(s390_frame_info): Account for possible use of RETURN_REGNUM
	by new literal pool overflow code.
	(s390_emit_prologue): Likewise.

2002-06-05  David S. Miller  <davem@redhat.com>

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

2002-06-11  Roger Sayle  <roger@eyesopen.com>
	    Andreas Jaeger <aj@suse.de>

	* cfgbuild.c: Update copyright years.

2002-06-11  Andreas Schwab  <schwab@suse.de>

	* config/m68k/m68k.h (PREDICATE_CODES): Define.

2002-06-11  Eric Christopher  <echristo@redhat.com>

	* doc/tm.texi (Run-time Target): Add comment about flag_iso
	and strict ANSI.
	* config/mips/ecoff.h (CPP_PREDEFINES): Remove.
	* config/mips/ecoffl.h: Ditto.
	* config/mips/elf64.h (SUBTARGET_CPP_SPEC): Remove.
	(CPP_PREDEFINES): Ditto.
	* config/mips/elfl64.h: Ditto.
	* config/mips/elfl.h: Ditto.
	* config/mips/iris3.h (CPP_PREDEFINES, SUBTARGET_CPP_SPEC): #if 0
	out until irix header consolidation.
	* config/mips/iris5.h (CPP_PREDEFINES, SUBTARGET_CPP_SPEC): Replace
	with SUBTARGET_OS_CPP_BUILTINS.
	* config/mips/iris6.h: Ditto.
	(CPLUSPLUS_CPP_SPEC): Remove.
	* config/mips/linux.h: Ditto.
	* config/mips/netbsd.h: Ditto.
	* config/mips/openbsd.h: Ditto.
	* config/mips/rtems.h: Ditto.
	* config/mips/rtems64.h: Ditto.
	* config/mips/sni-svr4.h: Ditto.
	* config/mips/mips.h (ISA_MIPS1, ISA_MIPS2, ISA_MIPS3, ISA_MIPS4,
	ISA_MIPS32, ISA_MIPS64): New defines.
	(GENERATE_MULT3_SI, HAVE_SQRT_P, ISA_HAS_64BIT_REGS,
	ISA_HAS_BRANCHLIKELY, ISA_HAS_CONDMOVE, ISA_HAS_8CC, ISA_HAS_FP4,
	ISA_HAS_COND_TRAP, ISA_HAS_MADD_MSUB, ISA_HAS_NMADD_NMSUB,
	ISA_HAS_CLZ_CLO, ISA_HAS_DCLZ_DCLO): Use.
	(TARGET_CPU_CPP_BUILTINS): Define.
	(CPP_PREDEFINES, LONG_MAX_SPEC, CPP_FPR_SPEC, CPP_SPEC): Remove.
	* config/mips/mips.md (mulsi3_mult3): Use ISA_MIPS32/64.
	(movdicc): Remove check for ISA_MIPS32.
	 (bunordered, bordered, bungt, bunlt, buneq, bunge, bunle,
	sunordered_df, sunordered_sf, sordered_df, sordered_sf,
	sunlt_df, sunlt_sf, sungt_df, sungt_sf, suneq_df, suneq_sf, sunge_df,
	sunge_sf, sunle_df, sunle_sf): New patterns.

2002-06-11  Neil Booth  <neil@daikokuya.demon.co.uk>

	* Makefile.in: Update cppmain.o.
	* cpphash.h (struct cpp_reader): Move some members to a
	nested structure.
	(trad_line): Rename saved_line.
	(_cpp_read_logical_line_trad): Update.
	(_cpp_remove_overlay): New.
	* cppinit.c (cpp_create_reader): No need to set saved_line.
	(cpp_destroy): Update.
	(cpp_read_main_file): Only overlay if compiling.
	* cpplex.c (continue_after_nul): Return false if in directive.
	* cpplib.c (EXPAND): New.
	(directive_table, SEEN_EOL): Update.
	(end_directive): Remove overlay if traditional; don't skip
	line in traditional #define.
	(prepare_directive_trad): New.
	(_cpp_handle_directive, run_directive): Update for traditional
	directives.
	(lex_macro_node): Simplify, don't use lex_identifier_trad.
	* cpplib.h (struct options): Add preprocess_only.
	* cppmain.c: Don't include intl.h.
	(cpp_preprocess_file): Set options->preprocess_only.
	(scan_translation_unit_trad): Fix, and print line numbers.
	* cpptrad.c (check_output_buffer, lex_identifier, scan_parameters,
	maybe_start_funlike, scan_out_logical_line, replace_args_and_push,
	save_replacement_text, _cpp_create_trad_definition): Update for
	variable renaming.
	(_cpp_overlay_buffer): Save line number.
	(_cpp_remove_overlay): Rename from restore_buff, restore line.
	(_cpp_read_logical_line_trad): Don't handle overlays here.
	(scan_out_logical_line): Process directives.

2002-06-11  Danny Smith  <dannysmith@users.sourforge.net>

	* gthr-win32.h: Wrap functions in extern "C".
	(__gthread_key_t): Typedef as unsigned long,
	not win32 DWORD.
	(__GTHREAD_ONCE_INIT): Use 0, not win32 FALSE.
	(__gthread_mutex_t): Typedef as void*, not win32 HANDLE.
	(__gthr_win32_once, __gthr_win32_key_create,
	__gthr_win32_key_delete, __gthr_win32_getspecific,
	__gthr_win32_setspecific, __gthr_win32_mutex_init_function,
	__gthr_win32_mutex_lock,__gthr_win32_mutex_trylock,
	__gthr_win32_mutex_unlock): Declare.
	(__gthread_once,__gthread_key_create,
	__gthread_key_delete, __gthread_getspecific,
	__gthread_setspecific, __gthread_mutex_init_function,
	__gthread_mutex_lock,__gthread_mutex_trylock,
	__gthread_mutex_unlock): Call corresponding
	__gthr_win32_* extern implementations if #defined
	__GTHREAD_HIDE_WIN32API.
	* config/i386/t-mingw32 (LIB2FUNCS_EXTRA): Set to
	$(srcdir)/config/i386/gthr-win32.c
	* config/i386/gthr-win32.c: New implementation file.
	(__gthr_win32_once, __gthr_win32_key_create,
	__gthr_win32_key_delete, __gthr_win32_getspecific,
	__gthr_win32_setspecific, __gthr_win32_mutex_init_function,
	__gthr_win32_mutex_lock,__gthr_win32_mutex_trylock,
	__gthr_win32_mutex_unlock): New functions, based on
	static inlines in gthr-win32.h.

2002-06-10  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/xtensa.c (override_options): Don't warn about
	using -fpic or -fPIC when PIC is enabled by default.

2002-06-10  Roger Sayle  <roger@eyesopen.com>

	* toplev.c (rest_of_compilation): Revert flag_if_conversion change.

2002-06-10  Zack Weinberg  <zack@codesourcery.com>

	* Makefile.in (MACHMODE_H): Add @extra_modes_file@.
	* configure.in: If $srcdir/config/${cpu_type}/${cpu_type}-modes.def
	exists, substitute its pathname as @extra_modes_file@, define
	EXTRA_MODES_FILE to be an appropriate string to #include it
	with, and define EXTRA_CC_MODES to 1.

	* machmode.def: Update comments.  Include EXTRA_MODES_FILE if
	it's defined.  Get rid of redundancy in calling sequence for
	CC; don't use it to define CCmode, to avoid a warning.
	* libgcc2.c: Include symcat.h for the sake of machmode.def.

	* arc-modes.def, arm-modes.def, c4x-modes.def, i386-modes.def,
	i960-modes.def, ia64-modes.def, m88k-modes.def, mmix-modes.def,
	pa-modes.def, pdp11-modes.def, rs6000-modes.def, sparc-modes.def:
	New files.
	* arc.h, arm.h, c4x.h, i386.h, i960.h, ia64.h, m88k.h, mmix.h,
	pa.h, pdp11.h, rs6000.h, sparc.h: Don't define EXTRA_CC_MODES.

	* doc/sourcebuild.texi, doc/tm.texi: Document new scheme for
	defining extra CC modes.

2002-06-10  Roger Sayle  <roger@eyesopen.com>
	    Andreas Jaeger <aj@suse.de>

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

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

2002-06-10  Roger Sayle  <roger@eyesopen.com>

	* simplify-rtx.c (simplify_replace_rtx): Allow replacement
	of matching registers.

2002-06-10  Roger Sayle  <roger@eyesopen.com>

	* toplev.c (rest_of_compilation): Disable early if-conversion pass.
	* gcse.c (bypass_conditional_jumps): Fix typo in setcc test.

2002-06-10  Hans-Peter Nilsson  <hp@bitrange.com>

	* config/mmix/mmix.h: Improve comments.
	(CPP_SPEC, CPP_PREDEFINES): Don't define.
	(TARGET_CPU_CPP_BUILTINS): Define.
	(CANONICALIZE_COMPARISON): Don't define, replace with comment.
	(PREDICATE_CODES) <"mmix_reg_or_8bit_or_256_operand">: Remove
	unused predicate.
	* config/mmix/mmix.c (MMIX_OUTPUT_REGNO): Add cast to avoid
	compiler warning.
	(mmix_constant_address_p): Remove another
	redundant test before case.
	(mmix_canonicalize_comparison): Remove unused function.
	(mmix_print_operand_address): Don't test and adjust for operand in
	non-canonical format.
	(mmix_reg_or_8bit_or_256_operand): Remove unused predicate.
	(mmix_gen_compare_reg): Don't use CANONICALIZE_COMPARISON.

2002-06-10  Zack Weinberg  <zack@codesourcery.com>

	* config/m32r/m32r.h: Don't define SELECT_CC_MODE.
	* config/m32r/m32r-protos.h: Don't prototype m32r_select_cc_mode.
	* config/m32r/m32r.c: Don't define m32r_select_cc_mode.
	(gen_compare): Use CCmode unconditionally.

2002-06-10  Jakub Jelinek  <jakub@redhat.com>

	PR optimization/6759
	* cse.c (cse_insn): Fold src_eqv just once, store it folded back into
	the REQ_EQUAL note.

2002-06-10  Jakub Jelinek  <jakub@redhat.com>

	PR c/6660
	* c-decl.c (grokfield): Allow user defined types if they declare
	structs or unions for unnamed fields.

2002-06-10  Jakub Jelinek  <jakub@redhat.com>

	PR c/6809
	* print-rtl.c (print_mem_expr): Don't crash on unnamed fields.

2002-06-10  Jakub Jelinek  <jakub@redhat.com>

	PR optimization/6842
	* combine.c (combine_simplify_rtx) [SUBREG]: Don't ICE if VOIDmode
	operand subreg cannot be simplified.

2002-06-10  Jakub Jelinek  <jakub@redhat.com>

	* varasm.c (const_hash): Handle FDESC_EXPR like ADDR_EXPR.
	(compare_constant): Likewise.
	(output_addressed_constants): Likewise.

2002-06-10  Jakub Jelinek  <jakub@redhat.com>

	* cfgcleanup.c (try_optimize_cfg): Make sure merge_blocks doesn't
	merge bb with itself.

2002-06-10  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.md (builtin_zap): Fix thinkos expanding mask.
	(builtin_zapnot): Likewise.

	* config/alpha/ev5.md: Don't combine shift and mvi insns in one
	reservation.

2002-06-10  Eric Christopher  <echristo@redhat.com>

	* config/i386/i386.c (ix86_osf_output_function_prologue): Remove
	prototype and function.
	(TARGET_ASM_FUNCTION_PROLOGUE): Remove OSF version.
	(call_insn_operand): Remove half pic references.
	(legitimate_address_p): Ditto.
	* config/i386/i386.h: Remove half pic defines.

2002-06-10  Eric Christopher  <echristo@redhat.com>

	* doc/extend.texi (Return Address): Add note explaining the side-
	effects of inlining on __builtin_return_address.

2002-06-10  Tom Tromey  <tromey@redhat.com>

	* Makefile.in (LANGHOOKS_DEF_H): Include langhooks-def.h.
	(c-common.o): Depend on langhooks.h.

2002-06-10  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cpphash.h (_cpp_read_logical_line_trad,
	_cpp_expansions_different_trad): Update prototypes.
	* cpplex.c (continue_after_nul): New.
	* cppmain.c: Include cpphash.h.
	(scan_translation_unit_trad): New.
	(cpp_preprocess_file): Call it.
	* cpptrad.c (_cpp_read_logical_line_trad): Take new parameter
	overlay.
	(_cpp_expansions_different_trad): Update prototype.

Mon Jun 10 18:02:24 2002  J"orn Rennecke <joern.rennecke@superh.com>

	Fix cfi generation for SH[1-4]:

	* sh.c (frame_insn): New function.
	(output_stack_adjust): Add parameter emit_fn.  All callers changed.
	(push): Now returns rtx.  Use frame_insn.
	(sh_expand_prologue): Clear RTX_FRAME_RELATED_P for second push
	of a DF register.
	* sh.h (INCOMING_RETURN_ADDR_RTX, DWARF_FRAME_RETURN_COLUMN): Define.

2002-06-10  Zack Weinberg  <zack@codesourcery.com>

	* Makefile.in (STAGESTUFF): Add s-gtype, gt-*.h, gtype-*.h,
	and gtype-desc.c.
	(mostlyclean): Delete specs.h, options.h, gencheck.h here...
	(distclean): ... not here.  But do delete all testsuite/*.log,
	testsuite/*.sum files here.  Delete mkheaders.  Delete
	po/*.gmo and the testsuite directory in a split tree build.

2002-06-10  Jeffrey Law  <law@redhat.com>

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

2002-06-10  Daniel Berlin  <dberlin@dberlin.org>

	* Makefile.in (ssa.o): Add dependency on $(RTL_H), which was missing.

2002-06-10  Richard Sandiford  <rsandifo@redhat.com>

	* gcc.c (process_command): Avoid assignment to read-only location.
	Fix sizeof calculation.

2002-06-10  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cpphash.h (struct cpp_macro): Put comments on their own lines.
	(_cpp_expansions_different_trad): New.
	* cppmacro.c (warn_of_redefinition): Fix for traditional case.
	* cpptrad.c (canonicalize_text): New.
	(scan_out_logical_line): Handle no arguments correctly.
	(save_replacement_text): Commit memory when finished.
	(_cpp_expansions_different_trad): New.

2002-06-10  Tim Josling  <tej@melbpc.org.au>

	* gengtype.c (unnamed enum containing BASE_FILE_*): Add languages
	TREELANG and COBOL.
	(lang_names): Add treelang and cobol.
	(get_file_basename): Add code to support treelang and cobol as
	4th and 5th users of c-common.c.

2002-06-09  Geoffrey Keating  <geoffk@redhat.com>

	* Makefile.in (install-driver): Install driver as
	$(target_alias)-gcc-$(version).
	* gcc.c (spec_version): Make const.
	(process_command): Handle -V and -b by using exec.
	* doc/invoke.texi (Target Options): Restore -V option,
	update docs for -b option.

2002-06-10  Tim Josling  <tej@melbpc.org.au>

	* configure.in (remaining_languages_check):
	Added check that all languages specified were found.
	Exit if not found. Previous behavior was silent failure.
	* configure: Regenerated.

2002-06-10  Tim Josling  <tej@melbpc.org.au>

	 First steps to making treelang documentation compliant, based on
	 instructions in sourcebuild.texi. Also add to gcc.c list of
	 default languages.

	* doc/contrib.texi: Add self as contributor of treelang.

	* doc/frontends.texi: Add mention of treelang.

	* doc/invoke.texi (Overall Options): Add mention of treelang.

	* doc/standards.texi:  Add mention of treelang.

2002-06-09  Hans-Peter Nilsson  <hp@axis.com>

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

2002-06-09  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cpphash.h (_cpp_push_text_context): Update.
	(_cpp_arguments_ok): New.
	* cppmacro.c (_cpp_arguments_ok): New, split out from...
	(collect_args): ...here.
	(_cpp_push_text_context): Change inputs.
	* cpptrad.c (struct fun_macro, maybe_start_funlike, save_argument,
	replace_args_and_push): New.
	(lex_identifier, _cpp_lex_identifier_trad, scan_parameters):
	Don't use IS macros directly.
	(scan_out_logical_line): Handle function-like macro argument
	collection.
	(push_replacement_text): Update.
	(replacement_length): Remove.
	(_cpp_create_trad_definition): Don't skip whitespace before
	checking for '('.

2002-06-09  Marek Michalkiewicz  <marekm@amelek.gda.pl>

	* config/avr/avr.c (avr_mcu_types): Update for new devices.
	* config/avr/avr.h (TARGET_SWITCHES, AVR_MEGA): Add -mshort-calls.
	(LINK_SPEC, CRT_BINUTILS_SPECS): Update for new devices.
	* config/avr/avr.md ("type" and "length" attributes): New type
	"xcall", length 1 or 2 if AVR_MEGA.  Use in all patterns that
	output a single "call" or "rcall" insn depending on device size.
	* config/avr/t-avr (MULTILIB_MATCHES): Update for new devices.

2002-06-09  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/{aix43.h,aix5.1} (ASM_CPU_SPEC): Add power3
	synonym for 630.  Add power4.  Remove embedded processors.  Use -m604
	assembler option.
	(CPP_CPU_SPEC): Add power3 and power4.
	(PROCESSOR_DEFAULT): Change to 604e.
	* config/rs6000/rs6000.h (ASM_CPU_SPEC): Similar additions.
	(CPP_CPU_SPEC): Similar additions.
	(enum process_type): Add POWER4.
	(RTX_COSTS): Add POWER4.
	(CPP_CPU_SPEC): Similar additions.
	* config/rs6000/linux64.h (PROCESSOR_DEFAULT): Define.
	(PROCESSOR_DEFAULT64): Define.
	* config/rs6000/rs6000.c (rs6000_override_options): Add power4.
	(rs6000_adjust_cost): Add 603, 604, 604e, 620, 630, Power4 to
	branch adjustment.
	(rs6000_issue_rate): Add Power4.
	* config/rs6000/rs6000.md (cpu attr): Add power4.
	(iu compare): Remove 604, 604e, 620, 630.
	Add basic Power4 scheduling information.
	(mfcr/mtcrf): Change type attribute to cr_logical.

2002-06-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* gengtype.h (error_at_line): Use PARAMS, not VPARAMS.  Add
	ATTRIBUTE_PRINTF_2.
	* gengtype-lex.l: Fix format specifier warning.

	* genautomata.c: Don't include ctype.h or limits.h.  Use ISSPACE,
	not isspace.
	* gengtype-lex.l: Don't include ctype.h and use ISSPACE/ISIDNUM in
	lieu of isspace/IDchar.
	* gengtype.c: Likewise for ctype.h and ISALNUM vs isalnum.
	* read-rtl.c: Likewise for ctype.h.  Don't define ISDIGIT or
	ISSPACE.

2002-06-08  Zack Weinberg  <zack@codesourcery.com>

	* Makefile.in (LIBCPP_OBJS): Take out version.o.
	* cpphash.h (cpp_reader): Take out print_version member.
	* cppinit.c: (cpp_handle_option): Don't do anything with
	-version.  Just set help_only for --version, --target-help.
	Just set verbose option for -v.
	(cpp_post_options): Don't print a version string.

2002-06-08  Marek Michalkiewicz  <marekm@amelek.gda.pl>

	* config/avr/avr.c (TARGET_SECTION_TYPE_FLAGS): New.
	(avr_section_type_flags): New, handle .noinit* sections.

2002-06-08  Jason Thorpe  <thorpej@wasabisystems.com>

	* config/sh/netbsd-elf.h (SUBTARGET_EXTRA_SPECS): Define
	and include netbsd_entry_point.
	(SUBTARGET_LINK_SPEC): Define as NETBSD_LINK_SPEC_ELF.
	(NETBSD_ENTRY_POINT): Define.

2002-06-08  Jason Thorpe  <thorpej@wasabisystems.com>

	* config/sh/sh.h (SUBTARGET_EXTRA_SPECS): Define empty
	if not already defined.
	(EXTRA_SPECS): Add SUBTARGET_EXTRA_SPECS.

2002-06-08  Marek Michalkiewicz  <marekm@amelek.gda.pl>

	* config/avr/avr.c (avr_regs_to_save): No need to save any registers
	in a noreturn function.
	(avr_output_function_prologue, avr_output_function_epilogue):
	Correct function size calculation.  Do not crash on empty function.
	(avr_output_function_epilogue): No need for epilogue after a BARRIER.

2002-06-08  Jason Thorpe  <thorpej@wasabisystems.com>

	* config/mips/netbsd.h (SUBTARGET_EXTRA_SPECS): Add
	netbsd_link_spec and netbsd_entry_point.
	(LINK_SPEC): Use %(netbsd_link_spec).
	(NETBSD_ENTRY_POINT): Define.

2002-06-08  Jason Thorpe  <thorpej@wasabisystems.com>

	* config/sparc/netbsd-elf.h (LINK_ARCH32_SPEC): Only specify
	linker emulation.
	(LINK_ARCH64_SPEC): Likewise.
	(LINK_SPEC, NETBSD_ENTRY_POINT): Define.
	(SUBTARGET_EXTRA_SPECS): Add netbsd_link_spec and netbsd_entry_point.

2002-06-08  Marc Espie  <espie@openbsd.org>

	* lists.c (free_list):  Fix typo in comment.

2002-06-08  Andreas Jaeger  <aj@suse.de>

	* lcm.c (optimize_mode_switching): Add unused attribute for
	variable.

	* sched-deps.c (sched_analyze): Remove unused variable.

2002-06-08  Gabriel Dos Reis  <gdr@codesourcery.com>

	* diagnostic.def: Don't capitalize diagnostict descriptors.

2002-06-08  Jason Thorpe  <thorpej@wasabisystems.com>

	* config/m68k/netbsd-elf.h (EXTRA_SPECS): Add netbsd_entry_point.
	(LINK_SPEC): Define as NETBSD_LINK_SPEC_ELF.
	(NETBSD_ENTRY_POINT): Define.

2002-06-08  Jason Thorpe  <thorpej@wasabisystems.com>

	* config/i386/netbsd-elf.h (LINK_SPEC): Define as
	NETBSD_LINK_SPEC_ELF.
	(SUBTARGET_EXTRA_SPECS): Add netbsd_entry_point.
	(NETBSD_ENTRY_POINT): Define.
	* config/i386/netbsd64.h (LINK_SPEC): Use %(netbsd_link_spec).
	(SUBTARGET_EXTRA_SPECS): Add netbsd_link_spec and
	netbsd_entry_point.
	(NETBSD_ENTRY_POINT): Define.

2002-06-08  Jason Thorpe  <thorpej@wasabisystems.com>

	* config/alpha/netbsd.h (SUBTARGET_EXTRA_SPECS): Add
	netbsd_link_spec and netbsd_entry_point.
	(LINK_SPEC): Use %(netbsd_link_spec).
	(NETBSD_ENTRY_POINT): Define.

2002-06-08  Jason Thorpe  <thorpej@wasabisystems.com>

	* config/netbsd-elf.h (LINK_SPEC): Rename to...
	(NETBSD_LINK_SPEC_ELF): ...this.  Use %(netbsd_entry_point)
	to specify program entry point.

2002-06-07  Jeff Law <law@redhat.com

	* emit-rtl.c (init_emit): Add hard registers to regno_reg_rtx.
	* combine.c (move_deaths): Use regno_reg_rtx for hard regs rather
	than creating a new register.
	(distribute_notes): Likewise.
	* df.c (df_reg_use_gen): Likewise.
	(df_reg_clobber_gen): Likewise.
	(df_ref_record): Likewise.
	* expr.c (use_regs): Likewise.
	* flow.c (propagate_one_insn): Likewise.
	(mark_set_1): Likewise.
	(mark_used_reg): Likewise.
	* reload.c (emit_reload_insns): Likewise.

2002-06-07  Roger Sayle  <roger@eyesopen.com>

	* simplify-rtx.c (simplify_gen_relational): Simplify RTL of the form
	(ne (comp x y) 0) into (comp x y) where comp is a comparison code.
	Simplify (eq (comp x y) 0) into (revcomp x y) if the sense of the
	comparison code comp can be reversed.

2002-06-07  Roger Sayle  <roger@eyesopen.com>

	* fold-const.c (fold) [EQ_EXPR]:  Place both integer and real
	constants last in comparisons.  Optimize (x+1.0)>0.0 into the
	equivalent x > -1.0 when -ffast-math.

2002-06-07  Jason Thorpe  <thorpej@wasabisystems.com>

	* config.gcc (mips*-*-netbsd*): Add mips/t-netbsd to ${tmake_file}.
	* config/mips/t-netbsd: New file.

2002-06-07  Zack Weinberg  <zack@codesourcery.com>

	* cppinit.c (COMMAND_LINE_OPTIONS): Give all relevant -W
	options their own entries.
	(parse_option): Clarify comment.
	(cpp_handle_option): Remove 'ignore' parameter and OPT_W
	special case.  Replace if/strcmp chain for -W options with
	use of new OPT_* entries for them.
	(cpp_handle_options): Update to match.
	* cpplib.h: Remove last parameter to cpp_handle_option from prototype.
	* c-decl.c: Update call to cpp_handle_option.

2002-06-07  Akim Demaille  <akim@epita.fr>

	* gengtype-yacc.y (optionseqopt): Add the ending `;' to the action.
	Whitespace changes.

2002-06-07  Jeffrey Law  <law@redhat.com>

	* sched-deps.c (free_deps): Avoid calling free_INSN_LIST_list
	on empty lists.

2002-06-07  H.J. Lu  (hjl@gnu.org)

	* configure.in: Add --enable-__cxa_atexit.
	* configure: Regenerated.
	* config.in: Likewise.

	* defaults.h (DEFAULT_USE_CXA_ATEXIT): New. Defined to be 0 if
	not defined.

2002-06-07  Gabriel Dos Reis  <gdr@merlin.nerim.net>

	* diagnostic.c (diagnostic_build_prefix): Fix initialization.

2002-06-07  Jason Thorpe  <thorpej@wasabisystems.com>

	* config/mips/netbsd.h (CACHE_FLUSH_FUNC): Define.

2002-06-07  Jason Merrill  <jason@redhat.com>

	* cppexp.c (num_equality_op): Use a temporary variable to work
	around gcc 3.0.4 bug.

2002-06-07  Gabriel Dos Reis  <gdr@codesourcery.com>

	* diagnostic.c (diagnostic_build_prefix): Tidy.

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

	* cpptrad.c (struct block, BLOCK_HEADER_LEN, BLOCK_LEN,
	scan_parameters, save_replacement_text, replacement_length): New.
	(scan_out_logical_line): Take a macro and save parameters if
	non-NULL.
	(_cpp_logical_line_trad): Update.
	(_cpp_create_trad_definition): Update to handle function-like
	macros.
	* cpplex.c (new_buff): Update.
	(struct dummy, DEFAULT_ALIGNMENT, CPP_ALIGN): Move...
	* cpphash.h: ...here.
	(CPP_ALIGN2, _cpp_save_parameter): New.
	* cppmacro.c (save_parameter): Rename, export.
	(parse_params): Update.

2002-06-07  Andreas Jaeger  <aj@suse.de>

	* config/mmix/mmix.c: Remove extra broken prototype for
	mmix_init_machine_status.

2002-06-06  Geoffrey Keating  <geoffk@redhat.com>

	* gengtype.c: Add comments before all the routines.

2002-06-07  Jason Thorpe  <thorpej@wasabisystems.com>

	* config.gcc (sh5*-*-netbsd*): Remove sh/t-netbsd-sh5-32
	from and add t-sh64 to ${tmake_file}.
	(sh64*-*-netbsd*): Add t-sh64 to ${tmake_file}.
	* config/sh/t-netbsd-sh5 (LIB1ASMFUNCS): Remove.
	* config/sh/t-netbsd-sh5-32: Remove.
	* config/sh/t-netbsd-sh5-64 (MULTILIB_OPTIONS): Use
	MULTILIB_ENDIAN.
	(MULTILIB_DIRNAMES): Define.

Thu Jun  6 23:14:46 CEST 2002  Jan Hubicka  <jh@suse.cz>

	* i386.md (and promoting splitters): Disable QI to SImode promoting
	when doing so changes immediate to be 32bit.

	* rtl.h (emit_*_scope): Declare.
	* emit-rtl.c (emit_*_scope): New global functions.
	(try_split): Copy scope.
	* ifcvt.c (noce_try_store_flag, noce_try_store_flag_constants,
	noce_try_flag_inc, noce_try_store_flag_mask, noce_try_cmove,
	noce_try_cmove_arith, noce_try_minmax, noce_try_abs,
	noce_process_if_block, find_cond_trap): Copy scopes.
	* recog.c (peephole2_optimize): likewise.

2002-06-06  Jeffrey Law  <law@redhat.com>

	* h8300.h (OK_FOR_U): Fix thinko exposed by flag checking.

Thu Jun  6 21:06:25 2002  J"orn Rennecke <joern.rennecke@superh.com>

	* gengtype-lex.l (INITIAL): New rule for "'"("\\".|[^\\])"'".

2002-06-06  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* Makefile.in (TEXI_GCCINSTALL_FILES): Define.
	($(docdir)/gccinstall.info): New target.
	(info): Depend on it.
	(gccinstall.dvi): New target.
	(dvi): Depend on it.
	* doc/.cvsignore: Ignore new info files.
	* doc/install.texi (@setfilename): Reflect new info filename.

Thu Jun  6 15:57:23 2002  J"orn Rennecke <joern.rennecke@superh.com>

	* sh.c (machine_dependent_reorg): Don't set RTX_UNCHANGING_P
	on an UNSPEC.

Thu Jun  6 07:17:43 2002  Nicola Pero  <n.pero@mi.flashnet.it>

	PR objc/6834
	* objc/objc-lang.c (LANG_HOOKS_GET_ALIAS_SET): Define to be
	c_common_get_alias_set.
	(LANG_HOOKS_SAFE_FROM_P): Define to be c_safe_from_p.

2002-06-06  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* emit-rtl.c (get_first_nonnote_insn, get_last_nonnote_insn): New
	functions.
	* rtl.h (get_first_nonnote_insn, get_last_nonnote_insn): Declare.
	* avr/avr.c (avr_output_function_epilogue): Use above to determine
	function size.
	* pa/pa.c (pa_output_function_prologue): Likewise.

2002-06-05  David S. Miller  <davem@redhat.com>

	* integrate.c (subst_constants): Handle 'B' RTL format.

2002-06-05  Eric Christopher  <echristo@redhat.com>

	* varasm.c (make_decl_rtl): Fix comment for removed
	halfpic.c.

2002-06-05  Eric Christopher  <echristo@redhat.com>

	* Makefile.in: Remove missed halfpic bits.

2002-06-05  Eric Christopher  <echristo@redhat.com>

	* toplev.c: Remove half-pic.
	* config/mips/mips.c: Ditto.
	* config/mips/mips.h: Ditto. Remove unused defines.
	* config/mips/openbsd.h: Update comment to reflect above.
	* config/mips/mips.md: Remove half-pic constraints.
	* halfpic.h: Delete.
	* halfpic.c: Ditto.

2002-06-05  Jeffrey Law  <law@redhat.com>

	* pa.h (EXTRA_CONSTRAINT, T case): Further refine so that it
	rejects (mem (lo_sum (reg) (unspec))), but will allow
	(mem (lo_sum (reg) (symbol_ref)) for PA2.0.

2002-06-05  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cpphash.h (_cpp_create_definition): Update prototype.
	(_cpp_push_text_context, _cpp_create_trad_definition): New.
	( cpp_lex_identifier_trad): New.
	(_cpp_set_trad_context): New.
	* cppinit.c (cpp_finish_options): Don't conditionalize builtins.
	* cpplib.c (SEEN_EOL): Update.
	(lex_macro_node): Update for -traditional.
	(cpp_push_buffer, _cpp_pop_buffer): Similarly.
	* cppmacro.c (_cpp_create_definition): Split into
	create_iso_definition() and _cpp_create_trad_definition().
	(warn_of_redefinition): Update prototype; handle traditional
	macros.
	(_cpp_push_text_context): New.
	* cpptrad.c (skip_whitespace, push_replacement_text): New.
	(lex_identifier): Call ht_lookup with correct start.
	(_cpp_lex_identifier_tradm _cpp_create_trad_definition,
	_cpp_set_trad_context): New.
	(scan_out_logical_line): Update to handle changing contexts.

Wed Jun  5 20:42:31 2002  J"orn Rennecke <joern.rennecke@superh.com>

	* config.gcc (sh-*-elf*,  sh64*-*-elf*): Unify.
	(shl*-*-elf*): Add.
	* config/sh/t-be (MULTILIB_ENDIAN): Set.
	* config/sh/t-le (MULTILIB_ENDIAN): Likewise.
	* t-sh (MULTILIB_ENDIAN): Set.
	(MULTILIB_OPTIONS): Use it.
	* t-sh64 (MULTILIB_OPTIONS): Likewise.
	(MULTILIB_DIRNAMES): Likewise.

2002-06-05  Gabriel Dos Reis  <gdr@codesourcery.com>

	* toplev.h (report_error_function): Remove.

	* diagnostic.h (location_t): New datatype.
	(text_info): Likewise.
	(diagnostic_info): Likewise.
	(output_prefix): New macro.
	(diagnostic_last_function_changed): Likewise.
	(diagnostic_set_last_function): Likewise.
	(diagnostic_last_module_changed): Likewise.
	(diagnostic_set_last_module): Likewise.
	(report_diagnostic): Now macro.
	(diagnostic_set_info): Declare.

	* diagnostic.c (report_problematic_module): Rename to
	diagnostic_repor_current_module.
	(set_diagnostic_context): Remove.
	(count_error): Rename to diagnostic_error_count.
	(error_function_changed): Remove.
	(record_last_error_function): Likewise.
	(error_module_changed): Likewise.
	(record_last_error_module): Likewise.
	(context_as_prefix): Rename to diagnostic_build_prefix.
	(flush_diagnostic_buffer): Rename to diagnostic_flush_buffer.
	(diagnostic_set_info): New function.

	* objc/objc-act.c: #include diagnostic.h
	(error_with_ivar): Adjust call to count_error.
	(warn_with_method): Likewise.
	* objc/Make-lang.in (objc-act.o): Depend on diagnostic.h

2002-06-05  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/xtensa.c (xtensa_build_va_list): Use
	lang_hooks.types.make_type instead of make_node; set up
	__va_list_tag type decl.
	(xtensa_builtin_saveregs): Remove broken use of
	RTX_UNCHANGING_P and unnecessary use of MEM_IN_STRUCT_P
	for saved registers; add varargs alias set.

2002-06-05  Neil Booth  <neil@daikokuya.demon.co.uk>

config:
	* alpha/gnu.h: Undef TARGET_OS_CPP_BUILTINS.
	* i386/beos-elf.h: Use TARGET_OS_CPP_BUILTINS rather than
	CPP_PREDEFINES and part of CPP_SPEC.
	i386/freebsd-aout.h, i386/gas.h, i386/gnu.h, i386/linux-aout.h,
	i386/linux.h, i386/moss.h, i386/xm-vsta.h: Similarly.

Wed Jun  5 15:20:58 CEST 2002  Jan Hubicka  <jh@suse.cz>

	* reg-stack.c (reg_to_stack): Do not call find_basic_blocks.

2002-06-05  Alan Modra  <amodra@bigpond.net.au>

	* config/rs6000/linux64.h (ASM_OUTPUT_SOURCE_LINE): Define.

2002-06-04  Zack Weinberg  <zack@codesourcery.com>

	* gengtype-yacc.y: Make sure all rules end with a semicolon.

2002-06-04  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/xtensa.c (xtensa_init_machine_status): Fix
	typo in function prototype and include "ggc.h" header.

2002-06-04  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.c (mode_mask_operand): Simplify without ifdefs.
	(print_operand) ['U']: Likewise.
	(alpha_expand_unaligned_store): Correct constants for 32-bit cross.
	(alpha_expand_unaligned_store_words): Likewise.
	(alpha_expand_builtin_vector_binop): Fix typo.
	(enum alpha_builtin, code_for_builtin): Add remaining ext, ins, msk,
	umulh, and cix insns.
	(one_arg_builtins): Add cix builtins.
	(two_arg_builtins): Add ext, ins, msk, umulh builtins.
	(alpha_expand_builtin): Fix typo in arity.
	* config/alpha/alpha.md (UNSPEC_CTLZ, UNSPEC_CTPOP): New.
	(builtin_extbl, builtin_extwl, builtin_extll, builtin_extwh,
	builtin_extlh, builtin_insbl, builtin_inswl, builtin_insll,
	builtin_insql, builtin_inswh, builtin_inslh, builtin_insqh,
	builtin_mskbl, builtin_mskwl, builtin_mskll, builtin_mskql,
	builtin_mskwh, builtin_msklh, builtin_mskqh, builtin_cttz,
	builtin_ctlz, builtin_ctpop): New.
	* doc/extend.texi (Alpha Built-in Functions): Update.

2002-06-04  Geoffrey Keating  <geoffk@redhat.com>

	* gengtype.c (write_gc_root): Don't unnecessarily prevent
	global variable-length arrays being roots.

	* config.gcc (powerpc-*-darwin*): Set config_gtfiles.
	* configure.in (config_gtfiles): New variable.
	(all_gtfiles): Initialize from config_gtfiles.
	* configure: Regenerate.

2002-06-04  Neil Booth  <neil@daikokuya.demon.co.uk>

config/i386:
	* beos-elf.h, cygwin.h, djgpp.h, gas.h, gnu.h, i386-interix.h,
	i386-interix3.h, i386elf.h, linux-aout.h, linux.h, linux64.h,
	mingw32.h, netbsd-elf.h, netbsd.h, netbsd64.h, rtemself.h,
	sco5.h, sol2.h, sysv3.h, sysv4.h, sysv5.h, uwin.h, vxi386.h,
	win32.h	(CPP_SPEC): Remove cpp_cpu.
	* i386.h (TARGET_CPU_CPP_BUILTINS): Use.
	(CPP_CPU_DEFAULT_SPEC, CPP_CPU_SPEC): Die!

2002-06-04  Janis Johnson  <janis187@us.ibm.com>

	* config/ia64/ia64.c (gen_thread_pointer): Fix variable name.

2002-06-04  Jeff Law <law@redhat.com.
	    David Edelsohn <edelsohn@gnu.org>
	    Michael Matz <matz@kde.org>

	* sched-int.h (struct deps): New field libcall_block_tail_insn.
	* sched_deps.c (init_deps): Initialize libcall_block_tail_insn.
	* sched_deps.c (sched_analyze_insn): If libcall_block_tail_insn
	is set, then mark the current insn as being part of a libcall
	scheduling group.
	(sched_analyze): Set and clear libcall_block_tail_insn appropriately.

	* haifa-sched.c (schedule_block): Do not count USE or CLOBBER
	insns against the issue rate.

Tue Jun  4 19:29:42 CEST 2002  Jan Hubicka  <jh@suse.cz>

	* cfglayout.c (duplicate_insn_chain): Kill NOTE_INSN_RANGE notes.
	* final.c (final_scan_insn): Likewise.
	* ggc-common.c (ggc_mark_rtx_children_1): Likewise; use
	NOTE_EXPECTED_VALUE instead of NOTE_RANGE.
	* haifa-sched.c (unlink_other_notes): Likeewise.
	(reemit_notes): Likewise.
	* print-rtl.c (print_rtx): Likewise.
	* sched-deps (sched-analyze): Likewise.
	* rtl.c (note_insn_name): Likewise.
	* rtl.h (NOTE_RANGE_INFO, NOTE_LIVE_INFO): Kill.
	(enum insn_note): Kill NOTE_INSN_RANGE_*, NOTE_INSN_LIVE.
	(RANGE_*): Kill.

2002-06-04  Jason Thorpe  <thorpej@wasabisystems.com>

	* varasm.c (mark_constants): Handle RTX format 'B'.

2002-06-04  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cpphash.h (FIRST, LAST, CUR, RLIMIT): New.
	(struct cpp_context): Add traditional fields.
	* cppmacro.c (paste_all_tokens, push_ptoken_context,
	push_token_context, cpp_get_token, _cpp_backup_tokens): Update.
	* cpptrad.c (skip_comment, lex_identifier,
	_cpp_read_logical_line_trad, scan_out_logical_line): Update.

2002-06-04  Kazu Hirata  <kazu@cs.umass.edu>

	* gbl-ctors.h: Fix formatting.
	* gcc.c: Likewise.
	* gccspec.c: Likewise.
	* gcov.c: Likewise.
	* gcov-io.h: Likewise.
	* gcse.c: Likewise.
	* ggc-common.c: Likewise.
	* ggc.h: Likewise.
	* ggc-page.c: Likewise.
	* ggc-simple.c: Likewise.
	* global.c: Likewise.
	* graph.h: Likewise.
	* gthr-dce.h: Likewise.
	* gthr.h: Likewise.
	* gthr-posix.h: Likewise.
	* gthr-rtems.h: Likewise.
	* gthr-solaris.h: Likewise.
	* gthr-win32.h: Likewise.

2002-06-03  Geoffrey Keating  <geoffk@redhat.com>

	Merge from pch-branch:

	* gengtype.h (UNION_OR_STRUCT_P): New macro.
	* gengtype.c (write_gc_structure_fields): Use it.
	(write_gc_root): Use it here too.

	* gengtype.c (write_gc_structure_fields): Assume that lengths
	of typenames fit into an 'int'; don't pass a size_t to "%d" in
	printf.
	(write_gc_marker_routine_for_structure): Likewise.
	(write_gc_types): Likewise.
	(write_gc_root): Likewise.

	* varray.h (VARRAY_CLEAR): New.
	(varray_clear): Prototype.
	* varray.c (varray_clear): New.
	* cselib.c (reg_values_old): New.
	(used_regs_old): New.
	(cselib_init): Use cached varrays if available to avoid
	generating large amounts of garbage.
	(cselib_finish): Don't throw away old varrays.

	* final.c (insn_addresses_): Move out of ifdef.

	* varray.c (uses_ggc): Make more varray kinds GCable.
	* varray.h (union varray_data_tag): Let gengtype see
	fields 'generic' and 'te'.
	* reg-stack.c: Include gt-reg-stack.h, ggc.h.
	(stack_regs_mentioned_data): Move out of ifdef; mark with gengtype.
	(reg_to_stack): Don't call VARRAY_FREE.
	* insn-addr.h (INSN_ADDRESSES_FREE): Don't use VARRAY_FREE.
	(insn_addresses_): Use gengtype to mark.
	* gengtype.c (write_gc_structure_fields): Handle arrays of generic
	pointers; handle generic pointers in unused union fields.
	(get_output_file_with_visibility): Include cselib.h,
	insn-addr.h in gtype-desc.c.
	* function.c (prologue): Use gengtype to mark.
	(epilogue): Likewise.
	(sibcall_epilogue): Likewise.
	* dependence.c: Include gt-dependence.h, ggc.h.
	(struct def_use): Use gengtype to mark.
	(struct loop): Likewise.
	(struct induction): Likewise.
	(struct dependence): Likewise.
	(def_use_chain): Likewise.
	(dep_chain): Likewise.
	(loop_chain): Likewise.
	(induction_chain): Likewise.
	(init_dependence_analysis): Don't free anything, just clear pointers.
	(build_def_use): Use GGC to allocate def_use.
	(add_loop): Use GGC to allocate loop.
	(find_induction_variable): Use GGC to allocate induction.
	(check_node_dependence): Use GGC to allocate induction, dependence.
	(dump_node_dependence): Don't free varrays.
	(end_dependence_analysis): Likewise.
	* cselib.h (struct cselib_val_struct): Use gengtype to mark.
	(struct elt_loc_list): Likewise.
	(struct elt_list): Likewise.
	* cselib.c: Don't include obstack.h.
	(hash_table): Use gengtype to mark.
	(reg_values): Use gengtype to mark.
	(used_regs): Use gengtype to mark.
	(cselib_obstack): Delete.
	(cselib_startobj): Delete.
	(empty_vals): Mark as deletable.
	(empty_elt_lists): Mark as deletable.
	(empty_elt_loc_lists): Mark as deletable.
	(new_elt_list): Use GGC to allocate struct elt_list.
	(new_elt_loc_list): Use GGC to allocate struct elt_loc_list.
	(clear_table): Don't delete obstack; don't unnecessarily clear
	deletable variables.
	(new_cselib_val): Use GGC to allocate struct cselib_val.
	(cselib_init): Don't set up obstacks.  Use GGC to allocate
	hash table.
	(cselib_finish): Just clear variables, don't free anything.
	* Makefile.in (cselib.o): Remove dependency on $(OBSTACK_H).
	(reg-stack.o): Add dependency on gt-reg-stack.h, $(GGC_H).
	(dependence.o): Add dependency on gt-dependence.h, $(GGC_H).
	(GTFILES): Add insn-addr.h, cselib.h, dependence.c, reg-stack.c.
	(gt-reg-stack.h): New rule.
	(gt-dependence.h): New rule.
	(gtype-desc.o): Add cselib.h, insn-addr.h.

	* varray.c: Use only necessary headers.
	(element_size): New.
	(uses_ggc): New.
	(varray_init): Take type, not size.  Use GGC if appropriate.
	(varray_grow): Update for change to struct varray_head_tag.
	Use GGC if appropriate.
	* varray.h (struct const_equiv_data): Use gengtype.
	(enum varray_data_enum): New.
	(union varray_data_tag): Use gengtype.
	(struct varray_head_tag): Use gengtype.  Replace size field with
	enum varray_data_enum.
	(varray_init): Update prototype.
	(VARRAY_SCHED_INIT): Delete.
	(VARRAY_*_INIT): Update for change to varray_init.
	(VARRAY_SCHED): Delete.
	(VARRAY_PUSH_SCHED): Delete.
	(VARRAY_TOP_SCHED): Delete.
	* tree.h: Update for change to length specifier.
	* tree-inline.c (optimize_inline_calls): Don't use VARRAY_FREE.
	(clone_body): Likewise.
	* ssa.h (ssa_definition): Use gengtype to mark.
	* ssa.c (convert_from_ssa): Don't use VARRAY_FREE.
	* ssa-dce.c (ssa_eliminate_dead_code): Don't use VARRAY_FREE.
	* rtl.h (struct rtvec_def): Update for change to length specifier.
	* integrate.c (expand_inline_function): Don't use VARRAY_FREE.
	(struct initial_value_struct): Update for change to length specifier.
	* ggc.h (ggc_add_rtx_varray_root): Delete prototype.
	(ggc_add_tree_varray_root): Delete prototype.
	(ggc_mark_rtx_varray): Delete prototype.
	(ggc_mark_tree_varray): Delete prototype.
	* ggc-common.c (ggc_add_rtx_varray_root): Delete.
	(ggc_add_tree_varray_root): Delete.
	(ggc_mark_rtx_varray): Delete.
	(ggc_mark_tree_varray): Delete.
	(ggc_mark_rtx_varray_ptr): Delete.
	(ggc_mark_tree_varray_ptr): Delete.
	* gengtype.h (enum typekind): Remove TYPE_VARRAY.
	(create_varray): Delete prototype.
	* gengtype.c (varrays): Delete.
	(create_varray): Delete.
	(adjust_field_type): Detect array of string pointers.
	(process_gc_options): Remove code to handle varray_type option.
	(set_gc_used_type): Remove TYPE_VARRAY case.
	(output_escaped_param): New.
	(write_gc_structure_fields): Use output_escaped_param on all
	parameters.  Handle 'skip' with 'use_param' option.  Handle
	arrays of strings.  Remove TYPE_VARRAY handling.
	(write_gc_roots): Use boolean to detect 'length' option.
	* gengtype-yacc.y (VARRAY_TYPE): Delete token.
	(struct_fields): Call adjust_field_type on array fields.
	(type): Remove VARRAY_TYPE case.
	(type_option): Likewise.
	* gengtype-lex.l: Don't consider varray_type a keyword.
	* function.h: Update for change to length specifier.
	(free_eh_status): Delete prototype.
	* function.c (free_after_compilation): Don't call free_eh_status.
	(reorder_blocks): Don't use VARRAY_FREE.
	* except.c (struct eh_status): Update for change to length specifier.
	remove varray_type specifier.
	(free_eh_status): Delete.
	* dwarf2out.c: Include gt-dwarf2out.h.
	(used_rtx_varray): Use gengtype to mark, move
	outside ifdefs.
	(incomplete_types): Likewise.
	(decl_scope_table): Likewise.
	(dwarf2out_init): Don't call ggc_add_tree_varray_root.
	* cfglayout.c (scope_to_insns_finalize): Don't use VARRAY_FREE.
	* c-tree.h (struct lang_type): Update for change to length specifier.
	* c-parse.in (yylexstring): Don't use VARRAY_FREE.
	* c-objc-common.c: Include gt-c-objc-common.h.
	(deferred_fns): Mark for gengtype.
	(c_objc_common_init): Don't call ggc_add_tree_varray_root.
	(expand_deferred_fns): Just set deferred_fns to 0 to free it.
	* Makefile.in (c-objc-common.o): Add gt-c-objc-common.h.
	(gtype-desc.o): Update dependencies.
	(dwarf2out.o): Add gt-dwarf2out.h.
	(varray.o): Update dependencies.
	(GTFILES): Add varray.h, ssa.h, dwarf2out.c, c-objc-common.c.
	(gt-c-objc-common.h): New rule.
	(gt-dwarf2out.h): New rule.
	* objc/objc-act.c (build_objc_string_object): Don't use VARRAY_FREE.

	* doc/gty.texi (GTY Options): Correct spelling.
	(GGC Roots): Likewise.
	* Makefile.in (TEXI_CPP_FILES): New.
	(TEXI_GCC_FILES): New.
	(TEXI_GCCINT_FILES): New.
	(TEXI_CPPINT_FILES): New.
	($(docdir)/cpp.info): Use new macros.
	($(docdir)/gcc.info): Likewise.
	($(docdir)/gccint.info): Likewise.
	($(docdir)/cppinternals.info): Likewise.
	(cpp.dvi): Likewise.
	(gcc.dvi): Likewise.
	(gccint.dvi): Likewise.
	(cppinternals.dvi): Likewise.

	* Makefile.in ($(docdir)/gccint.info): Depend on gty.texi.
	* doc/gccint.texi (Top): Include gty.texi.
	* doc/gty.texi: New file.

	* bitmap.c: Include ggc.h, gt-bitmap.h.
	(bitmap_ggc_free): New.
	(bitmap_elem_to_freelist): New.
	(bitmap_element_free): Use bitmap_elem_to_freelist.
	(bitmap_element_allocate): Allow use of GGC.
	(bitmap_clear): Use bitmap_elem_to_freelist.
	(bitmap_copy): Update for change to bitmap_element_allocate.
	(bitmap_set_bit): Likewise.
	(bitmap_operation): Update for changes elsewhere.
	(bitmap_initialize): Allow to create bitmaps that will use GGC.
	* bitmap.h (struct bitmap_element_def): Use gengtype.
	(struct bitmap_head_def): Likewise.  Also add 'using_obstack' field.
	(bitmap_initialize): Add extra parameter.
	(BITMAP_OBSTACK_ALLOC): Update for change to bitmap_initialize.
	(BITMAP_ALLOCA): Delete.
	(BITMAP_XMALLOC): Update for change to bitmap_initialize.
	(BITMAP_GGC_ALLOC): New.
	* Makefile.in (gtype-desc.o): Add bitmap.h.
	(bitmap.o): Add gt-bitmap.h, $(GGC_H).
	(GTFILES): Add bitmap.c.
	(gt-bitmap.h): New rule.
	($(HOST_PREFIX_1)bitmap.o): Add gt-bitmap.h.
	* basic-block.h: Update for changes to bitmap_initialize.
	* except.c (exception_handler_label_map): Move into...
	(struct eh_status): Here.
	(struct eh_region): Make 'aka' GCable.
	(free_eh_status): Don't need to specially handle
	exception_handler_label_map.
	(add_ehl_entry): Update for changes to exception_handler_label_map.
	(find_exception_handler_labels): Likewise.
	(remove_exception_handler_label): Likewise.
	(maybe_remove_eh_handler): Likewise.
	(for_each_eh_label): Likewise.
	(remove_eh_handler): Allocate 'aka' using GGC.
	* gengtype.c (get_output_file_with_visibility): Add bitmap.h
	to list of includes.

	* gengtype.c (write_gc_marker_routine_for_structure): Name
	the routines 'gt_ggc_mx_*' instead of 'gt_ggc_m_*'.
	(write_gc_types): Arrange for the tests with NULL to be inlined.
	(write_gc_roots): Update uses of procedure pointers.
	* ggc-common.c (gt_ggc_mx_rtx_def): Rename from gt_ggc_m_rtx_def.

	* Makefile.in (explow.o): Add dependency on gt-explow.h.
	(sdbout.o): Add dependency on gt-sdbout.h.

	* emit-rtl.c (const_int_htab): Use gengtype to clear unused entries.
	(mem_attrs_htab): Likewise.
	(init_emit_once): Don't call ggc_add_deletable_htab.
	* fold-const.c (size_htab): Use gengtype to clear unused entries.
	(size_int_type_wide): Don't call ggc_add_deletable_htab.
	* gengtype.c (finish_root_table): Add LASTNAME and TNAME
	parameters, use them, change callers.
	(write_gc_root): Add IF_MARKED parameter, use it, change callers.
	(write_gc_roots): Handle 'if_marked' option.
	(main): Don't need to call set_gc_used_type any more.
	* ggc.h (ggc_htab_marked_p): Delete.
	(ggc_htab_mark): Delete.
	(struct ggc_cache_tab): New.
	(gt_ggc_cache_rtab): New declaration.
	* ggc-common.c (struct d_htab_root): Delete.
	(d_htab_roots): Delete.
	(ggc_add_deletable_htab): Delete.
	(ggc_htab_delete): Handle new htab-deleting mechanism.
	(ggc_mark_roots): Use new htab-deleting mechanism.
	* tree.c (type_hash_table): Use gengtype to clear unused entries.
	Make static.
	(init_obstacks): Don't call ggc_add_deletable_htab.

	* objc/objc-act.h (struct hashed_attribute): Use gengtype.
	(struct hashed_entry): Likewise.
	(nst_method_hash_list): Likewise.
	(cls_method_hash_list): Likewise.
	(HASH_ALLOC_LIST_SIZE): Delete.
	(ATTR_ALLOC_LIST_SIZE): Delete.
	* objc/objc-act.c (hash_init): Use ggc to allocate
	nst_method_hash_list, cls_method_hash_list.
	(hash_enter): Use ggc to allocate; allocate one entry at a time.
	(hash_add_attr): Likewise.
	(ggc_mark_hash_table): Delete.
	(objc_act_parse_init): Delete.
	(objc_init): Delete reference to objc_act_parse_init.
	* tlink.c: Replace hash.h with hashtab.h.  Explicitly include
	obstack.h.  Replace references to 'struct hash_table' with htab_t.
	(struct symbol_hash_entry): Replace hash header with key field.
	(struct file_hash_entry): Replace hash header with key field.
	(struct demangled_hash_entry): Replace hash header with key field.
	(hash_string_eq): New.
	(hash_string_hash): New.
	(symbol_hash_newfunc): Delete.
	(symbol_hash_lookup): Modify to use htab_t.
	(file_hash_newfunc): Delete.
	(file_hash_lookup): Modify to use htab_t.
	(demangled_hash_newfunc): Delete.
	(demangled_hash_lookup): Modify to use htab_t.
	(tlink_init): Modify to use htab_t.
	* hash.h: Delete.
	* hash.c: Delete.
	* ggc.h: Delete forward structure declarations.
	Delete prototypes for deleted functions.
	* ggc-common.c: Don't include hash.h.
	(ggc_add_tree_hash_table_root): Delete.
	(ggc_mark_tree_hash_table_entry): Delete.
	(ggc_mark_tree_hash_table): Delete.
	(ggc_mark_tree_hash_table_ptr): Delete.
	* gengtype.c (write_gc_structure_fields): Allow param_is option.
	(write_gc_marker_routine_for_structure): Use visibility of
	the parameter if there is one.
	* function.c: Replace hash.h with hashtab.h.  Replace references
	to 'struct hash_table *' with htab_t.
	(struct insns_for_mem_entry): Include a plain key.
	(fixup_var_refs_insns_with_hash): Update to use htab_t.
	(insns_for_mem_newfunc): Delete.
	(insns_for_mem_hash): Update to use htab_t.
	(insns_for_mem_comp): Likewise.
	(insns_for_mem_walk): Likewise.
	* c-lang.c: Include ggc.h.
	* Makefile.in (OBJS): Remove hash.o.
	(c-lang.o): Add GGC_H.
	(COLLECT2_OBJS): Remove hash.o.
	(tlink.o): Remove hash.h, add HASHTAB_H and OBSTACK_H.
	(ggc-common.o): Remove hash.h.
	(function.o): Remove hash.h, add HASHTAB_H.
	(genautomata.o): Remove hash.h, add HASHTAB_H.

	* varasm.c (mark_const_str_htab_1): Delete.
	(mark_const_str_htab): Delete.
	(const_str_htab_del): Delete.
	(const_str_htab): Use gengtype to mark.
	(init_varasm_once): Use gengtype to mark hashtables.  Use GC to
	allocate them.
	* tree.c (mark_tree_hashtable_entry): Delete.
	(mark_tree_hashtable): Delete.
	* tree.h (mark_tree_hashtable): Delete prototype.
	* ggc.h (ggc_test_and_set_mark): Treat (void *)1 like NULL.
	(ggc_mark): Likewise.
	(ggc_calloc): New.
	(htab_create_ggc): New.
	* ggc-common.c (ggc_calloc): New.
	* gengtype.h (enum typekind): Add TYPE_PARAM_STRUCT.
	(struct type): Add param_struct structure.
	* gengtype.c (param_structs): New.
	(adjust_field_type): Handle param_is option.
	(set_gc_used_type): Handle TYPE_PARAM_STRUCT.
	(get_output_file_with_visibility): Include hashtab.h in gtype-desc.c.
	(write_gc_structure_fields): Add new PARAM parameter.  Update
	callers.  Handle use_param option.  Handle TYPE_PARAM_STRUCT.
	(write_gc_marker_routine_for_structure): Add new PARAM parameter.
	Use it to generate function name.  Update callers.
	(write_gc_types): Add new PARAM_STRUCTS parameter.  Update callers.
	Process them.
	(write_gc_roots): Handle TYPE_PARAM_STRUCT.  Allow param_is
	option.
	(main): Define PTR as pointer-to-scalar.  Don't specially
	mark deferred_string or ehl_map_entry.
	* gengtype-yacc.y (PARAM_IS): Add new token.
	(externstatic): Use adjust_field_type.
	(type_option): Add PARAM_IS.
	* gengtype-lex.l: Add rule for typedef of function pointers.
	Add rule for PARAM_IS.
	(IWORD): Add size_t.
	* except.c (exception_handler_label_map): Use gengtype to mark.
	(type_to_runtime_map): Likewise.
	(mark_ehl_map_entry): Delete.
	(mark_ehl_map): Delete.
	(init_eh): Use gengtype for roots; use GC to allocate hash tables.
	(t2r_mark_1): Delete.
	(t2r_mark): Delete.
	* Makefile.in (gtype-desc.o): Correct dependencies.
	(GTFILES): Add hashtab.h.
	(genautomata.o): Actually uses hashtab.h.

	* Makefile.in (stringpool.o): Add $(GGC_H).
	(dwarf2asm.o): Likewise.
	(GTFILES): Add hashtable.h.
	* c-common.h (struct c_common_identifier): Use gengtype.
	* c-decl.h (c_mark_tree): Delete.
	* c-lang.c (LANG_HOOKS_MARK_TREE): Delete.
	* c-tree.h (struct lang_identifier): Use gengtype.
	(union lang_tree_node): New.
	(c_mark_tree): Delete prototype.
	* dwarf2out.c [!DWARF2_DEBUGGING_INFO]: Define dummy
	dwarf2_debug_hooks.
	* gengtype-lex.l (IWORD): Allow 'bool'.
	(ptr_alias): Match.
	* gengtype-yacc.y (ALIAS): New token.
	(type_option): New rule.
	(option): Use type_option.
	* gengtype.c (process_gc_options): New.
	(set_gc_used_type): Use it.
	(write_gc_structure_fields): Add 'bitmap' parameter, change callers.
	Add new variable 't' to hold the type of the field being processed.
	Add more error checking.  Use UNION_P when looking at 'desc' option.
	Handle language-specific structures containing other
	language-specific structures.
	(write_gc_types): Handle 'ptr_alias' option.
	(main): Don't need to specially output lang_type, lang_decl, lang_id2.
	* ggc-common.c (ggc_pending_trees): Delete.
	(ggc_mark_roots): Don't manipulate ggc_pending_trees.
	(ggc_mark_trees): Delete.
	(gt_ggc_m_tree_node): Delete.
	* ggc.h (ggc_pending_trees): Delete.
	(ggc_mark_tree): Make alias of gt_ggc_m_tree_node.
	* hashtable.h (ht_identifier): Use gengtype.
	* langhooks-def.h (LANG_HOOKS_MARK_TREE): Delete.
	* langhooks.h (struct lang_hooks): Delete mark_tree.
	* sdbout.c [! SDB_DEBUGGING_INFO]: Define dummy sdb_debug_hooks
	anyway.
	* system.h: Poison LANG_HOOKS_MARK_TREE.
	* tree.c (tree_node_structure): New.
	* tree.h (struct tree_common): Use gengtype.
	(struct tree_int_cst): Likewise.
	(struct tree_real_cst): Likewise.
	(struct tree_string): Likewise.
	(struct tree_complex): Likewise.
	(struct tree_vector): Likewise.
	(struct tree_identifier): Likewise.
	(struct tree_list): Likewise.
	(struct tree_vec): Likewise.
	(struct tree_exp): Likewise.
	(struct tree_block): Likewise.
	(struct tree_type): Likewise.
	(struct tree_decl): Likewise.
	(enum tree_structure_enum): New.
	(union tree_node): Use gengtype, with an alias.
	(tree_node_structure): Prototype.
	* objc/objc-lang.c (LANG_HOOKS_MARK_TREE): Delete.

	Merge to tag pch-merge-20020430.  The LANG_HOOKS_FUNCTION_MARK
	macro was deleted.  The LANG_HOOKS_FUNCTION_FREE macro was renamed
	to LANG_HOOKS_FUNCTION_FINAL.
	* Makefile.in (GTFILES): Add bitmap.h.
	* except.c (struct eh_region): Mark field 'aka' to be skipped.

	* config/alpha/alpha.c [TARGET_ABI_UNICOSMK]
	(alpha_init_machine_status): Give proper type.
	* Makefile.in (c-lang.o): Depend on gtype-c.h.
	(optabs.o): Depend on gt-optabs.h.
	(GTFILES): Add optabs.o.
	(gt-optabs.h): Add rule.
	* optabs.c: Include gt-optabs.h.

	* gengtype.c (set_gc_used_type): Correct some errors in last change.
	(write_gc_structure_fields): If a field which should be NULL is
	not, abort.
	* c-pragma.c: Move struct align_stack and variable alignment_stack
	out from the ifdef.

	* config/xtensa/t-xtensa: Add dependencies for gt-xtensa.h.
	* config/xtensa/xtensa.c: Include gt-cris.h.
	(struct machine_function): Use gengtype	to mark.
	* config/mmix/mmix.h (struct machine_function): Use gengtype
	to mark.
	* config/cris/t-cris: Add dependencies for gt-cris.h.
	* config/cris/cris.c: Include gt-cris.h.
	(struct machine_function): Use gengtype	to mark.
	* config/rs6000/rs6000.h (struct machine_function): Use gengtype
	to mark.
	* doc/tm.texi (Per-Function Data): Delete references to
	mark_machine_status.
	* config/ia64/ia64.c (ia64_override_options): Don't set
	mark_machine_status.
	* config/i386/i386.c (override_options): Likewise.
	* config/d30v/d30v.c (d30v_init_expanders): Likewise.
	* config/arm/arm.c (arm_init_expanders): Likewise.
	* config/alpha/alpha.c (override_options): Likewise.
	* gengtype.h (enum gc_used_enum): Add GC_MAYBE_POINTED_TO.
	* gengtype.c (set_gc_used_type): Handle 'maybe_null' option.
	(write_gc_structure_fields): Don't handle 'really' option.
	Handle 'maybe_null' option.
	(write_gc_types): Handle 'maybe_null' option.
	* function.h (struct function): Don't use "really".
	(mark_machine_status): Delete declaration.
	(mark_lang_status): Delete declaration.
	(gt_ggc_mr_machine_function): Delete prototype.
	(gt_ggc_mr_language_function): Delete prototype.
	* function.c (mark_machine_status): Delete.
	(mark_lang_status): Delete.
	(gt_ggc_mr_machine_function): Delete.
	(gt_ggc_mr_language_function): Delete.
	* c-tree.h (mark_c_function_context): Delete prototype.
	* c-objc-common.c (c_objc_common_init): Don't set mark_lang_status.
	* c-decl.c (struct language_function): Rename from struct
	c_language_function.  Update uses.  Use gengtype to mark.
	(mark_c_function_context): Delete.
	* c-common.h (struct c_language_function): Rename from struct
	language_function.
	(mark_stmt_tree): Delete prototype.
	(c_mark_lang_decl): Delete prototype.
	(mark_c_language_function): Delete prototype.
	* c-common.c (mark_stmt_tree): Delete.
	(c_mark_lang_decl): Delete.
	(mark_c_language_function): Delete.

	* gengtype.h (enum typekind): Add TYPE_LANG_STRUCT.
	(lang_bitmap): New typedef.  Use where appropriate.
	(struct type): Add gc_used field, lang_struct field.
	(UNION_P): New macro.
	(new_structure): New prototype.
	(find_structure): Remove 'pos' parameter.  Change all callers.
	* gengtype-lex.l: Update for changes to find_structure.
	* gengtype-yacc.y (typedef_struct): Use new_structure.
	(yacc_ids): Suppress warning.
	(type): Use new_structure.
	* gengtype.c (string_type): Update for changes to struct type.
	(find_structure): Just find a structure, don't worry about
	creating one.
	(new_structure): New.
	(note_yacc_type): Use new_structure.
	(set_gc_used_type): New.
	(set_gc_used): New.
	(write_gc_structure_fields): Allow for pointers to TYPE_LANG_STRUCT.
	(write_gc_types): Handle TYPE_LANG_STRUCT.
	(write_gc_marker_routine_for_structure): New.
	(main): Call set_gc_used.  Add some calls to set_gc_used_type
	for places where GCC doesn't use gengtype properly yet.
	* ggc.h (gt_ggc_m_rtx_def): Don't prototype.
	(gt_ggc_m_tree_node): Likewise.

	* varasm.c (copy_constant): Call expand_constant if we hit
	something we can't recognize.

	* ggc-common.c (ggc_mark_rtvec_children): Delete.
	(ggc_mark_rtx_children): Use generic name for ggc_mark_rtvec.
	(lang_mark_false_label_stack): Delete.
	* rtl.h (struct rtvec_def): Use gengtype to mark.
	* ggc.h (ggc_mark_rtvec): Delete.
	(gt_ggc_m_rtvec_def): Delete.
	(ggc_mark_nonnull_tree): Delete.
	(ggc_mark_rtvec_children): Delete prototype.
	(lang_mark_false_label_stack): Delete declaration.

	* gengtype.h (note_yacc_type): Add prototype.
	* gengtype.c (note_yacc_type): New function.
	* gengtype-lex.l: Add lexer support for yacc files.
	* gengtype-yacc.y (start): Extract union from yacc files.
	(yacc_union): New rule.
	(yacc_typematch): New rule.
	(yacc_ids): New rule.
	(enum_items): Tweak for efficiency.
	(optionseq): Likewise.

	* c-common.h (struct language_function): Use gengtype.
	(struct c_lang_decl): Likewise.
	* c-tree.h (struct lang_decl): Likewise.
	(struct lang_type): Likewise.
	* c-decl.c (lang_mark_tree): Use generated marker routines to mark
	tree language substructures.

	* stringpool.c (mark_ident): Replace ggc_mark_nonnull_tree with
	ggc_mark_tree.
	* dwarf2asm.c (mark_indirect_pool_entry): Likewise.

	* varasm.c (struct rtx_const): Remove 'skip' tags for scalar arrays.

	* stmt.c (struct nesting): Add discriminator.  Use gengtype to
	mark. Remove 'data.block.cleanup_ptr' field.
	(struct stmt_status): Use usual technique to mark struct nesting.
	(gt_ggc_mr_nesting_cond): Delete.
	(gt_ggc_mr_nesting_loop): Delete.
	(gt_ggc_mr_nesting_block): Delete.
	(gt_ggc_mr_nesting_case_stmt): Delete.
	(expand_start_cond): Set discriminator.
	(expand_start_loop): Likewise.
	(expand_start_null_loop): Likewise.
	(expand_start_bindings_and_block): Set discriminator.  Don't set
	deleted fields.
	(expand_decl_cleanup): Replace 'cleanup_ptr' with
	&thisblock->data.block.cleanups.
	(expand_start_case): Set discriminator.
	(expand_start_case_dummy): Set discriminator.

	* ggc-callbacks.c: Remove.

	* gengtype.h (struct type): Add 'u.s.bitmap' field.
	(find_structure): Add 'pos' parameter.
	* gengtype-lex.l: Update callers to find_structure.
	* gengtype-yacc.y: Likewise.
	* gengtype.c (find_structure): Allow for structures to be defined
	in multiple language backends.
	(get_output_file_with_visibility): Include debug.h in gtype-desc.c.
	(counter): Rename to gc_counter.
	(write_gc_structure_fields): Fail when writing out fields for
	an incomplete structure.  Ignore arrays of scalars.  Handle
	'tree_vec' special.
	(write_gc_types): Reset counter for each procedure written.

	* stmt.c (add_case_node): Use GGC to allocate struct case_node.
	(free_case_nodes): Delete.
	(expand_end_case_type): Delete call to free_case_nodes.

	* Makefile.in (cselib.o): Include gt-<filename>.h.
	(gcse.o): Likewise.
	(profile.o): Likewise.
	(alias.o): Likewise.
	(GTFILES): Add alias.c, cselib.c, gcse.c, profile.c, and
	alphabetize backend files.
	(gt-alias.h, gt-cselib.h, gt-gcse.h, gt-profile.h): New rules.
	* alias.c: Use gengtype for roots.
	* c-common.h (struct stmt_tree_s): Use gengtype.
	* c-decl.c: Use gengtype for roots.
	* cselib.c: Use gengtype for roots.
	* expr.c: Use gengtype for roots.
	* fold-const.c: Use gengtype for roots.
	* gcse.c: Use gengtype for roots.
	* gengtype-lex.l: Handle typedefs of function types.
	Allow for empty array bounds.
	Allow processing to stop on initializers.
	* gengtype-yacc.y (externstatic): Stop processing on initializers.
	(semiequal): New rule.
	* gengtype.c (create_file): Tidy output files.
	(get_output_file_with_visibility): Fix paren warning.  Fix bug
	involving multiple input files mapping to one output file.
	(write_gc_structure_fields): Skip arrays of scalars.
	(write_gc_types): Tidy output files.
	(write_gc_root): New function.
	(write_gc_roots): Fix bugs, add support for roots that are
	structures.
	* ggc-common.c (ggc_mark_rtx_ptr): Delete.
	(ggc_mark_tree_ptr): Delete.
	(ggc_add_rtx_root): Delete.
	(ggc_add_tree_root): Delete.
	(ggc_del_root): Delete.
	* integrate.c (get_func_hard_reg_initial_val): Use ggc_alloc to
	allocate struct initial_value_struct.
	* profile.c: Use gengtype for roots.
	* sdbout.c: Use gengtype for roots.
	* varasm.c (mark_weak_decls): Delete unused prototype.
	(mark_const_hash_entry): Delete unused function.
	* config/darwin-protos.h: Use gengtype for roots.
	(machopic_add_gc_roots): Delete.
	* config/arm/arm.c: Use gengtype for roots.
	* config/arm/arm.h: Use gengtype for roots.
	* config/c4x/c4x-protos.h: Use gengtype for roots.
	* config/c4x/c4x.c (c4x_add_gc_roots): Delete.
	* config/d30v/d30v-protos.h: Use gengtype for roots.
	* config/d30v/d30v.c (d30v_add_gc_roots): Delete.
	* config/dsp16xx/dsp16xx.c (override_options): Use gengtype for roots.
	* config/dsp16xx/dsp16xx.h: Use gengtype for roots.
	* config/ia64/ia64-protos.h: Use gengtype for roots.
	* config/ia64/ia64.c (ia64_add_gc_roots): Delete.
	* config/m68hc11/m68hc11-protos.h: Use gengtype for roots.
	* config/m68hc11/m68hc11.c (z_reg): Make global.
	(z_reg_qi): Make global.
	(m68hc11_add_gc_roots): Delete.
	* config/mcore/mcore-protos.h: Use gengtype for roots.
	* config/mcore/mcore.c (mcore_add_gc_roots): Delete.
	* config/mips/mips.c (mips_add_gc_roots): Delete.
	* config/mips/mips.h: Use gengtype for roots.
	* config/mmix/mmix.c (override_options): Use gengtype for roots.
	* config/mmix/mmix.h: Use gengtype for roots.
	* config/mn10200/mn10200.c (asm_file_start): Use gengtype for roots.
	* config/mn10200/mn10200.h: Use gengtype for roots.
	* config/pa/pa.c: Use gengtype for roots, marking.
	(struct deferred_plabel): Use GGC, gengtype.
	(pa_add_gc_roots): Delete.
	(mark_deferred_plabels): Delete.
	* config/pj/pj-protos.h: Use gengtype for roots.
	* config/pj/pj.h (OVERRIDE_OPTIONS): Don't define.
	* config/rs6000/rs6000.c: Use gengtype for roots.  Don't call
	machopic_add_gc_roots.
	* config/rs6000/rs6000.h: Use gengtype for roots.
	* config/rs6000/t-darwin (darwin.o): Add dependency on gt-darwin.h.
	(gt-darwin.h): Add rule.
	* config/sh/sh.c: Use gengtype for roots.
	* config/sh/t-sh ($(out_object_file)): Add dependency on gt-sh.h.
	(gt-sh.h): Add rule.
	* config/sparc/sparc.c: Use gengtype for roots.
	(sparc_add_gc_roots): Delete.
	(struct ultrasparc_pipeline_state): Use GGC, gengtype.
	(mark_ultrasparc_pipeline_state): Delete.
	* config/sparc/sparc.h: Use gengtype for roots.

	* Makefile.in (c-parse.o): Update dependencies.
	(c-common.o): Likewise.
	(GTFILES): Add c-common.h, c-tree.h, c-common.c, c-parse.in.
	Add dependencies for the files they generate.
	* c-common.c: Replace ggc_add_* uses with GTY annotations.
	* c-common.h: Likewise.
	* c-decl.c: Likewise.
	(gt_ggc_mp_binding_level): Delete.
	* c-lang.c: Include gtype-c.h.
	* c-parse.in: Replace ggc_add_* uses with GTY annotations.  Include
	gt-c-parse.h.
	* c-pragma.h: Replace ggc_add_* uses with GTY annotations.
	(gt_ggc_mp_align_stack): Delete.
	* c-tree.h: Replace ggc_add_* uses with GTY annotations.
	* function.c: Replace ggc_add_* uses with GTY annotations.
	(gt_ggc_mp_function): Delete.
	* function.h: Replace ggc_add_* uses with GTY annotations.
	* gengtype.c (lang_names): New.
	(NUM_BASE_FILES): New.
	(open_base_files): Create language base files.
	(startswith): New.
	(get_file_basename): New.
	(get_base_file_bitmap): New.
	(get_output_file_with_visibility): Rename from get_output_file.
	Add more mappings for various C/Objc filenames.
	(finish_root_table): New.
	(write_gc_roots): Handle dependencies and scoping properly.
	* gengtype.h: Add prototypes for new functions.
	* ggc-common.c (struct deletable_root): Delete.
	(deletables): Delete.
	(ggc_add_deletable_root): Delete.
	(ggc_mark_roots): No need to deal with deleted functionality.
	* ggc.h (ggc_add_deletable_root): Delete prototype.
	* objc/Make-lang.in (objc-act.o): Add gtype-objc.h dependency.
	(gtype-objc.h): Add rule to create.
	* objc/config-lang.in (gtfiles): New.
	* objc/objc-act.c: Allocate imp_list using GGC.  Replace uses of
	ggc_add_* with GTY markers.  Include gtype-objc.h.
	(ggc_mark_imp_list): Delete.
	* objc/objc-act.h: Replace uses of ggc_add_* with GTY markers.
	* objc/objc-lang.c: Random Whitespace Change.

	* except.h (exception_handler_labels): Delete.
	(get_exception_handler_labels): New.
	* except.c (exception_handler_labels): Delete.
	(struct eh_status): Add exception_handler_labels field.
	(doing_eh): Don't add exception_handler_labels as root.
	(free_eh_status): Don't need to free exception_handler_labels.
	(get_exception_handler_labels): New.
	(find_exception_handler_labels): Update for move of
	exception_handler_labels.
	(remove_exception_handler_label): Likewise.
	* cfgrtl.c (can_delete_label_p): Use get_exception_handler_labels.
	* jump.c (rebuild_jump_labels): Likewise.
	* loop.c (find_and_verify_loops): Likewise.
	* sched-rgn.c (is_cfg_nonregular): Likewise.

	* gengtype.c (write_gc_structure_fields): Handle variable-length
	TYPE_ARRAYs.

	* varasm.c (struct weak_syms): Use GGC, gengtype.
	(mark_weak_decls): Delete.
	(weak_decls): Likewise.
	(add_weak): Likewise.
	(remove_from_pending_weak_list): Likewise.
	(init_varasm_once): Likewise.

	* Makefile.in (gtype-desc.o): Add libfuncs.h dependency.
	(GTFILES): Add tree.h, libfuncs.h, emit-rtl.c, explow.c,
	stor-layout.c, regclass.c, and lists.c.
	Add dependencies of gt-emit-rtl.h gt-explow.h gt-stor-layout.h
	gt-regclass.h and gt-lists.h on s-gtype.
	* emit-rtl.c: Use gengtype for roots.  Include gt-emit-rtl.h.
	* except.c: Use gengtype for roots.
	* explow.c: Use gengtype for roots.  Include gt-explow.h.
	* expr.h (init_stor_layout_once): Delete prototype.
	* function.c: Use gengtype for roots.
	* gengtype-lex.l: Add ENT_EXTERNSTATIC lexing.
	* gengtype-yacc.y (start): Can also be an externstatic.
	(externstatic): New production.
	(struct_fields): Correct array bounds inversion for 2-d arrays.
	* gengtype.c (variables): New variable.
	(note_variable): New function.
	(get_output_file): Include libfuncs.h into gtype-desc.c.
	(get_output_file_name): New function.
	(write_gc_structure_fields): Suppress warnings.
	(write_gc_types): Make static.
	(put_mangled_filename): New function.
	(write_gc_roots): New function.
	(main): Call write_gc_roots.
	* gengtype.h (note_variable): Prototype.
	(get_output_file_name): Prototype.
	(write_gc_types): Delete prototype.
	* ggc.h: Clean up unnecessary structure predefinitions.
	(struct ggc_root_tab): Define.
	(gt_ggc_m_rtx_def): Make function, not macro.
	(gt_ggc_m_tree_node): Likewise.
	* libfuncs.h: Use gengtype for roots.
	* lists.c: Use gengtype for roots.  Include gt-lists.h.
	(init_EXPR_INSN_LIST_cache): Delete.
	* optabs.c: Use gengtype for roots.
	(gt_ggc_mp_optab): Delete.
	* optabs.h: Use gengtype for roots.
	* regclass.c: Use gengtype for roots.  Include gt-regclass.h.
	* rtl.h: Use gengtype for roots.
	(init_EXPR_INSN_LIST_cache): Delete prototype.
	* stor-layout.c: Use gengtype for roots.
	Include gt-stor-layout.h.
	(init_stor_layout_once): Delete.
	* toplev.c: Use gengtype for roots.  Delete calls to deleted
	routines.
	* tree.c: Use gengtype for roots.
	* tree.h: Use gengtype for roots.
	* varasm.c: Use gengtype for roots.

	* Makefile.in (GTFILES): Add @all_gtfiles@.
	* configure: Regenerate.
	* configure.in: Construct all_gtfiles from the gtfiles definitions
	in config-lang.in.
	* gengtype-yacc.y (type): Warn about duplicate structure names.
	* gengtype.c (get_output_file): Handle .c files in language
	subdirectories.

	* Makefile.in (GTFILES): Run gengtype on all the config files
	and on the target .c file.
	* except.c (mark_eh_region): Delete.
	(init_eh_for_function): Use GGC on struct eh_status.
	(mark_eh_status): Delete.
	(free_eh_status): Use GGC.
	(expand_eh_region_start): Use GGC to
	(collect_eh_region_array): Allocate last_region_number using GGC.
	(duplicate_eh_region_1): Use GGC to allocate struct eh_region.
	(remove_eh_handler): Let GGC free struct eh_region.
	(add_call_site): Use GGC to reallocate call_site_record array.
	* function.c (init_machine_status): Update calling sequence.
	(mark_machine_status): Likewise.
	(mark_lang_status): Likewise.
	(prepare_function_start): Update init_machine_status call.
	(mark_function_status): Delete.
	(maybe_mark_struct_function): Delete.
	(ggc_mark_struct_function): Delete.
	(gt_ggc_mp_function): New.
	(gt_ggc_mr_machine_function): New.
	(gt_ggc_mr_language_function): New.
	(init_function_once): Use canonical names.
	* function.h (struct function): Use gengtype.
	(init_machine_status): Return the structure.
	(mark_machine_status): Take a 'void *'.
	(mark_lang_status): Likewise.
	* ggc-common.c (ggc_mark_trees): Use canonical name for
	ggc_mark_struct_function.
	* tree.h (ggc_mark_struct_function): Delete prototype.
	* config/alpha/alpha.c (alpha_mark_machine_status): Delete.
	(alpha_init_machine_status): Likewise.
	(override_options): Use canonical name for alpha_mark_machine_status.
	* config/alpha/unicosmk.h (struct machine_function): Use gengtype.
	* config/arm/arm.h (struct machine_function): Use gengtype.
	* config/arm/arm.c (arm_mark_machine_status): Delete.
	(arm_init_machine_status): Update calling sequence.
	(arm_init_expanders): Use canonical name for arm_mark_machine_status.
	* config/cris/cris.c (cris_init_machine_status): Update
	calling sequence.
	* config/d30v/d30v.h (struct machine_function): Use gengtype.
	* config/d30v/d30v.c (d30v_init_machine_status): Update
	calling sequence.
	(d30v_mark_machine_status): Delete.
	* config/i386/i386.c: Include gt-i386.h.
	(struct machine_function): Use gengtype.
	(ix86_init_machine_status): Update calling sequence.
	(ix86_mark_machine_status): Delete.
	(override_options): Use canonical namke for ix86_mark_machine_status.
	* config/ia64/ia64.h (struct machine_function): Use gengtype.
	* config/ia64/ia64.c (ia64_init_machine_status): Update calling
	sequence.
	(ia64_mark_machine_status): Delete.
	(ia64_override_options): Use canonical name for
	ia64_mark_machine_status.
	* config/mmix/mmix.c (mmix_init_machine_status): Update calling
	sequence.
	* config/rs6000/rs6000.c (rs6000_init_machine_status): Likewise.
	* config/xtensa/xtensa.c (xtensa_init_machine_status): Likewise.
	* gengtype.c (get_output_file): Fix warning.
	(main): Add prototype to suppress warning.
	* tree.c: Remove tree_hash_mark prototype.

	* tree.h (init_stmt): Delete prototype.
	* toplev.c (lang_independent_init): Don't call init_stmt.
	* stmt.c (ALLOC_NESTING): Use GGC for 'struct nesting'.
	(stmt_obstack): Delete.
	(POPSTACK): No need to free 'struct nesting'.
	(gt_ggc_mr_nesting_cond): Use canonical names.
	(gt_ggc_mr_nesting_loop): Use canonical names.
	(gt_ggc_mr_nesting_block): Use canonical names.
	(gt_ggc_mr_nesting_case_stmt): Use canonical names.
	(mark_stmt_status): Delete.
	(init_stmt): Delete.
	(clear_last_expr): Clear both last_expr_type and last_expr_value.
	Use it everywhere that last_expr_type was cleared.
	* lists.c (init_EXPR_INSN_LIST_cache): Use ggc_add_deletable_root.
	(zap_lists): Delete.
	* ggc.h (ggc_add_deletable_root): Prototype.
	(mark_stmt_status): Remove prototype.
	* ggc-common.c (ggc_add_deletable_root): New.
	(ggc_mark_roots): Handle deletable roots.
	* function.c (ggc_mark_struct_function): Use canonical name
	for mark_stmt_status.
	* emit-rtl.c (free_sequence_stack): New.
	(start_sequence): Use a freelist for sequences.
	(end_sequence): Likewise.
	(init_emit_once): Add free_sequence_stack as a deleteable root.
	* c-pragma.c Include gt-c-pragma.h.
	(struct align_stack): Use gengtype.
	(push_alignment): Use GGC for struct align_stack.
	(mark_align_stack): Delete.
	(gt_ggc_mp_align_stack): New.
	(init_pragma): Use canonical name for mark_align_stack.
	* c-decl.c: Include gt-c-decl.h.
	(struct binding_level): Use gengtype.
	(make_binding_level): Use GGC; handle the freelist here.
	(pop_binding_level): New.
	(pushlevel): Move code into make_binding_level.
	(push_label_level): Likewise.
	(poplevel): Move code into pop_binding_level.
	(pop_label_level): Likewise.
	(mark_binding_level): Delete.
	(gt_ggc_mp_binding_level): New.
	(c_init_decl_processing): Use canonical name for mark_binding_level.
	Add free_binding_level as deletable root.
	(mark_c_function_context): Use canonical name for mark_binding_level.
	* Makefile.in (c-decl.o): Add gt-c-decl.h.
	(c-pragma.o): Add gt-c-pragma.h.
	(GTFILES): Add c-decl.c and c-pragma.c.
	(gt-c-decl.h, gt-c-pragma.h): Create using gengtype.

	* tree.c (struct type_hash): Use gengtype.
	(init_obstacks): Use canonical name for type_hash_mark.
	(type_hash_mark): Delete.
	Include gt-tree.h.
	* rtl.h (struct mem_attrs): Use gengtype.
	* optabs.h (struct optab): Use gengtype.
	* optabs.c (expand_binop): Squish signed/unsigned warning.
	(mark_optab): Make local, use canonical name, use autogenerated
	marker procedure.
	(init_optabs): Use canonical name for mark_optab.
	(new_optab): Use GGC to allocate optabs.
	* ggc.h: Delete mark_optab prototype.
	* ggc-common.c (ggc_mark_rtx_children): Use canonical name for
	mem_attrs marker procedure.
	* gengtype.c (get_output_file): Include headers in gtype-desc.c
	explicitly rather than deducing them from file names.
	(write_gc_structure_fields): Handle arrays of structures.
	(main): Return nonzero exit code if errors occur during output.
	* emit-rtl.c (mem_attrs_mark): Delete.
	(init_emit_once): Use canonical name for mem_attrs marker procedure.
	* Makefile.in (gtype-desc.o): Explicitly name dependencies.
	(tree.o): Depend on gt-tree.h.
	(GTFILES): Add rtl.h, optabs.h, tree.c.
	(gt-tree.h): Add it to s-gtype rule.

	* .cvsignore: Ignore gengtype flex/bison generated files.
	* Makefile.in (GGC_H): Add gtype-desc.h.
	(OBJS): Add gtype-desc.o.
	(GEN): Add gengtype.
	(STAGESTUFF): Add gengtype.
	(varasm.o): Add gt-varasm.h.
	(stmt.o): Add gt-stmt.h.
	(except.o): Add gt-except.h.
	(integrate.o): Add gt-integrate.h.
	(GTFILES): New.
	Add new rules for new files.
	* configure: Regenerate.
	* configure.in: Correct defaults.h paths.
	* emit-rtl.c (mark_sequence_stack): Delete.
	(mark_emit_status): Delete.
	(start_sequence): Allocate sequence structures using GGC.
	(end_sequence): Allocate sequence structures using GGC.
	* except.c: Use gengtype for various structures.  Include
	gt-except.h.
	* expr.c (mark_expr_status): Delete.
	* function.c: Use gengtype for various structures.  Include
	gt-function.h.
	(mark_function_status): Use standard gt_ggc names for marker functions.
	(ggc_mark_struct_function): Likewise.
	* function.h: Use gengtype for various structures.
	* gengtype-lex.l: New file.
	* gengtype-yacc.y: New file.
	* gengtype.c: New file.
	* gengtype.h: New file.
	* ggc.h: Include gtype-desc.h.  Alias some marker procedures to
	the standard names.  Remove some now-unnecessary prototypes.
	* integrate.c: Use gengtype for various structures.  Include
	gt-integrate.h.
	(mark_hard_reg_initial_vals): Delete.
	* integrate.h (mark_hard_reg_initial_vals): Delete.
	* stmt.c: Use gengtype for various structures.  Include
	gt-stmt.h.
	(mark_case_node): Delete.
	(mark_goto_fixup): Delete.
	(mark_stmt_status): Use standard gt_ggc names for marker functions.
	* system.h: Define GTY to empty.   In flex/bison files,
	don't poison malloc or realloc, instead just define them to
	xmalloc and xrealloc.
	* varasm.c: Use gengtype for various structures.  Include
	gt-varasm.h.  Use standard gt_ggc names for marker functions.
	(mark_pool_constant): Delete.
	(mark_varasm_status): Delete.
	(decode_rtx_const): #if 0 out non-typesafe hack.

	* function.h (free_lang_status): Mark as obsolete.
	* function.c (free_lang_status): Mark as obsolete.
	* c-decl.c (push_c_function_context): Use GC to allocate and free
	struct language_function.
	(pop_c_function_context): Likewise.
	* c-common.c (mark_c_language_function): Mark struct
	language_function.

	* doc/tm.texi (Per-Function Data): Don't document free_machine_status.
	Document that the machine_function structures must be allocated
	using GC.  Update mark_machine_status documentation.
	* function.h: Don't declare free_machine_status.
	* function.c (free_machine_status): Don't define.
	(free_after_compilation): Don't call free_machine_status.
	(ggc_mark_struct_function): Mark f->machine.  Call
	mark_machine_status only on non-NULL pointers.
	* system.h: Poison free_machine_status.
	* config/xtensa/xtensa.c (xtensa_init_machine_status): Use GC on
	struct machine_function.
	(xtensa_free_machine_status): Delete.
	(override_options): Don't set free_machine_status.
	* config/rs6000/rs6000.c (rs6000_override_options): Don't set
	free_machine_status.
	(rs6000_init_machine_status): Use GC on struct machine_function.
	(rs6000_free_machine_status): Delete.
	* config/ia64/ia64.c (ia64_init_machine_status): Use GC on struct
	machine_function.
	(ia64_mark_machine_status): Likewise.
	(ia64_free_machine_status): Delete.
	(ia64_override_options): Don't set free_machine_status.
	* config/i386/i386.c (override_options): Don't set
	free_machine_status.
	(ix86_init_machine_status): Use GC on struct machine_function.
	(ix86_mark_machine_status): Likewise.
	(ix86_free_machine_status): Delete.
	* config/d30v/d30v.c: (d30v_init_machine_status): Use GC on struct
	machine_function.
	(d30v_mark_machine_status): Likewise.
	(d30v_free_machine_status): Delete.
	(d30v_init_expanders): Don't set free_machine_status.
	* config/arm/arm.c (arm_mark_machine_status): Use GC on struct
	machine_function.
	(arm_init_machine_status): Likewise.
	(arm_free_machine_status): Delete.
	(arm_init_expanders): Don't set free_machine_status.
	* config/alpha/alpha.c (override_options): Don't set
	free_machine_status.
	(alpha_init_machine_status): Use GC on struct machine_function.
	(alpha_mark_machine_status): Likewise.
	(alpha_free_machine_status): Delete.

	* varasm.c (compare_constant): Fix typo.

	* varasm.c: Don't include obstack.h.
	(struct varasm_status): x_const_rtx_hash_table is a hash of rtxes.
	(struct rtx_const): Give substructures names, improve formatting.
	(struct constant_descriptor): Delete.
	(struct constant_descriptor_tree): New, based on constant_descriptor.
	(const_hash_table): Is a hash table of trees.
	(mark_const_hash_entry): Is used for hashes of trees.  Mark
	constant_descriptor_tree structure.
	(mark_const_str_htab_1): Mark deferred_string structure.
	(compare_constant): Rewrite to compare trees.
	(compare_constant_1): Delete.
	(record_constant): Delete.
	(record_constant_1): Delete.
	(output_constant_def): Use struct constant_descriptor_tree.
	Don't duplicate trees twice.
	(struct constant_descriptor_rtx): New.
	(struct pool_constant): Used for rtx constants.
	(init_varasm_status): Update for change to struct varasm_status.
	(mark_varasm_status): Likewise.
	(free_varasm_status): Delete.
	(compare_constant_rtx): Rewrite to handle constant_descriptor_rtx.
	(record_constant_rtx): Likewise.
	(mem_for_const_double): Update to use struct constant_descriptor_rtx.
	(force_const_mem): Likewise.
	* Makefile.in (varasm.o): Doesn't depend on obstack.h.
	* function.c (free_after_compilation): Don't use free_varasm_status.
	* function.h: Don't prototype free_varasm_status.

	* ggc-common.c (ggc_realloc): Handle X being NULL.

	* ggc-common.c (ggc_realloc): New function.
	* ggc.h: Prototype it.
	* emit-rtl.c (free_emit_status): Delete.
	(init_emit): Allocate emit subarrays using GC.
	(gen_reg_rtx): Reallocate subarrays using GC.
	(init_emit): Use GC to allocate 'struct emit_status' and its
	subarrays.
	(mark_emit_status): Mark structure and its subarrays.
	* stmt.c (free_stmt_status): Delete.
	* expr.c (free_expr_status): Delete.
	* function.h: Remove prototypes for deleted functions.
	* function.c (free_after_compilation): Don't use deleted functions.
	Don't call free() on x_parm_reg_stack_loc.
	(free_after_parsing): Don't use free_stmt_status.
	(assign_parms): Use GC to allocate and resize x_parm_reg_stack_loc.
	(mark_function_status): Mark x_parm_reg_stack_loc.

	* varasm.c (init_varasm_status): Use GC to allocate
	'struct varasm_status' and its fields x_const_rtx_hash_table
	and x_const_rtx_sym_hash_table.
	(mark_varasm_status): Mark them.
	(free_varasm_status): Use GC to free them.
	* expr.c (init_expr): Use GC to allocate 'struct expr_status'.
	(mark_expr_status): Mark the structure itself.
	(free_expr_status): Use GC to free the structure.
	* stmt.c (free_stmt_status): Use GC to free 'struct stmt_status'.
	(mark_stmt_status): Mark the 'struct stmt_status' itself.
	(init_stmt_for_function): Allocate the structure for GC.

	* dwarf2out.c (lookup_type_die): Use TYPE_SYMTAB_DIE.
	(equate_type_number_to_die): Likewise.
	* tree.h (TYPE_SYMTAB_DIE): New macro.
	(struct die_struct): Predeclare.
	(struct tree_type): Add field symtab.die.   Add a tag
	to the union type of field symtab.

	* varray.h (VARRAY_RTVEC_INIT): A varray of rtvec contains
	'struct rtvec_def *', not 'struct rtvec_def'.

	* function.h (original_arg_vector): Make a real rtvec.
	* function.c (ggc_mark_struct_function): Adjust.
	* integrate.c (expand_inline_function): Adjust.

2002-06-04  Jason Thorpe  <thorpej@wasabisystems.com>

	* config.gcc (sh5-*-netbsd*, sh5l*-*-netbsd*)
	(sh64-*-netbsd*, sh64l*-*-netbsd*): New targets.
	* config/sh/netbsd-elf.h (TARGET_VERSION_ENDIAN)
	(TARGET_VERSION_CPU): Define according to the
	default target.
	(TARGET_VERSION): Use TARGET_VERSION_ENDIAN and
	TARGET_VERSION_CPU.
	(TARGET_OS_CPP_BUILTINS): Use NETBSD_OS_CPP_BUILTINS_LP64
	if TARGET_SHMEDIA64.
	(LINK_DEFAULT_CPU_EMUL): Define according to the
	default target.
	(SUBTARGET_LINK_EMUL_SUFFIX): Define.
	(SUBTARGET_LINK_SPEC): Define.
	(LINK_SPEC): Use SH_LINK_SPEC.
	(ASM_SPEC): Remove.
	(TARGET_DEFAULT): Use TARGET_CPU_DEFAULT.
	(FUNCTION_PROFILER): Add cases for TARGET_SHMEDIA32
	and TARGET_SHMEDIA64 which abort, for now.
	* config/sh/t-netbsd-sh5: New file.
	* config/sh/t-netbsd-sh5-32: New file.
	* config/sh/t-netbsd-sh5-64: New file.

2002-06-03  Falk Hueffner  <falk.hueffner@student.uni-tuebingen.de>
	    Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.c (reg_or_const_int_operand): New.
	(some_operand, input_operand): Accept CONST_VECTOR.
	(alpha_extra_constraint): Add 'W'.
	(alpha_expand_zap_mask): New.
	(alpha_expand_builtin_vector_binop): New.
	(enum alpha_builtin): New.
	(zero_arg_builtins, one_arg_builtins, two_arg_builtins): New.
	(alpha_init_builtins, alpha_expand_builtin): New.
	(TARGET_INIT_BUILTINS, TARGET_EXPAND_BUILTIN): New.
	* config/alpha/alpha.h (VECTOR_MODE_SUPPORTED_P): New.
	(PREDICATE_CODES): Update.
	* config/alpha/alpha-protos.h: Update.
	* config/alpha/alpha.md (UNSPEC_CMPBGE, UNSPEC_ZAP,
	UNSPEC_AMASK, UNSPEC_IMPLVER, UNSPEC_PERR, UNSPECV_RPCC): New.
	(movv8qi, movv8qi_fix, movv8qi_nofix): New.
	(movv4hi, movv4hi_fix, movv4hi_nofix): New.
	(movv2si, movv2si_fix, movv2si_nofix): New.
	(uminv8qi3, sminv8qi3, uminv4hi3, sminv4hi3): New.
	(umaxv8qi3, smaxv8qi3, umaxv4hi3, smaxv4hi3): New.
	(builtin_cmpbge, builtin_extql, builtin_extqh, builtin_zap,
	builtin_zap_1, builtin_zapnot, builtin_zapnot_1, builtin_amask,
	builtin_implver, builtin_rpcc, builtin_minub8, builtin_minsb8,
	builtin_minuw4, builtin_minsw4, builtin_maxub8, builtin_maxsb8,
	builtin_maxuw4, builtin_maxsw4, builtin_perr, builtin_pklb,
	pklb, builtin_pkwb, pkwb, builtin_unpkbl, unpkbl,
	builtin_unpkbw, unpkbw): New.
	* doc/extend.texi (Alpha Built-in Functions): New.

2002-06-03  Richard Henderson  <rth@redhat.com>

	* crtstuff.c (__EH_FRAME_BEGIN__): Conditionalize on
	USE_EH_FRAME_REGISTRY, not EH_FRAME_SECTION_NAME.

2002-06-03  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha-protos.h: Eliminate unneeded ifdefs.

	* config/alpha/alpha.c (reg_or_0_operand): Use CONST0_RTX.
	(const0_operand): New.
	(reg_or_fp0_operand, fp0_operand): Remove.
	* config/alpha/alpha.h (PREDICATE_CODES): Update.
	* config/alpha/alpha-protos.h: Update.
	* config/alpha/alpha.md: Replace all uses of reg_or_fp0_operand
	and fp0_operand with reg_or_0_operand and const0_operand.

2002-06-03  Dan Nicolaescu  <dann@godzilla.ics.uci.edu>

	* alias.c (nonoverlapping_memrefs_p): Fix off by one error.

2002-06-03  Roger Sayle  <roger@eyesopen.com>

	* gcse.c (cprop_jump): Use single_set to get the pattern
	from the setcc argument.

2002-06-03  Gabriel Dos Reis  <gdr@codesourcery.com>

	* diagnostic.h (diagnostic_count): Move from output_buffer to
	diagnostic_context.
	(diagnostic_kind_count): Adjust definition.

Mon Jun  3 19:11:53 CEST 2002  Jan Hubicka  <jh@suse.cz>

	* except.c (except.c): Do not rebuild CFG.
	* toplev.c (rest_of_compilation): Recompute CFG after sibcall
	optimization.

Mon Jun  3 11:53:01 CEST 2002  Jan Hubicka  <jh@suse.cz>

	* integrate.c (copy_insn_list): Properly pace the INSN_SCOPE copies.
	* toplev.c: Include cfglahout.h
	* Makefile.in (toplev.c): Add dependnecy.

2002-06-03  Neil Booth  <neil@daikokuya.demon.co.uk>

	* config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): New.
	(CPP_CPU32_SPEC, CPP_CPU64_SPEC): Kill.
	(CPP_CPUCOMMON_SPEC): Rename CPP_CPU_SPEC.

2002-06-03  Jason Thorpe  <thorpej@wasabisystems.com>

	* config/ns32k/netbsd.h: Update copyright years.
	(TARGET_OS_CPP_BUILTINS): Define.
	(CPP_PREDEFINES): Remove.
	* config/ns32k/ns32k.h (CPP_PREDEFINES): Remove.
	(TARGET_CPU_CPP_BUILTINS): Define.

2002-06-02  Kazu Hirata  <kazu@cs.umass.edu>

	* emit-rtl.c: Fix formatting.
	* errors.h: Likewise.
	* except.c: Likewise.
	* explow.c: Likewise.
	* expmed.c: Likewise.
	* expr.c: Likewise.
	* expr.h: Likewise.

2002-06-02  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/elf.h: Fix formatting.
	* config/h8300/rtems.h: Likewise.

2002-06-03  Jason Thorpe  <thorpej@wasabisystems.com>

	* config/rs6000/netbsd.h (DRAFT_V4_STRUCT_RET): Remove.

2002-06-02  Tom Tromey  <tromey@redhat.com>

	* fixinc/fixincl.x: Rebuilt.
	* fixinc/inclhack.def (thread_keyword): Match `*__thread'.

2002-06-02  Neil Booth  <neil@daikokuya.demon.co.uk>

config/i370:
	* i370.h (TARGET_CPU_CPP_BUILTINS): Use.
	* linux.h: Use TARGET_OS_CPP_BUILTINS rather than CPP_PREDEFINES.
	* mvs.h: Similarly.
	* oe.h: Similarly.

Mon Jun  3 00:18:20 CEST 2002  Jan Hubicka  <jh@suse.cz>

	* final.c (final):  Allow notes to not have computed addresses;
	kill no longer needed STACK_REGS ifdef.

2002-06-02  Richard Henderson  <rth@redhat.com>

	* gcse.c (bypass_conditional_jumps): Fix typo last change.

Sun Jun  2 23:02:11 CEST 2002  Jan Hubicka  <jh@suse.cz>

	* loop.c (emit_prefetch_instructions): Properly place the address
	computation.

Sun Jun  2 22:56:48 CEST 2002  Jan Hubicka  <jh@suse.cz>

	* basic-block.h (basic_block_for_insn, BLOCK_FOR_INSN): Kill.
	(set_block_for_insn): Turn into macro.
	* cfgbuild.c (find_basic_block): Do not clear basic_block_for_insn.
	* cfglayout.c (insn_scopes): Kill.
	(scope_to_insns_initialize): Do not use insn_scopes.
	(scope_to_insns_finalize): Likewise.
	(duplicate_insn_chain): Likewise.
	(cfg_layout_initialize, cfg_layout_finalize): Do not turn scopes to notes.
	* cfgrtl.c (basic_block_for_insn): Kill.
	(delete_insn_and_edges, delete_insn_chain_and_edges): Simplify.
	(create_basic_block_structure): Use reorder_insns.
	(compute_bb_for_insn): Do not use basic_block_for_insn.
	(merge_blocks_nomove): Likewise.
	(update_bb_for_insn): Likewise.
	(verify_flow_info): Likewise.
	(set_block_for_insn): Kill.
	* combine.c (try_combine): Update gen_rtx_INSN call.
	* emit-rtl.c (gen_label_rtx): Update gen_rtx_CODE_LABEL call.
	(mark_insn_raw, make_jump_insn_raw, make_call_insn_raw): Clear
	scopes and BBs.
	(add_insn_after, add_insn_before, remove_insn, reorder_insns): Simplify.
	(emit_note_before, emit_note_after, emit_line_note_after, emit_note):
	Clear BB.
	(emit_insns_after): Simplify.
	(emit_copy_of_insn_after): Copy scope.
	* final.c (final_start_function): Lower scopes.
	* flow.c (check_function_return_warnings): Do not rely on deleted insn.
	* integrate.c (copy_insn_list): Cope scopes.
	* jump.c (duplicate_loop_exit_test): LIkewise; simplify.
	* loop.c (loop_optimize): Do not care block notes.
	* print-rtl.c (print_rtx): Print BB.
	* recog.c (apply_change_group): Simplify.
	* rtl.c (copy_rtx): Handle 'B'.
	* rtl.def (INSN, CALL_INSN, JUMP_INSN, NOTE): Add extra fields.
	* rtl.h (Field accessors): Update indexes.
	* sched-ebb.c (schedule_ebbs): Do not lower notes.
	* sched-rgn.c (schedule_insns): Likewise.
	* toplev.c (rest_of_compilation): Lower notes.
	* unroll.c (unroll_loop): Do not care scoping notes.
	(copy_loop_body): Copy scopes.

2002-06-02  Neil Booth  <neil@daikokuya.demon.co.uk>

config/h8300:
	* elf.h: Use TARGET_OS_CPP_BUILTINS rather than
	SUBTARGET_SPEC.
	* rtems.h: Similarly.
	* h8300.h (CPP_PREDEFINES, CPP_SPEC, SUBTARGET_CPP_SPEC,
	EXTRA_SPECS, SUBTARGET_EXTRA_SPECS): Remove.
	(TARGET_CPU_CPP_BUILTINS): Use.

2002-06-02  Richard Henderson  <rth@redhat.com>

	* alias.c: Include target.h.
	(mark_constant_function): Use targetm.binds_local_p instead
	of checking TREE_PUBLIC ourselves.
	* Makefile.in (alias.o): Add TARGET_H.

2002-06-02  Neil Booth  <neil@daikokuya.demon.co.uk>

	* c-lex.c: Update copyright and file description.

2002-06-02  Neil Booth  <neil@daikokuya.demon.co.uk>

	* config/fr30/fr30.h: Update to new CPP macros.

2002-06-02  Neil Booth  <neil@daikokuya.demon.co.uk>

	* config/dsp16xx/dsp16xx.h: Update to new CPP macros.

2002-06-02  Neil Booth  <neil@daikokuya.demon.co.uk>
	    Zack Weinberg <zack@codesourcery.com>

	* c-common.c (c_common_init): Override cpplib's default
	warn_long_long setting.
	* c-lex.c (lex_number): Replace with interpret_integer,
	interpret_float, narrowest_unsigned_type and
	narrowest_signed_type, taking advantage of the new
	cpplib functionality.
	* cpperror.c (_cpp_begin_message): If a warning is turned
	into an error, avoid printing "warning:".
	* cppexp.c (cpp_num_sign_extend): New.
	* cppinit.c: Update comment.
	* cpplib.h (cpp_num_sign_extend): New.
	* tree.h: Update comment.

2002-06-02  Gabriel Dos Reis  <gdr@codesourcery.com>

	* diagnostic.h (struct diagnostic_context):  Add new member
	internal_error.
	(internal_error_function): Remove declaration.
	* diagnostic.c (internal_error_function): Remove definition..
	(internal_error): Adjust use.

2002-06-02  Richard Henderson  <rth@redhat.com>

	* rtl.h (CC0_P): New.
	* gcse.c (cprop_jump): Use it with single_set.  Tweak dump text.
	(cprop_insn): Allow any mode register; use CC0_P.  CSE out single_set.
	(bypass_block): Save old dest block for dump text.
	(bypass_conditional_jumps): Allow any mode register; use CC0_P.
	Allow only true SET insns, not single_set.

2002-06-02  Gabriel Dos Reis  <gdr@codesourcery.com>

	* diagnostic.c (diagnostic_finish): Rename to output_flush.
	(clear_disgnostic_info): Rename to output_clear_data.  Use false
	instead of 0 for boolean value.
	Adjust function call throughout.

Sun Jun  2 19:15:27 CEST 2002  Jan Hubicka  <jh@suse.cz>

	* cfgrtl.c (commit_one_edge_insertion): Fix warning.
	* gcse.c (bypass_conditional_jumps): CSE out single_set call.

2002-06-02  Neil Booth  <neil@daikokuya.demon.co.uk>

	* d30v.h (CPP_PREDEFINES): Replace with
	(TARGET_CPU_CPP_BUILTINS): New.

2002-06-02  Roger Sayle  <roger@eyesopen.com>

	* config/alpha/alpha.h [ASM_OUTPUT_LABELREF]: Fix typo.

Sun Jun  2 12:11:52 CEST 2002  Jan Hubicka  <jh@suse.cz>

	* gcse.c (bypass_conditional_jumps): Use single set to obtain set.

2002-06-02  Richard Henderson  <rth@redhat.com>

	* rtlanal.c (volatile_refs_p): Not automatically true for CALL.

2002-06-02  Marek Michalkiewicz  <marekm@amelek.gda.pl>

	Support for C++ constructors/destructors.
	* config/avr/avr.c (avr_output_function_epilogue): Jump to exit()
	instead of looping if main() returns.
	(asm_file_start): Output global symbols that cause .data and .bss
	initialization code to be linked in, unconditionally for now.
	(avr_asm_out_ctor, avr_asm_out_dtor): New functions.
	* config/avr/avr.h (CTORS_SECTION_ASM_OP, DTORS_SECTION_ASM_OP): New.
	(TARGET_ASM_CONSTRUCTOR, TARGET_ASM_DESTRUCTOR): New.
	(LIBSTDCXX): New.
	* config/avr/libgcc.S (_exit): Split in .fini9 and .fini0 sections.
	(__tablejump__): New.
	(__do_copy_data, __do_clear_bss): New.
	(__do_global_ctors, __do_global_dtors): New.
	* config/avr/t-avr (LIB1ASMFUNCS): Add _copy_data, _clear_bss,
	_ctors, _dtors.

2002-06-02  Neil Booth  <neil@daikokuya.demon.co.uk>

	* c4x/c4x.h (TARGET_CPU_CPP_BUILTINS): New.
	(CPP_SPEC, CPP_PREDEFINES): Kill.
	* c4x/rtems.h (CPP_PREDEFINES): Kill.
	(TARGET_OS_CPP_BUILTINS): New.

Sat Jun  1 23:29:51 CEST 2002  Jan Hubicka  <jh@suse.cz>

	* Makefile.in (tracer.o): New.
	* params.def (TRACER_*): New options.
	* rtl.h (tracer): Declare.
	* timevar.def (TV_TRACER): New.
	* toplev.c (dump_file_index): Add DFI_tracer.
	(dump_file_info): Add tracer.
	(flag_tracer): New.
	(lang_indepdenent_options): Add tracer.
	(rest_of_compilation): Call tracer.
	* tracer.c: New file.
	* invoke.texi (-ftracer): Document.
	(--param tracer-*): Document.

2002-06-01  Daniel Berlin  <dberlin@dberlin.org>

	* tree-inline.c (expand_call_inline): Make the statement
	expression we generate have a COMPOUND_STMT.

2002-06-01  Roger Sayle  <roger@eyesopen.com>

	* gcse.c (cprop_cc0_jump): Function deleted.
	(cprop_jump): Take an additional argument which is the possibly
	NULL cc setting insn immediately before the conditional jump.
	When a MODE_CC set is present, substitute it into the JUMP_INSN
	before attempting the constant propagation.
	(cprop_insn):  Recognize cc setters followed by conditional jumps
	as a special case.   Use cprop_jump instead of cprop_cc0_jump.
	(cprop_one_pass):  Call bypass_conditional_jumps if altering jumps.
	(find_bypass_set): New function based upon find_avail_set used by
	cprop, but finds constant expressions available at the end of
	basic blocks.
	(bypass_block): New function.  Given a basic block that begins
	with a conditional jump and multiple incoming edges, perform
	the jump bypass optimization.
	(bypass_conditional_jumps): New function.  Call bypass_block with
	each suitable basic block in the CFG using a simple single pass.

2002-06-01  Roger Sayle  <roger@eyesopen.com>

	* tree.c (real_minus_onep): New function to test for -1.0.
	* fold-const.c (fold) [MULT_EXPR]:  Optimize -1.0*x into -x.

2002-06-01  Roger Sayle  <roger@eyesopen.com>

	* fold-const.c (fold_truthop): Transform "a || b" into "(a|b) != 0"
	and "!p && !q" into "(p|q) == 0" under suitable conditions.

2002-06-01  Andreas Jaeger  <aj@suse.de>

	* cppexp.c (cpp_classify_number): Cast precission to int for
	correct printf format.

2002-06-01  Marek Michalkiewicz  <marekm@amelek.gda.pl>

	* config/avr/avr.c (avr_mcu_types): Remove devices that were once
	expected, but don't really exist: atmega83, atmega85, attiny10.
	* config/avr/avr.h (LINK_SPEC): Update to use the new avr[1-5] ld
	emulations for all devices.
	(CRT_BINUTILS_SPECS): Remove atmega83, atmega85, attiny10.
	* config/avr/t-avr (MULTILIB_MATCHES): Remove atmega83, atmega85.

2002-06-01  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300-protos.h: Add a prototype for
	h8300_shift_needs_scratch_p.
	* config/h8300/h8300.c (h8300_shift_needs_scratch_p): New.
	* config/h8300/h8300.h (OK_FOR_R): New.
	(OK_FOR_S): Likewise.
	(OK_FOR_T): Likewise.
	(EXTRA_CONSTRAINT): Call OK_FOR_R, OK_FOR_S, and OK_FOR_T.
	* config/h8300/h8300.md (anonymous shift patterns): Use
	constraints R, S, and T.

Sat Jun  1 11:23:22 CEST 2002  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* basic-block.h (struct basic_block_def): New field loop_father.
	(BB_VISITED): New flag.
	(struct loop): New field pred, removed field shared.
	(struct loops): New field parray.
	(LOOP_EXITS_DOMS): Removed.
	(flow_loop_tree_node_add, flow_loop_tree_node_remove,
	flow_loop_nested_p, flow_bb_inside_loop_p, get_loop_body,
	dfs_enumerate_from, loop_preheader_edge, loop_latch_edge,
	add_bb_to_loop, remove_bb_from_loops, find_common_loop,
	verify_loop_structure): Declare.
	* cfg.c (entry_exit_blocks): Initialize loop_father field.
	* cfganal.c (dfs_enumerate_from): New function.
	* cfgloop.c (HEAVY_EDGE_RATIO): New constant.
	(flow_loop_entry_edges_find, flow_loop_exit_edges_find,
	flow_loop_nodes_find, flow_loop_level_compute, flow_loop_nested_p,
	flow_loop_dump, flow_loops_dump, flow_loops_free,
	flow_loop_tree_node_add, flow_loop_level_compute,
	flow_loops_level_compute, flow_loop_scan, flow_loops_update,
	flow_loop_outside_edge_p): Modified for new infrastructure.
	(make_forwarder_block, canonicalize_loop_headers, glb_enum_p,
	redirect_edge_with_latch_update, flow_loop_free): New static functions.
	(flow_loop_tree_node_remove, flow_bb_inside_loop_p,
	get_loop_body, add_bb_to_loop, remove_bb_from_loops,
	find_common_loop, verify_loop_structure, loop_latch_edge,
	loop_preheader_edge): New functions.
	(flow_loops_cfg_dump): Do not show dominators, as this information
	does not remain up to date long.
	(flow_loops_find): Store results in new format.
	* predict.c (propagate_freq, estimate_probability,
	estimate_loops_at_level, estimate_bb_frequencies): Use new loop
	infrastructure.

2002-06-01  Alan Lehotsky  <apl@alum.mit.edu>

	* except.c (nothrow_function_p): Walk epilogue delay list
	checking the insn, not the chain for potential throws.

2002-05-31  Zack Weinberg  <zack@codesourcery.com>

	* Makefile.in (INSTALL_CPP, UNINSTALL_CPP): Remove.
	(install): Refer to install-cpp directly.
	(uninstall-cpp): Folded into uninstall rule.
	* configure.in: Delete all code relating to --disable-cpp.
	* configure: Regenerate.
	* config/t-install-cpp: Delete.

2002-05-31  Richard Henderson  <rth@redhat.com>

	* configure.in (HAVE_AS_TLS): Add alpha tests.
	* configure: Rebuild.
	* config/alpha/alpha.c (TARGET_AS_TLS): New.
	(alpha_tls_size, alpha_tls_size_string): New.
	(overide_options): Set it.  Always install machine_status hooks.
	(input_operand): Accept got tls predicates.
	(local_symbol_p): Merge into ...
	(local_symbolic_operand): ... here.  Reject tls symbols.
	(global_symbolic_operand): Likewise.
	(tls_symbolic_operand_1, dtp16_symbolic_operand): New.
	(dtp32_symbolic_operand, gotdtp_symbolic_operand): New.
	(tp16_symbolic_operand, tp32_symbolic_operand): New.
	(gottp_symbolic_operand, tls_symbolic_operand_type): New.
	(alpha_encode_section_info): Handle TLS symbols.
	(alpha_strip_name_encoding): Likewise.
	(alpha_legitimate_address_p): Likewise.
	(alpha_legitimize_address): Likewise.
	(alpha_expand_mov): Early exit to avoid nop moves.
	(struct machine_function): Move from unicosmk.h.  Add some_ld_name.
	(alpha_init_machine_status, alpha_mark_machine_status,
	alpha_free_machine_status): Always define.
	(get_some_local_dynamic_name, get_some_local_dynamic_name_1): New.
	(print_operand, print_operand_address): Add TLS relocs.
	* config/alpha/alpha.h (HAVE_AS_TLS): Default 0.
	(MASK_TLS_KERNEL, TARGET_TLS_KERNEL): New.
	(TARGET_SWITCHES): Add -mtls-kernel.
	(alpha_tls_size, alpha_tls_size_string): New.
	(TARGET_OPTIONS): Add -mtls-size=.
	(reg_class, REG_CLASS_NAMES, REG_CLASS_CONTENTS,
	REGNO_REG_CLASS, REG_CLASS_FROM_LETTER): Add R0_REG.
	(ASM_OUTPUT_LABELREF): Skip %.
	(PRINT_OPERAND_PUNCT_VALID_P): Add &.
	(PREDICATE_CODES): Update.
	* config/alpha/alpha.md (UNSPEC_TLSGD_CALL, UNSPEC_TLSLDM_CALL,
	UNSPEC_TLSGD, UNSPEC_TLSLDM, UNSPEC_DTPREL, UNSPEC_TPREL,
	UNSPEC_TP, UNSPECV_SET_TP): New.
	(adddi_er_lo16_dtp, adddi_er_hi32_dtp, adddi_er_lo32_dtp,
	adddi_er_lo16_tp, adddi_er_hi32_tp, adddi_er_lo32_tp, load_tp,
	set_tp, movdi_er_tlsgd, movdi_er_tlsldm, movdi_er_gotdtp,
	movdi_er_gottp, call_value_osf_tlsgd, call_value_osf_tlsldm): New.
	(call_value_osf_2_er): Accept anything as op4.
	* config/alpha/alpha-protos.h: Update.
	* config/alpha/unicosmk.h (struct machine_function): Move to alpha.c.

2002-05-31  Zack Weinberg  <zack@codesourcery.com>

	* cppinit.c (append_include_chain): Always pay attention to
	cxx_aware when setting new->sysp.  Remove ATTRIBUTE_UNUSED
	marker on argument.

2002-05-31  Kazu Hirata  <kazu@cs.umass.edu>

	* target.h: Fix formatting.
	* timevar.h: Likewise.
	* tlink.c: Likewise.
	* toplev.c: Likewise.
	* toplev.h: Likewise.
	* tree.c: Likewise.
	* tree-dump.h: Likewise.
	* tree.h: Likewise.
	* tree-inline.h: Likewise.
	* unroll.c: Likewise.
	* unwind-dw2.c: Likewise.
	* unwind-dw2-fde.c: Likewise.
	* unwind-dw2-fde-glibc.c: Likewise.
	* unwind-dw2-fde.h: Likewise.
	* unwind.h: Likewise.
	* unwind-sjlj.c: Likewise.
	* varasm.c: Likewise.
	* varray.h: Likewise.
	* vmsdbg.h: Likewise.
	* vmsdbgout.c: Likewise.
	* xcoffout.h: Likewise.

2002-05-31  Igor Shevlyakov <igor@microunity.com>

	* expr.c (compare_from_rtx): Generate comparison between op0 and op1
	rather than cc0 and 0 in a case when HAVE_cc0 is not defined.

2002-05-31  Matthew Woodcraft  <mattheww@chiark.greenend.org.uk>

	* gcc.c (cpp_unique_options): Remove "-d" options.
	(cpp_debug_options): New spec string.
	(default_compilers): Use it.
	* objc/lang-specs.h: Likewise.

2002-05-31  Nathanael Nerode  <neroden@twcny.rr.com>

	* gcc/Makefile.in: Replace HOST_PREFIX, HOST_PREFIX_1 with
	BUILD_PREFIX, BUILD_PREFIX_1, to correct nomenclature.
	* gcc/mklibgcc.in: Likewise.
	* gcc/config/arc/t-arc: Likewise.
	* gcc/configure.in: Likewise.
	* gcc/configure: Regenerate.

2002-05-31  Stan Shebs  <shebs@apple.com>
	    Turly O'Connor  <turly@apple.com>

	* c-decl.c (struct binding_level): Change int field n_incomplete
	to tree list incomplete_list.
	(clear_binding_level): Init field with NULL.
	(pushdecl): Add incomplete type to list.
	(mark_binding_level): Mark the incomplete list.
	(finish_struct): Scan the incomplete list for types instead
	of all decls in the current binding level.

2002-05-31  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* pa.c (output_millicode_call): Add missing '%' characters.
	(output_call): Likewise.

2002-05-31  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/xcoff.h (HOT_TEXT_SECTION_NAME): Define.
	(UNLIKELY_EXECUTED_TEXT_SECTION_NAME): Define.

2002-05-31  Alan Lehotsky <apl@alum.mit.edu>

	* varasm.c (mark_constant_pool): Walk epilogue delay list
	checking the insn, not the chain for potential constants.

Fri May 31 12:38:43 2002  J"orn Rennecke <joern.rennecke@superh.com>

	* config/sh/elf.h (ASM_SPEC): Use subtarget_endian_asm_spec.

Fri May 31 13:50:19 CEST 2002  Jan Hubicka  <jh@suse.cz>

	* i386.c (classify_argument): Properly handle base types.

	* dwarf2out.c (expand_builin_init_dwarf_reg_sizes):
	Store first DWARF_FRAME_REGISTERS dwarf registers, not pseudo
	registers.

Fri May 31 13:37:54 CEST 2002  Jan Hubicka  <jh@suse.cz>

	* gcse.c (gcse_emit_move_after): New.
	(pre_delete, hoist_store): Use it.

	* reload1.c (emit_input_reload_insns): Use constrain_operands
	instead of constraint_accepts_reg_p to verify optimization.
	(constraint_accepts_reg_p): Kill.

	* reload1.c (reload_cse_delete_noop_set): Kill.
	(reload_cse_simplify): Use delete_insn_and_edges.

2002-05-31  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* cfgloop.c (flow_loops_find): Initialize first and last fields
	correctly.

2002-05-31  Neil Booth  <neil@daikokuya.demon.co.uk>

	* c-common.c (builtin_define_std): Correct logic.

2002-05-31  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* pa.c (output_millicode_call): Correct "be,l" insn for TARGET_PA_20.
	(output_call): Likewise.

2002-05-31  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* pa.c: Move output.h include after tree.h include.
	(pa_asm_output_mi_thunk): Constify identifier lab.

2002-05-31  Jason Thorpe  <thorpej@wasabisystems.com>

	* config/ns32k/ns32k.h: Define named constants for the
	bits in target_flags and use them.
	* config/ns32k/netbsd.h (TARGET_DEFAULT): Use named constants.

2002-05-30  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* config.gcc (tm_file): Prefix pa/pa-700.h to tm_file list for PA1.0
	architecture and pa/pa-7100.h for PA1.1 architecture, respectively.
	* pa/pa.c (override_options): Use TARGET_SCHED_DEFAULT to select
	default scheduling model.
	* pa/pa.h (TARGET_SCHED_DEFAULT): Define if not defined to "8000".
	* pa/pa-700.h (TARGET_SCHED_DEFAULT): New file for "700" scheduling.
	* pa/pa-7100.h (TARGET_SCHED_DEFAULT): New file for "7100" scheduling.
	* doc/install.texi (hppa*-*-*): Document default scheduling.

2002-05-30  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* pa.c (following_call): Check TARGET_JUMP_IN_DELAY.

2002-05-31  Jason Thorpe  <thorpej@wasabisystems.com>

	* config.gcc (ns32k-*-netbsd*): Set tm_file to
	"${tm_file} netbsd.h netbsd-aout.h ns32k/netbsd.h"
	* config/ns32k/netbsd.h: Don't include ns32k/ns32k.h,
	netbsd.h, or netbsd-aout.h.

2002-05-31  Jason Thorpe  <thorpej@wasabisystems.com>

	* longlong.h (count_trailing_zeros): Add missing \, and clean up
	whitespace in __ns32000__ case.

2002-05-31  Aldy Hernandez  <aldyh@redhat.com>

	* expr.c (expand_expr): Output partially zeroed out vectors with
	output_constant_def.

2002-05-30  Jason Thorpe  <thorpej@wasabisystems.com>

	* config.gcc (sh[123456789l]*-*-*): Set cpu_type to sh.
	(sh-*-netbsdelf*)
	(shl*-*-netbsdelf*): New targets.
	* config/sh/netbsd-elf.h: New file.
	* config/sh/t-netbsd: New file.

2002-05-30  Richard Henderson  <rth@redhat.com>
	    Eric Botcazou  <ebotcazou@multimania.com>

	PR optimization/6822
	* config/i386/i386.c (ix86_expand_int_movcc): Don't cast INTVAL
	to unsigned int for op1 comparisons.  Use gen_int_mode.

2002-05-30  Eric Botcazou  <ebotcazou@multimania.com>

	* expmed.c (const_mult_add_overflow_p): New.
	* expr.h: Declare it.
	* loop.c (maybe_eliminate_biv_1) [COMPARE]: Use it.
	Don't eliminate the biv if the giv has a constant multiplier and
	the rhs argument of the comparison does satisfy the predicate.
	Use expand_mult_add to compute the replacement constant.

2002-05-30  Osku Salerma  <osku@iki.fi>

	* c-common.c (c_common_attribute_table): Add "may_alias" entry.
	(c_common_get_alias_set): Handle it.
	* doc/extend.texi: Document it.

2002-05-30  Richard Henderson  <rth@redhat.com>

	* defaults.h (TARGET_ALLOWS_PROFILING_WITHOUT_FRAME_POINTER): Kill.
	* toplev.c (process_options): Don't check it.
	* doc/tm.texi: Don't document it.
	* config/i386/linux.h (SUBTARGET_FRAME_POINTER_REQUIRED): New.
	(TARGET_ALLOWS_PROFILING_WITHOUT_FRAME_POINTER): Kill.
	* config/i386/i386.c (ix86_frame_pointer_required): Suppress leaf
	frame pointer optimization if current_function_profile.

2002-05-30  Kazu Hirata  <kazu@cs.umass.edu>

	* langhooks.c: Fix formatting.
	* langhooks.h: Likewise.
	* lcm.c: Likewise.
	* libgcc2.c: Likewise.
	* lists.c: Likewise.
	* local-alloc.c: Likewise.
	* loop.c: Likewise.
	* loop.h: Likewise.

2002-05-30  Marc Espie <espie@openbsd.org>

	* config.gcc (sparc64-*-openbsd*): New.
	* config/sparc/openbsd1-64.h: New.
	* config/sparc/openbsd64.h: New.

2002-05-30  Jeff Law <law@redhat.com>

	* flow.c (propagate_one_insn): Revise yesterday's patch.  Delete
	a dead insn with a REG_RETVAL note when the entire libcall is not
	dead and remove the associated REG_LIBCALL note at the same time.

Thu May 30 19:54:30 2002  J"orn Rennecke <joern.rennecke@superh.com>

	* lcm.c (output.h): #include.
	(compute_earliest): Remove hack to treat renumbered EXIT_BLOCK
	as an ordinary block.
	(optimize_mode_switching): Don't pretend that the exit block is
	an ordinary block, or handle sucessors of entry block specially.
	Instead, split edges from entry block and to exit block, and
	put a computing definition on the thus gained post-entry-block,
	and a need on the pre-exit-block.

Thu May 30 20:28:01 CEST 2002  Jan Hubicka  <jh@suse.cz>

	* gengenrtl.c (type_from_format, accessor_from_format): Support 'B'.
	* rtl.texi: Document 'B'

2002-05-30  Jason Thorpe  <thorpej@wasabisystems.com>

	* config/m68k/netbsd-elf.h (LONG_DOUBLE_TYPE_SIZE): Compute
	at run-time.
	(LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Set to 96 if not __mc68010__.

2002-05-30  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/rs6000.c (rs6000_expand_unop_builtin): Return
	const0_rtx instead of NULL_RTX when in error.
	(altivec_expand_abs_builtin): Same.
	(rs6000_expand_binop_builtin): Same.
	(altivec_expand_predicate_builtin): Same.
	(altivec_expand_stv_builtin): Same.
	(rs6000_expand_ternop_builtin): Same.
	(altivec_expand_builtin): Same.

2002-05-29  David S. Miller  <davem@redhat.com>

	* rtl.h (clear_emit_caches): Delete.
	* integrate.c (output_inline_function): Don't call it.
	* emit-rtl.c (restore_emit_status, init_emit): Likewise.
	(clear_emit_caches): Delete definition.
	(SEQUENCE_RESULT_SIZE, sequence_result, free_insn): Likewise.

2002-05-30  Hans-Peter Nilsson  <hp@bitrange.com>

	* config/mmix/mmix.c: Include real.h.
	(mmix_constant_address_p): Remove redundant test before switch.

2002-05-29  Jason Thorpe  <thorpej@wasabisystems.com>

	* config/mips/mips.h (READONLY_DATA_SECTION_ASM_OP): Define
	only if not already defined.

2002-05-29  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300-protos.h: Remove prototypes for
	ok_for_bclr and small_power_of_two.
	* config/h8300/h8300.c (small_power_of_two): Remove.
	(ok_for_blcr): Likewise.
	(fix_bit_operand): Make WHAT deal with an integer instead of a
	constraint character.
	* config/h8300/h8300.h (CONST_OK_FOR_O): Remove.
	(CONST_OK_FOR_P): Likewise.
	(CONST_OK_FOR_LETTER_P): Do not call CONST_OK_FOR_O or
	CONST_OK_FOR_P any more.
	* config/h8300/h8300.md (andqi3): Adjust to the new prototype
	of fix_bit_operand.
	(iorqi3): Likewise.
	(xorqi3): Likewise.

2002-05-29  Jason Thorpe  <thorpej@wasabisystems.com>

	* config/mips/netbsd.h (TARGET_OS_CPP_BUILTINS): Define.
	(CPP_PREDEFINES): Make sure this is undefined.
	(CPP_SPEC): Place -D__mips=1 at the beginning of the spec,
	since it is no longer in CPP_PREDEFINES.  Don't -U__MIPSEL__
	or -U__MIPSEB__ before defining one or the other.  Instead,
	use %(subtarget_endian_default) if neither -EB nor -EL are
	specified.
	(SUBTARGET_EXTRA_SPECS): Define.
	(SUBTARGET_CPP_SPEC): Remove __LONG64 handling.  Use
	%(netbsd_cpp_spec).

2002-05-29  Hans-Peter Nilsson  <hp@axis.com>

	* doc/md.texi (Patterns): Note pattern condition pitfall
	for unnamed insn.

2002-05-29  Aldy Hernandez  <aldyh@redhat.com>

	* rs6000.c: (altivec_expand_builtin): Only expand altivec builtins
	when TARGET_ALTIVEC.  Move handling of generic unary, binary, and
	ternary operations from here...
	(rs6000_expand_builtin): ...to here.
	New argument expandedp.
	Change all instances of altivec_expand_binop_builtin to
	rs6000_expand_binop_builtin.
	(altivec_expand_unop_builtin): Rename to
	rs6000_expand_unop_builtin.
	(altivec_expand_binop_builtin): Rename to
	rs6000_expand_binop_builtin.
	(altivec_expand_ternop_builtin): Rename to
	rs6000_expand_ternop_builtin.

2002-05-29  Richard Henderson  <rth@redhat.com>

	* config/i386/biarch64.h (TARGET_64BIT_DEFAULT): Define with value.
	(TARGET_BI_ARCH): Likewise.
	* config/i386/i386.h: Test TARGET_64BIT_DEFAULT by value.
	(TARGET_SWITCHES): Combine target defaults here not in TARGET_DEFAULT.
	(TARGET_64BIT_DEFAULT): Default to 0.
	(TARGET_DEFAULT): Default to MASK_OMIT_LEAF_FRAME_POINTER.

2002-05-29  Richard Henderson  <rth@redhat.com>

	* config/i386/i386.c (USE_HIDDEN_LINKONCE): New.
	(get_pc_thunk_name): New.
	(output_set_got): Use it.
	(ix86_asm_file_end): If USE_HIDDEN_LINKONCE, emit get_pc thunks
	into linkonce sections.

2002-05-29  Jason Thorpe  <thorpej@wasabisystems.com>

	* config/sparc/netbsd-elf.h (TARGET_OS_CPP_BUILTINS): Define.
	(CPP_PREDEFINES): Make sure this is undefined.
	(CPP_SUBTARGET_SPEC64, CPP_SUBTARGET_SPEC32): Remove.
	(CPP_SUBTARGET_SPEC): Don't provide different versions for
	default-32 and default-64.  Just always use %(netbsd_cpp_spec).
	(SUBTARGET_EXTRA_SPECS): Remove cpp_subtarget_spec32 and
	cpp_subtarget_spec64.  Add netbsd_cpp_spec.
	* config/sparc/netbsd.h (TARGET_OS_CPP_BUILTINS): Define.
	(CPP_PREDEFINES): Make sure this is undefined.
	(SUBTARGET_EXTRA_SPECS): Define.
	(CPP_SPEC): Use %(netbsd_cpp_spec).

2002-05-29  Jeff Law <law@redhat.com>

	* pa.h (ASM_OUTPUT_MI_THUNK): Remove unwanted semi-colon.

	* flow.c (propagate_one_insn): Do not remove a dead insn if it
	contains a REG_RETVAL note.

	* haifa-sched (sched_analyze): Remove another useless clearing
	of SCHED_GROUP_P I missed yesterday.

	* pa.h (ASM_OUTPUT_MI_THUNK): Move implementation into pa.c.
	* pa.c (pa_asm_output_mi_thunk): New function.
	* pa-protos.h (pa_asm_output_mi_thunk): Declare.

2002-05-29  Neil Booth  <neil@daikokuya.demon.co.uk>
	    Marek Michalkiewicz  <marekm@amelek.gda.pl>

	* config/avr/avr.c (avr_base_arch_macro, avr_extra_arch_macro): New.
	(avr_asm_only_p): Make non-static.
	(enum avr_arch): Remove.
	(avr_arch_types): New.
	(avr_mcu_types): Update.
	(avr_override_options): Use avr_arch_types table instead of switch.
	* avr.h (CPP_PREDEFINES): Die.
	(avr_base_arch_macro, avr_extra_arch_macro): New.
	(TARGET_CPU_CPP_BUILTINS): New.
	(CPP_SPEC, EXTRA_SPECS): Simplify.
	(CPP_AVR1_SPEC, CPP_AVR2_SPEC, CPP_AVR3_SPEC, CPP_AVR4_SPEC,
	CPP_AVR5_SPEC): Die.

2002-05-29  Jason Thorpe  <thorpej@wasabisystems.com>

	* config/arm/netbsd.h (TARGET_OS_CPP_BUILTINS): Use
	NETBSD_OS_CPP_BUILTINS_AOUT.
	(SUBTARGET_EXTRA_SPECS): Define.
	(CPP_SPEC): Use %(netbsd_cpp_spec).

2002-05-29  Richard Henderson  <rth@redhat.com>

	* config/i386/i386.c (ix86_output_function_epilogue): New.
	(TARGET_ASM_FUNCTION_EPILOGUE): New.
	(pic_label_name): Remove.
	(pic_labels_used): New.
	(ix86_asm_file_end): Emit one pc load stub for each register used.
	(output_set_got): Generate deep pc load to any register.
	(ix86_select_alt_pic_regnum): New.
	(ix86_save_reg): Don't save pic register if we can find a valid
	call-clobbered replacement.
	(ix86_expand_prologue): If we found a valid replacement, renumber
	pic_offset_table_rtx.
	* config/i386/i386.h (PIC_OFFSET_TABLE_REGNUM): Look at
	pic_offset_table_rtx after reload.
	(REAL_PIC_OFFSET_TABLE_REGNUM): New.
	* config/i386/i386.md (set_got): Make insn, not expander.
	(set_got_nopic, set_got_deep, set_got_nodeep): Remove.

2002-05-29  Richard Henderson  <rth@redhat.com>

	* config/i386/i386.c (ix86_compute_frame_layout): Do add bottom
	alignment for alloca.

2002-05-29  Richard Henderson  <rth@redhat.com>

	* config/i386/i386.c (output_pic_addr_const): Lowercase rip.
	(print_operand_address): Only add rip for symbolic addresses
	for which we do not have another relocation type.

2002-05-29  Jason Thorpe  <thorpej@wasabisystems.com>

	* config/m68k/netbsd-elf.h (TARGET_OS_CPP_BUILTINS): Define.
	(EXTRA_SPECS): Add netbsd_cpp_spec.
	(CPP_SPEC): Use %(netbsd_cpp_spec).
	(CPP_PREDEFINES): Remove.
	* config/m68k/netbsd.h (TARGET_OS_CPP_BUILTINS): Define.
	(EXTRA_SPECS): Define.
	(CPP_SPEC): Use %(netbsd_cpp_spec).
	(CPP_PREDEFINES): Remove.

2002-05-29  Neil Booth  <neil@daikokuya.demon.co.uk>

	PR preprocessor/6844
	* cppmacro.c (cpp_macro_definition): Reserve space for terminating
	NUL.

2002-05-29  Eric Christopher  <echristo@redhat.com>

	* config/mips/linux.h (SUBTARGET_CPP_SPEC): Add support for
	mips5/mips32/mips64 and _MIPS_ISA_MIPSXX.

2002-05-29  Nick Clifton  <nickc@cambridge.redhat.com>

	* config/fr30/fr30.md: Remove previous restriction on splits.
	Enforce conformance through gen_lowpart and cont_int_operand.
	* config/fr30/fr30.h (BSS_SECTION_ASM_OP): Use ".section .bss"
	as the assembler does not support ".bss".

2002-05-29  Jason Thorpe  <thorpej@wasabisystems.com>

	* config/i386/netbsd-elf.h (TARGET_OS_CPP_BUILTINS): Define.
	(CPP_PREDEFINES): Remove.
	(SUBTARGET_EXTRA_SPECS): Define.
	(CPP_SPEC): Use %(netbsd_cpp_spec).
	* config/i386/netbsd.h (TARGET_OS_CPP_BUILTINS): Define.
	(CPP_PREDEFINES): Remove.
	(SUBTARGET_EXTRA_SPECS): Define.
	(CPP_SPEC): Use %(netbsd_cpp_spec).
	* config/i386/netbsd64.h (TARGET_OS_CPP_BUILTINS): Define.
	(CPP_PREDEFINES, CPP_LP64_SPEC, CPP_SUBTARGET_SPEC): Remove.
	(SUBTARGET_EXTRA_SPECS): Remove cpp_lp64 and cpp_subtarget.
	Add netbsd_cpp_spec.
	(CPP_SPEC): Remove %(cpp_subtarget), add %(netbsd_cpp_spec).

2002-05-29  Neil Booth  <neil@daikokuya.demon.co.uk>
	    Zack Weinberg <zack@codesourcery.com>

	* cppexp.c (cpp_num): Move to cpplib.h.
	(CPP_ERROR): Remove.
	(interpret_float_suffix, interpret_int_suffix): New.
	(struct suffix, vsuf_1, vsuf_2, vsuf_3): Remove.
	(cpp_classify_number, cpp_interpret_integer): New.
	(interpret_number): Remove.
	(eval_token): Update to use new routines.
	* cpphash.h (cpp_num_part): Move to cpplib.h.
	* cppinit.c (cpp_post_options): Set warn_long_long.
	* cpplib.h (struct cpp_options): Add warn_long_long.
	(cpp_num, cpp_num_part, CPP_N_CATEGORY, CPP_N_INVALID,
	CPP_N_INTEGER, CPP_N_FLOATING, CPP_N_WIDTH, CPP_N_SMALL,
	CPP_N_MEDIUM, CPP_N_LARGE, CPP_N_RADIX, CPP_N_DEC, CPP_N_HEX,
	CPP_N_OCTAL, CPP_N_UNSIGNED, CPP_N_IMAGINARY, cpp_classify_number,
	cpp_interpret_integer): New.

2002-05-29  Joel Sherrill <joel@OARcorp.com>

	* config/rs6000/rs6000.h (ASM_CPU_SPEC): Use -m403 and -m405.

2002-05-29  Jason Thorpe  <thorpej@wasabisystems.com>

	* config/alpha/netbsd.h (TARGET_OS_CPP_BUILTINS): Use
	NETBSD_OS_CPP_BUILTINS_ELF and NETBSD_OS_CPP_BUILTINS_LP64.
	(CPP_SUBTARGET_SPEC): Define.
	(SUBTARGET_EXTRA_SPECS): Define.
	(CPP_SPEC): Remove.

2002-05-29  Chris Lattner  <sabre@nondot.org>

	* ssa.c (rename_insn_1): Rename uses of undefined registers to
	prevent confusion if/when the register is defined.

2002-05-29  Hans-Peter Nilsson  <hp@axis.com>

	PR target/6838
	* config/cris/cris.md: Fix typos and thinkos in comments.
	("*mov_sideqi_biap_mem"): Remove '*' in constraint for operand 4,
	second alternative.
	("*mov_sidehi_biap_mem", "*mov_sidesi_biap_mem"): Ditto.
	("*mov_sideqi_mem"): Similar, but for operand 3.
	("*mov_sidehi_mem", "*mov_sidesi_mem"): Ditto.
	(splitter for mov_sideqi_mem, mov_sidehi_mem, mov_sidesi_mem):
	Remove spurious mode specifier on operand 2.

2002-05-29  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300-protos.h: Remove the prototype for
	o_operand.
	Add prototypes for single_one_operand and single_zero_operand.
	* config/h8300/h8300.c (o_operand): Remove.
	(single_one_operand): New.
	(single_zero_operand): Likewise.
	(print_operand): For 'V' operand, and the operand with 0xff.
	For 'V' and 'W' operands, do not and the bit position with 7.
	* config/h8300/h8300.md (various anonymous patterns): Replace
	use of exact_log2 with single_one_operand/single_zero_operand.

2002-05-29  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/linux.h (MD_FALLBACK_FRAME_STATE_FOR): New.

2002-05-29  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.c (legitimate_pic_operand_p): Do not
	accept symbolic LARL operands.
	(s390_emit_epilogue): Do not set FRAME_RELATED_P on
	epilogue insns.

2002-05-29  Hartmut Penner  <hpenner@de.ibm.com>

	* config/s390/s390.md (cmpstr_64/31): Mark whole
	input registers as used.

2002-05-28  Richard Henderson  <rth@redhat.com>

	* config/i386/i386.c (ix86_save_reg): Examine regs_ever_live,
	not current_function_uses_pic_offset_table and
	current_function_uses_const_pool; examine current_function_profile.
	(ix86_expand_prologue): Likewise.  Add pic_offset_table_rtx as
	input to blockage if needed.
	(ix86_expand_call): Do not set current_function_uses_pic_offset_table.
	(legitimize_pic_address): Likewise.  Set regs_ever_live for
	pic_offset_table_rtx when invoked during reload.
	* config/i386/i386.h (FINALIZE_PIC): Remove.
	* config/i386/i386.md (tablejump): Reformat.  Do not set
	current_function_uses_pic_offset_table.
	(tls_global_dynamic, tls_local_dynamic_base): Likewise.
	(blockage): Accept anything as operand 0.

2002-05-28  Jason Thorpe  <thorpej@wasabisystems.com>

	* config/netbsd-aout.h (NETBSD_OS_CPP_BUILTINS_AOUT): Define
	common CPP built-ins for all NetBSD a.out targets.
	* config/netbsd-elf.h (NETBSD_OS_CPP_BUILTINS_ELF): Define
	common CPP built-ins for all NetBSD ELF targets.
	* config/netbsd.h: Add missing notice.
	(NETBSD_OS_CPP_BUILTINS_COMMON): Define common CPP built-ins
	for all NetBSD targets.
	(NETBSD_OS_CPP_BUILTINS_LP64): Define common CPP built-ins
	for all NetBSD targets using an LP64 code model.
	(NETBSD_CPP_SPEC): Define CPP_SPEC parts common to all
	NetBSD targets.

2002-05-28  Richard Henderson  <rth@redhat.com>

	* flow.c (update_life_info_in_dirty_blocks): Only do a partial
	update if UPDATE_LIFE_LOCAL.

2002-05-28  Toshiyasu Morita  <toshiyasu.morita@hsa.hitachi.com>

	* config/sh/sh.c: Include real.h for REAL_VALUE_TYPE.

Tue May 28 21:16:18 2002  J"orn Rennecke <joern.rennecke@superh.com>
			  Jason R. Thorpe <thorpej@wasabisystems.com>

	config/sh reorganization to factor out endianness and coff:

	* config/sh/little.h: New file.
	* config/sh/sh.h (TARGET_ENDIAN_DEFAULT): If not already
	defined, define to 0 to select big-endian.
	(SUBTARGET_ASM_ENDIAN_SPEC): Define according to TARGET_ENDIAN_DEFAULT.
	(TARGET_DEFAULT): Include TARGET_ENDIAN_DEFAULT.
	* config/sh/sh64.h (TARGET_DEFAULT): Include TARGET_ENDIAN_DEFAULT.
	* config/sh/t-be: New file.
	* config/sh/t-le: New file.

	* sh.h (SDB_DEBUGGING_INFO, #include "dbxcoff.h"): Moved to sh/coff.h.
	(SDB_DELIM, MAX_OFILE_ALIGNMENT, IDENT_ASM_OP): Likewise.
	(TARGET_ASM_NAMED_SECTION, ASM_OUTPUT_SKIP): Likewise.
	(USER_LABEL_PREFIX, LOCAL_LABEL_PREFIX): Likewise.
	(ASM_GENERATE_INTERNAL_LABEL, ASM_OUTPUT_INTERNAL_LABEL): Likewise.
	(ASM_OUTPUT_COMMON, ASM_OUTPUT_LOCAL): Likewise.
	(ASM_FILE_END, ASM_DECLARE_FUNCTION_NAME): Deleted.
	(CPP_SPEC, SUBTARGET_CPP_ENDIAN_SPEC): Likewise.
	(SUBTARGET_CPP_SPEC, CPP_DEFAULT_CPU_SPEC, CPP_PREDEFINES): Likewise.
	(EXTRA_SPECS): Remove SUBTARGET_CPP_ENDIAN_SPEC and
	CPP_DEFAULT_CPU_SPEC.  Add LINK_EMUL_PREFIX, LINK_DEFAULT_CPU_EMUL,
	SUBTARGET_LINK_EMUL_SUFFIX and SUBTARGET_LINK_SPEC.
	(LINK_SPEC): Define to SH_LINK_SPEC.
	(TARGET_CPU_CPP_BUILTINS, SH_LINK_SPEC): Define.
	(LINK_EMUL_PREFIX, LINK_DEFAULT_CPU_EMUL): Likewise.
	(SUBTARGET_LINK_EMUL_SUFFIX, SUBTARGET_LINK_SPEC): Likewise.
	(CPP_SPEC): Reduce to %(subtarget_cpp_spec).
	(TARGET_ENDIAN_DEFAULT): Define if not already defined.
	* config/sh/coff.h: New file.
	(TARGET_ASM_NAMED_SECTION): Now default_coff_asm_named_section
	(TARGET_OBJFMT_CPP_BUILTINS): Define.
	* config/sh/elf.h (IDENT_ASM_OP): No need to #undef at the start.
	(ASM_FILE_END, ASM_OUTPUT_SOURCE_LINE): Likewise.
	(DBX_OUTPUT_MAIN_SOURCE_FILE_END, TARGET_ASM_NAMED_SECTION): Likewise.
	(ASM_DECLARE_FUNCTION_NAME, MAX_OFILE_ALIGNMENT, SIZE_TYPE): Likewise.
	(PTRDIFF_TYPE): Likewise.
	("dbxelf.h", "elfos.h", "svr4.h"): Don't #include.
	(CPP_PREDEFINES): Don't define.
	(TARGET_OBJFMT_CPP_BUILTINS): Define.
	(LINK_SPEC): Define to SH_LINK_SPEC.
	(LINK_EMUL_PREFIX): Redefine.
	* config/sh/linux.h: (SUBTARGET_CPP_SPEC): Remove -fpic / -fPIC cases.
	(SUBTARGET_CPP_ENDIAN_SPEC, CPP_DEFAULT_CPU_SPEC): Remove redefinition.
	(CPP_PREDEFINES, SUBTARGET_ASM_ENDIAN_SPEC): Likewise.
	(CC1_SPEC, CC1PLUS_SPEC, LINK_SPEC): Likewise.
	(TARGET_OS_CPP_BUILTINS): Define.
	(TARGET_DEFAULT): Redefine.
	(SUBTARGET_LINK_EMUL_SUFFIX, SUBTARGET_LINK_SPEC): Likewise.
	* config/sh/sh64.h (CPP_DEFAULT_CPU_SPEC): Remove.
	(LINK_SPEC): Don't redefine.
	(LINK_DEFAULT_CPU_EMUL): Redefine.
	(TARGET_DEFAULT): Include TARGET_ENDIAN_DEFAULT.
	* sh.c (sh_asm_named_section): Don't declare / define.
	* t-linux (MULTILIB_OPTIONS): Rely on pre-set endianness option.
	* config.gcc (sh-*-elf* tm_file): Add dbxelf.h elfos.h svr4.h.
	(sh64-*-elf* tm_file): Likewise.
	(sh-*-rtemself* tm_file): Likewise.
	(sh-*-linux* tm_file): Likewise.  Add sh/little.h.
	(sh-*-linux* tmake_file): Add sh/t-le.
	(sh-*-rtems* tm_file): Add sh/coff.h
	(sh-*-* tm_file): Likewise.

Tue May 28 21:16:18 2002  J"orn Rennecke <joern.rennecke@superh.com>

	* sh.h (LEGITIMATE_PIC_OPERAND_P): Check for SYMBOL_REF before using
	CONSTANT_POOL_ADDRESS_P.

	* coff.h (HAS_INIT_SECTION, INVOKE__MAIN): Define.

2002-05-28  David Edelsohn  <edelsohn@gnu.org>
	    Jeff Law <law@redhat.com>

	* optabs.c (expand_binop): Fix nwords sign warnings.
	generate pseudo for add_optab.

	* sched-deps.c (sched_analyze): Do not clear SCHED_GROUP_P.
	* haifa-sched.c (move_insn): Clear SCHED_GROUP_P after it is used.

2002-05-28	Marc Espie <espie@openbsd.org>

	* config/i386/openbsd.h (HAVE_GAS_MAX_SKIP_P2ALIGN):  Remove,
	inherited from gas.h.
	(ASM_QUAD):  Undef.  OpenBSD does not support it.

2002-05-28  Danny Smith  <dannysmith@users.sourceforge.net>

	* doc/install.texi (binaries): Change mingw binaries
	link to www.mingw.org.

2002-05-28  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* cfgloop.c (flow_loops_cfg_dump): Use bb->index, not i.

2002-05-28  Richard Henderson  <rth@redhat.com>

	* config/i386/i386.c (ix86_compute_frame_layout): Do not add
	bottom alignment for leaf functions.

2002-05-28  Zack Weinberg  <zack@codesourcery.com>

	* config/pa/milli32.S, config/pa/lib1funcs.asm,
	config/sparc/sol2-g1.asm: Delete unused files.

2002-05-28  Richard Henderson  <rth@redhat.com>

	* cfg.c (dump_flow_info): Print bb->index, not i, for block number.

	* flow.c (calculate_global_regs_live): Rename call_used to
	invalidated_by_call.  Initialize from regs_invalidated_by_call
	instead of call_used_regs.

	* varasm.c (default_binds_local_p): Check TREE_PUBLIC before
	DECL_EXTERNAL.

2002-05-28  Zack Weinberg  <zack@codesourcery.com>

	* tree.h: Don't include real.h.
	Forward-declare struct realvaluetype.
	(struct tree_real_cst): Point to the REAL_VALUE_TYPE, do not
	contain it.
	(TREE_REAL_CST_PTR): New accessor.
	(TREE_REAL_CST): Update.
	* real.h: Include machmode.h.
	(realvaluetype): Make it struct realvaluetype, not a typedef.
	(build_real): Prototype here.

	* tree.c: Include real.h.
	(build_real): Allocate the REAL_VALUE_TYPE as a separate
	object in GC memory, set TREE_REAL_CST_PTR to point to it.
	(build_real_from_int_cst): Use build_real.
	* ggc-common.c (ggc_mark_trees): Mark TREE_REAL_CST_PTR of a
	REAL_CST.

	* builtins.c, c-common.c, c-lex.c, dwarf2out.c, expr.c,
	fold-const.c, print-tree.c, real.c: Include real.h.
	* Makefile.in: Update dependency lists.

2002-05-28  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* basic-block.h (last_basic_block): Declare.
	(expunge_block_nocompact): Declaration removed.
	(compact_blocks): Declare.
	* cfg.c (last_basic_block): New variable.
	(expunge_block_nocompact): Removed.
	(expunge_block): Do not compact basic blocks.
	(compact_blocks): New.
	* cfganal.c (flow_call_edges_add): Use the fact that bb indices no
	longer change.
	* cfgbuild.c (find_basic_blocks_1, find_basic_blocks): Set
	last_basic_block.
	* cfgcleanup.c (merge_blocks_move_predecessor_nojumps): Do not change
	real positions of blocks.
	(delete_unreachable_blocks): Simplified -- quadratic behavior now
	cannot occur.
	(cleanup_cfg): Compact blocks.
	* cfgrtl.c (create_basic_block): Insert basic blocks to the end of
	basic_block_info varray.
	(flow_delete_block): Comment update.
	(back_edge_of_syntactic_loop_p): Modify position check code.
	(verify_flow_info): Update checking.
	* flow.c (calculate_global_regs_live): Use FOR_EACH_BB.
	* ifcvt.c (SET_ORIG_INDEX, ORIG_INDEX): Removed.
	(find_if_case_1, find_if_case_2, if_convert): Use the fact that bb
	indices no longer change.
	* lcm.c (optimize_mode_switching): Replace n_basic_blocks with
	last_basic_block.
	* predict.c (estimate_bb_frequencies): Remove unneccessary code.
	* profile.c (branch_prob): Compact blocks.
	* sched-rgn.c (find_rgns): Replace n_basic_blocks with
	last_basic_block.

2002-05-28  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (two anonymous patterns): New.

2002-05-28  David S. Miller  <davem@redhat.com>

	* config/sparc/sparc.md (cpu): Tidy.
	(type): Delete 'return', add 'ialuX', 'flushw', 'iflush', and
	'trap'.
	(in_call_delay): Delete reference to 'return' type.
	(eligible_for_return_delay, in_return_delay, define_delay
	referencing those): Delete.
	(rest of file): Use new type attributes as appropriate.
	* config/sparc/sparc-protos.h (eligible_for_return_delay): Delete.
	* config/sparc/sparc.c (eligible_for_return_delay): Likewise.
	* config/sparc/ultra1_2.md (us1_single): New reservation.
	(us1_ialuX): Likewise.
	* config/sparc/ultra3.md (us3_single): Likewise.
	(us3_ialuX): Likewise.
	(us3_imul, us3_idiv): Tweak.

2002-05-28  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.c (alpha_in_small_data_p): Return false for
	STRING_CST.

2002-05-28  Richard Henderson  <rth@redhat.com>

	* config.gcc: Obsolete mn10200.

2002-05-28  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cppexp.c (interpret_number): Optimize for single-digit
	and less-than-half-precision cases.
	(num_trim, num_positive, num_div_op): Cast constants.

2002-05-27  Bo Thorsen  <bo@suse.de>

	* config/i386/libgcc-x86_64-glibc.ver: Copy this file from the
	3.1 branch. The file was made by Jakub Jelinek.
	* config/i386/linux64.h (MD_FALLBACK_FRAME_STATE_FOR): Add i386
	support so multilib doesn't break. And don't define this at all
	when -Dinhibit_libc is used.
	(MULTILIB_DEFAULTS): Always set default to 64 bit compilation.
	* config/i386/t-linux64: Implement full multilib support. Patch
	originally done by Andreas Jaeger and Jakub Jelinek.

2002-05-27  Roger Sayle  <roger@eyesopen.com>

	* c-common.c: Add support for __attribute__((nothrow)) to specify
	that a function cannot throw an exception (using TREE_NOTHROW).
	(handle_nothrow_attribute): New function to process this attribute.

	* doc/extend.texi: Document the new nothrow function attribute.

2002-05-27  H.J. Lu  (hjl@gnu.org)

	* cppexp.c (num_trim): Use 1UL instead of 1 for long int.
	(num_positive): Likewise.
	(num_div_op): Likewise.

2002-05-27  Neil Booth  <neil@daikokuya.demon.co.uk>

	* c-common.c (c_common_init): Always use intmax_t.

2002-05-27  Neil Booth  <neil@daikokuya.demon.co.uk>

	* c-common.c (c_common_init): Use intmax_t for now.

2002-05-24  Andrew Haley  <aph@redhat.com>

	* fold-const.c (fold): Don't convert (T)(x & c) into (T)x & (T)c
	if T is a boolean type.

2002-05-27  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* basic-block.h (last_basic_block): Defined as synonym for
	n_basic_blocks.
	* cfganal.c (mark_dfs_back_edges, flow_reverse_top_sort_order_compute,
	flow_depth_first_order_compute, flow_preorder_transversal_compute,
	flow_dfs_compute_reverse_init): Replaced relevant occurences of
	n_basic_blocks with last_basic_block.
	* cfgbuild.c (make_edges): Likewise.
	* cfgloop.c (flow_loop_scan, flow_loops_find): Likewise.
	* cfgrtl.c (verify_flow_info, purge_all_dead_edges): Likewise.
	* combine.c (combine_instructions): Likewise.
	* df.c (df_alloc, df_analyse_1, df_analyse, iterative_dataflow_sbitmap,
	iterative_dataflow_bitmap): Likewise.
	* dominance.c (init_dom_info, calc_dfs_tree_nonrec, calc_dfs_tree,
	calc_idoms, idoms_to_doms): Likewise.
	* flow.c (update_life_info_in_dirty_blocks, free_basic_block_vars):
	Likewise.
	* gcse.c (gcse_main, alloc_gcse_mem, compute_local_properties,
	compute_hash_table, expr_reaches_here_p, one_classic_gcse_pass,
	one_cprop_pass, compute_pre_data, pre_expr_reaches_here_p,
	one_pre_gcse_pass, compute_transpout, delete_null_pointer_checks_1,
	delete_null_pointer_checks, compute_code_hoist_vbeinout,
	hoist_expr_reaches_here_p, hoist_code, one_code_hoisting_pass,
	compute_store_table, build_store_vectors): Likewise.
	* haifa-sched.c (sched_init): Likewise.
	* ifcvt.c (if_convert): Likewise.
	* lcm.c (compute_antinout_edge, compute_laterin, compute_insert_delete,
	pre_edge_lcm, compute_available, compute_nearerout,
	compute_rev_insert_delete, pre_edge_rev_lcm, optimize_mode_switching):
	Likewise.
	* predict.c (estimate_probability, process_note_prediction,
	note_prediction_to_br_prob): Likewise.
	* profile.c (GCOV_INDEX_TO_BB, BB_TO_GCOV_INDEX): Likewise.
	* recog.c (split_all_insns, peephole2_optimize): Likewise.
	* regrename.c (copyprop_hardreg_forward): Likewise.
	* resource.c (init_resource_info): Likewise.
	* sched-rgn.c (build_control_flow, find_rgns, compute_trg_info,
	init_regions, schedule_insns): Likewise.
	* ssa-ccp.c (ssa_const_prop): Likewise.
	* ssa-dce.c (ssa_eliminate_dead_code): Likewise.
	* ssa.c (compute_dominance_frontiers,
	compute_iterated_dominance_frontiers, convert_to_ssa): Likewise.

	* df.c (df_refs_unlink): Fix FOR_EACH_BB usage (in #if 0'ed code)
	* gcse.c (alloc_rd_mem, alloc_avail_expr_mem): Use n_blocks for vector
	sizes consistently.

Mon May 27 14:28:12 CEST 2002  Jan Hubicka  <jh@suse.cz>

	* basic-block.h (can_hoist_p, hoist_insn_after, hoist_insn_to_edge):
	new.
	* rtlanal.c (hoist_test_store, can_hoist_insn_p, hoist_update_store,
	hoist_insn_after, hoist_insn_to_edge): New.

Mon May 27 12:14:02 CEST 2002  Jan Hubicka  <jh@suse.cz>

	* basic-block.h (PEOP_SCAN_DEAD_STORES): New.
	(PROP_FINAL): Include.
	* flow.c (life_analysis, update_life_info,
	init_propagate_block_info, mark_set_1, mark_used_rgs):
	Support SCAN_DEAD_STORE.

2002-05-27  Neil Booth  <neil@daikokuya.demon.co.uk>

	* c-common.c (c_common_init): Set CPP arithmetic precision.
	* cppexp.c (cpp_num_part): Move typedef ...
	* cpphash.h: ...here; make unsigned HOST_WIDE_INT.
	* cppinit.c (cpp_create_reader): Default to host long arithmetic.
	(sanity_checks): Update.

2002-05-26  Geoffrey Keating  <geoffk@redhat.com>

	* Makefile.in (INSTALL_HEADERS): Add 'install-mkheaders'.
	(mkheaders): New rule.
	(install-mkheaders): New rule.
	* configure.in (all_outputs): Add mkheaders.
	* configure: Regenerate.
	* mkheaders.in: New file.

2002-05-26  Jakub Jelinek  <jakub@redhat.com>

	* cse.c (fold_rtx): Don't optimize if SUBREG changes mode class.

2002-05-26  Andreas Jaeger  <aj@suse.de>

	* cfg.c (dump_flow_info): Remove extra argument to fprintf.

2002-05-26  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cppexp.c (possible_sum_sign, integer_overflow, left_shift,
	right_shift): Remove.
	(cpp_num, cpp_num_part, PART_PRECISION, HALF_MASK, LOW_PART,
	HIGH_PART): New.
	(struct op): Use cpp_num.
	(num_zerop, num_eq, num_positive, num_greater_freq, num_trim,
	num_part_mul, num_unary_op, num_binary_op, num_negate,
	num_bitwise_op, num_inequality_op, num_equality_op, num_mul,
	num_div_op, num_lshift, num_rshift, append_digit): New.
	(interpret_number, parse_defined, eval_token, reduce): Update
	for two-integer arithmetic.
	(binary_handler): New typedef.
	(optab): Update.
	(COMPARE, EQUALITY, BITWISE, MINMAX, UNARY, SHIFT): Delete.
	(_cpp_parse_expr, reduce): Update to handle two-integers.
	* cpplib.c (_cpp_test_assertion): Back up on CPP_EOF.

2002-05-26  Marek Michalkiewicz  <marekm@amelek.gda.pl>

	* config/avr/avr-protos.h (avr_out_sbxx_branch): Declare.
	* config/avr/avr.c (jump_over_one_insn_p): Take length of the
	branch insn into account, do not assume 1.
	(avr_out_sbxx_branch): New function.  Optimize cases of skipping
	over single word insn.  Handle upper half of I/O space too.
	* config/avr/avr.md (*sbrx_branch): Use it.
	(*sbrx_and_branchhi, *sbrx_and_branchsi): Likewise.
	(*sbix_branch, *sbix_branch_bit7): Likewise.
	(*sbix_branch_tmp, *sbix_branch_tmp_bit7): New.
	Use RTL peepholes to optimize register operand sign tests.

2002-05-26  Marek Michalkiewicz  <marekm@amelek.gda.pl>

	* config/avr/avr.c (avr_asm_only_p): New variable.
	(avr_override_options): Set it here if AVR1.
	(asm_file_start): Test it here, report an error if set.

2002-05-26  Kazu Hirata  <kazu@cs.umass.edu>

	* alias.c: Fix formatting.
	* attribs.c: Likewise.
	* bb-reorder.c: Likewise.
	* bitmap.c: Likewise.
	* bitmap.h: Likewise.
	* builtins.c: Likewise.

Sun May 26 14:00:44 CEST 2002  Jan Hubicka  <jh@suse.cz>

	* reload.c (find_valid_class): Accept new argument DEST,
	choose class accordingly.
	(push_reload): Update callers.

2002-05-26  Andreas Jaeger  <aj@suse.de>

	* combine.c (combine_instructions): Do not indent #if for
	traditional C.

2002-05-25  Richard Henderson  <rth@redhat.com>

	* c-pragma.c (apply_pragma_weak): Convert value identifier to
	string for decl_attributes.
	(handle_pragma_weak): Call assemble_alias if we're modifying
	an existing decl.

2002-05-25  Richard Henderson  <rth@redhat.com>

	PR target/6788
	* config/sparc/sparc.c (sparc_output_mi_thunk): New implementation
	using rtl instead of fprintf.
	* config/sparc/sparc.h (ASM_OUTPUT_MI_THUNK): Use it.
	* config/sparc/sparc-protos.h: Update.

2002-05-25  Neil Booth  <neil@daikokuya.demon.co.uk>

	* Makefile.in (C_COMMON_H): Fix.
	Update other targets.
	* c-common.c: Don't include c-lex.h.
	(builtin_define_with_value): Make static and prototype.
	(builtin_define_std): Move from c-lex.h.
	* c-common.h (init_c_lex): Move from c-lex.h.
	* c-decl.c: Don't include c-lex.h.
	(make_pointer_declarator): Move from c-parse.in.
	* c-lex.c: Don't include c-lex.h.
	* c-lex.h: Remove.
	* c-parse.in: Don't include c-lex.h; include c-pragma.h.
	(make_pointer_declarator): Move to c-decl.c.
	* c-pragma.c: Don't include c-lex.h.
	* c-pragma.h (yydebug, YYDEBUG, parse_in, c_lex): Move from c-lex.h.
	* c-tree.h (make_pointer_declarator): New.
doc:
	* passes.texi, tm.texi: Update.
objc:
	* Make-lang.in: Update and correct.
	* objc-act.c: Don't include c-lex.h or cpplib.h.
treelang:
	* treetree.c: Don't include c-lex.h.
config:
	* darwin-c.c: Don't include c-lex.h.
	* c4x/c4x-c.c: Don't include c-lex.h.
	* c4x/t-c4x: Update.
	* i370/i370-c.c: Don't include c-lex.h.
	* i370/t-i370: Update.
	* i960/i960-c.c: Don't include c-lex.h.
	* i960/i960.c: Don't include cpplib.h, c-lex.h or c-pragma.h.
	* i960/t-960bare: Update.
	* i960/t-vxworks: Update.
	* rs6000/rs6000-c.c: Don't include c-lex.h; include c-pragma.h.
	* rs6000/t-darwin: Update.
	* rs6000/t-rs6000-c-rule: Update.
	* v850/v850-c.c: Don't include c-lex.h.
	* v850/v850.c: Don't include c-lex.h or cpplib.h.


2002-05-25  Kazu Hirata  <kazu@cs.umass.edu>

	* tree.def: Fix typos.
	* doc/install.texi: Likewise.

2002-05-25  Richard Henderson  <rth@redhat.com>

	* configure.in (HAVE_AS_TLS): Add ia64 test.
	* configure: Rebuild.
	* config/ia64/ia64.c (ia64_tls_size_string, ia64_tls_size): New.
	(override_options): Set it.
	(TARGET_HAVE_TLS): New.
	(sdata_symbolic_operand): Look for 's'.
	(tls_symbolic_operand): New.
	(ia64_expand_load_address): Abort for tls symbols.
	(gen_tls_get_addr): New.
	(gen_thread_pointer): New.
	(ia64_expand_move): Split out from movdi.  Handle tls symbols.
	(rtx_needs_barrier): Add new unspecs.
	(ia64_encode_section_info): Handle tls symbols.
	(ia64_strip_name_encoding): Strip two encoding chars.
	* config/ia64/ia64.h (ia64_tls_size, ia64_tls_size_string): New.
	(TARGET_TLS14, TARGET_TLS22, TARGET_TLS64): New.
	(TARGET_OPTIONS): Add tls-size.
	(ENCODE_SECTION_INFO_CHAR): Rename from SDATA_NAME_FLAG_CHAR.
	* config/ia64/ia64.md (UNSPEC_LTOFF_DTPMOD, UNSPEC_LTOFF_DTPREL,
	UNSPEC_DTPREL, UNSPEC_LTOFF_TPREL, UNSPEC_TPREL, UNSPEC_LD_BASE): New.
	(movqi, movhi, movsi, movdi, movti): Use ia64_expand_move.
	(movsf, movdf): Likewise.
	(movdi_symbolic): Use match_scratch.  Don't split if we won't
	have a scratch availiable.
	(load_ltoff_dtpmod, load_dtprel, load_dtprel64, load_dtprel22,
	add_dtprel, add_dtprel14, add_dtprel22, load_ltoff_tprel, load_tprel,
	load_tprel64, load_tprel22, add_tprel, add_tprel14, add_tprel22): New.
	* config/ia64/ia64-protos.h: Update.
	* config/ia64/sysv4.h (ASM_OUTPUT_ALIGNED_DECL_LOCAL): Use
	sdata_symbolic_operand.
	(ASM_OUTPUT_LABELREF): Strip two characters.

2002-05-25  Kazu Hirata  <kazu@cs.umass.edu>

	* combine.c (simplify_set): Remove an unnecessary subreg.

2002-05-25  Marek Michalkiewicz  <marekm@amelek.gda.pl>

	* config/avr/avr.c (avr_handle_progmem_attribute): Handle TYPE_DECL.

	* config/avr/avr.h (BSS_SECTION_ASM_OP, ASM_OUTPUT_BSS): New.

2002-05-25  Gabriel Dos Reis  <gdr@codesourcery.com>

	* toplev.c (output_clean_symbol_name): Fix another thinko.  Gosh.

2002-05-25  Roger Sayle  <roger@eyesopen.com>

	* simplify-rtx.c (simplify_gen_relational): Simplify the RTX
	(cond (compare x y) 0) into the equivalent (cond x y).

2002-05-25  Gabriel Dos Reis  <gdr@codesourcery.com>

	* toplev.c (output_clean_symbol_name): Use xstrdup.  Fix thinko.

2002-05-24  Zack Weinberg  <zack@codesourcery.com>

	* config.gcc: Remove all stanzas for previously obsoleted
	systems.  Where necessary, add explicit error stanzas to
	prevent removed systems from being misidentified as something
	else.  Begin a fresh obsoletions list, with the systems that
	were reprieved last round.
	* doc/install.texi: Remove all mention of dead targets.
	* fixinc/mkfixinc.sh: Likewise.

	* config/arm/arm.h: Bit 31 of target_flags is no longer
	reserved.

	* config/1750a/1750a-protos.h, config/1750a/1750a.c,
	config/1750a/1750a.h, config/1750a/1750a.md, config/1750a/ms1750.inc,
	config/a29k/a29k-protos.h, config/a29k/a29k.c, config/a29k/a29k.h,
	config/a29k/a29k.md, config/a29k/rtems.h, config/a29k/t-a29kbare,
	config/a29k/t-vx29k, config/a29k/unix.h, config/a29k/vx29k.h,
	config/alpha/osf12.h, config/alpha/osf2or3.h,
	config/arm/arm-wince-pe.h, config/arm/arm.h, config/arm/riscix.h,
	config/arm/riscix1-1.h, config/arm/rix-gas.h, config/arm/t-riscix,
	config/clipper/clipper-protos.h, config/clipper/clipper.c,
	config/clipper/clipper.h, config/clipper/clipper.md,
	config/clipper/clix.h, config/convex/convex-protos.h,
	config/convex/convex.c, config/convex/convex.h,
	config/convex/convex.md, config/convex/fixinc.convex,
	config/convex/proto.h, config/elxsi/elxsi-protos.h,
	config/elxsi/elxsi.c, config/elxsi/elxsi.h, config/elxsi/elxsi.md,
	config/i386/386bsd.h, config/i386/aix386.h, config/i386/aix386ng.h,
	config/i386/bsd386.h, config/i386/dgux.h, config/i386/djgpp-rtems.h,
	config/i386/isc.h, config/i386/iscdbx.h, config/i386/linux-oldld.h,
	config/i386/next.h, config/i386/osf1-ci.asm, config/i386/osf1-cn.asm,
	config/i386/osf1elf.h, config/i386/osf1elfgdb.h, config/i386/osfelf.h,
	config/i386/osfrose.h, config/i386/rtems.h, config/i386/seq-gas.h,
	config/i386/seq-sysv3.h, config/i386/seq2-sysv3.h,
	config/i386/sequent.h, config/i386/sun.h, config/i386/sun386.h,
	config/i386/t-dgux, config/i386/t-next, config/i386/t-osf,
	config/i386/t-osf1elf, config/i860/bsd-gas.h, config/i860/bsd.h,
	config/i860/fx2800.h, config/i860/i860-protos.h, config/i860/i860.c,
	config/i860/i860.h, config/i860/i860.md, config/i860/mach.h,
	config/i860/paragon.h, config/i860/sysv3.h, config/i860/sysv4.h,
	config/i860/t-fx2800, config/i860/varargs.asm, config/m68k/a-ux.h,
	config/m68k/altos3068.h, config/m68k/apollo68.h,
	config/m68k/aux-crt1.c, config/m68k/aux-crt2.asm,
	config/m68k/aux-crtn.asm, config/m68k/aux-exit.c,
	config/m68k/aux-low.gld, config/m68k/aux-mcount.c,
	config/m68k/auxas.h, config/m68k/auxgas.h, config/m68k/auxgld.h,
	config/m68k/auxld.h, config/m68k/ctix.h, config/m68k/dpx2.h,
	config/m68k/dpx2.ifile, config/m68k/dpx2cdbx.h, config/m68k/dpx2g.h,
	config/m68k/isi-nfp.h, config/m68k/isi.h, config/m68k/lynx-ng.h,
	config/m68k/lynx.h, config/m68k/math-3300.h, config/m68k/news.h,
	config/m68k/news3.h, config/m68k/news3gas.h, config/m68k/newsgas.h,
	config/m68k/next.h, config/m68k/next21.h, config/m68k/rtems.h,
	config/m68k/t-aux, config/m68k/t-lynx, config/m68k/t-next,
	config/m68k/x-next, config/m88k/dgux.h, config/m88k/dgux.ld,
	config/m88k/dguxbcs.h, config/m88k/dolph.h, config/m88k/dolphin.ld,
	config/m88k/luna.h, config/m88k/m88k-coff.h, config/m88k/sysv3.h,
	config/m88k/t-bug, config/m88k/t-dgux, config/m88k/t-dgux-gas,
	config/m88k/t-dguxbcs, config/m88k/t-dolph, config/m88k/t-m88k-gas,
	config/m88k/t-tekXD88, config/m88k/tekXD88.h, config/m88k/tekXD88.ld,
	config/mips/bsd-4.h, config/mips/bsd-5.h, config/mips/dec-bsd.h,
	config/mips/dec-osf1.h, config/mips/elflorion.h,
	config/mips/iris4loser.h, config/mips/mips-5.h, config/mips/news4.h,
	config/mips/news5.h, config/mips/nws3250v4.h, config/mips/osfrose.h,
	config/mips/svr3-4.h, config/mips/svr3-5.h, config/mips/svr4-4.h,
	config/mips/svr4-5.h, config/mips/svr4-t.h, config/mips/t-bsd,
	config/mips/t-bsd-gas, config/mips/t-svr3, config/mips/t-svr3-gas,
	config/mips/t-svr4, config/mips/t-svr4-gas, config/mips/t-ultrix,
	config/mips/ultrix.h, config/nextstep-protos.h, config/nextstep.c,
	config/nextstep.h, config/nextstep21.h, config/ns32k/encore.h,
	config/ns32k/merlin.h, config/ns32k/pc532-mach.h,
	config/ns32k/pc532-min.h, config/ns32k/pc532.h,
	config/ns32k/sequent.h, config/ns32k/tek6000.h,
	config/ns32k/tek6100.h, config/ns32k/tek6200.h, config/pj/lib1funcs.S,
	config/pj/linux.h, config/pj/pj-protos.h, config/pj/pj.c,
	config/pj/pj.h, config/pj/pj.md, config/pj/pjl.h, config/pj/t-pj,
	config/sparc/rtems.h, config/we32k/we32k-protos.h,
	config/we32k/we32k.c, config/we32k/we32k.h, config/we32k/we32k.md:
	Delete file.

2002-05-24  Richard Henderson  <rth@redhat.com>

	* flags.h (TLS_MODEL_GLOBAL_DYNAMIC): Set to 1.
	* toplev.c (flag_tls_default) Set to TLS_MODEL_GLOBAL_DYNAMIC.
	* config/i386/i386.c (tls_model_chars): Add leading space.
	(tls_symbolic_operand): Don't bias by 1.
	(legitimize_address): Don't unbias by 1.

2002-05-24  Toshiyasu Morita  <toshiyasu.morita@hsa.hitachi.com>

	* lcm.c (optimize_mode_switching): Change bb used as indices
	to bb->index.

2002-05-24  Richard Henderson  <rth@redhat.com>

	* config/ia64/ia64.c (ia64_reorg): Use update_life_info instead
	of update_life_info_in_dirty_blocks.

2002-05-24  Jakub Jelinek  <jakub@redhat.com>

	PR other/6782
	* final.c (get_mem_expr_from_op): Return 0 if op is NULL.

2002-05-24  Neil Booth  <neil@daikokuya.demon.co.uk>

	PR preprocessor/6780
	* cppmacro.c (enter_macro_context): Clear state.angled_headers.

2002-05-24  Jim Blandy  <jimb@redhat.com>

	* dwarf2out.c (dwarf2out_finish): Don't forget to emit a final
	entry with a type code of zero, marking the end of the compilation
	unit's macro info.

2002-05-24  Richard Henderson  <rth@redhat.com>

	* varasm.c (asm_output_bss): Always output one byte.
	* config/alpha/elf.h (ASM_OUTPUT_ALIGNED_LOCAL): Likewise.

2002-05-24  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>

	* tree.c (decl_type_context): Return NULL_TREE if decl's context is a
	namespace.

2002-05-24  Andreas Jaeger  <aj@suse.de>

	* ggc-page.c (alloc_page): Cast variables of type size_t to
	unsigned long, adjust printf format string.
	(ggc_alloc): Likewise.
	(ggc_print_statistics): Likewise.
	(ggc_print_statistics): Correct printf format string for SCALE to
	use unsigned long.

2002-05-24  Danny Smith  <dannysmith@users.sourceforge.net>

	* config/i386/mingw32.h (CPP_SPEC): Remove -remap.

2002-05-23  Gabriel Dos Reis  <gdr@codesourcery.com>
	    Zack Weinberg     <zack@codesourcery.com>

	* config/i386/mingw32.h (OUTPUT_QUOTED_STRING): Properly output
	quoted strings.
	* dwarf2out.c (lookup_filename): Properly quote filename in .file
	directive in assembly file.
	* config/m68k/dpx2.h (ASM_OUTPUT_SOURCE_FILENAME): Likewise.
	* config/m88k/m88k.h (ASM_OUTPUT_SOURCE_FILENAME): Likewise.
	* config/pj/pj.h (ASM_FILE_START): Likewise.
	* config/rs6000/xcoff.h (ASM_FILE_START): Likewise.
	* config/avr/avr.c (asm_file_end): Likewise.
	* toplev.c (output_quoted_string): Handle possibly signed plain
	char.
	* toplev.h (output_clean_symbol_name): Declare
	* toplev.c (output_clean_symbol_name): Define.
	* config/alpha/alpha.c (unicosmk_output_module_name): Use it.
	* config/1750a/1750a.h (ASM_FILE_START): Likewise.

2002-05-24  Alan Modra  <amodra@bigpond.net.au>

	* config/rs6000/rs6000.c (output_toc): Mask longs to 32 bits.

2002-05-23  Vladimir Makarov  <vmakarov@redhat.com>

	* genautomata.c (reserv_sets_hash_value): Use shift equal to 3/4
	of size of unsigned.

2002-05-23  Richard Henderson  <rth@redhat.com>

	* configure.in (HAVE_AS_TLS): New test.
	* config.in, configure: Rebuild.
	* config/i386/i386.c (TARGET_HAVE_TLS): Set if HAVE_AS_TLS.
	(ix86_tls_dialect_string, ix86_tls_dialect): New.
	(override_options): Set it.
	(tls_model_chars, tls_symbolic_operand): New.
	(tls_symbolic_operand_1, global_dynamic_symbolic_operand): New.
	(local_dynamic_symbolic_operand, initial_exec_symbolic_operand): New.
	(local_exec_symbolic_operand): New.
	(get_pic_label_name): Merge into output_set_got.
	(ix86_asm_file_end): Emit pic_label_name if defined.
	(legitimate_constant_p, constant_address_p): New.
	(legitimate_pic_operand_p): New.
	(legitimate_pic_address_disp_p): Handle GOTTPOFF, NTPOFF, DTPOFF.
	(legitimate_address_p): Likewise.
	(ix86_encode_section_info): Rename from i386_; handle tls decls.
	(ix86_strip_name_encoding): New.
	(get_thread_pointer): New.
	(legitimize_address): Handle tls symbols.
	(output_pic_addr_const): Handle GOTTPOFF, TPOFF, NTPOFF, DTPOFF.
	Remove UNSPEC_PLT.
	(struct machine_function): Add some_ld_name.
	(get_some_local_dynamic_name, get_some_local_dynamic_name_1): Set it.
	(print_operand) [&]: Use it.  Handle UNSPEC_TP.
	(output_addr_const_extra): New.
	(maybe_get_pool_constant): New.
	(ix86_split_to_parts): Use it.
	(ix86_expand_move): Handle tls symbols.
	(ix86_tls_get_addr): New.
	* config/i386/i386.h (TARGET_GNU_TLS, TARGET_SUN_TLS): New.
	(TARGET_OPTIONS): Add tls-dialect.
	(CONSTANT_ADDRESS_P): Use new out-of-line function.
	(LEGITIMATE_CONSTANT_P): Likewise.
	(LEGITIMATE_PIC_OPERAND_P): Likewise.
	(TARGET_STRIP_NAME_ENCODING): New.
	(ASM_OUTPUT_LABELREF): New.
	(PRINT_OPERAND_PUNCT_VALID_P): Add '&'.
	(OUTPUT_ADDR_CONST_EXTRA): New.
	(PREDICATE_CODES): Update.
	(ix86_tls_dialect, ix86_tls_dialect_string): New.
	* config/i386/i386.md: Regroup and renumber unspec constants.
	(tls_global_dynamic_gnu, tls_global_dynamic_sun): New.
	(tls_local_dynamic_base_gnu, tls_local_dynamic_base_sun): New.
	(tls_global_dynamic, tls_local_dynamic_base): New.
	(tls_local_dynamic_once): New.
	* config/i386/i386-protos.h: Update.

2002-05-23  Richard Henderson  <rth@redhat.com>

	* genemit.c (gen_insn): Print file:lineno comment before function.
	(main): likewise.
	* gensupport.c (struct queue_elem): Add filename member.
	(queue_pattern): Initialize it; update all callers.
	(process_include): Don't free filename.
	(read_md_rtx): Set read_rtx_filename.

2002-05-23  Hans Boehm  <Hans_Boehm@hp.com>

	* config/ia64/linux.h (IA64_GATE_AREA_END): Adjust for 64K pages.

2002-05-23  Richard Henderson  <rth@redhat.com>

	* config/i386/i386.c (output_set_got): Fix typo in pic no-deep case.

2002-05-23  Richard Henderson  <rth@redhat.com>

	* doc/extend.texi (C++98 Thread-Local Edits): Update with
	commentary from Mark.

2002-05-23  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

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

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

2002-05-23  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cppinit.c (mark_named_operators): Split out from init_builtins.
	(cpp_finish_options): Call it from here instead.

2002-05-23  Jason Thorpe  <thorpej@wasabisystems.com>

	* builtin-attrs.def: Update copyright years.
	(ATTR_NONNULL): New attribute identifier.
	(ATTR_NONNULL_1, ATTR_NONNULL_2, ATTR_NONNULL_3): New
	attribute tree lists.
	(DEF_FORMAT_ATTRIBUTE): Chain a nonnull attribute for the
	format operand.
	(ATTR_FORMAT_ARG_1, ATTR_FORMAT_ARG_2): Use...
	(DEF_FORMAT_ARG_ATTRIBUTE): ...this to generate format_arg
	attribute lists.  Chain the appropriate nonnull attribute.
	* c-format.c (check_format_arg): Remove null format string
	warning.
	* testsuite/gcc.dg/format/null-1.c: New test.

2002-05-23  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* Makefile.in (ADAC): Define.
	(SYSLIBS): Define.
	(.SUFFIXES): Move before language makefile fragments.
	(STAGE2_FLAGS_TO_PASS): Use stage CC as ADAC.

2002-05-23  Mark Mitchell  <mark@codesourcery.com>

	* varasm.c (make_decl_rtl): Don't allow weak variables to be
	placed in common.

Thu May 23 19:43:41 CEST 2002  Jan Hubicka  <jh@suse.cz>

	* cfg.c (dump_flow_info): Print results of
	maybe_hot/probably_never_executed predicates.
	* toplev.c (open_dump_file): Print function frequency.

2002-05-23  David S. Miller  <davem@redhat.com>

	* cse.c (approx_reg_cost_1, approx_reg_cost): Recode to not use
	regsets.

2002-05-23  Jason Thorpe  <thorpej@wasabisystems.com>

	* c-common.c (warn_nonnull): Declare.
	(c_common_attribute_table): Add "nonnull" attribute.
	(handle_nonnull_attribute, check_function_nonnull, nonnull_check_p,
	check_nonnull_arg, get_nonnull_operand, check_function_arguments,
	check_function_arguments_recurse): New functions.
	* c-common.h (warn_nonnull): Declare extern.
	(check_function_arguments, check_function_arguments_recurse): New
	prototypes.
	* c-decl.c (c_decode_option): Add -Wnonnull option.
	* c-format.c (set_Wformat): Set warn_nonnull if enabling
	format checking.
	(format_check_context): New structure.
	(check_format_info_recurse): Remove recursion and rename to...
	(check_format_arg): ...this.  Update comment.
	(check_format_info): Use check_function_arguments_recurse.
	* c-typeck.c (build_function_call): Call check_function_arguments
	instead of check_function_format.
	* doc/extend.texi: Document "nonnull" attribute.
	* doc/invoke.texi: Docuemnt -Wnonnull option.
	* testsuite/gcc.dg/nonnull-1.c: New test.
	* testsuite/gcc.dg/nonnull-2.c: New test.

2002-05-23  David S. Miller  <davem@redhat.com>

	* basic-block.h (CLEANUP_NO_INSN_DEL): Define it.
	* cfgcleanup.c (cleanup_cfg): If it is set do not
	attempt to delete trivially dead insns.
	* except.c (finish_eh_generation): Pass it to cleanup_cfg.
	* toplev.c (rest_of_compilation): Document non-trivial aspect
	the RTL before optimize_save_area_alloca is run.

2002-05-23  Neil Booth  <neil@daikokuya.demon.co.uk>

	* c-lex.c (indent_level): Remove.
	(cb_file_change, c_lex): Remove indent level handling.
	* c-lex.h (indent_level): Remove.
	* input.h (struct file_stack): Remove indent_level.
	* toplev.c (push_srcloc): Remove indent_level handling.

2002-05-23  Jakub Jelinek  <jakub@redhat.com>

	PR target/6753
	* config/i386/i386.md (sse_movdfcc, sse_movdfcc_eq): Use Y instead
	of x in constraints for clarity.
	(sse_mov?fcc split): abort if op2 == op3.
	(sse_movsfcc_const0_1, sse_movsfcc_const0_2, sse_movsfcc_const0_3,
	sse_movsfcc_const0_4): Add earlyclobber.
	(sse_movdfcc_const0_1, sse_movdfcc_const0_2, sse_movdfcc_const0_3,
	sse_movdfcc_const0_4): Likewise.  Use DFmode, not SFmode.
	Use Y instead of x in constraints.

2002-05-23  Richard Henderson  <rth@redhat.com>

	* doc/extend.texi (C99 Thread-Local Edits): New subsection.
	(C++98 Thread-Local Edits): New subsection.

	* config/i386/i386.c, config/i386/i386.h: Tidy comments and whitespace.
	(ix86_arch): Set type to enum processor_type.

	* config/i386/i386.md (movsi_1, movdi_1_rex64): Use
	LEGITIMATE_PIC_OPERAND_P not SYMBOLIC_CONST.

2002-05-23  Jakub Jelinek  <jakub@redhat.com>

	* configure.in: Fix as version test for binutils 2.12.1 releases
	(without dates).
	* configure: Rebuilt.

2002-05-23  Richard Henderson  <rth@redhat.com>

	* config/i386/i386.c (get_pic_label_name): New.
	(load_pic_register): Remove.
	(output_set_got): New.
	(ix86_expand_prologue): Use gen_set_got; mark insn REG_MAYBE_DEAD.
	* config/i386/i386.md (UNSPEC_SET_GOT): New.
	(UNSPECV_PROLOGUE_SET_GOT, UNSPECV_PROLOGUE_GET_PC): Remove.
	(prologue_set_got, prologue_get_pc): Remove.
	(set_got, set_got_nopic, set_got_deep, set_got_nodeep): New.
	(builtin_setjmp_receiver): Use gen_set_got.
	* config/i386/i386-protos.h: Update.

Thu May 23 09:22:23 CEST 2002  Jan Hubicka  <jh@suse.cz>

	* gcse.c (hash_expr): Do not use alias set for hashing.

2002-05-22  Kevin Buettner  <kevinb@redhat.com>

	* dbxout.c (dbxout_class_name_qualifiers): New function.
	(dbxout_symbol): Output class/struct qualifiers for a .stabs entry.

2002-05-23  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cpperror.c (_cpp_begin_message): No special casing
	of CPP_FATAL_LIMIT.
	* cppinit.c (sanity_checks): s/DL_FATAL/DL_ICE/.
	(output_deps, cpp_handle_option, cpp_post_options): Use DL_ERROR.
	* cpplib.c (do_include_common): Use DL_ERROR.
	* cpplib.h (CPP_FATAL_LIMIT, CPP_FATAL_ERRORS, DL_FATAL): Remove.
	(DL_ICE): Renumber.
	* fix-header.c (read_scan_file): Update.

2002-05-22  Richard Henderson  <rth@redhat.com>

	* config/i386/i386.c (ix86_expand_call): New function, extracted
	from md call patterns.  Add pic_offset_table_rtx to
	CALL_INSN_FUNCTION_USAGE when needed.
	* config/i386/i386.md (call_pop, call): Use ix86_expand_call.
	(call_value_pop, call_value, untyped_call): Likewise.
	(call_exp, call_value_exp): Remove.
	* config/i386/i386-protos.h: Update.

2002-05-22  Richard Henderson  <rth@redhat.com>

	* varasm.c (default_section_type_flags): Check for VAR_DECL
	before using DECL_THREAD_LOCAL.

2002-05-22  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/aix43.h (LINK_SPEC): Add PE initializer.
	(STARTFILE_SPEC): Delete PE crt0.o.
	* config/rs6000/aix51.h: Same.
	* config/rs6000/rs6000.c: Use TARGET_XCOFF, not OBJECT_FORMAT_COFF.
	* config/rs6000/rs6000.h (ASM_WEAKEN_DECL): Append [DS] to
	function descriptor symbol.  Use RS6000_OUTPUT_BASENAME.
	(ASM_OUTPUT_DEF_FROM_DECLS): Use RS6000_OUTPUT_BASENAME.
	* config/rs6000/xcoff.h (ASM_OUTPUT_DEF): Define.

2002-05-22  Richard Henderson  <rth@redhat.com>

	* varasm.c (default_section_type_flags): Handle tls data and
	default sections.
	(default_unique_section): Handle tls sections.

2002-05-23  Alan Modra  <amodra@bigpond.net.au>

	* configure.in (CROSS): Define NATIVE_CROSS.
	* configure: Regenerate.
	* gcc.c (STARTFILE_PREFIX_SPEC): Define.
	(startfile_prefix_spec): New var.
	(static_specs): Add startfile_prefix_spec.
	(do_spec_2): Split out from..
	(do_spec): ..here.
	(main): Process startfile_prefix_spec.
	* config/rs6000/linux64.h (LINK_OS_LINUX_SPEC) Change name of
	dynamic linker.
	(STARTFILE_PREFIX_SPEC): Define.
	(STARTFILE_LINUX_SPEC, ENDFILE_LINUX_SPEC): Rewrite without
	absolute paths.

2002-05-22  Kazu Hirata  <kazu@cs.umass.edu>

	* cpperror.c: Fix formatting.
	* cppexp.c: Likewise.
	* cppfiles.c: Likewise.
	* cpphash.c: Likewise.
	* cpphash.h: Likewise.
	* cppinit.c: Likewise.
	* cpplex.c: Likewise.
	* cpplib.c: Likewise.
	* cppmacro.c: Likewise.
	* cppmain.c: Likewise.
	* cppspec.c: Likewise.

2002-05-22  Jakub Jelinek  <jakub@redhat.com>

	* combine.c (force_to_mode): Use gen_int_mode.
	Don't clear CONST_INT bits outside of mode.

2002-05-22  Richard Henderson  <rth@redhat.com>

	* fixinc/inclhack.def (thread_keyword): Match __thread as last arg.
	* fixinc/fixincl.x, fixinc/tests/base/pthread.h: Rebuild.

2002-05-22  Jakub Jelinek  <jakub@redhat.com>

	PR c/6643
	* emit-rtl.c (widen_memory_access): Only call compare_tree_int
	if DECL_SIZE_UNIT is INTEGER_CST.

2002-05-22  Richard Henderson  <rth@redhat.com>

	* flow.c (life_analysis): Delete broken reg_label check.

2002-05-22  Richard Henderson  <rth@redhat.com>

	* fixinc/inclhack.def (thread_keyword): Allow as any prototype arg.
	* fixinc/fixincl.x, fixinc/tests/base/pthread.h: Rebuild.

Wed May 22 18:39:57 2002  J"orn Rennecke <joern.rennecke@superh.com>

	* t-sh (LIB2FUNCS_EXTRA): Now embed-bb.c.
	(embed-bb.c): New rule.
	* t-sh64 (LIB2FUNCS_EXTRA): Don't change.
	* config/sh/embed_bb.c: Delete.

Wed May 22 18:25:29 2002  J"orn Rennecke <joern.rennecke@superh.com>

	* c-common.c (cb_register_builtins): Don't indent '#' of #define.

2002-05-22  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/h8300.md (*andorqi3): New.

2002-05-22  Neil Booth  <neil@daikokuya.demon.co.uk>

	PR preprocessor/6517
	* Makefile.in: Update.
	* c-common.c (c_common_post_options): Add preprocessor
	errors to the error count.
	* c-lang.c (c_post_options): Kill.
	(LANG_HOOKS_POST_OPTIONS): Use c_common_post_options.
	* hooks.h: Add header guards.
	* langhooks-def.h: Include hooks.h.
	(LANG_HOOKS_POST_OPTIONS): Update.
	* langhooks.h (struct lang_hooks): Update post_options.
	* toplev.c (parse_options_and_default_flags): Update.
objc:
	* objc-lang.c (objc_post_options): Kill.
	(LANG_HOOKS_POST_OPTIONS): Use c_common_post_options.

2002-05-21  Bruce Korb  <bkorb@gnu.org>

	* fixinc/tests/base/pthread.h(THREAD_KEYWORD_CHECK): add fix check
	* fixinc/inclhack.def(thread_keyword): use c_fix = format.
	* fixinc/fixincl.x: regen.

2002-05-21  Kazu Hirata  <kazu@cs.umass.edu>

	* cfgbuild.c: Fix formatting.
	* cfg.c: Likewise.
	* cfgcleanup.c: Likewise.
	* cfglayout.c: Likewise.
	* cfgloop.c: Likewise.
	* cfgrtl.c: Likewise.

2002-05-21  Richard Henderson  <rth@redhat.com>

	* c-common.h (enum rid): Add RID_THREAD.
	* c-decl.c (start_decl): Do not set DECL_COMMON for tls variables.
	(grokdeclarator): Grok __thread.
	* c-parse.in (reswords): Add __thread.
	(rid_to_yy): Add RID_THREAD.

	* tree.h (DECL_THREAD_LOCAL): New.
	(struct tree_decl): Add thread_local_flag.
	* print-tree.c (print_node): Dump DECL_THREAD_LOCAL.
	* tree.c (staticp): TLS variables are not static.

	* target-def.h (TARGET_HAVE_TLS): New.
	* target.h (have_tls): New.
	* output.h (SECTION_TLS): New.
	* varasm.c (assemble_variable): TLS variables can't be common for now.
	(default_section_type_flags): Handle .tdata and .tbss.
	(default_elf_asm_named_section): Handle SECTION_TLS.
	(categorize_decl_for_section): Handle DECL_THREAD_LOCAL.

	* flags.h (flag_tls_default): Declare.
	* toplev.c (flag_tls_default): Define.
	(display_help): Display help for it.
	(decode_f_option): Set it.

	* doc/extend.texi (Thread-Local): New node describing language-level
	thread-local storage.
	* doc/invoke.texi (-ftls-model): Document.

	* fixinc/inclhack.def (thread_keyword): New.
	* fixinc/fixincl.x: Rebuild.

2002-05-21  Jeffrey A Law  <law@redhat.com>

	* optabs.c (expand_binop): For double-word integer multiplies,
	do not compute intermediate results into something that is
	not a register (such as a SUBREG or MEM).

	* i386.c (ix86_sched_reorder_ppro): Fix typo/thinko.
	(ix86_sched_reorder): Make sure to initialize scheduling
	data even when there's only one insn in the ready queue.

2002-05-21  Vladimir Makarov  <vmakarov@redhat.com>

	* genautomata.c (reserv_sets_hash_value): Fix a typo.

2002-05-21  Vladimir Makarov  <vmakarov@redhat.com>

	* genautomata.c (reserv_sets_hash_value): Define hash_value as
	set_el_t.  Transform the hash value into unsigned.
	(output_cycle_reservs): Fix bug with output of repeated `nothing'.
	(transform_3): Add code to process `(A,B)+(D,E)'.

2002-05-21  NIIBE Yutaka  <gniibe@m17n.org>

	* reload1.c (do_output_reload): Run delete_output_reload
	only if optimizing.

2002-05-21  Roger Sayle  <roger@eyesopen.com>

	PR middle-end/6600
	* expr.c (STORE_MAX_PIECES): New macro to avoid immediate constants
	larger than INTEGER_CST.  (store_by_pieces_1): Use it here...
	(can_store_by_pieces): ... and here to limit the largest mode used.
	Add a comment to document this function.

2002-05-21  Richard Henderson  <rth@redhat.com>

	* flow.c (life_analysis): Fix test for deleted label.

2002-05-21  Neil Booth  <neil@daikokuya.demon.co.uk>

	* doc/tm.texi: Fix typo.

2002-05-21  Zack Weinberg  <zack@codesourcery.com>

	* c-common.c (c_common_init): Set options->unsigned_char from
	flag_signed_char.
	(cb_register_builtins): Define __STRICT_ANSI__ and
	__CHAR_UNSIGNED__ here...
	* cppinit.c (init_builtins): Not here.
	(cpp_create_reader): unsigned_char option defaults to 0, not
	!DEFAULT_SIGNED_CHAR.
	(COMMAND_LINE_OPTIONS, cpp_handle_option): Lose -fsigned-char
	and -funsigned-char.

	* cpphash.h (struct spec_nodes): Kill n__STRICT_ANSI__.
	* cpphash.c (_cpp_init_hashtable): Don't set it.
	* cppmacro.c (builtin_macro) [BT_STDC]: Use the language setting
	directly.  Clarify comment.

2002-05-21  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* bb-reorder.c (make_reorder_chain_1): Use prev_bb/next_bb to get to
	neighboring basic blocks.  Use ENTRY_BLOCK_PTR->next_bb instead of
	BASIC_BLOCK (0).  Use EXIT_BLOCK_PTR->prev_bb instead of
	BASIC_BLOCK (n_basic_blocks - 1).
	* cfganal.c (can_fallthru, flow_call_edges_add,
	flow_preorder_transversal_compute): Too.
	* cfgbuild.c (make_edges, find_basic_blocks, find_many_sub_basic_blocks,
	find_sub_basic_blocks): Too.
	* cfgcleanup.c (try_simplify_condjump, try_optimize_cfg): Too.
	* cfglayout.c (skip_insns_after_block, fixup_reorder_chain,
	fixup_fallthru_exit_predecessor, cfg_layout_redirect_edge): Too.
	* cfgrtl.c (tidy_fallthru_edges, verify_flow_info): Too.
	* combine.c (this_basic_block): Type changed to basic_block.
	(combine_instructions, set_nonzero_bits_and_sign_copies, try_combine,
	nonzero_bits, num_sign_bit_copies, get_last_value_validate,
	get_last_value, distribute_notes, distribute_links): Too.
	* final.c (compute_alignments): Too.
	* flow.c (regno_uninitialized, regno_clobbered_at_setjmp): Too.
	* function.c (thread_prologue_and_epilogue_insns): Too.
	* gcse.c (compute_code_hoist_vbeinout): Too.
	* global.c (build_insn_chain): Too.
	* ifcvt.c (find_if_block, find_cond_trap): Too.
	* predict.c (last_basic_block_p, note_prediction_to_br_prob): Too.
	* regmove.c (regmove_optimize): Too.
	* resource.c (find_basic_block): Too.
	* sched-ebb.c (schedule_ebbs): Too.
	* ssa-dce.c (find_control_dependence, find_pdom): Too.

2002-05-21  Andreas Jaeger  <aj@suse.de>

	* cppinit.c (sanity_checks): Avoid printf mismatch warnings.

2002-05-21  Richard Henderson  <rth@redhat.com>

	* reg-stack.c (swap_rtx_condition, subst_stack_regs_pat): Use
	unspec names, not numbers.

2002-05-21  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/sourcebuild.texi: Mention snapshot-README and
	snapshot-index.html as needing updating for new front ends.

2002-05-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* rtl.h (SUBREG_PROMOTED_UNSIGNED_SET): Avoid warnings when
	disabling checking, and avoid multiple evaluation of RTX.

2002-05-21  Richard Earnshaw  <rearnsha@arm.com>

	* bitmap.c (bitmap_find_bit): Return early if we have the correct
	element cached.

Tue May 21 10:51:54 CEST 2002  Jan Hubicka  <jh@suse.cz>

	* profile.c (gen_edge_profiler):  Set alias set before the memory is
	used.

2002-05-20  David S. Miller  <davem@redhat.com>

	* cselib.c (max_value_regs): New.
	(cselib_lookup, cselib_invalidate_regno): Initialize it when
	adding new entries to the REG_VALUES table and we are dealing with
	a hard register.
	(clear_table): Initialize it.
	(cselib_invalidate_regno): Use it to determine which hard
	registers to scan when mode is not VOIDmode.

2002-05-20  Duraid Madina   <duraid@fl.net.au>

	* tradcpp.c (fixup_newlines): Use old-style function header.

2002-05-20  Krister Walfridsson  <cato@df.lth.se>

	* reload1.c (reload_cse_simplify): Fix typo in rtx code check.

2002-05-20  H.J. Lu  (hjl@gnu.org)

	Base on suggestions from Zhang Fuxin <fxzhang@ict.ac.cn>:

	* config/mips/mips.h (DFMODE_NAN): Defined.
	(SFMODE_NAN): Likewise.

2002-05-20  Dale Johannesen  <dalej@apple.com>

	* combine.c (cant_combine_insn_p):  Back out my
	previous patch.

2002-05-20  Kazu Hirata  <kazu@cs.umass.edu>

	* params.c: Fix formatting.
	* params.h: Likewise.
	* predict.c: Likewise.
	* prefix.c: Likewise.
	* print-rtl.c: Likewise.
	* print-tree.c: Likewise.
	* profile.c: Likewise.

2002-05-20  H.J. Lu  (hjl@gnu.org)

	* gcc/config/mips/linux.h (SDB_DEBUGGING_INFO): Undefine.

2002-05-20  Nick Clifton  <nickc@cambridge.redhat.com>

	* config/arm/arm-wince-pe.h (ASM_SPEC): Pass -mcpu and -march
	switches straight on to the assembler, do not abbreviate them.
	* config/arm/elf.h (ASM_SPEC): As above.
	* config/arm/semi.h (ASM_SPEC): As above.
	* config/arm/unknown-elf-oabi.h (ASM_SPEC): As above.
	* config/arm/xscale-coff.h (SUBTARGET_ASM_SPEC): Pass
	-mcpu=xscale on to the assembler by default.
	* config/arm/xscale-elf.h (SUBTARGET_ASM_SPEC): As above.

2002-05-20  Richard Henderson  <rth@redhat.com>

	* cse.c (canon_hash): Reorder do_not_record test.  Always
	allow pic_offset_table_rtx.

2002-05-19  Toon Moene  <toon@moene.indiv.nluug.nl>

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

2002-05-19  Mark Mitchell  <mitchell@doubledemon.codesourcery.com>

	* Makefile.in (distclean): Remove QMTest stuff.
	(QMTEST_PATH): New variable.
	(QMTESTFLAGS): Likewise.
	(QMTESTRUNFLAGS): Likewise.
	(QMTEST): Likewise.
	(QMTEST_GPP_TESTS): Likewise.
	(QMTEST_DIR): Likewise.
	(QMTEST_DIR/context): New target.
	(qmtest-g++): Likeise.
	(qmtest-gui): Likewise.
	(QMTEST_DIR/gpp-expected.qmr): Likewise.

2002-05-19  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/rs6000.h (FUNCTION_VALUE): Only return vectors in
	an altivec register if TARGET_ALTIVEC.

	* config/rs600/rs6000.c (rs6000_emit_move): Change VECTOR_MODE_P
	to ALTIVEC_VECTOR_MODE.
	(rs6000_va_arg): Only vectors of type AltiVec are 16 byte aligned.
	(rs6000_va_arg): Vectors may go in registers if they are not
	altivec vectors.

2002-05-19  Kazu Hirata  <kazu@cs.umass.edu>

	* protoize.c: Fix formatting.

2002-05-19  Richard Henderson  <rth@redhat.com>

	* gensupport.c (init_include_reader): Merge into ...
	(process_include): ... here.  Simplify composite path creation.
	Plug memory leaks.  Fix file/line number tracking.  Do not
	process_define_cond_exec.  Return void.
	(process_rtx): Don't check process_include return value.

2002-05-20  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* basic_block.h (struct basic_block_def): Added prev_bb and next_bb
	fields.
	(FOR_BB_BETWEEN, FOR_ALL_BB, FOR_ALL_BB_REVERSE): New macros for
	traversing basic block chain.
	(create_basic_block_structure, create_basic_block): Declaration changed.
	(link_block, unlink_block): Declare.
	* cfg.c (entry_exit_blocks): Initialize new fields.
	(link_block, unlink_block): New.
	(expunge_block_nocompact): Unlink basic block.
	(dump_flow_info): Print prev_bb/next_bb fields.
	* cfgbuild.c (find_basic_blocks_1, find_basic_blocks): Modified.
	* cfgcleanup.c (merge_blocks_move_predecessor_nojumps): Modified.
	* cfglayout.c (fixup_reorder_chain, cfg_layout_duplicate_bb): Modified.
	* cfgrtl.c (create_basic_block_structure, create_basic_block,
	split_block, force_nonfallthru_and_redirect, split_edge): Modified.
	(verify_flow_info): Check that list agrees with numbering.

2002-05-19  Neil Booth  <neil@daikokuya.demon.co.uk>

	* c-common.c (preprocessing_asm): New macro.
	* c-lex.h (builtin_define, builtin_assert): Use pfile.
doc:
	* tm.texi: Update.
config/alpha:
	* alpha.h (CPLUSPLUS_CPP_SPEC): Remove.
	(CPP_SPEC): Simplify.
	(TARGET_CPU_CPP_BUILTINS): Update.
	* freebsd.h (TARGET_OS_CPP_BUILTINS): New.
	(CPP_SPEC): Simplify.
	* linux.h (CPLUSPLUS_CPP_SPEC): Remove.
	(TARGET_OS_CPP_BUILTINS): Update.
	* osf.h (CPP_XFLOAT_SPEC): Kill.
	(TARGET_OS_CPP_BUILTINS): Update.
	(CPP_SUBTARGET_SPEC, SUBTARGET_EXTRA_SPECS): Simplify.
	* osf5.h (CPP_XFLOAT_SPEC): Kill.
	* vms.h (CPP_SUBTARGET_SPEC): Kill.
	(TARGET_OS_CPP_BUILTINS): Update.

2002-05-19  Richard Henderson  <rth@redhat.com>

	* varasm.c (default_binds_local_p): Fix typo.

2002-05-19  Marek Michalkiewicz  <marekm@amelek.gda.pl>

	* config/avr/avr.c (machine_dependent_reorg): Sign extend the
	CONST_INT operand to the correct mode after adding 1 to it.

2002-05-19  Mark Mitchell  <mark@codesourcery.com>

	* config.gcc (powerpc-wrs-windiss*): New target.

2002-05-19  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* config/rs6000/rs6000.md (ashrdi3_no_power): New.
	(ashrdi3): Use it.

2002-05-18  Mark Mitchell  <mark@codesourcery.com>

	* configure.in (AC_CHECK_FUNCS): Add checks for scandir and
	alphasort.
	* config.in: Regenerated.
	* configure: Regenerated.

2002-05-19  Richard Henderson  <rth@redhat.com>

	* target-def.h (TARGET_BINDS_LOCAL_P): New.
	* target.h (struct gcc_target): Move boolean fields to the end.
	Add binds_local_p.
	* varasm.c (default_binds_local_p): New.
	* output.h: Declare it.

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

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

2002-05-19  Richard Henderson  <rth@redhat.com>

	* system.h (BLOCK_PROFILER, BLOCK_PROFILER_CODE,
	FUNCTION_BLOCK_PROFILER, FUNCTION_BLOCK_PROFILER_EXIT,
	MACHINE_STATE_SAVE, MACHINE_STATE_RESTORE): Poison.

	* toplev.c (display_help): Kill -a -ax help.

	* config/1750a/1750a.h, config/alpha/alpha.h,
	config/clipper/clipper.h, config/dsp16xx/dsp16xx.h,
	config/h8300/h8300.h, config/i960/i960.h, config/m68k/tower-as.h,
	config/m88k/m88k.h, config/vax/vax.h, config/we32k/we32k.h:
	(FUNCTION_BLOCK_PROFILER, BLOCK_PROFILER): Kill.

	* libgcc2.c [L_bb] (BLOCK_PROFILER_CODE): Kill.
	* config/m68k/sun3.h (BLOCK_PROFILER_CODE): Kill.

	* config/i386/i386-protos.h (ix86_output_block_profiler): Kill.
	(ix86_output_function_block_profiler): Kill.
	* config/m68hc11/m68hc11.c (m68hc11_block_profiler): Kill.
	(m68hc11_function_block_profiler): Kill.
	* config/m68hc11/m68hc11-protos.h: Update.
	* config/m88k/m88k.c (output_block_profiler): Kill.
	(output_function_block_profiler): Kill.
	* config/m88k/m88k-protos.h: Update.

2002-05-19  Richard Henderson  <rth@redhat.com>

	* system.h (STRIP_NAME_ENCODING): Poison it.
	* output.h (STRIP_NAME_ENCODING): Remove.
	(default_strip_name_encoding): Declare.
	* target-def.h (TARGET_STRIP_NAME_ENCODING): New.
	* target.h (strip_name_encoding): New.
	* varasm.c (default_strip_name_encoding): New.

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

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

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

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

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

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

2002-05-19  Andreas Jaeger  <aj@suse.de>

	* gengenrtl.c: Add prototype for excluded_rtx.

	* real.h: Add prototype for exact_real_truncate.

2002-05-18  Richard Henderson  <rth@redhat.com>

	* system.h (ENCODE_SECTION_INFO): Poison it.
	* target-def.h (TARGET_ENCODE_SECTION_INFO): New.
	* target.h (encode_section_info): New.
	* varasm.c (make_decl_rtl, output_constant_def): Use it.
	* hooks.c (hook_tree_int_void): New.
	* hooks.h: Declare it.

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

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

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

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

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

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

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

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

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

2002-05-18  Richard Henderson  <rth@redhat.com>

	* config/darwin.h (DARWIN_REGISTER_TARGET_PRAGMAS): Rename from
	REGISTER_TARGET_PRAGMAS.
	* config/rs6000/darwin.h (REGISTER_TARGET_PRAGMAS): Redefine.

	* config.gcc: Do not use rs6000-c.c on powerpc-darwin.

2002-05-18  Richard Henderson  <rth@redhat.com>

	* system.h (SELECT_RTX_SECTION): Poison.
	* target-def.h (TARGET_ASM_SELECT_RTX_SECTION): New.
	* target.h (select_rtx_section): New.
	* varasm.c (output_constant_pool): Use it.
	(default_select_rtx_section, default_elf_select_rtx_section): New.
	* output.h: Declare them.

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

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

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

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

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

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

Sun May 19 00:24:23 CEST 2002  Jan Hubicka  <jh@suse.cz>

	* i386.md (movsi/movdi): Fix template.
	(sse2 patterns): Set attributes consistently.

	* i386.md (pushqi2, ashrqi_*): Fix constraint.

2002-05-18  Toon Moene  <toon@moene.indiv.nluug.nl>

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

2002-05-18  Richard Henderson  <rth@redhat.com>

	* final.c (HAVE_READONLY_DATA_SECTION): New.
	(shorten_branches): Use it instead of ifdefs.
	* varasm.c (enum in_section): Add in_readonly_data.
	(text_section, data_section): Tidy.
	(readonly_data_section): Use READONLY_DATA_SECTION_ASM_OP if present.

	* config/darwin.h, config/nextstep.h, config/h8300/elf.h,
	config/i860/paragon.h, config/m68k/dpx2.h, config/m68k/hp320.h
	(READONLY_DATA_SECTION): Don't undef.

	* config/alpha/unicosmk.h, config/h8300/elf.h, config/i386/aix386ng.h,
	config/i860/paragon.h, config/m68k/dpx2.h, config/m68k/hp320.h,
	config/rs6000/lynx.h (READONLY_DATA_SECTION_ASM_OP): Undef.

	* config/elfos.h, config/svr3.h, config/alpha/alpha-interix.h,
	config/alpha/elf.h, config/c4x/c4x.h, config/i386/i386-interix.h,
	config/i386/sco5.h, config/i386/svr3gas.h, config/i860/sysv3.h,
	config/m88k/m88k.h, config/pa/pa64-hpux.h (USE_CONST_SECTION): Remove.

	* config/elfos.h, config/netware.h, config/alpha/alpha-interix.h,
	config/alpha/elf.h, config/alpha/vms.h, config/arc/arc.h,
	config/arm/coff.h, config/c4x/c4x.h, config/dsp16xx/dsp16xx.h,
	config/i386/dgux.h, config/i386/i386-interix.h, config/i386/sco5.h,
	config/ia64/hpux.h, config/m32r/m32r.h, config/m68k/tower-as.h,
	config/m88k/m88k.h, config/mcore/mcore-pe.h, config/mips/iris6.h,
	config/mips/mips.h, config/mmix/mmix.h, config/pa/pa64-hpux.h,
	config/sparc/sysv4.h (READONLY_DATA_SECTION_ASM_OP): Rename from
	CONST_SECTION_ASM_OP/READONLY_SECTION_ASM_OP/RDATA_SECTION_ASM_OP.

	* config/elfos.h, config/netware.h, config/1750a/1750a.h,
	config/a29k/a29k.h, config/alpha/alpha-interix.h, config/alpha/alpha.h,
	config/arm/coff.h, config/h8300/h8300.h, config/i386/aix386ng.h,
	config/i386/i386-interix.h, config/i386/osfrose.h, config/mmix/mmix.h,
	config/pa/pa64-hpux.h, config/sparc/litecoff.h
	(EXTRA_SECTIONS, EXTRA_SECTION_FUNCTIONS): Remove.

	* config/elfos.h, config/netware.h, config/svr3.h,
	config/alpha/alpha-interix.h, config/alpha/alpha.h, config/alpha/elf.h,
	config/arm/coff.h, config/c4x/c4x.h, config/dsp16xx/dsp16xx.h,
	config/h8300/h8300.h, config/i386/i386-interix.h,
	config/i386/osfrose.h, config/i386/svr3gas.h, config/mmix/mmix.h,
	config/pa/pa64-hpux.h (READONLY_DATA_SECTION): Remove.

	* config/elfos.h, config/netware.h, config/svr3.h,
	config/alpha/alpha-interix.h, config/alpha/alpha.h, config/alpha/elf.h,
	config/c4x/c4x.h, config/i386/aix386ng.h, config/i386/i386-interix.h,
	config/i386/sco5.h, config/i386/svr3gas.h, config/mmix/mmix.h,
	config/pa/pa64-hpux.h (CONST_SECTION_FUNCTION): Remove.

	* config/lynx.h, config/svr3.h, config/alpha/elf.h, config/alpha/vms.h,
	config/c4x/c4x.h, config/dsp16xx/dsp16xx.h, config/i386/sco5.h,
	config/i386/svr3gas.h, config/i860/sysv3.h, config/i860/sysv4.h,
	config/ia64/sysv4.h, config/m32r/m32r.h, config/m88k/m88k.h,
	config/mcore/mcore-elf.h, config/mcore/mcore-pe.h, config/mips/elf.h,
	config/mips/elf64.h, config/mips/iris6.h, config/mips/linux.h,
	config/mips/mips.h, config/mips/rtems64.h, config/mips/vxworks.h,
	config/rs6000/sysv4.h, config/v850/v850.h
	(EXTRA_SECTIONS): Remove in_const/in_rdata.
	(EXTRA_SECTION_FUNCTIONS): Remove accompanying function.

	* config/svr3.h, config/c4x/c4x.h, config/i386/dgux.h,
	config/i386/sco5.h, config/i386/svr3gas.h, config/ia64/aix.h,
	config/m88k/dgux.h, config/mcore/mcore-pe.h, config/mmix/mmix.h,
	config/sparc/sysv4.h (SELECT_RTX_SECTION): Use readonly_data_section.
	* config/alpha/alpha.c (alpha_start_function): Likewise.
	(alpha_write_linkage): Likewise.
	* config/m32r/m32r.c (m32r_select_section): Likewise.
	* config/m88k/m88k.c (m88k_select_section): Likewise.
	* config/mips/mips.c (mips_select_rtx_section): Likewise.
	* config/rs6000/rs6000.c (rs6000_select_rtx_section): Likewise.
	(rs6000_elf_select_section): Likewise.
	* config/v850/v850.c (v850_select_section): Likewise.

	* config/1750a/1750a.h, config/i860/sysv3.h
	(READONLY_DATA_SECTION_ASM_OP): New.
	READONLY_DATA_SECTION_ASM_OP.
	* config/i386/interix.c, config/i386/winnt.c
	(i386_pe_unique_section): Always use .rdata prefix.
	* config/pa/som.h (readonly_data): Always switch to read-only section.
	(READONLY_DATA_SECTION): Predicate on flag_pic.
	* config/we32k/we32k.h (READONLY_DATA_SECTION): Remove parenthesis.
	* doc/tm.texi (READONLY_DATA_SECTION_ASM_OP): New.
	(READONLY_DATA_SECTION): Update.

2002-05-18  Jason Thorpe  <thorpej@wasabisystems.com>

	* c-common.c (c_common_post_options): Warn if -Wformat-zero-length
	is used without -Wformat.
	* c-common.h (warn_format_zero_length): Declare extern.
	* c-decl.c (warn_options): Add "format-zero-length".
	* c-format.c (warn_format_zero_length): Declare.
	(set_Wformat): Set warn_format_zero_length for -Wformat.
	(check_format_info): Only warn about zero-length formats if
	warn_format_zero_length is true.  Include the format type
	name in the warning message.
	* doc/invoke.texi: Document -Wformat-zero-length.
	* testsuite/gcc.dg/format/zero-length-1.c: New test.

2002-05-18  Kazu Hirata  <kazu@cs.umass.edu>

	* timevar.c: Fix formatting.
	* tlink.c: Likewise.
	* toplev.c: Likewise.
	* tree-dump.c: Likewise.
	* tree-inline.c: Likewise.

2002-05-18  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cppinit.c (cpp_post_options): If preprocessed, turn off
	traditional.  If traditional, turn off column numbers.
	* cpplib.c (cpp_push_buffer): Lex from stage 3 if traditional.
	* cpptrad.c (handle_newline): Update line_base.
	(skip_comment): Handle -Wcomment.

2002-05-17  Zack Weinberg  <zack@codesourcery.com>

	* cppinit.c (struct builtin): Remove unused fields.
	(CPLUS, BUILTIN, OPERATOR, O, builtin_array_end): Kill.
	(operator_array): New - was second half of builtin_array.
	(init_builtins): Simplify loop over builtin_array/operator_array.

2002-05-18  Neil Booth  <neil@daikokuya.demon.co.uk>

	* defaults.h (UNIQUE_SECTION): Remove.
	* system.h (UNIQUE_SECTION, SELECT_SECTION): Poison.

2002-05-17  Richard Henderson  <rth@redhat.com>

	* expr.c (init_expr_once): Don't use start/end_sequence.
	Use rtx_alloc instead of emit_insn.
	* toplev.c (lang_dependent_init): Run init_expr_once here ...
	(lang_independent_init): ... not here.

2002-05-17  Jason Thorpe  <thorpej@wasabisystems.com>

	* config/sh/lib1funcs.asm (GLOBAL): Use __USER_LABEL_PREFIX__.

2002-05-17  Marek Michalkiewicz  <marekm@amelek.gda.pl>

	* config/avr/avr.c (avr_regs_to_save): New function.  Also check
	for fixed registers, possibly used for global register variables.
	(initial_elimination_offset, avr_output_function_prologue,
	avr_output_function_epilogue):  Move common code to avr_regs_to_save.

2002-05-17  Neil Booth  <neil@daikokuya.demon.co.uk>

	* Makefile.in: Update for cpptrad.c.
	* cpphash.h (struct cpp_buffer): New members for buffer
	overlays.
	(struct cpp_reader): New members for traditional output.
	(_cpp_read_logical_line, _cpp_overlay_buffer): New.
	* cppinit.c (cpp_create_reader): Set trad_line.
	(cpp_destroy): Free trad_out_base if used.
	(cpp_read_main_file): Overlay an empty buffer if traditional.
	(cpp_finish_options): Don't do builtins.
	(COMMAND_LINE_OPTIONS): Add -traditional-cpp.
	(cpp_handle_option): Handle it.
	* cpplex.c (continue_after_nul): New.
	(_cpp_lex_direct): Use handle_nul.
	* cpplib.h (struct cpp_options): New traditional option.
	* cpptrad.c: New file.

2002-05-17  Neil Booth  <neil@daikokuya.demon.co.uk>

	* c-common.c (c_common_init_options): Use C89 for Objective-C,
	and set the options flag.
	* cppinit.c (lang_flags): Remove objc.
	(lang_defaults): Remove OBJC and OBJCXX.
	(set_lang): Update.
	(COMMAND_LINE_OPTIONS): Remove -+ and -lang-objc++.
	(cpp_handle_option): Remove -+ and -lang-objc++.
	For ObjC, just set a flag.
	(print_help): Update.
	* cpplib.h (enum c_lang): Remove CLK_OBJC and CLK_OBJCXX.

2002-05-17  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* doc/install.texi (Specific, mips-sgi-irix6): Document need to
	bootstrap with -mips3.

2002-05-17  Kazu Hirata  <kazu@cs.umass.edu>

	* final.c: Fix formatting.
	* fix-header.c: Likewise.
	* flow.c: Likewise.
	* fold-const.c: Likewise.
	* function.c: Likewise.

2002-05-17  David S. Miller  <davem@redhat.com>

	PR c/6689, PR optimization/6615
	* local-alloc.c (struct equivalence): Rename 'src' to 'src_p'
	and make it a pointer to rtx.  Update comments.
	(update_equiv_regs): When scanning for equivalences, record
	address of SET_SRC (set) in reg_equiv[].src_p.  Dereference
	it while making the equiv replacements.

2002-05-17  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* config/sparc/sparc.c (sparc_aout_select_section): Fixed typo.

2002-05-17  kaz Kojima  <kkojima@rr.iij4u.or.jp>

	* config/sh/sh.h (ENCODE_SECTION_INFO): Consider MODULE_LOCAL_P
	when encoding visibility into SYMBOL_REF_FLAG.

2002-05-17  Richard Sandiford  <rsandifo@redhat.com>

	* expr.c (force_operand): Fix reversed move.

2002-05-17  Kurt Wall <kwall@kurtwerks.com>

	* doc/install.texi (Testing): Mention two common DejaGnu warnings
	that can be ignored.

2002-05-16  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* doc/install.texi (Final install): Recommend to install into a
	"clean" target directory.

2002-05-17  Richard Henderson  <rth@redhat.com>

	* config/ia64/ia64.md: Use braced strings instead of quoted strings
	for code blocks.  Tidy whitespace.

2002-05-17  Richard Henderson  <rth@redhat.com>

	* hooks.c (hook_tree_bool_false): New.
	* hooks.h: Declare it.
	* target-def.h (TARGET_ASM_SELECT_SECTION): New.
	(TARGET_ASM_UNIQUE_SECTION, TARGET_IN_SMALL_DATA_P): New.
	* target.h (select_section, unique_section): New.
	(in_small_data_p): New.
	* varasm.c (resolve_unique_section): Use hooks instead of macros.
	(variable_section, output_constant_def_contents): Likewise.
	(default_select_section, default_unique_section): New.
	(categorize_decl_for_section, default_elf_select_section): New.
	* output.h: Declare them.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2002-05-17  Nick Clifton  <nickc@cambridge.redhat.com>

	* config/arm/arm.c (emit_multi_reg_push): Do not set
	RTX_FRAME_RELATED_P on the SEQUENCE.

2002-05-16  Richard Henderson  <rth@redhat.com>

	* config/ia64/ia64.c (ia64_reorg): Rebuild bb_for_insn before
	splitting.  Use split_all_insns; update_life_info_in_dirty_blocks.

2002-05-16  Richard Henderson  <rth@redhat.com>

	* config/alpha/unicosmk.h (TARGET_OS_CPP_BUILTINS): Fix typo.

	* config/ia64/ia64.c (saveable_obstack): Do not declare.

2002-05-16  Richard Henderson  <rth@redhat.com>

	* basic-block.h, bb-reorder.c, cfg.c, cfganal.c, cfgbuild.c,
	cfgcleanup.c, cfglayout.c, cfgloop.c, cfgrtl.c, combine.c,
	conflict.c, df.c, df.h, dominance.c, final.c, flow.c, function.c,
	gcse.c, global.c, graph.c, haifa-sched.c, ifcvt.c, lcm.c,
	local-alloc.c, loop.c, predict.c, print-rtl.c, profile.c,
	recog.c, reg-stack.c, regclass.c, regmove.c, regrename.c,
	reload1.c, reorg.c, resource.c, sbitmap.c, sched-deps.c,
	sched-ebb.c, sched-rgn.c, sibcall.c, ssa-ccp.c, ssa-dce.c, ssa.c:
	Revert "Basic block renumbering removal", and two followup patches.

2002-05-16  Jason Thorpe  <thorpej@wasabisystems.com>

	* lcm.c (optimize_mode_switching): Revert previous change.

2002-05-16  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* sched-rgn.c (schedule_insns): Initialize large_region_blocks
	with only extant block numbers.

2002-05-16  Jason Thorpe  <thorpej@wasabisystems.com>

	* lcm.c (optimize_mode_switching): Fix typo.

2002-05-16  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* flow.c (calculate_global_regs_live): Queue blocks in program order.

2002-05-16  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* doc/install.texi (Configuration): Document PWDCMD.

2002-05-16  Dale Johannesen  <dalej@apple.com>

	* combine.c (cant_combine_insn_p):  Reenable combinations
	involving hard regs unless CLASS_LIKELY_SPILLED_P.

2002-05-16  Neil Booth  <neil@daikokuya.demon.co.uk>

	* c-common.c (cb_register_builtins): Handle more built-ins
	here rather than in gcc.c specs.
	* gcc.c (cpp_unique_options): Move many built-ins to c-common.c.
	(cpp_options): Pass -O flags even when only preprocessing.
	* toplev.c (set_fast_math_flags): New prototype.
	(fast_math_flags_set_p): New.
	(set_no_fast_math_flags): Remove.
	(decode_f_option): Update.
	* toplev.h (set_fast_math_flags): Update.
	(fast_math_flags_set_p): New.
	(set_no_fast_math_flags): Remove.
config:
	* c4x/c4x.c (c4x_override_options): Update.

2002-05-16  Zack Weinberg  <zack@codesourcery.com>

	* c-common.c (STDC_0_IN_SYSTEM_HEADERS, REGISTER_PREFIX):
	Default-define here.
	(builtin_define_with_value): Can now wrap the expansion in
	quotation marks if such is wanted.
	(cb_register_builtins): Update calls to	builtin_define_with_value.
	Define __REGISTER_PREFIX__, __USER_LABEL_PREFIX__, and __VERSION__
	here.
	(c_common_init): Set options->stdc_0_in_system_headers.
	* c-lex.h: Update prototype of builtin_define_with_value.
	* cppdefault.h: Remove default definitions of USER_LABEL_PREFIX
	and REGISTER_PREFIX.

	* cppinit.c (VERS, ULP, C, X): Kill.
	(builtin_array): Remove entries for __VERSION__,
	__USER_LABEL_PREFIX__, __REGISTER_PREFIX__, and
	__HAVE_BUILTIN_SETJMP__.  Make __STDC__ always a builtin, not
	a constant.
	(init_builtins): Kill off a bunch of now-dead code.
	(COMMAND_LINE_OPTIONS): Remove -fleading-underscore and
	-fno-leading-underscore.
	(cpp_handle_option): Remove code to set user_label_prefix.
	(cpp_post_options): Likewise.

	* cpplib.h (struct cpp_options): Remove user_label_prefix.
	(stdc_0_in_system_headers): New.
	* cppmacro.c (builtin_macro): Check CPP_OPTION (pfile,
	stdc_0_in_system_headers) too to decide the value of __STDC__.

	* tradcpp.c (user_label_prefix): Kill.
	(main): Remove code handling -f(no-)leading-underscore.
	(initialize_builtins): Don't define __REGISTER_PREFIX__
	or __USER_LABEL_PREFIX__.
	(install_value): Wrap compound statement in dummy loop so the
	macro works properly in an if statement.


2002-05-16  Janis Johnson  <janis187@us.ibm.com>

	* loop.h (struct loop_info): Add member has_prefetch.
	* loop.c (PREFETCH_CONDITIONAL): Change default to 1.
	(prescan_loop): Initialize has_prefetch.
	(struct prefetch_info): Change prefetch_in_loop and
	prefetch_before_loop from bit fields to ints.
	(emit_prefetch_instructions): Several small fixes.
	(check_dbra_loop): Don't reverse loop that uses prefetch.

2002-05-16  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* Makefile.in: Allow for PWDCMD to override hardcoded pwd.
	* configure.in: Likewise.
	* fixinc/check.tpl: Likewise.
	* fixinc/fixinc.dgux: Likewise.
	* fixinc/fixinc.svr4: Likewise.
	* fixinc/fixinc.winnt: Likewise.
	* fixinc/fixincl.sh: Likewise.
	* fixproto: Likewise.
	* configure: Regenerate.

2002-05-16  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	Basic block renumbering removal:
	* basic_block.h (struct basic_block_def): Renamed index to sindex,
	added prev_bb and next_bb fields.
	(n_basic_blocks): Renamed to num_basic_blocks.
	(last_basic_block): New, index of last basic block.
	(FOR_BB_BETWEEN, FOR_ALL_BB, FOR_ALL_BB_REVERSE): New macros for
	traversing basic block chain.
	(BLOCK_NUM): index -> sindex.
	(create_basic_block_structure, create_basic_block): Declaration changed.
	(debug_num2bb): Declare.
	(expunge_block_nocompact): Declaration removed.
	(link_block, unlink_block, compact_blocks): Declare.
	* bb-reorder.c (make_reorder_chain, make_reorder_chain_1): Modified.
	* cfg.c (entry_exit_blocks): Initialize new fields.
	(clear_edges, alloc_block, expunge_block, cached_make_edge,
	redirect_edge_pred, dump_flow_info, dump_edge_info,
	alloc_aux_for_blocks, clear_aux_for_blocks, alloc_aux_for_edges,
	free_aux_for_edges): Modified.
	(link_block, unlink_block, compact_blocks, debug_num2bb): New.
	(expunge_block_nocompact): Removed.
	* cfganal.c (can_fallthru, mark_dfs_back_edges, flow_call_edges_add,
	find_unreachable_blocks, create_edge_list, print_edge_list,
	verify_edge_list, flow_edge_list_print, remove_fake_successors,
	remove_fake_edges, flow_reverse_top_sort_order_compute,
	flow_depth_first_order_compute, flow_preorder_transversal_compute,
	flow_dfs_compute_reverse_init, flow_dfs_compute_reverse_add_bb,
	flow_dfs_compute_reverse_execute): Modified.
	* cfgbuild.c (make_edges, make_eh_edge, find_basic_blocks_1,
	find_basic_blocks, find_many_sub_basic_blocks, find_sub_basic_blocks):
	Modified.
	* cfgcleanup.c (try_simplify_condjump, try_forward_edges,
	merge_blocks_move_predecessor_nojumps,
	merge_blocks_move_successor_nojumps, merge_blocks,
	outgoing_edges_match, try_crossjump_to_edge, try_crossjump_bb,
	try_optimize_cfg, delete_unreachable_blocks, cleanup_cfg): Modified.
	* cfglayout.c (skip_insns_after_block, label_for_bb,
	record_effective_endpoints, scope_to_insns_finalize,
	fixup_reorder_chain, verify_insn_chain, cleanup_unconditional_jumps,
	fixup_fallthru_exit_predecessor, cfg_layout_redirect_edge,
	cfg_layout_duplicate_bb): Modified.
	* cfgloop.c (flow_loops_cfg_dump, flow_loop_dump, flow_loops_dump,
	flow_loop_entry_edges_find, flow_loop_exit_edges_find,
	flow_loop_nodes_find, flow_loop_pre_header_find, flow_loop_scan,
	flow_loops_find, flow_loop_outside_edge_p): Modified.
	* cfgrtl.c (create_basic_block_structure, create_basic_block,
	flow_delete_block, compute_bb_for_insn, split_block,
	try_redirect_by_replacing_jump, redirect_edge_and_branch,
	force_nonfallthru_and_redirect, tidy_fallthru_edge,
	back_edge_of_syntactic_loop_p, split_edge, commit_one_edge_insertion,
	commit_edge_insertions, commit_edge_insertions_watch_calls,
	dump_bb, print_rtl_with_bb, verify_flow_info, purge_dead_edges,
	purge_all_dead_edges): Modified.
	* combine.c (combine_instructions, set_nonzero_bits_and_sign_copies,
	try_combine, nonzero_bits, num_sign_bit_copies, get_last_value_validate,
	get_last_value, reg_dead_at_p, distribute_notes, distribute_links):
	Modified.
	* conflict.c (conflict_graph_compute): Modified.
	* df.c (FOR_ALL_BBS): Removed.
	(df_bitmaps_alloc, df_bitmaps_free, df_alloc, df_analyse_1,
	df_modified_p, df_analyse, df_refs_unlink, df_insn_modify,
	df_dump, hybrid_search_bitmap, iterative_dataflow_sbitmap): Modified.
	* df.h (DF_BB_INFO, DF_REF_BBNO): Modified.
	* dominance.c (init_dom_info, calc_dfs_tree_nonrec, calc_dfs_tree,
	calc_idoms, idoms_to_doms, calculate_dominance_info): Modified.
	* final.c (compute_alignments, final_scan_insn): Modified.
	* flow.c (verify_local_live_at_start, update_life_info,
	update_life_info_in_dirty_blocks, free_basic_block_vars,
	delete_noop_moves, calculate_global_regs_live,
	initialize_uninitialized_subregs, allocate_bb_life_data,
	regno_uninitialized, regno_clobbered_at_setjmp, mark_set_1,
	mark_used_reg, count_or_remove_death_notes): Modified.
	* function.c (thread_prologue_and_epilogue_insns): Modified.
	* gcse.c (struct null_pointer_info): Change typo of current_block
	to basic_block.
	(gcse_main, alloc_gcse_mem, compute_local_properties, compute_sets,
	oprs_unchanged_p, load_killed_in_block_p, record_last_reg_set_info,
	compute_hash_table, alloc_rd_mem, handle_rd_kill_set, compute_kill_rd,
	alloc_avail_expr_mem, expr_killed_p, compute_ae_kill,
	expr_reaches_here_p_work, expr_reaches_here_p, handle_avail_expr,
	classic_gcse, one_classic_gcse_pass, compute_transp, cprop,
	one_cprop_pass, compute_pre_data, pre_expr_reaches_here_p_work,
	pre_expr_reaches_here_p, insert_insn_end_bb, pre_edge_insert,
	pre_delete, one_pre_gcse_pass, compute_transpout,
	invalidate_nonnull_info, delete_null_pointer_checks_1,
	free_code_hoist_mem, compute_code_hoist_vbeinout,
	hoist_expr_reaches_here_p, hoist_code, one_code_hoisting_pass,
	compute_ld_motion_mems, store_ops_ok, find_moveable_store,
	compute_store_table, build_store_vectors, insert_insn_start_bb,
	insert_store, replace_store_insn, free_store_memory, store_motion):
	Modified.
	* global.c (global_alloc, global_conflicts, mark_elimination,
	build_insn_chain): Modified.
	* graph.c (print_rtl_graph_with_bb): Modified.
	* haifa-sched.c (sched_init): Modified.
	* ifcvt.c (SET_ORIG_INDEX, ORIG_INDEX): Removed.
	(find_if_block, find_cond_trap, find_if_case_1, find_if_case_2,
	if_convert): Modified.
	* lcm.c (compute_antinout_edge, compute_earliest, compute_laterin,
	compute_insert_delete, pre_edge_lcm, compute_available,
	compute_farthest, compute_nearerout, compute_rev_insert_delete,
	pre_edge_rev_lcm, make_preds_opaque, optimize_mode_switching):
	Modified.
	* local-alloc.c (alloc_qty, local_alloc, update_equiv_regs): Modified.
	* loop.c (loop_dump_aux): Modified.
	* predict.c (combine_predictions_for_insn, estimate_probability,
	last_basic_block_p, process_note_prediction, process_note_predictions,
	note_prediction_to_br_prob, propagate_freq, counts_to_freqs,
	expensive_function_p, estimate_bb_frequencies,
	compute_function_frequency): Modified.
	* print-rtl.c (print_rtx): Modified.
	* profile.c (GCOV_INDEX_TO_BB, BB_TO_GCOV_INDEX, instrument_edges,
	get_exec_counts, compute_branch_probabilities, compute_checksum,
	branch_prob, find_spanning_tree): Modified.
	* recog.c (split_all_insns, peephole2_optimize): Modified.
	* reg-stack.c (reg_to_stack, convert_regs_entry, compensate_edge,
	convert_regs_1, convert_regs_2, convert_regs): Modified.
	* regclass.c (scan_one_insn, regclass): Modified.
	* regmove.c (mark_flags_life_zones, regmove_optimize,
	combine_stack_adjustments): Modified.
	* regrename.c (regrename_optimize, copyprop_hardreg_forward): Modified.
	* reload1.c (reload, reload_combine, copy_eh_notes): Modified.
	* reorg.c (dbr_schedule): Modified.
	* resource.c (find_basic_block, init_resource_info): Modified.
	* sbitmap.c (sbitmap_intersection_of_succs,
	sbitmap_intersection_of_preds, sbitmap_union_of_succs,
	sbitmap_union_of_preds): Modified.
	* sched-deps.c (init_dependency_caches): Modified.
	* sched-ebb.c (schedule_ebbs): Modified.
	* sched-rgn.c (is_cfg_nonregular, build_control_flow, debug_regions,
	find_rgns, compute_trg_info, init_regions, schedule_insns): Modified.
	* sibcall.c (optimize_sibling_and_tail_recursive_call): Modified.
	* ssa-ccp.c (examine_flow_edges, optimize_unexecutable_edges,
	ssa_ccp_substitute_constants, ssa_ccp_df_delete_unreachable_insns,
	ssa_const_prop): Modified.
	* ssa-dce.c (set_control_dependent_block_to_edge_map_,
	find_control_dependence, find_pdom, ssa_eliminate_dead_code): Modified.
	* ssa.c (remove_phi_alternative, find_evaluations,
	compute_dominance_frontiers_1, compute_iterated_dominance_frontiers,
	insert_phi_node, rename_block, convert_to_ssa, eliminate_phi,
	make_regs_equivalent_over_bad_edges,
	make_equivalent_phi_alternatives_equival,
	compute_conservative_reg_partition,
	coalesce_regs_in_successor_phi_nodes, compute_coalesced_reg_partition,
	rename_equivalent_regs, convert_from_ssa, for_each_successor_phi):
	Modified.

2002-05-16  Mark Mitchell  <mark@codesourcery.com>

	* cfgrtl.c (purge_dead_edges): Correct handling of EDGE_EH.

2002-05-16  Nick Clifton  <nickc@cambridge.redhat.com>

	* config/arm/arm.c (arm_rtx_costs): Check for RTX being a
	SYMBOL_REF before calling CONSTANT_POOL_ADDRESS_P.
	(arm_adjust_cost): Check for RTX being a SYMBOL_REF before
	calling CONSTANT_POOL_ADDRESS_P.
	* config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Fix typo in code
	to decide whether to define __arm__ or __thumb.
	(THUMB_GO_IF_LEGITIMATE_ADDRESS): Check for RTX being a
	SYMBOL_REF before calling CONSTANT_POOL_ADDRESS_P.

2002-05-16  Neil Booth  <neil@daikokuya.demon.co.uk>

	* config/arc/arc.h (CPP_PREDEFINES): Remove.
	(CPP_SPEC): Update.
	(TARGET_CPU_CPP_BUILTINS): New.

2002-05-16  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cpphash.h (cpp_macro): Move here, and make expansion a union.
	* cppmacro.c (cpp_macro): Remove.
	(enter_macro_context, replace_args, warn_of_redefinition,
	_cpp_create_definition, cpp_macro_definition): Update.

2002-05-16  Jason Merrill  <jason@redhat.com>

	* config/mips/mips.c (mips_output_external): Don't do sdata
	optimization for a variable with DECL_COMDAT set.

2002-05-15  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/altivec.h: Cleanups for tighter typechecking.
	Cleanups for accepting modifiers on pointers.
	Fix predicate typos.
	Allow long pointers as well as int pointers.

2002-05-15  Richard Henderson  <rth@redhat.com>

	* varasm.c (merge_weak): Remove special case for extern and common.

2002-05-15  Matt Hiller  <hiller@redhat.com>

	* testsuite/gcc.c-torture/compile/20000804-1.x: Don't return 1 if
	XFAILing.
	* testsuite/gcc.c-torture/compile/20001226-1.x: Ditto.
	* testsuite/gcc.c-torture/compile/920520-1.x: Ditto.
	* testsuite/gcc.c-torture/compile/mipscop-1.x: XFAIL for now.
	* testsuite/gcc.c-torture/compile/mipscop-2.x: Ditto.
	* testsuite/gcc.c-torture/compile/mipscop-3.x: Ditto.
	* testsuite/gcc.c-torture/compile/mipscop-4.x: Ditto.

2002-05-15  Aldy Hernandez  <aldyh@redhat.com>

	* reload1.c (forget_old_reloads_1): Do not use subreg offset.

2002-05-15  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/rs6000.md ("altivec_mtvscr"): Set VSCR register.
	("altivec_mfvscr"): Read from VSCR.

	Add vscr sets for the following insns: altivec_vctuxs,
	altivec_vaddubs, altivec_vaddsbs, altivec_vadduhs,
	altivec_vaddshs, altivec_vadduws, altivec_vaddsws, altivec_vctsxs,
	altivec_vmhaddshs, altivec_vmhraddshs, altivec_vmsumuhs,
	altivec_vmsumshs, altivec_vpkuhss, altivec_vpkshss,
	altivec_vpkuwss, altivec_vpkswss, altivec_vpkuhus,
	altivec_vpkshus, altivec_vpkuwus, altivec_vpkswus,
	altivec_vsububs, altivec_vsubsbs, altivec_vsubuhs,
	altivec_vsubshs, altivec_vsubuws, altivec_vsubsws,
	altivec_vsum4ubs, altivec_vsum4sbs, altivec_vsum4shs,
	altivec_vsum2sws, altivec_vsumsws.

	* config/rs6000/rs6000.h: Add VSCR fixed register.
	(CALL_REALLY_USED_REGISTERS): Add vscr.
	(CALL_USED_REGISTERS): Same.
	(FIXED_REGISTERS): Same.
	(REG_ALLOC_ORDER): Same.
	(reg_class): Add VSCR_REGS.
	(REG_CLASS_NAMES): Same.
	(REG_CLASS_CONTENTS): Same.
	(VSCR_REGNO): New.
	(REGISTER_NAMES): Add vscr.
	(DEBUG_REGISTER_NAMES): Same.
	(ADDITIONAL_REGISTER_NAMES): Same.
	(FIRST_PSEUDO_REGISTER): Increment.
	(CONDITIONAL_REGISTER_USAGE): Set VSCR as a global register.

2002-05-15  Jakub Jelinek  <jakub@redhat.com>

	* fold-const.c (fold): Fix a typo.

2002-05-15  Eric Botcazou  <ebotcazou@multimania.com>

	* fold-const.c (fold) [LT_EXPR]: Move the transformation of a
	comparison against the highest or lowest integer value before
	the 'X >= CST to X > (CST - 1)' and 'X < CST to X <= (CST - 1)'
	transformation and that of an unsigned comparison against 0
	right after.

2002-05-15  Richard Henderson  <rth@redhat.com>

	* varasm.c (merge_weak): Error for any weakening after definition.
	Adjust weakening after use warning to catch more cases.
	(assemble_alias): Set TREE_USED and TREE_ASM_WRITTEN consistently.
	* config/alpha/alpha.c (alpha_encode_section_info): Do not abort.

Wed May 15 10:38:27 CEST 2002  Jan Hubicka  <jh@suse.cz>

	* invoke.texi (-malign-double): Re-add lost warning.

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

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

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

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

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

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

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

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

2002-03-09  Jakub Jelinek  <jakub@redhat.com>

	PR optimization/5172, optimization/5200
	* gcse.c (gcse_main): Disable store_motion.

2002-05-14  Zack Weinberg  <zack@codesourcery.com>

	* c-parse.in (MODIFIED_WCHAR_TYPE): New macro.
	(c_common_nodes_and_builtins): Use it.
	(builtin_define_with_value): New function.
	(cb_register_builtins): Define __SIZE_TYPE__,
	__PTRDIFF_TYPE__, __WCHAR_TYPE__, and __WINT_TYPE__ here,
	using builtin_define_with_value.  Use consistent notation when
	defining __GXX_WEAK__.
	(WCHAR_TYPE_SIZE): Don't redefine.
	(combine_strings): Don't use WCHAR_TYPE_SIZE.

	* cppdefault.h: Don't provide defaults for SIZE_TYPE,
	PTRDIFF_TYPE, WCHAR_TYPE, or WINT_TYPE.
	* cppinit.c (builtin_array): Remove entries for __SIZE_TYPE__ etc.
	* tradcpp.c (initialize_builtins): Likewise.
	* gcc.c (cpp_unique_options): Don't muck with __WCHAR_TYPE__.

	* c-lex.h (builtin_define_with_value): Prototype.
	* system.h: Poison NO_BUILTIN_SIZE_TYPE, NO_BUILTIN_WCHAR_TYPE,
	NO_BUILTIN_PTRDIFF_TYPE, and NO_BUILTIN_WINT_TYPE.
	* doc/tm.texi: Remove mention of NO_BUILTIN_SIZE_TYPE etc.

	* config/avr/avr.h, config/h8300/h8300.h, config/i386/i386.h,
	config/ia64/ia64.h, config/mips/dec-osf1.h, config/mips/iris6.h,
	config/mips/linux.h, config/mips/mips.h, config/mips/netbsd.h,
	config/mips/osfrose.h, config/mips/sni-svr4.h, config/rs6000/aix51.h,
	config/s390/linux.h, config/sh/sh.h, config/sh/sh64.h,
	config/sparc/linux64.h, config/sparc/netbsd-elf.h,
	config/sparc/sol2-bi.h, config/sparc/sparc.h:
	Do not define NO_BUILTIN_SIZE_TYPE etc.  Remove all references
	to __SIZE_TYPE__ etc from all spec strings. When this makes
	extra specs empty, delete them.

2002-05-14  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* pa.c (override_options): Override TARGET_JUMP_IN_DELAY when scheduling
	for PA8000 or generating dwarf2 call frame information.
	(output_call): Remove DO_FRAME_NOTES check from return pointer
	optimization.
	(following_call): Return 0 when scheduling for PA8000 or generating
	dwarf2 call frame information.  Revise comment.

2002-05-14  Neil Booth  <neil@daikokuya.demon.co.uk>

config/alpha:
	* alpha.h (TARGET_CPU_CPP_BUILTINS): Define __IEEE_FP
	and __IEEE_FP_INEXACT as appropriate.
	(CPLUSPLUS_CPP_SPEC): Don't define __cplusplus.
	(CPP_SPEC): Remove ieee defines.
	* freebsd.h, netbsd.h: Remove ieee defines and cpp_cpu.

2002-05-14  Richard Henderson  <rth@redhat.com>

	* config/i386/i386.c (ix86_save_reg): Make regno unsigned.
	(ix86_safe_length, ix86_safe_length_prefix, ix86_safe_memory): Kill.

2002-05-14  Neil Booth  <neil@daikokuya.demon.co.uk>

	* arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define.
	(CPP_SPEC): Update.
	(CPP_APCS_PC_SPEC, CPP_APCS_PC_DEFAULT_SPEC,
	CPP_FLOAT_SPEC, CPP_FLOAT_DEFAULT_SPEC, CPP_ENDIAN_SPEC,
	CPP_ENDIAN_DEFAULT_SPEC, CPP_INTERWORK_DEFAULT_SPEC,
	CPP_INTERWORK_SPEC, CPP_PREDEFINES): Remove.
	(EXTRA_SPECS): Update.
	* arm/conix-elf.h, arm/linux-elf.h, arm/netbsd.h, arm/riscix.h,
	arm/riscix1-1.h, arm/rtems-elf.h, arm/semiaof.h, arm/unknown-elf.h,
	arm/unknown-elf-oabi.h, arm/vxarm.h: Remove CPP_PREDEFINES and
	define TARGET_OS_CPP_BUILTINS if necessary.

2002-05-14  Neil Booth  <neil@daikokuya.demon.co.uk>

	* gcc.c (cpp_options): Must pass -m* and -f* options
	to the front end even when only preprocessing.
	(cc1_options): Remove redundant -lang-c.
	* tradcpp.c (main): Ignore -m options.
objc:
	* lang-specs.h: Similarly.

2002-05-14  Vladimir Makarov  <vmakarov@redhat.com>

	* genautomata.c (transform_3): Add code for transformation
	`(A,B,...)+C -> A+C,B,...'.

Tue May 14 12:48:22 CEST 2002  Jan Hubicka  <jh@suse.cz>

	* final.c (end_final): Do not output profile_arcs constructor, when
	no functions are instrumented.

Tue May 14 12:38:30 CEST 2002  Jan Hubicka  <jh@suse.cz>

	* i386.md (testsi to testqi_zext_1 splitter): Fix typo.

2002-05-14  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* doc/install.texi: Remove special markup originally required for
	HTML generation with texi2html.

2002-05-14  Andreas Schwab  <schwab@suse.de>

	* config/ia64/sysv4.h (DO_SELECT_SECTION): Factored out of
	SELECT_SECTION.
	(UNIQUE_SECTION): Define to get small data correctly.

	* varasm.c (resolve_unique_section): Add third parameter
	flag_function_or_data_sections and use it instead of
	flag_function_sections.
	(assemble_start_function): Pass flag_function_sections.
	(asm_emit_uninitialised): Pass flag_data_sections.
	(assemble_variable): Likewise.

2002-05-14  Richard Henderson  <rth@redhat.com>

	* config/i386/i386.md: Use define_constants for unspec numbers.
	* config/i386/i386.c: Likewise.

2002-05-13  Neil Booth  <neil@daikokuya.demon.co.uk>

	* doc/contrib.texi: Update my entry.

2002-05-13  Mark Mitchell  <mark@codesourcery.com>

	* fixinc/inclhack.def (winidss_valist): Limit applicability.
	* fixinc/fixincl.x: Regenerated.
	* fixinc/tests/base/math.h: Update.
	* fixinc/tests/base/testing.h: Likewise.

2002-05-13  Zack Weinberg  <zack@codesourcery.com>

	* genattr.c (gen_attr): Don't emit a comma after the last
	enumerator.

2002-05-13  Richard Henderson  <rth@redhat.com>

	* cfgrtl.c (purge_dead_edges): Handle abnormal call edges created
	by non-local gotos.
	* recog.c (peephole2_optimize): Likewise.

2002-05-13  Andris Pavenis  <pavenis@lanet.lv>

	* cppfiles.c (open_file): Change mode (DJGPP only) of redirected
	input to O_BINARY.

2002-05-13  Jeffrey A Law  (law@redhat.com)

	* flow.c (invalidate_mems_from_autoinc): Rewrite to use for_each_rtx.
	Update prototype and callers.
	(propagate_one_insn): Stack pointer adjustments kill MEMs on
	the mem_set_list which reference the stack pointer, as do
	calls to constant functions as they may clobber outgoing
	argument space.

	* i386.c (ia32_multipass_dfa_lookahead): Prototype.

	* i386.c (TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD): Define.
	(ia32_multipass_dfa_lookahead): New function.

2002-05-13  Neil Booth  <neil@daikokuya.demon.co.uk>

	* gcc.c (SWITCH_TAKES_ARG): Remove 'V'.
	(translate_options): Remove 'V'.
	(process_command): Similarly.
doc:
	* invoke.texi: Remove documentation of 'V'.

2002-05-13  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/linux.h: Revert 2002-04-22 changes.

2002-05-13  Scott Marks <SMarks@mobile-mind.com>

	* config/fr30/fr30.md: Only allow splits of immediate loads
	if the destination is a register.

2002-05-13  Neil Booth  <neil@daikokuya.demon.co.uk>

	* Makefile.in (c-common.o, cppinit.o): Update.
	* c-common.c: Include except.h.
	(cb_register_builtins): Handle __USING_SJLJ_EXCEPTIONS__.
	Call TARGET_CPU_CPP_BUILTINS and TARGET_OS_CPP_BUILTINS.
	* cppinit.c (__USING_SJLJ_EXCEPTIONS): Not here.
	* defaults.h (TARGET_OS_CPP_BUILTINS, TARGET_CPU_CPP_BUILTINS,
	CPP_PREDEFINES): Handle here.
config:
	* alpha/alpha-interix.h, alpha/gnu.h, alpha/linux.h,
	alpha/netbsd.h, alpha/openbsd.h, alpha/osf.h, alpha/unicosmk.h,
	alpha/vms.h, alpha/vxworks.h: Remove CPP_PREDEFINES, define
	TARGET_OS_CPP_BUILTINS.
	* alpha/alpha.h (TARGET_CPU_CPP_BUILTINS): Define.
	(CPP_SPEC, EXTRA_SPECS): Update.
	(CPP_AM_BWX_SPEC, CPP_AM_MAX_SPEC, CPP_AM_FIX_SPEC,
	CPP_AM_CIX_SPEC, CPP_IM_EV4_SPEC, CPP_IM_EV5_SPEC,
	CPP_IM_EV6_SPEC, CPP_CPU_EV4_SPEC, CPP_CPU_EV5_SPEC,
	CPP_CPU_EV56_SPEC, CPP_CPU_PCA56_SPEC, CPP_CPU_EV6_SPEC,
	CPP_CPU_EV67_SPEC, CPP_CPU_DEFAULT_SPEC, CPP_CPU_SPEC): Remove.
doc:
	* tm.texi (TARGET_REGISTER_CPP_BUILTINS): Remove.
	(TARGET_OS_CPP_BUILTINS, TARGET_CPU_CPP_BUILTINS): Define.

2002-05-12  Zack Weinberg  <zack@codesourcery.com>

	* emit-rtl.c (global_rtl): Update comment.
	(const_double_htab, const_double_htab_hash,
	const_double_htab_hash, lookup_const_double): New.
	(const_int_htab_hash, const_int_htab_eq): Remove const
	qualifiers, which cause tons of warnings with RTL checking on.
	(gen_rtx_CONST_DOUBLE): Deleted.
	(const_double_from_real_value): New function - bears some
	resemblance to the former immed_real_const_1.
	(immed_double_const): Moved here from varasm.c and
	simplified.
	(gen_rtx_REG): Make REGNO unsigned to squelch warnings.
	(gen_rtx_SUBREG): Use gen_rtx_raw_SUBREG.
	(gen_rtx): Use immed_double_const.
	(init_emit_once): Initialize the const_double_htab.  Use
	REAL_VALUE_FROM_INT where possible.  Can now use
	CONST_DOUBLE_FROM_REAL_VALUE when setting up const_tiny_rtx.
	* varasm.c (struct varasm_status): Remove x_const_double_chain.
	(const_double_chain, immed_real_const, clear_const_double_mem): Delete.
	(immed_double_const, immed_real_const_1): Moved to emit-rtl.c.
	(init_varasm_status, mark_varasm_status): Don't touch
	x_const_double_chain.

	* output.h: Delete prototype for clear_const_double_mem.
	* real.h: Make REAL_VALUE_TYPE a macro again.  Remove leading
	'0' slot from all CONST_DOUBLE_FORMAT definitions.  Prototype
	const_double_from_real_value, not immed_real_const_1, and use
	it to define CONST_DOUBLE_FROM_REAL_VALUE.  Define new macro
	CONST_DOUBLE_ATOF.
	* rtl.h (CONST_DOUBLE_CHAIN): Kill.
	(CONST_DOUBLE_LOW, CONST_DOUBLE_HIGH): Adjust.
	(gen_rtx_CONST_DOUBLE, immed_real_const): Delete prototypes.
	(gen_rtx_REG): Second arg is unsigned.

	* gengenrtl.c (special_rtx): Take out CONST_DOUBLE.
	(excluded_rtx): New, return true for CONST_DOUBLE.
	(genmacro): Write nothing for excluded codes.
	* combine.c (combine_simplify_rtx): Use CONST_DOUBLE_FROM_REAL_VALUE.
	* expr.c (expand_expr): Likewise.
	* ggc-common.c (ggc_mark_rtx_children_1): Don't mark the
	CONST_DOUBLE_CHAIN.
	* toplev.c (rest_of_compilation): Don't call
	clear_const_double_mem.

	* config/rs6000/rs6000.c (rs6000_float_const): Delete.
	(rs6000_hash_constant): Remove CONST_DOUBLE special case.
	(toc_hash_eq): Remove CONST_DOUBLE and LABEL_REF special cases.
	* config/rs6000/rs6000-protos.h: Don't prototype rs6000_float_const.
	* config/c4x/c4x.md, config/rs6000/rs6000.md: Use CONST_DOUBLE_ATOF.
	* config/dsp16xx/dsp16xx.md, config/mips/mips.md,
	config/pa/pa.md: Use CONST_DOUBLE_FROM_REAL_VALUE.
	* config/sparc/sparc.md, config/sparc/sparc.c: Use immed_double_const.

2002-05-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* mips/iris6.h (CPLUSPLUS_CPP_SPEC): Define.

2002-05-12  Tom Tromey  <tromey@redhat.com>

	* tree.h (copy_node): Don't mention TREE_PERMANENT.

2002-05-12  Zack Weinberg  <zack@codesourcery.com>

	* gensupport.c (n_comma_elts): Moved here from genattrtab.c.
	(scan_comma_elt): New function.  Accepts whitespace in comma lists.
	* gensupport.h: Prototype new routines.
	* genattr.c (gen_attr): Use scan_comma_elt.  Avoid unnecessary
	use of printf.
	* genattrtab.c (n_comma_elts): Moved to gensupport.c.
	(next_comma_elt): Use scan_comma_elt.

	* config/i386/i386.md: Use new attribute notation to break up
	long lines in define_attr forms.

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

	* expr.c (compress_float_constant): New.
	(emit_move_insn): Use it.
	(float_extend_from_mem): New.
	(init_expr_once): Initialize it.
	* real.c (exact_real_truncate): New.

	* config/i386/i386.h (CONST_COSTS): Assume CONST_DOUBLE gets
	dropped into memory; penalize for size.
	(RTX_COSTS): FLOAT_EXTEND is free.
	* config/i386/i386.md (extendsfdf2, extendsfxf2, extendsftf2,
	extenddfxf2, extenddftf2): Accept constants and drop them to memory.

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

	* profile.h (profile_info): Add missing extern to declaration.
	* profile.c (profile_info): Define it.

2002-05-11  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* pa/pa32-regs.h (HARD_REGNO_MODE_OK): Revise sets of general registers
	used for DImode and TImode.

2002-05-11  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cpplex.c (_cpp_lex_direct): When in a directive at EOF
	fake a newline.

2002-05-11  Zack Weinberg  <zack@codesourcery.com>

	* config/rs6000/rs6000.c (rs6000_default_long_calls,
	rs6000_longcall_switch, rs6000_set_default_type_attributes): New.
	(TARGET_SET_DEFAULT_TYPE_ATTRIBUTES): Set it.
	(rs6000_override_options): Handle -m(no-)longcall.
	(init_cumulative_args, output_mi_thunk): Check for both
	longcall and shortcall attributes on the function.
	(rs6000_attribute_table): Add "shortcall".
	(rs6000_handle_longcall_attribute): Update comment.
	(altivec_expand_unop_builtin, altivec_expand_binop_builtin,
	altivec_expand_ternop_builtin): Add default clauses to switches
	to silence warnings.

	* config/rs6000/rs6000.h: Declare rs6000_longcall_switch and
	rs6000_default_long_calls.  Define REGISTER_TARGET_PRAGMAS.
	(TARGET_OPTIONS): Add longcall and no-longcall.

	* config/rs6000/rs6000.md (call_nonlocal_sysv,
	call_value_nonlocal_sysv): Split by alternatives.  One pair
	accepts only SYMBOL_REFs and rejects if CALL_LONG is set in
	the call cookie.  The other pair accepts only LR/CTR and has
	no restriction.

	* config.gcc (rs6000-*-* | powerpc*-*-* trailer stanza):
	Set c_target_objs, cxx_target_objs; add t-rs6000-c-rule to
	tmake_file.
	* config/rs6000/rs6000-c.c: New file.
	* config/rs6000/t-rs6000-c-rule: New file.
	* config/rs6000/rs6000-protos.c: Add multiple-include guard.
	Prototype rs6000_pragma_longcall.

	* doc/extend.texi: Document shortcall attribute.
	* doc/invoke.texi: Document -mlongcall, -mno-longcall.

2002-05-11  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* reorg.c (dbr_schedule): Remove unnecessary test.

Sat May 11 14:34:35 CEST 2002  Jan Hubicka  <jh@suse.cz>

	* i386.md (testsi to testqi spliters): New.

	2002-01-14  Josef Zlomek  <zlomek@matfyz.cz>

	cfg.c (dump_edge_info): added dumping of EDGE_CAN_FALLTHRU.

	Wed Jan  9 2002  Josef Zlomek  <zlomj9am@artax.karlin.mff.cuni.cz>

	* basic-block.h: New flag EDGE_CAN_FALLTHRU
	* cfganal.c (set_edge_can_fallthru_flag): New function; marks the edges
	that can be made fallthru.

	Mon Nov 12 16:25:53 CET 2001  Jan Hubicka  <jh@suse.cz>

	* cfglayout.c (cleanup_unconditional_jumps): New static function.
	(cfg_layout_initialize): Use it.

2002-05-11  Marek Michalkiewicz  <marekm@amelek.gda.pl>

	* config/avr/avr.c (avr_mcu_types): Update supported devices.
	* config/avr/avr.h (CPP_SPEC, LINK_SPEC, CRT_BINUTILS_SPECS): Likewise.
	* config/avr/t-avr (MULTILIB_MATCHES): Likewise.

2002-05-11  Kazu Hirata  <kazu@cs.umass.edu>

	* dbxout.c: Fix formatting.
	* dependence.c: Likewise.
	* df.c: Likewise.
	* diagnostic.c: Likewise.
	* doloop.c: Likewise.
	* dominance.c: Likewise.
	* doschk.c: Likewise.
	* dwarf2asm.c: Likewise.
	* dwarf2out.c: Likewise.
	* dwarfout.c: Likewise.

2002-05-10  Richard Henderson  <rth@redhat.com>

	* final.c (end_final): Tidy whitespace.  Don't honor flag_pack_struct.
	Convert integers constants as needed.  Replace "nwords" field with
	"sizeof_bb".
	(final): Save profile data if cfun->arc_profile, not profile_arc_flag.
	* function.h: Fix typo in comment.
	* libgcc2.c (struct bb): Replace "nwords" with "sizeof_bb".

2002-05-10  Roger Sayle  <roger@eyesopen.com>

	* fold-const.c (build_range_check): Optimize (c>=1) && (c<=127)
	into the equivalent (signed char)c > 0.

2002-05-10  Janis Johnson  <janis187@us.ibm.com>

	* loop.c: (PREFETCH_EXTREME_DIFFERENCE, PREFETCH_BEFORE_LOOP): New.
	(PREFETCH_CONDITIONAL): Renamed from PREFETCH_NOT_ALWAYS.
	(struct prefetch_info): Fix spelling of member bytes_accessed.
	(emit_prefetch_instructions): Make dump messages more regular;
	restructure code to add more dump messages; use new macros for
	heuristics. (There are no code generation changes in any of this).

2002-05-10  David S. Miller  <davem@redhat.com>

	* rtl.h (INSN_ANNULLED_BRANCH_P): Accept INSN too, update comment.
	(struct rtx_def): Update unchanging flag comment.
	* doc/rtl.texi (INSN_ANNULLED_BRANCH_P): Update description.
	* reorg.c (delete_from_delay_list): INSN_ANNULLED_BRANCH_P needs
	to be handled to INSN too.
	(dbr_schedule): Likewise.
	* resource.c (next_insn_no_annul): Likewise.

	* cse.c (rtx_cost): Remove multiplication by power of 2 special
	casing.

2002-05-14  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* doc/install.texi (Specific, *-*-solaris2*): Update passus on
	setting CONFIG_SHELL to /bin/ksh and remove alternate trick to
	(possibly) work around broken /bin/sh.

2002-05-10  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* config/mips/t-iris6 (SHLIB_SLIBDIR_SUFFIXES): Use mabi=64 and
	. as N64/N32 libgcc_s.so subdirs.

2002-05-10  David S. Miller  <davem@redhat.com>

	* config/sparc/sparc.md: Use define_constants for unspec numbers.

	* rtl.h (struct rtx_def): Document unchanging and in_struct flags
	more accurately.
	(INSN_ANNULLED_BRANCH_P): Only valid for JUMP_INSN and CALL_INSN, fix
	comment.
	(INSN_FROM_TARGET_P): Valid also for CALL_INSN.
	* doc/rtl.texi: Document these macros more accurately.
	* recog.c (whole file): Only mess with INSN_ANNULLED_BRANCH_P for
	JUMP_INSNs and CALL_INSNs.
	* resource.c (whole file): Only mess with INSN_ANNULLED_BRANCH_P
	or INSN_FROM_TARGET_P if the code is appropriate.

2002-05-10  Marek Michalkiewicz  <marekm@amelek.gda.pl>

	* config/avr/avr.c (print_operand): Check that addr is a SYMBOL_REF
	before using SYMBOL_REF_FLAG (addr).

	* config/avr/avr-protos.h (avr_io_address_p): Declare.
	* config/avr/avr.c (io_address_p): Rename to avr_io_address_p.
	Make non-static.  Update all callers.
	* config/avr/avr.md (*cbi, *sbi, *sbix_branch, *sbix_branch_bit7):
	New insns to clear/set/test a single bit in I/O address space.

2002-05-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* rtl.h (ENABLE_RTL_FLAG_CHECKING): Also check for gcc >= 2.7.

2002-05-09  Neil Booth  <neil@daikokuya.demon.co.uk>

	* Makefile.in: Update.
	* c-common.c (flag_iso, flag_undef, cb_register_builtins,
	builtin_define_std): New.
	(c_common_init): Register CPP builtins callback.
	* c-common.h (flag_iso, flag_undef): New.
	* c-decl.c (c_decode_option): Set flag_iso and flag_undef.
	* c-lex.c: Don't include target.h.
	(cb_register_builtins): Move to c-common.c.
	(init_c_lex): Don't register hook here.
	* c-lex.h (builtin_define, builtin_assert, builtin_define_std): New.
	(cpp_define, cpp_assert): Remove.
	* gcc.c (cc1_options): Pass -undef to front end.
	* target-def.h (TARGET_REGISTER_CPP_BUILTINS): Remove.
	(TARGET_INITIALIZER): Update.
	* target.h (struct cpp_reader): Don't predeclare.
	(struct gcc_target): Remove cpp builtin hook.
	* tree.c (default_register_cpp_builtins): Remove.
doc:
	* tm.texi: Update.

2002-05-09  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cppexp.c (_cpp_expand_op_stack): Set op_limit.

2002-05-09  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* config/mips/t-iris6 (SHLIB_SLIBDIR_SUFFIXES): Define.
	(SHLIB_LINK, SHLIB_INSTALL): Adjust.

2002-05-09  Jakub Jelinek  <jakub@redhat.com>

	* config/sparc/t-linux64 (SHLIB_MAPFILES): Set.
	* config/sparc/libgcc-sparc-glibc.ver: New file.
	* config/cris/t-linux (SHLIB_MAPFILES): Remove.
	* mklibgcc.in: Preprocess SHLIB_MAPFILES with ml flags.

2002-05-09  Jakub Jelinek  <jakub@redhat.com>

	PR target/6429
	* Makefile.in (libgcc.mk): Pass SHLIB_SLIBDIR_SUFFIXES to mklibgcc.
	* mklibgcc.in: If SHLIB_SLIBDIR_SUFFIXES is defined, put libgcc_s
	shared libraries into multilib dirs, with SONAME libgcc_s.so.1 for
	base multilibs.
	* config/t-slibgcc-elf-ver (SHLIB_LINK): Adjust for the above.
	* config/t-slibgcc-sld (SHLIB_LINK): Likewise.
	* config/sparc/t-linux64 (SHLIB_SLIBDIR_SUFFIXES): Define.
	* config/sparc/t-sol2-64 (SHLIB_SLIBDIR_SUFFIXES): Define.

2002-05-09  Richard Henderson  <rth@redhat.com>

	* config/ia64/ia64.md: Use define_constants for unspec numbers.
	* config/ia64/ia64.c: Likewise.

2002-05-09  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.c (mips_add_large_offset_to_sp): Remove FILE arg.
	(save_restore_insns): Likewise.
	(mips_expand_prologue, mips_expand_epilogue): Update callers.
	(highpart_shift_operator): Attach ATTRIBUTE_UNUSED to mode argument.

Thu May  9 11:50:09 2002  Jeffrey A Law  (law@redhat.com)

	* athlon.md, k6.md, pentium.md, ppro.md): New files.
	* i386.md: Move scheduling information into new files.

	* i386.md (type attribute): Add "rotate" for rotate insns.
	(rotate insns): Set type to "rotate".
	(various attributes and function units): Treat rotate like shift.
	(pent_pair attribute): Only rotates by one bit position are
	pairable.
	(sbb insns): Explicitly set pent_pair attribute on a couple
	that were missing it.

Thu May  9 18:29:24 2002  J"orn Rennecke <joern.rennecke@superh.com>

	* sh.c (sh_builtin_saveregs): If starting with an odd fp register,
	make sure that buffer starts on odd word address.
	(sh_va_arg): Skip odd fp registers when reading a double precision
	value.

2002-05-09  Neil Booth  <neil@daikokuya.demon.co.uk>

	* tree.h (preserve_data, object_permanent_p, type_precision):
	Remove.

2002-05-09  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cpplib.c (cpp_init_internal_pragmas): Remove #pragma poison.
	* cppmacro.c (paste_all_tokens): Bad pastes are a hard error.
doc:
	* cpp.texi: Update for removal of obsolete features.

Thu May  9 07:46:18 2002  Jan Hubicka <jh@suse.cz>
			  Jeffrey A Law  (law@redhat.com)

	* i386.c (ia32_use_dfa_pipeline_interface): New function.  Use
	the DFA interface for Pentium processors.
	(TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE): DEFINE.
	(attr_pent_pair, ix86_pent_find_pair): Remove.
	(ix86_sched_reorder_pentium): Remove.
	(ix86_sched_reorder): Remove reordering for Pentium.
	* i386.md (Pentium scheduling): Rewrite using DFA description.

Thu May  9 14:55:39 CEST 2002  Jan Hubicka  <jh@suse.cz>

	* cfganal.c (can_fallthru): Fix fast path.
	* cfgrtl.c (verify_flow_info): Avoid crash on conditionals
	with edges to the next block.

Thu May  9 14:52:45 CEST 2002  Jan Hubicka  <jh@suse.cz>
			       Pavel Nejedly  <bim@atrey.karlin.mff.cuni.cz>

	* final.c (end_final): Use C trees to output data structures for profiling.

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

2002-05-09  Kazu Hirata  <kazu@cs.umass.edu>

	* sbitmap.c: Fix formatting.
	* scan.c: Likewise.
	* scan-decls.c: Likewise.
	* sched-deps.c: Likewise.
	* sched-ebb.c: Likewise.
	* sched-rgn.c: Likewise.
	* sched-vis.c: Likewise.
	* sdbout.c: Likewise.
	* sibcall.c: Likewise.
	* simplify-rtx.c: Likewise.
	* ssa.c: Likewise.
	* ssa-ccp.c: Likewise.
	* ssa-dce.c: Likewise.
	* stmt.c: Likewise.
	* stor-layout.c: Likewise.
	* stringpool.c: Likewise.

2002-05-09  David S. Miller  <davem@redhat.com>

	* config/sparc/sol2.h (ASM_CPU_SPEC): Handle -mcpu=v9.

2002-05-07  David S. Miller  <davem@redhat.com>

	* config/sparc/sparc.h (TARGET_BUGGY_QP_LIB): Define to zero.
	* config/sparc/sol2.h (TARGET_BUGGY_QP_LIB): Override to one.
	* config/sparc/sparc.c (emit_soft_tfmode_libcall): If the Qp
	library implementation clobbers the output before the inputs
	are fully consumed, use stack temporary for the output.

2002-05-09  Jason Thorpe  <thorpej@wasabisystems.com>

	* config/netbsd.h (CPP_SPEC): Remove.
	* config/i386/netbsd-elf.h (CPP_SPEC): Define.
	* config/i386/netbsd.h (CPP_SPEC): Define.
	* config/ns32k/netbsd.h (CPP_SPEC): Define.
	* config/sparc/netbsd-elf.h (CPP_SPEC): Remove.
	* config/sparc/netbsd.h (CPP_SPEC): Define.
	* config/vax/netbsd.h (CPP_SPEC): Define.

2002-05-08  Kazu Hirata  <kazu@cs.umass.edu>

	* read-rtl.c: Fix formatting.
	* real.c: Likewise.
	* recog.c: Likewise.
	* regclass.c: Likewise.
	* regmove.c: Likewise.
	* reg-stack.c: Likewise.
	* reload1.c: Likewise.
	* reload.c: Likewise.
	* resource.c: Likewise.
	* rtlanal.c: Likewise.
	* rtl.c: Likewise.
	* rtl-error.c: Likewise.

2002-05-08  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* pa/pa-64.h (MAX_WCHAR_TYPE_SIZE): Delete.
	* pa/pa.h (MAX_WCHAR_TYPE_SIZE): Delete.

2002-05-08  Bernd Schmidt  <bernds@redhat.com>

	* config/i386/i386.h (CPP_CPUCOMMON_SPEC): Tweak previous change to
	use __SSE2__ macro instead.
	* config/i386/xmmintrin.h: Likewise.

2002-05-08  Janis Johnson  <janis187@us.ibm.com>

	* rtl.h (RTL_FLAG_CHECK*): Add an argument for the macro name,
	and use it in all invocations of these macros.  Clean up comments.
	* rtl.c (rtl_check_failed_flag): Add an argument for the name
	of the flag access macro whose check failed.
	* doc/rtl.texi (Flags): Document additional flag uses.

2002-05-08  Robert Spier <rspier@pobox.com>
	    Neil Booth  <neil@daikokuya.demon.co.uk>

	PR preprocessor/6521
	* cppfiles.c (handle_missing_header): Don't do anything
	different for <> includes.
doc:
	* cppopts.texi: Update documentation for -MG.

2002-05-08  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cpplex.c (cpp_interpret_charconst): Truncate as well as
	sign-extend.
doc:
	* cpp.texi: Clarify multichar charconst valuation.

2002-05-08  Mark Mitchell  <mark@codesourcery.com>

	* doc/invoke.texi: Document -mwindiss option.

2002-05-08  Jason Merrill  <jason@redhat.com>

	* dwarf2out.c (output_call_frame_info): Don't emit a CIE with no FDEs.

	* dwarf2out.c (gen_type_die): Abort on broken recursion.

	PR c++/6381
	* dwarf2out.c (rtl_for_decl_location): Only expand INTEGER_CST and
	REAL_CST.

2002-05-08  Nick Clifton  <nickc@cambridge.redhat.com>

	* config/arm/t-arm-elf (MULTILIB): Do not allow big-endian/
	little-endian multilibs to override arm/thumb multilibs.
	Do not build hardware floating point multilibs, nor apcs-26
	multilibs for the Thumb.

2002-05-08  Mark Mitchell  <mark@codesourcery.com>

	PR c/6569.
	* varasm.c (mark_weak): New function.
	(merge_weak): Use it.  Do not call declare_weak.
	(declare_weak): Use merge_weak.

Wed May  8 13:12:11 CEST 2002  Jan Hubicka  <jh@suse.cz>

	* cse.c (dead_libcall_p): Update counts.
	(delete_trivially_dead_insns): Update call of dead_libcall_p.

Wed May  8 11:08:50 CEST 2002  Jan Hubicka  <jh@suse.cz>

	* cfglayout.c (function_tail_eff_head): Rename to ...
	(function_footer): ... this one.
	(unlink_insn_chain): New functions.
	(label_for_bb): Only call block_label and emit debug message.
	(record_effective_endpoints): Actually unlink the headers and footers.
	(fixup_reorder_cahin): Re-insert the unlinked sequences.
	(cfg_layout_duplicate_bb): Use duplicate_insn_chain.
	* cfglayout.h (struct reorder_block_def): New fields footer/header;
	remove eff_head/eff_end.
	* rtl.h (set_first_insn): Declare.
	* emit-rtl.c (set_first_insn): New function.

	* cfglayout.c (fixup_reorder_chain): Dump duplicated
	(cfg_layout_can_duplicate_bb_p, cfg_layout_rerirect_edge,
	cfg_layout_duplicate_bb): New global function.
	(duplicate_insn_chain): New static function.
	* cfglayout.h (cfg_layout_can_duplicate_bb_p, cfg_layout_rerirect_edge,
	cfg_layout_duplicate_bb): Declare.
	(struct reorder_block_def): Add "original" field.
	* emit-rtl.c (emit_copy_of_insn_after): New function.
	* rtl.h (emit_copy_of_insn_after): Declare.

	* cfglayout.c (fixup_fallthru_exit_predecessor): Kill.
	(fixup_reorder_chain): properly handle edges to exit block.

Wed May  8 11:10:31 CEST 2002  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>
			       Jan Hubicka  <jh@suse.cz>

	* basic-block.h (note_prediction_to_br_prob): declare.
	* c-semantics.c: Include predit.h
	(expand_stmt): predict GOTO_STMT as not taken.
	* cfgcleanup.c: (delete_unreachable_blocks): Make global.
	(cleanup_cfg): Do not free tail_recursion_list.
	* cfgrtl.c (can_delete_note_p): Delete NOTE_INSN_PREDICTION.
	(flow_delete_block): Kill predictions past end of basic block.
	* output.h (delete_unreachable_blocks): Declare.
	* predict.c (predicted_by_p, process_note_predictions,
	process_note_prediction, last_block_p): New function.
	(estimate_probability): Bypass loop on PRED_CONTINUE;
	do not handle noreturn heuristics; kill PRED_RETURN; add
	PRED_EARLY_RETURN.
	* predict.def (PRED_CONTINUE, PRED_EARLY_RETURN, PRED_GOTO,
	PRED_CONST_RETURN, PRED_NEGATIVE_RETURN, PRED_NULL_RETURN): New.
	* predict.h (IS_TAKEN): New constant.
	* print-rtl.c (print_rtx): Pretty print NOTE_INSN_PREDICTION.
	* rtl.c (NOTE_INSN_PREDICTION): New.
	* rtl.h (NOTE_PREDICTION, NOTE_PREDICTION_ALG, NOTE_PREDICTION_FLAGS):
	New macro.
	(insn_note): add NOTE_INSN_PREDICTION.
	* sibcall.c (optimize_sibling_and_tail_recursive_call): Do not build
	CFG; free tail_recursion_label_list.
	* stmt.c: Include predict.h;
	(return_prediction): New.
	(expand_value_return): Use it.
	* toplev.c: Lower NOTE_INSN_PREDICTION before sibcall.

2002-05-08  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.md: Name the unspecs with define_constant.
	(*HILO_delay): Rename to 'hilo_delay' (no star).
	(reload_indi): Replace gen_rtx_UNSPEC with gen_hilo_delay.
	(reload_outdi, reload_outsi): Likewise.

2002-05-07  Kazu Hirata  <kazu@cs.umass.edu>

	* toplev.c: Fix formatting.

2002-05-07  Janis Johnson  <janis187@us.ibm.com>

	* config.in (ENABLE_RTL_FLAG_CHECKING): New.
	* configure.in (ac_rtlflag_checking): New.
	* doc/install.texi (--enable-checking): Document RTL flag checking.

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

	* c-common.c (c_common_init): Set options->unsigned_wchar.
	* cppinit.c (cpp_create_reader): Default unsigned_wchar,
	group target dependencies.
	(init_builtins, cpp_handle_option): Update.
	* cpplex.c (cpp_interpret_charconst): Update.
	* cpplib.h (struct cpp_options): Add unsigned_wchar, rename
	signed_char to unsigned_char, group target dependencies.
	* defaults.h (WCHAR_UNSIGNED): Remove.
	* system.h (WCHAR_UNSIGNED, MAX_CHAR_TYPE_SIZE): Poison.
config:
	* freebsd.h, interix.h, alpha/freebsd.h, arm/freebsd.h,
	i386/386bsd.h, i386/beos-elf.h, i386/bsd386.h, i386/cygwin.h,
	i386/djgpp.h, i386/freebsd-aout.h, i386/i386-interix.h,
	i386/win32.h, ia64/freebsd.h, mips/netbsd.h, rs6000/freebsd.h,
	sh/elf.h, sh/sh.h, sparc/freebsd.h: Remove WCHAR_UNSIGNED.
doc:
	* tm.texi: Remove MAX_CHAR_TYPE_SIZE.

2002-05-07  Mark Mitchell  <mark@codesourcery.com>

	* fixinc/inclhack.def (windiss_math1): New fix.
	(windiss_math2): Likewise.
	(windiss_valist): Likewise.
	* fixinc/fixincl.x: Regenerated.

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

	* genautomata.c (output_internal_min_issue_delay_func): Add
	ATTRIBUTE_UNUSED to avoid warning with empty dfa.
	(output_internal_trans_func): Likewise.

Tue May  7 10:06:22 2002  Jeffrey A Law  (law@redhat.com)

	* pa.c (hppa_profile_hook): Use force_reg to get the address
	of the profile hook into an appropriate pseudo register.

2002-05-07  Mark Mitchell  <mark@codesourcery.com>

	* config/rs6000/sysv4.h (SUBTARGET_SWITCHES): Add -mwindiss.
	(LINK_START_SPEC): Handle it.
	(LINK_OS_SPEC): Likewise.
	(CPP_SPEC): Likewise.
	(STARTFILE_SPEC): Likewise.
	(LIB_SPEC): Likewise.
	(ENDFILE_SPEC): Likewise.  Do not assume crtsavres.o is used on
	all platforms.
	(CRTSAVRES_DEFAULT_SPEC): New macro.
	(LIB_WINDISS_SPEC): New macro.
	(CPP_OS_WINDISS_SPEC): Likewise.
	(STARTFILE_WINDISS_SPEC): Likewise.
	(ENDFILE_WINDISS_SPEC): Likewise.
	(LINK_START_WINDISS_SPEC): Likewise.
	(LINK_OS_WINDISS_SPEC): Likewise.
	* config/rs6000/windiss.h: New file.

2002-05-07  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/rs6000.c (bdesc_2arg): Fix vmax typos.

2002-05-06  David S. Miller  <davem@redhat.com>

	* config/sparc/sparc.md (shift insns): Do not mask off
	second operand, 'I' constraint and SHIFT_COUNT_TRUNCATED
	take care of it.

2002-05-06  Richard Henderson  <rth@redhat.com>

	PR c++/6212
	* expr.c (highest_pow2_factor_for_type): New.
	(expand_assignment): Use it.

2002-05-06  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/rs6000.md ("altivec_mtvscr"): Change to
	unspec_volatile.
	("altivec_mfvscr"): Same.

2002-05-06  Janis Johnson  <janis187@us.ibm.com>

	* rtl.h (struct rtx_def): Update comments.
	(RTL_FLAG_CHECK[12345678]): New.  (rtl_check_failed_flag): Declare.
	(RTL_FLAG): New.  (CLEAR_RTX_FLAGS): New.  (flag access macros): Use
	RTL_FLAG_CHECK macros with list of expected RTL codes.
	* rtl.c (copy_rtx, shallow_copy_rtx): Use RTX_FLAG macro.
	(rtl_check_failed_flag): New.
	* reload1.c (reload): Use REG macro before changing rtx to MEM.
	(reload_cse_noop_set_p): Check rtx code before using access macro.
	* config/ia64/ia64.c (process_for_unwind_directive): Check rtx code
	before using access macro.

2002-05-06  Janis Johnson  <janis187@us.ibm.com>

	* doc/rtl.texi (Flags): Update to reflect current usage.

2002-05-06  Roger Sayle  <roger@eyesopen.com>

	PR opt/3995
	* fold-const.c (sign_bit_p): New function.
	(fold) [EQ_EXPR]: Use this to convert (A & C) == 0 into A >= 0 and
	(A & C) != 0 into A < 0, when constant C is the sign bit of A's type.
	Reapply fold when converting (A & C) == C into (A & C) != 0.
	(fold_binary_op_with_conditional_arg): Fix typo in comment.

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

	* c-common.c (warn_multichar): New.
	(c_common_init): Set CPP's warn_multichar.
	* c-common.h (warn_multichar): New.
	* c-decl.c (warn_multichar): Remove.
	* c-lex.c (lex_charconst): Update.
	* c-tree.h (warn_multichar): Remove.
	* cppexp.c (eval_token): Sign-extend charconst value.
	* cppinit.c (cpp_create_reader): Set warn_multichar.
	* cpplex.c (cpp_interpret_charconst): Don't sign-extend
	each character.  Update prototype.  Sign-extend the result.
	* cpplib.h: Fix conditions.
	(struct cpp_options): Add new warning flag.
	(cpp_interpret_charconst): Update prototype.
doc:
	* cpp.texi: Update documentation.

2002-05-06  Vladimir Makarov  <vmakarov@redhat.com>

	* genautomata.c (form_the_same_automaton_unit_lists_from_regexp):
	Fix typo in usage of allof instead of unit.

2002-05-06  Richard Henderson  <rth@redhat.com>

	* recog.c (if_test_bypass_p): Accept multiple set insns for OUT,
	and any jump or call for IN.

2002-05-06  Bernd Schmidt  <bernds@redhat.com>

	* config/i386/i386.h (CPP_CPUCOMMON_SPEC): Define __SSE2_BUILTINS__ if
	-msse2.
	* config/i386/xmmintrin.h: Use it to conditionalize SSE2 support.

2002-05-06  Roger Sayle  <roger@eyesopen.com>

	* fold-const.c (lshift-double): Cast the high word to an unsigned
	HOST_WIDE_INT when extracting sign bit to avoid compiler warning.
	(div_and_round_double): Cast carry to a signed HOST_WIDE_INT to
	avoid compiler warning.  (fold): Remove redundant code from
	BIT_AND_EXPR as integer operands are canonicalized to be arg1.

2002-05-06  Jeff Law  <law@redhat.com>

	* pa-protos.h (hppa_fpstore_bypass_p): Declare.
	* pa.c (pa_adjust_cost): Remove all true dependency cost
	adjustments.  Also remove support for non-DFA scheduling.
	* pa.md (700, 7100, 7100lc, 7200, 7300): Use bypass mechanism
	to adjust true dependency costs.  Update various comments.
	(7100lc, 7200, 7300 scheduling): Simplify by combining the
	FP ALU & MPY units into a single unit.

2002-05-06  Catherine Moore  <clm@redhat.com>

	* config/v850/v850.c (compute_register_save_size): Make sure
	to count all of the registers that will be saved.

Mon May  6 18:03:11 CEST 2002  Jan Hubicka  <jh@suse.cz>

	* i386.c (q_regs_operand): Use ANY_QI_REGS_P.

2002-05-06  David S. Miller  <davem@redhat.com>

	* config/sparc/sparc.c (emit_soft_tfmode_libcall): Do not
	allow result to overlap input operands in memory.

2002-05-06  Neil Booth  <neil@daikokuya.demon.co.uk>

doc:
	* cpp.texi: Update multichar charconst docs.

2002-05-06  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cpplex.c (cpp_interpret_charconst): Sign-extend each
	character.  Don't ignore excess characters.  Treat
	multicharacter character constants as signed.
	(cpp_parse_escape): Clarify diagnostic.

2002-05-05  Jakub Jelinek  <jakub@redhat.com>

	* config/sparc/sparc.md (ashlsi3): If shift count is const1_rtx,
	use add instead of shift.
	(ashldi3_sp64): Likewise.
	(ashlsi3_const1, ashldi3_const1): Remove.
	* config/sparc/sparc.h (PREDICATE_CODES): Add const1_operand.
	* config/sparc/sparc.c (const1_operand): New.

2002-05-05  Jason Thorpe  <thorpej@wasabisystems.com>

	* config.gcc (alpha*-*-netbsd*): Don't use crtstuff.

2002-05-05  Jakub Jelinek  <jakub@redhat.com>

	PR target/6561
	* config/sparc/sparc.md (muldi3_v8plus): Handle %1 equal to %2.

2002-05-05  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.c (alpha_adjust_cost): Remove everything but
	memory latency adjustments.
	(alpha_variable_issue): Remove.
	(alpha_use_dfa_pipeline_interface): New.
	(alpha_multipass_dfa_lookahead): New.
	* config/alpha/alpha.md: Remove define_function_unit scheduling;
	include new dfa scheduling.
	(attr type): Add none.
	(blockage): Use it.
	* config/alpha/ev4.md: New.
	* config/alpha/ev5.md: New.
	* config/alpha/ev6.md: New.

2002-05-05  David S. Miller  <davem@redhat.com>

	* recog.c (store_data_bypass_p): Handle CLOBBER inside PARALLEL.

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

	* cse.c: Fix formatting.
	* emit-rtl.c: Likewise.

2002-05-05  Vladimir Makarov  <vmakarov@redhat.com>

	* genautomata.c (initiate_states): Add additional guard to
	initialize `units_array'.

2002-05-05  Vladimir Makarov  <vmakarov@redhat.com>

	* genautomata.c (form_the_same_automaton_unit_lists_from_regexp,
	process_unit_to_form_the_same_automaton_unit_lists,
	form_the_same_automaton_unit_lists
	check_unit_distributions_to_automata): New prototypes and
	functions.
	(check_automata): Rename it into `check_automata_insn_issues'.
	(unit_decl): New fields `the_same_automaton_unit' and
	`the_same_automaton_message_reported_p'.
	(unit_decl_t): New typedef.
	(the_same_automaton_lists): New gloval variable.
	(unit_regexp, unit_set_el, units_array, units_cmp,
	output_get_cpu_unit_code_func): Use the typedef.
	(evaluate_max_reserv_cycles): Increment
	`description->max_insn_reserv_cycles'.
	(initiate_states): Don't increment `max_cycles_num'.
	(transform_insn_regexps): Move code around transformation of
	regexps from `generate'.
	(generate): Remove call of `transform_insn_regexps'.
	(expand_automata): Call `transform_insn_regexps' and
	`check_unit_distributions_to_automata'.  Check errors before
	`generate'.

	* config/sparc/ultra3.md (us3_a0, us3_a1): Move the units into
	automaton `ultrasparc3_1'.

2002-05-05  Neil Booth  <neil@daikokuya.demon.co.uk>

	* c-common.c (c_common_init): Set up CPP arithmetic.
	* cppinit.c (cpp_create_reader): Default CPP arithmetic to
	something reasonable for the host.
	(sanity_checks): Add checks.
	(cpp_read_main_file): Call sanity_checks() from here...
	(cpp_post_options): ... not here.
	* cpplex.c (cpp_interpret_charconst): Get max_chars right.
	* cpplib.h (struct cpp_options): New member int_precision.

2002-05-05  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* doc/install.texi (powerpc-*-linux-gnu*): Update build requirements.

2002-05-04  David S. Miller  <davem@redhat.com>

	* config/sparc/linux.h, config/sparc/linux64.h
	(HANDLE_PRAGMA_PACK_PUSH_POP): Don't define twice.

	* config/sparc/sparc.c (sparc_rtx_costs): Describe costs of
	more RTX codes.
	* config/sparc/sparc.h (RTX_COSTS_CASES): List those new codes.

	* recog.c (store_data_bypass_p): Handle out_insn being a PARALLEL
	of SETs.

2002-05-05  Tim Josling  <tej@melbpc.org.au>

	* treelang; New directory for new sample language treelang.

2002-05-04  Neil Booth  <neil@daikokuya.demon.co.uk>

	* Makefile.in (c-lex.o): Update.
	* c-lex.c: Include target.h.
	(cb_register_builtins): New.
	(init_c_lex): Set builtins callback.
	* c-lex.h (cpp_define, cpp_assert): New prototypes.
	* cppinit.c (init_builtins): Use callback, including for
	GXX_WEAK.
	* cpplib.h (struct cpp_callbacks): New member.
	* target-def.h (TARGET_REGISTER_CPP_BUILTINS): New.
	(TARGET_INITIALIZER): Update.
	* target.h (struct gcc_target): New hook.
	* tree.c (default_register_cpp_builtins): New.
	* tree.h (default_register_cpp_builtins): New.
doc:
	* tm.texi (TARGET_REGISTER_CPP_BUILTINS): Document.

2002-05-04  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cppinit.c (MAX_WCHAR_TYPE_SIZE): Move to cpplib.h
	(cpp_post_options): Move sanity checks to...
	(sanity_checks): New.
	* cpplex.c (maybe_read_ucs): Fix prototype.
	(parse_string, cpp_parse_escape): Cast for %c format specifier.
	* cpplib.h (cppchar_t): Use unsigned long or unsigned long long
	if necessary.

2002-05-04  Bernd Schmidt  <bernds@redhat.com>

	* config/i386/i386.c (bdesc_2arg): Add a couple of missing SSE2
	builtins.  Use V2DI patterns instead of TI for logical operations.
	(ix86_init_mmx_sse_builtins): Add a couple of missing SSE2 builtins.
	Correct definitions of psadbw, pmovmskb128, movntdq, cvtdq2ps.
	(ix86_expand_builtins): Change the pattern used for movntdq.
	* config/i386/i386.md (sse2_andv2di3, sse2_iorv2di3, sse2_xorv2di3,
	sse2_nandv2di3): New patterns.
	(sse2_anddf3, sse2_nanddf3, sse2_iordf3, sse2_xordf3): Correct modes
	on operands.
	(sse2_movntv2di): Renamed from sse2_movntti and modes adjusted.
	(cvtdq2pd): Correct mode on operand 1.
	(sse2_umulsidi3): Describe without unspec.
	(sse2_psadbw, mmx_psadbw): Describe with unspec; use more appropriate
	machine modes.
	(lshrv2di3): Renamed from sse2_lshrv2di3 and removed unspec.
	(ashlv2di3): Likewise, from sse2_ashlv2di3.
	(ashrv8hi3, ashrv4si3, lshrv8hi3, lshrv4si3, lshrv2di3, ashlv8hi3,
	ashlv4si3, ashlv2di3): Use SImode for shift count.
	(ashrv8hi3_ti, ashrv4si3_ti, lshrv8hi3_ti, lshrv4si3_ti, lshrv2di3_ti,
	lshrv4si3_ti, lshrv2di3_ti, ashlv8hi3_ti, ashlv4si3_ti, ashlv2di3_ti):
	New patterns.
	* config/i386/xmmintrin.h (__v2df, __v2di, __v4si, __v8hi, __v16qi):
	New typedefs.
	(__m128i, __m128d): New macros.
	(_mm_add_pd, _mm_add_sd, _mm_sub_pd, _mm_sub_sd, _mm_mul_pd,
	_mm_mul_sd, _mm_div_pd, _mm_div_sd, _mm_sqrt_pd, _mm_sqrt_sd,
	_mm_min_pd, _mm_min_sd, _mm_max_sd, _mm_max_pd, _mm_and_pd,
	_mm_andnot_pd, _mm_xor_pd, _mm_or_pd, _mm_cmpeq_pd, _mm_cmplt_pd,
	_mm_cmple_pd, _mm_cmpgt_pd, _mm_cmpge_pd, _mm_cmpneq_pd,
	_mm_cmpnlt_pd, _mm_cmpnle_pd, _mm_cmpngt_pd, _mm_cmpnge_pd,
	_mm_cmpord_pd, _mm_cmpunord_pd, _mm_cmpeq_sd, _mm_cmplt_sd,
	_mm_cmple_sd, _mm_cmpgt_sd, _mm_cmpge_sd, _mm_cmpneq_sd,
	_mm_cmpnlt_sd, _mm_cmpnle_sd, _mm_cmpngt_sd, _mm_cmpnge_sd,
	_mm_cmpord_sd, _mm_cmpunord_sd, _mm_comieq_sd, _mm_comilt_sd,
	_mm_comile_sd, _mm_comigt_sd, _mm_comige_sd, _mm_comineq_sd,
	_mm_ucomieq_sd, _mm_ucomieq_sd, _mm_ucomilt_sd, _mm_ucomile_sd,
	_mm_ucomigt_sd, _mm_ucomige_sd, _mm_ucomineq_sd, _mm_cvtepi32_pd,
	_mm_cvtepi32_ps, _mm_cvtpd_epi32, _mm_cvtpd_pi32, _mm_cvtpd_ps,
	_mm_cvttpd_epi32, _mm_cvttpd_pi32, _mm_cvtpi32_pd, _mm_cvtps_epi32,
	_mm_cvttps_epi32, _mm_cvtps_pd, _mm_cvtsd_si32, _mm_cvttsd_si32,
	_mm_cvtsd_ss, _mm_cvtsi32_sd, _mm_cvtss_sd, _mm_unpackhi_pd,
	_mm_unpacklo_pd, _mm_loadh_pd, _mm_storeh_pd, _mm_storel_pd,
	_mm_movemask_pd, _mm_packs_epi16, _mm_packs_epi32, _mm_packus_epi16,
	_mm_unpackhi_epi8, _mm_unpackhi_epi16, _mm_unpackhi_epi32,
	_mm_unpacklo_epi8, _mm_unpacklo_epi16, _mm_unpacklo_epi32,
	_mm_add_epi8, _mm_add_epi16, _mm_add_epi32, _mm_add_epi64,
	_mm_adds_epi8, _mm_adds_epi16, _mm_adds_epu8, _mm_adds_epu16,
	_mm_sub_epi8, _mm_sub_epi16, _mm_sub_epi32, _mm_sub_epi64,
	_mm_subs_epi8, _mm_subs_epi16, _mm_subs_epu8, _mm_subs_epu16,
	_mm_madd_epi16, _mm_mulhi_epi16, _mm_mullo_epi16, _mm_mul_pu16,
	_mm_mul_epu16, _mm_sll_epi16, _mm_sll_epi32, _mm_sll_epi64,
	_mm_sra_epi16, _mm_sra_epi32, _mm_srl_epi16, _mm_srl_epi32,
	_mm_srl_epi64, _mm_slli_epi16, _mm_slli_epi32, _mm_slli_epi64,
	_mm_srai_epi16, _mm_srai_epi32, _mm_srli_epi16, _mm_srli_epi32,
	_mm_srli_epi64, _mm_and_si128, _mm_andnot_si128, _mm_or_si128,
	_mm_xor_si128, _mm_cmpeq_epi8, _mm_cmpeq_epi16, _mm_cmpeq_epi32,
	_mm_cmpgt_epi8, _mm_cmpgt_epi16, _mm_cmpgt_epi32, _mm_max_epi16,
	_mm_max_epu8, _mm_min_epi16, _mm_min_epu8, _mm_movemask_epi8,
	_mm_mulhi_epu16, _mm_maskmoveu_si128, _mm_avg_epu8, _mm_avg_epu16,
	_mm_sad_epu8, _mm_stream_si32, _mm_stream_si128, _mm_stream_pd,
	_mm_movpi64_epi64, _mm_clflush, _mm_lfence, _mm_mfence): New
	functions.
	(_mm_shufflehi_epi16, _mm_shufflelo_epi16, _mm_shuffle_epi32,
	_mm_extract_epi16, _mm_insert_epi16, _mm_shuffle_pd): New macros.

2002-05-04  Kazu Hirata  <kazu@cs.umass.edu>

	* dwarf2out.c: Fix formatting.
	* varasm.c: Likewise.

2002-05-04  David Edelsohn  <edelsohn@gnu.org>

	PR c/6543
	* config/rs6000/rs6000.md (sCC pattern and splitter): Remove
	clobber and use result as temporary value.

Sat May  4 13:20:54 CEST 2002  Jan Hubicka  <jh@suse.cz>

	* expr.c (force_operand): Use expand_simple_* to handle more
	cases.

2002-05-04  Neil Booth  <neil@daikokuya.demon.co.uk>

	* c-lex.c (lex_string): Let cpp_parse_escape handles truncation
	and sign-extension.
	(lex_charconst): Update for change in prototype of
	cpp_interpret_charconst.  Extend from cppchar_t to HOST_WIDE_INT
	appropriately.
	* cpphash.h (BITS_PER_CPPCHAR_T): New.
	* cppinit.c (cpp_create_reader): Initialize them for no
	change in semantics.
	(cpp_post_options): Add sanity checks.
	* cpplex.c (cpp_parse_escape): Handle precision, sign-extension
	and truncation issues.  Calculate in type cppchar_t.
	(MAX_CHAR_TYPE_SIZE, MAX_WCHAR_TYPE_SIZE): Remove.
	(cpp_interpret_charconst): Calculate in type cppchar_t.  Handle
	run-time dependent precision correctly.  Return whether the
	result is signed or not.
	* cpplib.c (dequote_string): Use cppchar_t; update.
	* cpplib.h (cppchar_signed_t): New.
	struct cpp_options): New precision members.
	(cpp_interpret_charconst, cpp_parse_escape): Update prototypes.
	* cppexp.c (eval_token): Update.

2002-05-03  David S. Miller  <davem@redhat.com>

	* config/sparc/sparc-protos.h (sparc_rtx_costs): New.
	* config/sparc/sparc.c (sparc_rtx_costs): New function
	implementing RTX_COSTS and CONST_COSTS.
	* config/sparc/sparc.h (CONST_COSTS): Delete.
	(RTX_COSTS_CASES): Define.
	(RTX_COSTS): Expand RTX_COSTS_CASES and use sparc_rtx_costs to do
	the work.

	* config/sparc/sparc.md (DFA schedulers): Split out...
	* config/sparc/cypress.md, config/sparc/hypersparc.md,
	config/sparc/sparclet.md, config/sparc/supersparc.md,
	config/sparc/ultra1_2.md, config/sparc/ultra3.md: ... into here.

	* config/sparc/sparc.c (LEAF_REGISTERS): Do not do ifdef
	checks on it, always defined for SPARC.

	* config/sparc/sparc.h (REG_ALLOC_ORDER, REG_LEAF_ALLOC_ORDER):
	Tweak, and add more detailed comments.

2002-05-03  Zack Weinberg  <zack@codesourcery.com>

	* Re-apply patch accidentally reverted with
	DFA scheduler merge: remove all rules and variables to slurp
	source files out of libiberty and rebuild them with HOST_CC.
	($(HOST_PREFIX_1)varray.o): New rule.
	(genattrtab rule): Word wrap.

2002-05-03  Jason Thorpe  <thorpej@wasabisystems.com>

	* config/i386/netbsd64.h (CPP_LP64_SPEC): Define.
	(CPP_SUBTARGET_SPEC): Define.
	(SUBTARGET_EXTRA_SPECS): Redefine, adding cpp_lp64 and
	cpp_subtarget specs.
	(CPP_SPEC): Redefine to include %(cpp_subtarget).

2002-05-03  David S. Miller  <davem@redhat.com>

	* target-defs.h (TARGET_SCHED_CYCLE_DISPLAY): Delete.
	* target.h (struct gcc_target): Delete cycle_display member.

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

2002-05-03  Richard Henderson  <rth@redhat.com>

	* real.c (etoasc): Strip most trailing zeros for clarity.
	* sched-vis.c: Include real.h.
	(print_value): Use REAL_VALUE_TO_DECIMAL as needed.
	* Makefile.in (sched-vis.o): Add real.h.

2002-05-03  David S. Miller  <davem@redhat.com>

	* haifa-sched.c (rank_for_schedule): Revert 2002-05-02 change,
	no longer needed.

2002-05-03  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/rs6000.c (altivec_expand_binop_builtin): Error out
	when we get an out of range literal.
	(altivec_expand_ternop_builtin): Same.
	(altivec_expand_unop_builtin): Same.
	(altivec_expand_builtin): Same, for dss.
	(altivec_expand_builtin): Use trees instead of rtl when
	determining literal argument validity.

2002-05-03  David S. Miller  <davem@redhat.com>

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

2002-05-03  Richard Henderson  <rth@redhat.com>

	* recog.c (store_data_bypass_p, if_test_bypass_p): New.
	* recog.h: Declare them.

	* config/sparc/sparc.c (ultrasparc_store_bypass_p): Remove.
	* config/sparc/sparc.md: Use store_data_bypass_p instead.
	* config/sparc/sparc-protos.h: Update.

2002-05-03  Jason Thorpe  <thorpej@wasabisystems.com>

	* config/sparc/netbsd-elf.c (CPP_SUBTARGET_SPEC64): Remove
	-D__arch64__.  Add -D_LP64.
	(CPP_ARCH32_SPEC): Redefine to match the non-bi-arch version
	from sparc.h.
	(CPP_ARCH64_SPEC): Likewise.
	(NO_BUILTIN_PTRDIFF_TYPE): Undef.
	(NO_BUILTIN_SIZE_TYPE): Undef.

2002-05-03  Vladimir Makarov  <vmakarov@redhat.com>

	* genautomata.c (min_issue_delay_pass_states): Change return type
	in the prototype.
	(min_issue_delay_pass_states): Change the algorithm.
	(min_issue_delay): Set up min_insn_issue_delay for the state.
	(output_min_issue_delay_table): Interchange the nested loops and
	and initiate min_insn_issue_delay for states.

Fri May  3 22:59:15 CEST 2002  Jan Hubicka  <jh@suse.cz>

	* cfgcleanup.c (try_optimize_cfg):  Call merge_block only when
	jump is simplejump.

Fri May  3 22:53:37 CEST 2002  Jan Hubicka  <jh@suse.cz>

	* i386.c  (expand_movstr, expand_clrstr): Fix inline-all-stringops
	sequence.

2002-05-03  Richard Henderson  <rth@redhat.com>

	PR opt/6534
	* ifcvt.c (noce_try_store_flag, noce_try_store_flag_constants,
	noce_try_store_flag_inc, noce_try_store_flag_mask, noce_try_cmove,
	noce_try_cmove_arith, noce_try_minmax, noce_try_abs): Insert new
	code before JUMP, not EARLIEST.

2002-05-03  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-format.c (check_format_info_main): Don't check for presence of
	parameter for * width until after operand number has been read,
	and only check for it if format parameters are available.
	Fixes PR c/6547.

2002-05-03  Jason Thorpe  <thorpej@wasabisystems.com>

	* config/alpha/netbsd.h (CPP_PREDEFINES): Add -D_LP64.
	(LINK_SPEC): Undef before defining.

2002-05-03  Jakub Jelinek  <jakub@redhat.com>

	PR preprocessor/6489
	* tradcpp.c (fixup_newlines): New.
	(main, finclude): Use it.

2002-05-03  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/elf64.h (UNIQUE_SECTION): Use mips_unique_section.
	* config/mips/mips.c (mips_unique_section): Strip encoding from
	decl name.

2002-05-03  Jakub Jelinek  <jakub@redhat.com>

	* config/i386/i386.c (ix86_expand_int_movcc): Truncate to proper
	mode.

2002-05-03  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* doc/install.texi (Installing): Mention GCC 3.1 buildstats.
	(Specific): Removed buildstats references.
	(Specific, hppa*-hp-hpux11): Adjust for GCC versions > 3.0.
	(Specific, sparc-sun-solaris2*): Update 64-bit hints for GCC 3.1.
	Accomodate Solaris versions beyond 8.
	(Specific, sparc-sun-solaris2.7): Update as path for GCC 3.1.
	(Specific, *-*-solaris2.8): Removed, obsolete.

2002-05-03  Jakub Jelinek  <jakub@redhat.com>

	PR target/6542
	* config/sparc/sparc.h (leaf_reg_remap): Remove const.
	(CONDITIONAL_REGISTER_USAGE): For TARGET_FLAT make
	fill leaf_reg_remap with identity.
	* config/sparc/sparc.c (leaf_reg_remap): Remove const.

2002-05-03  Kazu Hirata  <kazu@cs.umass.edu>

	* config/h8300/crti.asm: Remove trailing spaces.
	* config/h8300/h8300.c: Likewise.
	* config/h8300/lib1funcs.asm: Likewise.

2002-05-02  Jason Merrill  <jason@redhat.com>

	* defaults.h (BOOL_TYPE_SIZE): Move default here from cp/decl.c.
	* c-decl.c (c_init_decl_processing): Use it.
	* config/rs6000/darwin.h (BOOL_TYPE_SIZE): Define to INT_TYPE_SIZE.
	* config/i960/i960.h (BOOL_TYPE_SIZE): Don't define.
	* config/mcore/mcore.h (BOOL_TYPE_SIZE): Don't define.

2002-05-03  Kazu Hirata  <kazu@cs.umass.edu>

	* regrename.c: Fix formatting.
	* tree.c: Likewise.

Fri May  3 13:34:43 CEST 2002  Jan Hubicka  <jh@suse.cz>

	* i386.md (attribute memory): Handle compares properly.

Fri May  3 10:51:38 CEST 2002  Jan Hubicka  <jh@suse.cz>

	* i386.md (sse_clrsf, sse_clrsi): Set memory attribute
	to none.

2002-05-02  Kazu Hirata  <kazu@cs.umass.edu>

	* function.c: Fix formatting.

2002-05-02  Jan Hubicka  <jh@suse.cz>

	* haifa-sched.c (schedule_insn): Print table of instructions and
	reservations.
	(sched_block): Do not print ready list at verbosity level 1.
	* sched-vis.c (print_insn): Make global.
	* sched-ebb.c (ebb_print_insn): Rename from...
	(print_insn): ... this one.
	* sched-int.h (print_insn): Declare

2002-05-02  Richard Henderson  <rth@redhat.com>

	* haifa-sched.c (rank_for_schedule): Skip past last_scheduled_insn
	emitted by cycle_display.

2002-05-02  Loren J. Rittle  <ljrittle@acm.org>

	* doc/install.texi (*-*-freebsd*): Update to latest status.

2002-05-02  Jakub Jelinek  <jakub@redhat.com>

	PR target/6540
	* config.gcc (sparc*-*-solaris2*): Set float_format to i128.
	* config/float-sparc.h: Assume 128-bit long double if
	__LONG_DOUBLE_128__ is defined.

2002-05-02  Vladimir Makarov  <vmakarov@redhat.com>

	* genattrtab.c (write_function_unit_info): Add a dummy element
	when num_units == 0.

2002-05-02 Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>

	* predict.c: (propagate_freq, estimate_bb_frequencies): Use
	TYPE_MODE (double_type_node) instead of DFmode.

Thu May  2 19:50:04 CEST 2002  Jan Hubicka  <jh@suse.cz>

	* cfgrtl.c (try_redirect_by_replacing_jump): Do not kill computed
	jumps post reload.
	* toplev.c (rest_of_compilation): Revert Richard's patch.

2001-05-02  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* pa/x-ada (ADA_CFLAGS): Rename to X_ADA_CFLAGS.

2002-05-02  Catherine Moore  <clm@redhat.com>

	* config/v850/v850.h (TRAMPOLINE_TEMPLATE): Change r5 to r20.

2002-05-02  Kazu Hirata  <kazu@hxi.com>

	* combine.c: Fix comment typos.
	* expr.c: Likewise.
	* genautomata.c: Likewise.
	* stmt.c: Likewise.
	* tree.h: Likewise.

2002-05-02  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/install.texi: State GNAT version requirements.

2002-05-02  Nick Clifton  <nickc@cambridge.redhat.com>

	* config/fr30/fr30.h (GO_IF_LEGITIMATE_ADDRESS): Accept any form
	of the frame pointer or arg pointer register which strict register
	checking is not enabled.

2002-05-02  Aldy Hernandez  <aldyh@redhat.com>

	* gcc.dg/altivec-8.c: New.

	* config/rs6000/rs6000.c (rs6000_legitimate_address): Disallow
	PRE_INC and PRE_DEC for altivec modes.

2002-05-01  Bruce Korb  <bkorb@gnu.org>

	* fixinc/check.tpl(set-writable): make sure the function exists first
	* fixinc/inclhack.def(alpha_assert): fix test_text
	* fixinc/tests/base/assert.h: add in missing result

2002-05-01  Jeff Law  <law@redhat.com>

	* pa.h (EXTRA_CONSTRAINT): Don't accept PIC addresses for the
	'T' constraint.

2002-05-01  Joel Brobecker  <brobecker@gnat.com>

	* dbxout.c (dbxout_type): Emit size information for range types,
	as well, but only when using GDB extensions.

2002-05-01  Richard Henderson  <rth@redhat.com>

	* configure.in (HAVE_GAS_HIDDEN): Replace SPARC feature test with
	target-independent gnu binutils date test.

2002-05-01  Richard Henderson  <rth@redhat.com>

	* cfgcleanup.c (merge_blocks_move_successor_nojumps): Emit dump
	info before expunging the block.

2002-05-01  Jakub Jelinek  <jakub@redhat.com>

	* cppinit.c (cpp_handle_option) [-dM]: Don't set no_output here...
	(cpp_post_options): ...but here.  Disable -dD, -dN and -dI when
	-M -or -MM is in effect.

2002-05-01  Zack Weinberg  <zack@codesourcery.com>

	* config.gcc: Correct test of --enable-obsolete.  Obsolete all
	A29k configurations.
	* doc/install.texi: Update to match.

2002-05-01  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	PR bootstrap/6514
	* varasm.c (globalize_decl): Compare DECL_ASSEMBLER_NAME to check
	for duplicates. Always loop over whole list.

Wed May  1 10:32:37 2002  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* reload.c (find_reloads, case 'p'): Set BADOP to 0.

2002-05-01	Joel Sherrill <joel@OARcorp.com>

	* config/sparc/t-elf (sparc-rtems, sparc-elf): Build assembly
	support routines.

2002-05-01	Joel Sherrill <joel@OARcorp.com>

	* config/arm/rtems-elf.h: Add #undef TARGET_VERSION to prevent warning.

2002-05-01  David Edelsohn  <edelsohn@gnu.org>

	* rs6000.md (abssi2_nopower): Convert to define_insn_and_split.
	(nabs_nopower): Same.
	(floatdisf2): New pattern.
	(absdi2): Convert to define_insn_and_split.
	(nabsdi2): Same.
	(trunctfsf2): Same.
	(floatditf2): Same.
	(floatsitf2): Same.
	(fix_trunctfdi2): Same.
	(fix_trunctfsi2): Same.

2002-05-01  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/install.texi: Update Texinfo version requirement
	documentation.

2002-05-01  Jakub Jelinek  <jakub@redhat.com>

	PR target/6512, PR target/5628
	* config/sparc/sparc.md (movdf_insn_v9only_novis): Don't allow >= %f32
	when memory is not aligned.
	(movdf_insn_v9only_vis): Likewise.
	* config/sparc/sparc.h (SECONDARY_INPUT_RELOAD_CLASS): Request a FP_REGS
	temporary for EXTRA_FP_REGS DFmode load from unaligned memory.
	(SECONDARY_OUTPUT_RELOAD_CLASS): Similarly.

2002-05-01  Aldy Hernandez  <aldyh@redhat.com>

	* gcc.dg/altivec-7.c: New.

	* config/rs6000/altivec.h: Cleanup.

2002-04-30  Aldy Hernandez  <aldyh@redhat.com>

	* doc/invoke.texi (Option Summary): Add -mvrsave=.
	(RS/6000 and PowerPC Options): Document -mvrsave=.

	* config/rs6000/rs6000.c (rs6000_altivec_vrsave): New global.
	(rs6000_altivec_vrsave_string): Same.
	(rs6000_override_options): Call rs6000_parse_vrsave_option.
	(rs6000_parse_vrsave_option): New.
	(rs6000_stack_info): Only generate vrsave instructions when
	TARGET_ALTIVEC_VRSAVE.

	* config/rs6000/rs6000.h (TARGET_OPTIONS): Add -mvrsave= option.
	(rs6000_altivec_vrsave_string): Define extern.
	(rs6000_altivec_vrsave): Same.
	(TARGET_ALTIVEC_VRSAVE): New.

2002-04-30  Richard Henderson  <rth@redhat.com>

	PR opt/6516
	* toplev.c (rest_of_compilation): Don't run cross-jump before
	bb-reorder.

2002-04-30  Tom Rix  <trix@redhat.com>

	* regrename.c (build_def_use, copyprop_hardreg_forward_1): Sanity
	check which_alternative.

2002-04-30  Kazu Hirata  <kazu@hxi.com>

	* cpplex.c: Fix comment formatting.
	* function.c: Likewise.
	* integrate.c: Likewise.
	* regrename.c: Likewise.
	* sibcall.c: Likewise.
	* simplify-rtx.c: Likewise.
	* tree-inline.c: Likewise.

2002-04-30  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* config.gcc (hppa1.1-*-pro*, hppa1.1-*-osf*, hppa1.1-*-rtems*,
	hppa1.0-*-osf*, hppa1.1-*-bsd*, hppa1.1-*-hpux10*, hppa2*-*-hpux10*,
	hppa1.0-*-hpux10*, hppa*64*-*-hpux11*, hppa1.1-*-hpux11*,
	hppa2*-*-hpux11*, hppa1.0-*-hpux11*, hppa*-*-lites*): Define xmake_file.
	* pa/t-linux, pa/t-pa, pa/t-pa64, t-pro (T_ADAFLAGS): Delete.
	* pa/x-ada: New file.  Define ADA_CFLAGS.

2002-04-30  Hans-Peter Nilsson  <hp@bitrange.com>

	* config/mmix/mmix.h (MMIX_LAST_STACK_REGISTER_REGNUM): Renamed
	from MMIX_LAST_REGISTER_FILE_REGNUM.
	(NO_IMPLICIT_EXTERN_C): Remove cryptic obsolete comment.
	(struct machine_function): New member highest_saved_stack_register
	previously static variable in mmix.c.
	(MACHINE_DEPENDENT_REORG): Define.
	* config/mmix/mmix.c (highest_saved_stack_register): Deleted.
	(MMIX_OUTPUT_REGNO): New.
	(mmix_target_asm_function_prologue): Move calculation of last used
	saved-stack-register into...
	(mmix_machine_dependent_reorg): New function.  Update to also handle
	!TARGET_ABI_GNU.
	(mmix_print_operand): Apply MMIX_OUTPUT_REGNO when emitting
	register names, simplify somewhat by new variable regno.
	<case 'p'>: Remove fixed FIXME.  Always emit highest used saved
	register.
	(mmix_print_operand_address): Apply MMIX_OUTPUT_REGNO when
	emitting register names.
	(mmix_asm_output_reg_push, mmix_asm_output_reg_pop): Ditto.
	(mmix_dbx_register_number): Apply MMIX_OUTPUT_REGNO here too.
	Remove fixed FIXME.
	* config/mmix/mmix-protos.h (mmix_machine_dependent_reorg):
	Declare.

	* config/mmix/mmix.md ("divmoddi4"): Update head comment.

2002-04-30  Richard Henderson  <rth@redhat.com>

	* config/sparc/sparc.c (emit_soft_tfmode_libcall,
	emit_soft_tfmode_binop, emit_soft_tfmode_unop, emit_soft_tfmode_cvt,
	emit_hard_tfmode_operation, emit_tfmode_binop, emit_tfmode_unop,
	emit_tfmode_cvt): New.
	* config/sparc/sparc.md (extendsftf2, extenddftf2, trunctfsf2,
	trunctfdf2, floatsitf2, floatunssitf2, floatditf2, floatunsditf2,
	fix_trunctfsi2, fixuns_trunctfsi2, fix_trunctfdi2, fixuns_trunctfdi2,
	addtf3, subtf3, multf3, divtf3, sqrttf2): Use them.
	* config/sparc/sparc-protos.h: Update.

2002-04-30  Janis Johnson  <janis187@us.ibm.com>

	* install.texi (Final install): Add to the list of info to include
	in a report of a successful bootstrap, and add link to 3.1 list.

Tue Apr 30 19:15:36 CEST 2002  Jan Hubicka  <jh@suse.cz>

	* i386.md (type): Add new SSE/MMX subtypes, remove usused fop1.
	(mode): Add vector modes
	(i387): Kill attribute.
	(unit): New attribute.
	(length_immediate): Grok new types.
	(prefix_data16, prefix_rep, prefix_0f): Fix for SSE/MMX.
	(modrm): Use "unit".
	(memory): Handle MMX/SSE properly.
	(scheduling descriptions): Kill uses of fop1.
	(sse, mmx, fp patterns): Set type and mode properly.

Tue Apr 30 09:31:59 2002  Jeffrey A Law  (law@redhat.com)

	* pa.c (override_options): Default to PA8000 scheduling.
	* doc/invoke.texi (HP-PA options): Mention newly added 7300
	scheduling parameter.

	* pa.md (7100lc, 7200, 7300 scheduling): Slightly refine
	handling of double precision multiplies.

	* pa.md (7100lc, 7200, 7300 scheduling): Refine handling of
	fpdiv and fpsqrt instructions.
	(7200 & 7300 scheduling): Fix typo in handling of
	store-load and store-store penalties.

2002-04-30  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* doc/contrib.texi (Contributors): Use MIPS instead of Mips and
	mips.  Add two missing commas.

2002-04-30  Paolo Carlini  <pcarlini@unitus.it>

	* doc/contrib.texi (Contributors): Update Paolo Carlini's
	and Benjamin Kosnik's entries.

2002-04-29  David S. Miller  <davem@redhat.com>

	* config/sparc/sparc.h (BRANCH_COST, PREFETCH_BLOCK,
	SIMULTANEOUS_PREFETCHES): Tune for UltraSPARC-III.
	* config/sparc/sparc.md (call + jmp 32-bit peepholes): Likewise.
	* config/sparc/sparc.c (sparc_initialize_trampoline): Likewise.

2002-04-29  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* combine.c (find_split_point): Use gen_int_mode.

2002-04-29  Vladimir Makarov  <vmakarov@redhat.com>

	Merging code from dfa-branch:

	2002-04-24  Vladimir Makarov  <vmakarov@redhat.com>

	* genautomata.c (output_reserv_sets): Fix typo.

	2002-04-23  Vladimir Makarov  <vmakarov@redhat.com>

	* genautomata.c (output_reserv_sets): Remove
	next_cycle_output_flag.

	Thu Apr 18 08:57:06 2002  Jeffrey A Law  (law@redhat.com)

	* sched-rgn.c (init_ready_list): Make the DFA code handle
	USE/CLOBBER insns in the same way as the traditional
	scheduler.
	(new_ready): Similarly..

	2002-04-17  Vladimir Makarov  <vmakarov@redhat.com>

	* haifa-sched.c (schedule_block): Change the DFA state only after
	issuing insn.

	Wed Apr 17 15:38:36 2002  Jeffrey A Law  (law@redhat.com)

	* pa.c (hppa_use_dfa_pipeline_interface): New function.
	(TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE): Define.
	(override_options): Add PA7300 scheduling support.
	(pa_adjust_cost): Update various comments.  Properly
	handle anti and output dependencies when using the
	DFA scheduler.
	(pa_issue_rate): Add PA7300 scheduling support.
	(pa_can_combine_p): Call extract_insn before calling
	constrain_operands (taken from mainline tree).
	* pa.h (enum processor_type): Add PROCESSOR_PA7300.
	* pa.md (cpu attr): Add 7300.  Rewrite pipeline
	descriptions using DFA descriptions.  Add PA7300
	scheduling support.

	2002-03-30  David S. Miller  <davem@redhat.com>

	Add UltraSPARC-III DFA scheduling support.
	* config/sparc/sparc.md (define_attr type): Add fpcrmove.
	Update FP conditional move on register insn patterns to use it, as
	appropriate.
	(define_attr cpu): Add ultrasparc3.
	(define_attr us3load_type): New, update integer load patterns to
	set it, as appropriate.
	(define_automaton): Add ultrasparc3_0 and ultrasparc3_1.
	(rest): Add UltraSPARC3 scheduling description.
	* config/sparc/sparc.h (TARGET_CPU_ultrasparc3): New.
	(PROCESSOR_ULTRASPARC3): New.
	({ASM,CPP}_CPU64_DEFAULT_SPEC): Handle ultrasparc3.
	({ASM,CPP}_CPU_SPEC): Likewise.
	(REGISTER_MOVE_COST): Likewise.
	(RTX_COSTS): Likewise.
	* config/sparc/sparc.c (sparc_override_options,
	sparc_initialize_trampoline, sparc64_initialize_trampoline,
	sparc_use_dfa_pipeline_interface, sparc_use_sched_lookahead,
	sparc_issue_rate): Likewise.
	* config/sparc/sol2.h: Likewise.
	* config/sparc/sol2-sld-64.h: Likewise.
	* config/sparc/linux64.h: Likewise.

	2002-03-22  Vladimir Makarov  <vmakarov@redhat.com>

	* doc/md.texi: Add comments about usage the latency time for the
	different dependencies and about case when two or more conditions
	in different define_insn_reservations returns TRUE for an insn.

	* doc/md.texi: Add reference for automaton based pipeline
	description.

	2002-03-04  Vladimir Makarov  <vmakarov@redhat.com>

	* doc/passes.texi: Add missed information about genattrtab.

	2002-03-01  Vladimir Makarov  <vmakarov@redhat.com>

	* genautomata.c (output_automata_list_transition_code): Check
	automata_list on NULL.

	2002-02-28  Vladimir Makarov  <vmakarov@redhat.com>

	* genautomata.c (output_insn_code_cases,
	output_automata_list_min_issue_delay_code,
	output_automata_list_transition_code,
	output_automata_list_state_alts_code): Comment the functions.

	2002-02-22  Vladimir Makarov  <vmakarov@redhat.com>

	* genautomata.c (automata_list_el_t): New typedef.
	(get_free_automata_list_el,free_automata_list_el,
	free_automata_list, automata_list_hash, automata_list_eq_p,
	initiate_automata_lists, automata_list_start, automata_list_add,
	automata_list_finish, finish_automata_lists,
	output_insn_code_cases, output_automata_list_min_issue_delay_code,
	output_automata_list_transition_code,
	output_automata_list_state_alts_code, add_automaton_state,
	form_important_insn_automata_lists): New functions and prototypes.
	(insn_reserv_decl): Add members important_automata_list and
	processed_p.
	(ainsn): Add members important_p.
	(automata_list_el): New structure.
	(first_free_automata_list_el, current_automata_list,
	automata_list_table): New global variables.
	(create_ainsns): Initiate member important_p.
	(output_internal_min_issue_delay_func): Generate the switch and
	call output_insn_code_cases.
	(output_internal_trans_func, output_internal_state_alts_func):
	Ditto.
	(generate): Call initiate_automata_lists.
	(automaton_states): New global variable.
	(expand_automata): Call form_important_insn_automata_lists.
	(write_automata): Call finish_automata_lists.

	2002-02-21  Vladimir Makarov  <vmakarov@redhat.com>

	* genautomata.c (add_excls, add_presence_absence): Check that
	cpu units in the sets belong the same automaton.

	* rtl.def (EXCLUSION_SET, PRESENCE_SET, ABSENCE_SET): Add comment
	about that cpu units in the sets belong the same automaton.

	* doc/md.texi: Ditto.

	2001-12-20  Naveen Sharma  <naveens@noida.hcltech.com>
		    Nitin Gupta  <niting@noida.hcltech.com>

	* config/sh/sh.c (sh_use_dfa_interface): New function.

	(sh_issue_rate): New Function.
	TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE: define.
	TARGET_SCHED_ISSUE_RATE: define.

	* config/sh/sh.md: Add DFA based pipeline description for SH4.

	(define_attr insn_class): New attribute used for DFA
	 scheduling.
	(define_insn cmpgtsi_t): Set attribute insn_class mt_group.
	(cmpgesi_t,cmpgtusi_t,cmpgeusi_t,cmpeqsi_t,
	 cmpeqdi_t): Likewise.

	(add,addc1,addsi3,subc,subc1,*subsi3_internal,
	 negc,negsi2,ashldi3_k,lshrdi3_k,ashrdi3_k): Set insn_class
	 ex_group.
	(iorsi3,rotlsi3_1,rotlsi3_31,rotlsi3_16): Likewise.

	2001-10-03  Vladimir Makarov  <vmakarov@toke.toronto.redhat.com>

	* haifa-sched.c (queue_to_ready): Remove unnecessary condition for
	break.

	2001-10-03  Vladimir Makarov  <vmakarov@toke.toronto.redhat.com>

	* genautomata.c (DFA_INSN_CODES_LENGTH_VARIABLE_NAME): New macro.
	(output_dfa_insn_code_func): Expand dfa_insn_codes if it is
	necessary.
	(output_dfa_start_func): Initiate new variable insn_codes_length,
	(write_automata): Output definition of the new variable.

	2001-10-02  David S. Miller  <davem@redhat.com>

	* haifa-sched.c (advance_one_cycle): New function.
	(schedule_block): Use it.
	(queue_to_ready): Use it, and also make sure to advance the DFA
	state on all stall cycles, not just those where insn_queue links
	are found.

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

	* haifa-sched.c (max_issue): Remove last_p argument.  Only return
	nonzero if the highest-priority instruction could be scheduled.
	(choose_ready): Remove last argument from max_issue call.

	2001-09-28  David S. Miller  <davem@redhat.com>

	* config/sparc/sparc.c (sparc_use_sched_lookahead): Use 4 for
	ultrasparc and 3 for other multi-issue sparcs.

	2001-09-27  David S. Miller  <davem@redhat.com>

	* config/sparc/sparc.md (cycle_display): New pattern.
	* config/sparc/sparc.c (sparc_cycle_display): New.
	(TARGET_SCHED_CYCLE_DISPLAY): Set it.

	2001-09-25  David S. Miller  <davem@redhat.com>

	Convert all of SPARC scheduling to DFA
	* config/sparc/sparc.md: Kill all define_function_unit
	directives and replace with DFA equivalent.
	* config/sparc/sparc.c (ultrasparc_adjust_cost,
	mark_ultrasparc_pipeline_state, ultra_cmove_results_ready_p,
	ultra_fpmode_conflict_exists, ultra_find_type,
	ultra_build_types_avail, ultra_flush_pipeline,
	ultra_rescan_pipeline_state, ultrasparc_sched_reorder,
	ultrasparc_variable_issue, ultrasparc_sched_init,
	sparc_variable_issue, sparc_sched_reorder, ultra_code_from_mask,
	ultra_schedule_insn, ultra_code_names, ultra_pipe_hist,
	ultra_cur_hist, ultra_cycles_elapsed): Kill.
	(sparc_use_dfa_pipeline_interface, sparc_use_sched_lookahead,
	ultrasparc_store_bypass_p): New.
	* config/sparc/sparc-protos.h (ultrasparc_store_bypass_p):
	Declare.

	2001-09-24  David S. Miller  <davem@redhat.com>

	* haifa-sched.c (ready_remove): Fix thinko, we want to copy around
	ready->vec[foo] not ready[foo].

	2001-09-07  Vladimir Makarov  <vmakarov@redhat.com>

	* doc/md.texi: Correct examples for define_insn_reservations
	`mult' and `div'.

	2001-09-07  Vladimir Makarov  <vmakarov@redhat.com>

	* genautomata.c (create_automata): Print message about creation of
	each automaton.
	(generate): Remove printing meease about creation of
	automata.

	2001-09-05  David S. Miller  <davem@redhat.com>

	* config/sparc/linux.h: Set CPLUSPLUS_CPP_SPEC.
	* config/sparc/linux64.h: Likewise.

	2001-08-31  Vladimir Makarov  <vmakarov@redhat.com>

	* haifa-sched.c (insn_cost, schedule_insn, queue_to_ready,
	schedule_block, sched_init, sched_finish): Add missed calls of
	use_dfa_pipeline_interface.

	* sched-rgn.c (init_ready_list, new_ready, debug_dependencies):
	Ditto.

	* sched-vis.c (get_visual_tbl_length): Ditto.

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

	* genattr.c (main): Emit state_t even when not doing scheduling.

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

	* genautomata.c (expand_automata): Always create a description.

	2001-08-27  Vladimir Makarov  <vmakarov@touchme.toronto.redhat.com>

	* rtl.def (DEFINE_CPU_UNIT, DEFINE_QUERY_CPU_UNIT, EXCLUSION_SET,
	PRESENCE_SET, ABSENCE_SET, DEFINE_BYPASS, DEFINE_AUTOMATON,
	AUTOMATA_OPTION, DEFINE_RESERVATION, DEFINE_INSN_RESERVATION): New
	RTL constructions.

	* genattr.c (main): New variable num_insn_reservations.  Increase
	it if there is DEFINE_INSN_RESERVATION.  Output automaton based
	pipeline hazard recognizer interface.

	* genattrtab.h: New file.

	* genattrtab.c: Include genattrtab.h.
	(attr_printf, check_attr_test, make_internal_attr,
	make_numeric_value): Move protypes into genattrtab.h.  Define them
	as external.
	(num_dfa_decls): New global variable.
	(main): Process DEFINE_CPU_UNIT, DEFINE_QUERY_CPU_UNIT,
	DEFINE_BYPASS, EXCLUSION_SET, PRESENCE_SET, ABSENCE_SET,
	DEFINE_AUTOMATON, AUTOMATA_OPTION, DEFINE_RESERVATION,
	DEFINE_INSN_RESERVATION.  Call expand_automata and write_automata.

	* genautomata.c: New file.

	* rtl.h (LINK_COST_ZERO, LINK_COST_FREE): Remove them.

	* sched-int.h: (curr_state): Add the external definition for
	automaton pipeline interface.
	(haifa_insn_data): Add comments for members blockage and units.

	* target-def.h (TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE,
	TARGET_SCHED_INIT_DFA_PRE_CYCLE_INSN,
	TARGET_SCHED_DFA_PRE_CYCLE_INSN,
	TARGET_SCHED_INIT_DFA_POST_CYCLE_INSN,
	TARGET_SCHED_DFA_POST_CYCLE_INSN,
	TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD,
	TARGET_SCHED_INIT_DFA_BUBBLES, TARGET_SCHED_DFA_BUBBLE): New
	macros.
	(TARGET_SCHED): Use the new macros.

	* target.h (use_dfa_pipeline_interface, init_dfa_pre_cycle_insn,
	dfa_pre_cycle_insn, init_dfa_post_cycle_insn, dfa_post_cycle_insn,
	first_cycle_multipass_dfa_lookahead, init_dfa_bubbles,
	dfa_bubble): New members in gcc_target.sched.

	* haifa-sched.c (insert_schedule_bubbles_p): New variable.
	(MAX_INSN_QUEUE_INDEX): New macro for automaton interface.
	(insn_queue): Redefine it as pointer to array.
	(NEXT_Q, NEXT_Q_AFTER): Use MAX_INSN_QUEUE_INDEX instead of
	INSN_QUEUE_SIZE.
	(max_insn_queue_index_macro_value): New variable.
	(curr_state, dfa_state_size, ready_try): New varaibles for
	automaton interface.
	(ready_element, ready_remove, max_issue): New function prototypes
	for automaton interface.
	(choose_ready): New function prototype.
	(insn_unit, blockage_range): Add comments.
	(unit_last_insn, unit_tick, unit_n_insns): Define them for case
	FUNCTION_UNITS_SIZE == 0.
	(insn_issue_delay, actual_hazard_this_instance, schedule_unit,
	actual_hazard, potential_hazard): Add comments.
	(insn_cost): Use cost -1 as undefined value.  Remove
	LINK_COST_ZERO and LINK_COST_FREE.  Add new code for automaton
	pipeline interface.
	(ready_element, ready_remove): New functions for automaton
	interface.
	(schedule_insn): Add new code for automaton pipeline interface.
	(queue_to_ready): Add new code for automaton pipeline interface.
	Use MAX_INSN_QUEUE_INDEX instead of INSN_QUEUE_SIZE.
	(debug_ready_list): Print newline when the queue is empty.
	(max_issue): New function for automaton pipeline interface.
	(choose_ready): New function.
	(schedule_block): Add new code for automaton pipeline interface.
	Print ready list before scheduling each insn.
	(sched_init): Add new code for automaton pipeline interface.
	Initiate insn cost by -1.
	(sched_finish): Free the current automaton state and finalize
	automaton pipeline interface.

	* sched-rgn.c: Include target.h.
	(init_ready_list, new_ready, debug_dependencies): Add new code for
	automaton pipeline interface.

	* sched-vis.c: Include target.h.
	(get_visual_tbl_length): Add code for automaton interface.
	(target_units, print_block_visualization):  Add comments.

	* Makefile.in (GETRUNTIME, HASHTAB, HOST_GETRUNTIME, HOST_HASHTAB,
	USE_HOST_GETRUNTIME, USE_HOST_HASHTAB, HOST_VARRAY): New variables.
	(sched-rgn.o, sched-vis.o): Add new dependency file target.h.
	(getruntime.o, genautomata.o): New entries.
	(genattrtab.o): Add new dependency file genattrtab.h.
	(genattrtab): Add new dependencies.  Link it with `libm.a'.
	(getruntime.o, hashtab.o): New entries for canadian cross.

	* doc/md.texi: Description of automaton based model.

	* doc/tm.texi (TARGET_SCHED_ISSUE_RATE, TARGET_SCHED_ADJUST_COST):
	Add comments.
	(TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE,
	TARGET_SCHED_DFA_PRE_CYCLE_INSN,
	TARGET_SCHED_INIT_DFA_PRE_CYCLE_INSN,
	TARGET_SCHED_DFA_POST_CYCLE_INSN,
	TARGET_SCHED_INIT_DFA_POST_CYCLE_INSN,
	TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD,
	TARGET_SCHED_INIT_DFA_BUBBLES, TARGET_SCHED_DFA_BUBBLE): The new
	hook descriptions.
	(TRADITIONAL_PIPELINE_INTERFACE, DFA_PIPELINE_INTERFACE,
	MAX_DFA_ISSUE_RATE): New macro descriptions.

	* doc/contrib.texi: Add dfa based scheduler contribution.

	* doc/gcc.texi: Add more information about genattrtab.

Mon Apr 29 17:19:10 2002  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* reload1.c (eliminate_regs, case SUBREG): Fix typo in
	adjust_address_nv call.

2002-04-29  Janis Johnson  <janis187@us.ibm.com>

	* doc/install.texi (Testing): Provide additional information, and
	a stronger encouragement, for running the testsuites.

2002-04-29  DJ Delorie  <dj@redhat.com>

	* config/mips/mips.c (mips_parse_cpu): Warn if the CPU name is
	given in upper case.

2002-04-29  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* fixinc/inclhack.def (solaris_widec): Include <wchar.h> in
	Solaris 2 <widec.h> if missing.
	* fixinc/fixincl.x: Regenerate.
	* fixinc/tests/base/widec.h: New file.

2002-04-29  Nick Clifton  <nickc@cambridge.redhat.com>

	* toplev.c (f_options): Add "profile" switch so that
	-fno-profile can be used to disable -p.

2002-04-29  Bernd Schmidt  <bernds@redhat.com>

	* c-common.c (type_for_mode): Add support for V2DFmode, V2DImode,
	UV2DImode.
	* tree.c (build_common_tree_nodes_2): Likewise.
	* tree.h (enum tree_index): Likewise.
	(V2DF_type_node, V2DI_type_node, unsigned_V2DI_type_node): Define.

	* config/i386/i386.c (bdesc_comi, bdesc_2arg, bdesc_1arg): Add SSE2
	entries.
	(init_mmx_sse_builtins): Initialize SSE2 builtins.
	(ix86_expand_builtin): Add support for SSE2 builtins.
	* config/i386/i386.h (VALID_SSE2_REG_MODE): New macro.
	(VALID_SSE_REG_MODE): Use it.
	(VECTOR_MODE_SUPPORTED_P): Allow SSE2 modes here as well.
	(enum ix86_builtins): Add SSE2 builtins.
	* config/i386/i386.md (movv2df_internal, movv2df, movv8hi_internal,
	movv8hi, movv16qi_internal, movv16qi, pushv2df, pushv8hi, pushv16qi,
	addv2df3, vmaddv2df3, subv2df3, vmsubv2df3, mulv2df3, vmmulv2df3,
	divv2df3, vmdivv2df3, smaxv2df3, vmsmaxv2df3, sminv2df3, vmsminv2df3,
	sse2_anddf3, sse2_nanddf3, sse2_iordf3, sse2_xordf3, sqrtv2df2,
	vmsqrtv2df2, maskcmpv2df3, maskncmpv2df3, vmmaskcmpv2df3,
	vmmaskncmpv2df3, sse2_comi, sse2_ucomi, sse2_movmskpd, sse2_pmovmskb,
	sse2_maskmovdqu, sse2_movntv2df, sse2_movntti, sse2_movntsi, cvtdq2ps,
	cvtps2dq, cvttps2dq, cvtdq2pd, cvtpd2dq, cvttpd2dq, cvtpd2pi,
	cvttpd2pi, cvtpi2pd, cvtsd2si, cvttsd2si, cvtsi2sd, cvtsd2ss,
	cvtss2sd, cvtpd2ps, cvtps2pd, addv16qi3, addv8hi3, addv4si3, addv2di3,
	ssaddv16qi3, ssaddv8hi3, usaddv16qi3, usaddv8hi3, subv16qi3, subv8hi3,
	subv4si3, subv2di3, sssubv16qi3, sssubv8hi3, ussubv16qi3, ussubv8hi3,
	mulv8hi3, smulv8hi3_highpart, umulv8hi3_highpart, sse2_umulsidi3,
	sse2_umulv2siv2di3, sse2_pmaddwd, sse2_clrti, sse2_uavgv16qi3,
	sse2_uavgv8hi3, sse2_psadbw, sse2_pinsrw, sse2_pextrw, sse2_pshufd,
	sse2_pshuflw, sse2_pshufhw, eqv16qi3, eqv8hi3, eqv4si3, gtv16qi3,
	gtv8hi3, gtv4si3, umaxv16qi3, smaxv8hi3, uminv16qi3, sminv8hi3,
	ashrv8hi3, ashrv4si3, lshrv8hi3, lshrv4si3, sse2_lshrv2di3,
	ashlv8hi3, ashlv4si3, sse2_ashlv2di3, sse2_ashlti3, sse2_lshrti3,
	sse2_unpckhpd, sse2_unpcklpd, sse2_packsswb, sse2_packssdw,
	sse2_packuswb, sse2_punpckhbw, sse2_punpckhwd, sse2_punpckhdq,
	sse2_punpcklbw, sse2_punpcklwd, sse2_punpckldq, sse2_movapd,
	sse2_movupd, sse2_movdqa, sse2_movdqu, sse2_movdq2q, sse2_movq2dq,
	sse2_movhpd, sse2_movlpd, sse2_loadsd, sse2_movsd, sse2_storesd,
	sse2_shufpd, sse2_clflush, sse2_mfence, mfence_insn, sse2_lfence,
	lfence_insn): New patterns.
	(sse2_andti3, sse2_nandti3, sse2_iorti3, sse2_xorti3): Renamed from
	sse_andti3_sse2, sse_nandti3_sse2, sse_iorti3_sse2, sse_xorti3_sse2.

Mon Apr 29 17:03:24 CEST 2002  Jan Hubicka  <jh@suse.cz>

	* i386.md (sse_mov?fcc*): Revert patch of Mar 14th.

2002-04-29  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* doc/contrib.texi (Contributors): Add Paolo Carlini and
	Janis Johnson.
	Update Richard Henderson, Jakub Jelinek, and Mark Mitchell.
	Refer to Objective-C instead of	ObjC, SPARC instead of sparc,
	and CPU instead of cpu.

Mon Apr 29 13:36:41 CEST 2002  Jan Hubicka  <jh@suse.cz>

	* toplev.c (flag_if_conversion, flag_if_conversion2): New static
	variables.
	(lang_independent_options): Add -fif-conversion, -fif-conversion2
	(rest_of_compilation): Do if conversion only when asked for.
	(parse_options_and_default_flags): Set new variables to 1 for -O1
	* invoke.texi (-fif-conversion, -fif-conversion2): Document.

Mon Apr 29 13:02:50 CEST 2002  Jan Hubicka  <jh@suse.cz>

	* i386.c (dbx64_register_map): Fix typo.

Mon Apr 29 12:18:35 CEST 2002  Jan Hubicka  <jh@suse.cz>

	* predict.c (real_zero, real_one, real_almost_one, real_br_prob_base,
	real_one_half, real_bb_freq_max): New static variables.
	(debug_profile_bbauxs): Kill.
	(process_note_predictions): Kill unused variable.
	(block_info_def, edge_info_def): Use REAL_VALUE_TYPE instead of
	volatile double.
	(propagate_freq): Use REAL_ARITHMETICS.
	(estimate_bb_frequencies): Likevise; init new static variables.
	* Makefile.in (predict.o): Add dependency on real.h

2002-04-28  David S. Miller  <davem@redhat.com>

	PR target/6500
	* config/sparc/sparc.md (prefetch): Emit properly for 32-bit vs.
	64-bit TARGET_V9.  Do not use prefetch page, use prefetch for
	several {reads,writes} instead.
	* config/sparc/sparc.h (PREFETCH_BLOCK, SIMULTANEOUS_PREFETCHES):
	Define.

2002-04-27  David S. Miller  <davem@redhat.com>

	PR target/6494
	* config/sparc/linux64.h (MD_FALLBACK_FRAME_STATE_FOR): Be mindful
	of the stack bias.

	* config/sparc/linux.h, config/sparc/linux64.h: Don't bother
	including signal.h and sys/ucontext.h, not needed.

2002-04-29  Hans-Peter Nilsson  <hp@bitrange.com>

	* varasm.c (output_constant_def): Correct test for not calling
	ENCODE_SECTION_INFO for INTEGER_CST.

2002-04-29  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cppexp.c (lex): Move some code to _cpp_parse_expr, but
	keep most cases as function eval_token.
	(eval_token): New function.
	(_cpp_parse_expr): Read token here for improved diagnostics.
	Don't use op_as_text.  Detect bad ':' here.
	(reduce): Don't detect bad ':' here.
	(op_as_text): Remove.
	* cpphash.h (_cpp_test_assertion): Change prototype.
	* cpplib.c (_cpp_test_assertion): Change prototype.

2002-04-28  Richard Henderson  <rth@redhat.com>

	PR c/5154
	* ggc-common.c (ggc_mark_rtx_children_1): Rename from...
	(ggc_mark_rtx_children): New.

2002-04-28  Jakub Jelinek  <jakub@redhat.com>

	PR target/6496
	* config/sparc/sparc.md (call + jump 32-bit peepholes): Disable jump
	after call peepholes for UltraSPARC.
	(call + jump 64-bit peepholes): Remove.

2002-04-28  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	PR c/6497
	* config/rs6000/rs6000.md (sCC patterns): Remove clobber and use
	result as temporary value.

2002-04-28  Jakub Jelinek  <jakub@redhat.com>

	PR c++/6396
	* toplev.c (rest_of_compilation): Only run regrename and copy
	propagation if optimizing.

2002-04-28  Jakub Jelinek  <jakub@redhat.com>

	PR optimization/6475
	* reload1.c (alter_reg): Only call set_mem_expr if I is home pseudo
	register of REGNO_DECL (i).
	* Makefile.in (reload1.o): Add $(TREE_H).

2002-04-28  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cppexp.c (lex): Update to use state.skip_eval.
	(struct op): Remove prio and flags members.
	(FLAG_BITS, FLAG_MASK, PRIO_SHIFT, EXTRACT_PRIO, EXTRACT_FLAGS,
	SHORT_CIRCUIT, RIGHT_ASSOC, ..._PRIO, op_to_prio): Remove.
	(LEFT_ASSOC): New macro.
	(optab): New table of operator priorities and flags.
	(SHIFT): Update.
	(_cpp_parse_expr): Clean up logic.  Return bool.  Use a
	malloc-ed parser stack.
	(reduce): New; reduce the operator stack.
	(_cpp_expand_op_stack): Expand the operator stack as necessary.
	* cpphash.h (struct op): Predeclare.
	(struct cpp_reader): New members op_stack, op_limit.
	(struct lexer_state): New member skip_eval.
	(_cpp_parse_expr): Update.
	(_cpp_expand_op_stack): New.
	* cpplib.c (do_if): Update.
	* cppinit.c (cpp_create_reader): Create op stack.
	(cpp_destroy): And destroy it.
	* cpplib.h (CPP_LAST_CPP_OP): Correct.
	(TTYPE_TABLE): Correct.

2002-04-28  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	PR c/6343
	* c-decl.c (duplicate_decls): Call merge_weak.
	* c-pragma.c (apply_pragma_weak): Warn about misuse.
	* output.h (merge_weak): Prototype merge_weak.
	* varasm.c (merge_weak): New function.
	(declare_weak): Make sure we don't give an error on VAR_DECLs.
	Mark RTL with SYMBOL_REF_WEAK.

2002-04-27  Kurt Garloff <garloff@suse.de>

	* tree-inline.c (inlinable_function_p): Improve heuristics
	by using a smoother function to cut down allowable inlinable size.
	* param.def: Add parameters max-inline-insns-single,
	max-inline-slope, min-inline-insns that determine the exact
	shape of the above function.
	* param.h: Likewise.

2002-04-26  Richard Henderson  <rth@redhat.com>

	* c-parse.in (malloced_yyss, malloced_yyvs): New.
	(yyoverflow): Re-add.  Set them.
	(free_parser_stacks): New.
	* c-common.h: Declare it.
	* c-lex.c (c_common_parse_file): Call it.

2002-04-26  Richard Henderson  <rth@redhat.com>

	* cfgrtl.c (tidy_fallthru_edge): Don't use next_real_insn
	for fallthru search.

2002-04-26  Eric Christopher  <echristo@redhat.com>

	PR optimization/3700
	* config/mips/mips.c (mips_issue_rate): Define.  New function.
	(TARGET_SCHED_ISSUE_RATE): Use.

2002-04-25  David S. Miller  <davem@redhat.com>

	PR target/6422
	* reorg.c (optimize_skip): Do not allow exception causing
	instructions to be considered for delay slots.
	(fill_simply_delay_slots, fill_slots_from_thread): Likewise.
	(relax_delay_slots): Do not try to consider exception causing
	instructions as redundant.

2002-04-26  Richard Henderson  <rth@redhat.com>

	PR c/5225
	* c-typeck.c (build_unary_op) [CONVERT_EXPR]: Invoke non_lvalue.

2002-04-26  Mark Mitchell  <mark@codesourcery.com>

	PR bootstrap/6445
	* config/i386/i386.md (untyped_call): Return the value in a float
	register if TARGET_FLOAT_RETURNS_IN_80387, not just if
	TARGET_80387.

2002-04-26  Alexandre Oliva  <aoliva@redhat.com>

	* tree.c (tree_int_cst_lt): Compare constants whose types differ
	in unsigned-ness correctly.

2002-04-26  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* pa.h (FUNCTION_OK_FOR_SIBCALL): Don't do sibcalls when using the
	portable runtime model.

2002-04-26  Richard Henderson  <rth@redhat.com>

	* c-parse.in (yyoverflow): Revert.

2002-04-26  David Edelsohn  <edelsohn@gnu.org>
	    Richard Henderson  <rth@redhat.com>

	* config/rs6000/rs6000.md (sCC pattern): Remove clobber and use
	result as temporary value.

2002-04-26  Richard Henderson  <rth@redhat.com>

	PR c/3581
	* c-common.c (fix_string_type): Split out of ...
	(combine_strings): ... here.  Take a varray, not a tree list.
	(c_expand_builtin_printf): Use fix_string_type.
	* c-common.h: Update decls.
	* c-parse.in (string): Remove.  Update all uses to use STRING
	instead, and not call combine_strings.
	(yylexstring): New.
	(_yylex): Use it.
	* c-typeck.c (simple_asm_stmt): Don't call combine_strings.
	(build_asm_stmt): Likewise.
	* objc/objc-act.c (my_build_string): Use fix_string_type.
	(build_objc_string_object): Build varray for combine_strings.

2002-04-26  Bo Thorsen  <bo@suse.co.uk>

	* config/i386/linux64.h (MD_FALLBACK_FRAME_STATE_FOR): Define for
	x86-64.

2002-04-26  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cppexp.c (CPP_UMINUS, CPP_UPLUS): New.
	(HAVE_NO_R_OPERAND): Remove.
	(HAVE_VALUE): Remove.
	(op_to_prio): Update.
	(UNARY): Don't alter flags.
	(_cpp_parse_expr): want_value used to indicate whether
	a number or unary operator is expected next.  Distinguish
	unary and binary +/-.
	(op_as_text): Update for unary operators.

2002-04-25  Richard Henderson  <rth@redhat.com>

	PR c/2161
	* c-parse.in (yyoverflow): New.

2002-04-25  Richard Henderson  <rth@redhat.com>

	PR c/2098
	* c-common.c (shorten_compare): Simplfy conditions leading to
	the generation of a warning.

2002-04-25  Richard Henderson  <rth@redhat.com>

	PR c/2035
	* expmed.c (extract_bit_field): Fall through to generic code rather
	than aborting on subreg special case.

2002-04-25  David S. Miller  <davem@redhat.com>

	* config/sparc/sparc.h (FUNCTION_OK_FOR_SIBCALL): Add back check
	for DECL being NULL.

2002-04-25  Steve Christiansen  <smc@us.ibm.com>

	* doc/md.texi (Machine Constraints): Add IA-64 constraints.

2002-04-25  Eric Botcazou  <ebotcazou@multimania.com>

	* c-decl.c (grokdeclarator): Remove outdated ??? note
	on invalid declaration of flexible array members.

2002-04-25  Richard Henderson  <rth@redhat.com>

	* doc/invoke.texi: Document -gdwarf{,-2} vs debug level.

2002-04-25  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.c (s390_emit_epilogue): Always restore registers
	needed by the compiler, even if they are used as global regs.

2002-04-25  Matt Hiller  <hiller@redhat.com>

	* mips.c (mips_class_max_nregs, mips_register_move_cost): New
	functions.
	* mips.h (CLASS_MAX_NREGS, REGISTER_MOVE_COST): Redefine as calls
	of the corresponding functions.
	* mips-protos.h (mips_class_max_nregs, mips_register_move_cost):
	New prototypes.

2002-04-25  Matt Hiller  <hiller@redhat.com>

	* config/mips/mips.h (mips_sw_reg_names): Declare as extern.

	(ALL_COP_ADDITIONAL_REGISTER_NAMES): New macro.
	(FIRST_PSEUDO_REGISTER): Redefine considering coprocessor
	registers, adjust comment accordingly.
	(FIXED_REGISTERS, CALL_USED_REGISTERS, CALL_REALLY_USED_REGISTERS,
	reg_class, REG_CLASS_NAMES, REG_CLASS_CONTENTS, REGISTER_NAMES,
	DEBUG_REGISTER_NAMES, REG_ALLOC_ORDER): Adjust to include entries
	for coprocessor registers.
	(ADDITIONAL_REGISTER_NAMES): Include
	ALL_COP_ADDITIONAL_REGISTER_NAMES.

	(COP0_REG_FIRST, COP0_REG_LAST, COP0_REG_NUM,
	COP2_REG_FIRST, COP2_REG_LAST, COP2_REG_NUM,
	COP3_REG_FIRST, COP3_REG_LAST, COP3_REG_NUM,
	COP0_REG_P, COP2_REG_P, COP3_REG_P, ALL_COP_REG_P,
	COPNUM_AS_CHAR_FROM_REGNUM, COP_REG_CLASS_P): New macros.

	(mips_char_to_class): Adjust comment to include coprocessor
	constraint letters.

	* config/mips/mips.c (coprocessor_operand, coprocessor2_operand):
	New functions.
	(mips_reg_names, mips_regno_to_class): Include coprocessor
	information.
	(mips_sw_reg_names): Ditto, make non-static.
	(mips_move_1word): Handle moves to and from coprocessor registers.
	(mips_move_2words): Handle moves to and from coprocessor
	registers.
	(mips_class_max_nregs, mips_register_move_cost): Handle
	coprocessor register classes.
	(override_options): Initialize mips_char_to_class and
	mips_hard_regno_mode_ok properly for coprocessor registers.

	* config/mips/mips.md (movdi_internal, movdi_internal2,
	movsi_internal1, movsi_internal2): Add constraint-sets for
	coprocessor registers.
	* testsuite/gcc.c-torture/mipscop-1.c: New testcase.
	* testsuite/gcc.c-torture/mipscop-1.x: Disable above if target
	isn't mips.
	* testsuite/gcc.c-torture/mipscop-2.c: New testcase.
	* testsuite/gcc.c-torture/mipscop-2.x: Disable above if target
	isn't mips.
	* testsuite/gcc.c-torture/mipscop-3.c: New testcase.
	* testsuite/gcc.c-torture/mipscop-3.x: Disable above if target
	isn't mips.
	* testsuite/gcc.c-torture/mipscop-4.c: New testcase.
	* testsuite/gcc.c-torture/mipscop-4.x: Disable above if target
	isn't mips.

	* doc/tm.texi: Document feature.

2002-04-25  Neil Booth  <neil@daikokuya.demon.co.uk>

	* integrate.c (function_attribute_inlinable_p): Simplify.
	Check the table pointer is not NULL.

2002-04-25  Steven Bosscher  <S.Bosscher@student.tudelft.nl>

	* doc/c-tree.texi: Fix typo in introduction.

2002-04-25  Neil Booth  <neil@daikokuya.demon.co.uk>

	* c-common.h (c_common_parse_file): Update.
	* c-lang.c (LANG_HOOKS_SET_YYDEBUG): Remove.
	* c-lex.c (YYDEBUG): Get from c-lex.h.
	(c_common_parse_file): Update.
	* c-lex.h (YYDEBUG, yydebug): New.
	* c-parse.in (YYDEBUG): Get from c-lex.h.
	(c_set_yydebug): Remove.
	* c-tree.h (c_set_yydebug): Remove.
	* langhooks-def.h (lhd_do_nothing_i): New.
	(lhd_set_yydebug, LANG_HOOKS_SET_YYDEBUG): Remove.
	(LANG_HOOKS_PARSE_FILE, LANG_HOOKS_INITIALIZER): Update.
	* langhooks.c  (lhd_do_nothing_i): New.
	(lhd_set_yydebug): Remove.
	* langhooks.h (struct lang_hooks): Update.
	* toplev.c (set_yydebug): New.
	(compile_file): Update call to parse_file hook.
	(decode_d_option): Update.
objc:
	* objc-lang.c (LANG_HOOKS_SET_YYDEBUG): Remove.

Wed Apr 24 23:45:37 2002  J"orn Rennecke <joern.rennecke@superh.com>

	* loop.c (load_mems): Don't change the interface of called functions.

	* calls.c (expand_call): Take current_function_pretend_args_size
	into account when setting argblock for sibcalls.

2002-04-24  Matt Hiller  <hiller@redhat.com>

	* cpplex.c: Remove conditional #undef of MULTIBYTE_CHARS.
	* c-lex.c: Ditto.

	* cpplex.c (skip_line_comment): Process comment one multibyte
	character at a time rather than one char at a time, if
	appropriate.
	(parse_string): Process string one multibyte character at a time
	rather than one char at a time, if appropriate.
	* c-lex.c (lex_string): Lex and copy multibyte strings
	appropriately.
	* cpplib.h (cppchar_t): Change to unsigned.

2002-04-24  Richard Henderson  <rth@redhat.com>

	PR c/3467
	* c-decl.c (grokdeclarator): Don't pedwarn variable sized arrays
	for c99.

Wed Apr 24 21:51:54 2002  J"orn Rennecke <joern.rennecke@superh.com>

	* sh.c (sh_va_arg): If argument was passed by reference,
	dereference the pointer.

	* sh.h (PIC_OFFSET_TABLE_REGNUM): Conditionalize on flag_pic.

	* sh.md (divsi3_i4_media): Use match_operand for input values
	rather than hard registers.
	(divsi3 - TARGET_SHMEDIA_FPU case): Don't ferry values
	unnecessarily through hard registers.  Keep copies of pseudo
	registers outside of the libcall sequence.

	* sh.md (casesi_shift_media): Add modes.

	* sh.h (RETURN_IN_MEMORY): Return variable size BLKmode
	values in memory.

2002-04-24  Neil Booth  <neil@daikokuya.demon.co.uk>

	* attribs.c (c_common_attribute_table): Move table and handlers
	to c-common.c.
	(format_attribute_table, lang_attribute_table,
	lang_attribute_common): Remove.
	(init_attributes): Replace NULL pointers with pointers to the
	empty table.
	(handle_packed_attribute, handle_nocommon_attribute,
	handle_common_attribute, handle_noreturn_attribute,
	handle_noinline_attribute, handle_always_inline_attribute,
	handle_used_attribute, handle_unused_attribute,
	handle_const_attribute, handle_transparent_union_attribute,
	handle_constructor_attribute, handle_destructor_attribute,
	handle_mode_attribute, handle_section_attribute,
	handle_aligned_attribute, handle_weak_attribute,
	handle_alias_attribute, handle_visibility_attribute,
	handle_no_instrument_function_attribute, handle_malloc_attribute,
	handle_no_limit_stack_attribute, handle_pure_attribute,
	handle_deprecated_attribute, handle_vector_size_attribute,
	vector_size_helper): Move to c-common.c.
	* c-common.c (c_common_attribute_table,
	handle_packed_attribute, handle_nocommon_attribute,
	handle_common_attribute, handle_noreturn_attribute,
	handle_noinline_attribute, handle_always_inline_attribute,
	handle_used_attribute, handle_unused_attribute,
	handle_const_attribute, handle_transparent_union_attribute,
	handle_constructor_attribute, handle_destructor_attribute,
	handle_mode_attribute, handle_section_attribute,
	handle_aligned_attribute, handle_weak_attribute,
	handle_alias_attribute, handle_visibility_attribute,
	handle_no_instrument_function_attribute, handle_malloc_attribute,
	handle_no_limit_stack_attribute, handle_pure_attribute,
	handle_deprecated_attribute, handle_vector_size_attribute,
	vector_size_helper): Move from attribs.c.
	* c-common.h (c_common_attribute_table,
	c_common_format_attribute_table): New.
	* c-lang.c (LANG_HOOKS_COMMON_ATTRIBUTE_TABLE,
	LANG_HOOKS_FORMAT_ATTRIBUTE_TABLE): Redefine.
	* langhooks-def.h (LANG_HOOKS_FORMAT_ATTRIBUTE_TABLE,
	LANG_HOOKS_COMMON_ATTRIBUTE_TABLE, LANG_HOOKS_ATTRIBUTE_TABLE): New.
	(LANG_HOOKS_INITIALIZER): Update.
	* langhooks.h (struct lang_hooks): 3 new attribute hooks.
	* target-def.h (TARGET_ATTRIBUTE_TABLE): Default to NULL.
	* target.h: Update comment.
	* tree.c (default_target_attribute_table): Remove.
	* tree.h (default_target_attribute_table, format_attribute_table,
	lang_attribute_table, lang_attribute_common): Remove.
objc:
	* objc-lang.c (LANG_HOOKS_COMMON_ATTRIBUTE_TABLE,
	LANG_HOOKS_FORMAT_ATTRIBUTE_TABLE): Redefine.

2002-04-24  Jason Merrill  <jason@redhat.com>

	* dwarf2.h (enum dwarf_attribute): Add DW_AT_GNU_vector.
	* dwarf2out.c (dwarf_attr_name): Support it.
	(gen_array_type_die): Emit it.
	(lookup_type_die): No special handling for VECTOR_TYPE.
	(gen_type_die): Hand VECTOR_TYPE off to gen_array_type_die.

2002-04-24  Richard Henderson  <rth@redhat.com>

	* config/mips/mips.md (movdi_usd): Renumber.

2002-04-24  David S. Miller  <davem@redhat.com>

	PR target/6420
	* config/sparc/sparc.h (FUNCTION_OK_FOR_SIBCALL): Return false if
	32-bit SPARC and current_function_returns_struct is true.

Wed Apr 24 13:48:25 CEST 2002  Jan Hubicka  <jh@suse.cz>

	* loop.c (canonicalize_condition): Use gen_int_mode.

2002-04-24  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/altivec.h: Cleanup file.  Add non individual
	variants.
	(vec_vaddubm): New.
	(vec_vadduhm): New.
	(vec_vadduwm): New.
	(vec_vaddfp): New.
	(vec_vaddcuw): New.
	(vec_vaddubs): New.
	(vec_vaddsbs): New.
	(vec_vadduhs): New.
	(vec_vadduws): New.
	(vec_vaddsws): New.
	(vec_vand): New.
	(vec_vandc): New.
	(vec_vavgub): New.
	(vec_vavgsb): New.
	(vec_vavguh): New.
	(vec_vavgsh): New.
	(vec_vavguw): New.
	(vec_vavgsw): New.
	(vec_vrfip): New.
	(vec_vcmpbfp): New.
	(vec_vcmpequb): New.
	(vec_vcmpequh): New.
	(vec_vcmpequw): New.
	(vec_vcmpeqfp): New.
	(vec_vcmpgefp): New.
	(vec_vcmpgtub): New.
	(vec_vcmpgtsb): New.
	(vec_vcmpgtuh): New.
	(vec_vcmpgtsh): New.
	(vec_vcmpgtuw): New.
	(vec_vcmpgtsw): New.
	(vec_vcmpgtfp): New.
	(vec_vcmpgefp): New.
	(vec_vcfux): New.
	(vec_vcfsx): New.
	(vec_vctsxs): New.
	(vec_vctuxs): New.
	(vec_vexptefp): New.
	(vec_vrfim): New.
	(vec_lvx): New.
	(vec_lvebx): New.
	(vec_lvehx): New.
	(vec_lde): Add vector float variant.
	(vec_lvewx): New.
	(vec_lvxl): New.
	(vec_vlogefp): New.
	(vec_vmaddfp): New.
	(vec_vmhaddshs): New.
	(vec_vmaxub): New.
	(vec_vmaxsb): New.
	(vec_vmaxuh): New.
	(vec_vmaxsh): New.
	(vec_vmaxuw): New.
	(vec_vmaxsw): New.
	(vec_vmaxsw): New.
	(vec_vmaxfp): New.
	(vec_vmrghb): New.
	(vec_vmrghh): New.
	(vec_vmrghw): New.
	(vec_vmrglb): New.
	(vec_vmrglh): New.
	(vec_vmrglw): New.
	(vec_vminub): New.
	(vec_vminsb): New.
	(vec_vminuh): New.
	(vec_vminsh): New.
	(vec_vminuw): New.
	(vec_vminsw): New.
	(vec_vminfp): New.
	(vec_vmladduhm): New.
	(vec_vmhraddshs): New.
	(vec_msumubm): New.
	(vec_vmsummbm): New.
	(vec_vmsumuhm): New.
	(vec_vmsumshm): New.
	(vec_vmsumuhs): New.
	(vec_vmsumshs): New.
	(vec_vmuleub): New.
	(vec_vmulesb): New.
	(vec_vmuleuh): New.
	(vec_vmulesh): New.
	(vec_vmuloub): New.
	(vec_mulosb): New.
	(vec_vmulouh): New.
	(vec_vmulosh): New.
	(vec_vnmsubfp): New.
	(vec_vnor): New.
	(vec_vor): New.
	(vec_vpkuhum): New.
	(vec_vpkuwum): New.
	(vec_vpkpx): New.
	(vec_vpkuhus): New.
	(vec_vpkshss): New.
	(vec_vpkuwus): New.
	(vec_vpkswss): New.
	(vec_vpkshus): New.
	(vec_vpkswus): New.
	(vec_vperm): New.
	(vec_vrefp): New.
	(vec_vrlb): New.
	(vec_vrlh): New.
	(vec_vrlw): New.
	(vec_vrfin): New.
	(vec_vrsqrtefp): New.
	(vec_vsel): New.
	(vec_vslb): New.
	(vec_vslh): New.
	(vec_vslw): New.
	(vec_vsldoi): New.
	(vec_vsl): New.
	(vec_vslo): New.
	(vec_vspltb): New.
	(vec_vsplth): New.
	(vec_vspltw): New.
	(vec_vspltisb): New.
	(vec_vspltish): New.
	(vec_vspltisw): New.
	(vec_vsrb): New.
	(vec_vsrh): New.
	(vec_vsrw): New.
	(vec_vsrab): New.
	(vec_vsrah): New.
	(vec_vsraw): New.
	(vec_vsr): New.
	(vec_vsro): New.
	(vec_stvx): New.
	(vec_stvebx): New.
	(vec_stvehx): New.
	(vec_stvewx): New.
	(vec_stvxl): New.
	(vec_vsububm): New.
	(vec_vsubuhm): New.
	(vec_vsubuwm): New.
	(vec_vsubfp): New.
	(vec_vsubcuw): New.
	(vec_vsububs): New.
	(vec_vsubsbs): New.
	(vec_vsubuhs): New.
	(vec_vsubshs): New.
	(vec_vsubuws): New.
	(vec_vsubsws): New.
	(vec_vsum4ubs): New.
	(vec_vsum4sbs): New.
	(vec_vsum4shs): New.
	(vec_vsum2sws): New.
	(vec_vsumsws): New.
	(vec_vrfiz): New.
	(vec_vupkhsb): New.
	(vec_vupkhpx): New.
	(vec_vupkhsh): New.
	(vec_vupklsb): New.
	(vec_vupklpx): New.
	(vec_vupklsh): New.
	(vec_vxor): New.

2002-04-23  Eric Botcazou  <ebotcazou@multimania.com>

	PR c/5430
	* fold-const.c (split_tree): Add MINUS_LITP parameter; separate
	added literals from substracted literals.
	(associate_trees): Don't convert MINUS_EXPR into PLUS_EXPR.
	(fold) [associate]: Preserve MINUS_EXPR if needed.

2002-04-23  Zack Weinberg  <zack@codesourcery.com>

	* doc/install.texi: Clarify which versions of alpha*-dec-osf*
	are obsoleted.

2002-04-23  Tom Tromey  <tromey@redhat.com>

	* gcc.c: Added --resource.  For PR java/6314.

2002-04-23  David O'Brien  <obrien@FreeBSD.org>

	* cp/g++spec.c: Use profiled libstdc++ and libm with -p/-pg.
	* config/freebsd.h (MATH_LIBRARY_PROFILE): Use the _p verions of
	these libraries.

2002-04-23  David O'Brien  <obrien@FreeBSD.org>

	* config/freebsd.h(OBJECT_FORMAT_ELF): Define.

Tue Apr 23 14:24:25 CEST 2002  Jan Hubicka  <jh@suse.cz>

	* i386.c (ix86_output_addr_diff_elt): Avoid x86_64 binutils bug
	workaround.
	(ix86_expand_int_movcc): Avoid x86_64 compilation chrash.
	(ix86_expand_clrstr): Fix typo.
	* loop.c (gen_load_of_final_value): New.
	(loop_givs_rescan, strength_reduce, check_dbra_loop):
	Use it.

2002-04-23  Roger Sayle  <roger@eyesopen.com>

	* builtins.c (builtin_memset_gen_str): New function.
	(expand_builtin_memset): Optimize the case of constant length, but
	unknown value.

2002-04-23  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/altivec.h (vec_step): Remove extraneous
	parentheses.
	(vec_ctu): Cast return.

2002-04-23  Alan Modra  <amodra@bigpond.net.au>

	PR target/6413
	* function.h: (struct function): Add profile_label_no field.
	(current_function_profile_label_no): Define.
	* function.c: (profile_label_no): New static var.
	(expand_function_start): Increment it, and copy to
	current_function_profile_label_no.
	* output.h (profile_label_no): Delete.
	* final.c (profile_label_no): Delete.
	(profile_function): Use current_function_profile_label_no.
	(final_end_function): Don't increment profile_label_no here.
	* config/i386/i386.c (ix86_osf_output_function_prologue): Replace
	profile_label_no with current_function_profile_label_no.
	* config/pa/pa.c (current_function_number): Delete.
	(pa_output_function_prologue): Don't output profile label here.
	(hppa_profile_hook): Use label_no param rather than
	current_function_number.
	(FUNC_BEGIN_PROLOG_LABEL): Move to ..
	* config/pa/pa.h: .. here.
	(FUNCTION_PROFILER): Output profile label here.

2002-04-22  Eric Christopher  <echristo@redhat.com>

	* config/mips/mips.h (ASM_OUTPUT_ALIGNED_DECL_COMMON): Revert
	patch of 2002-04-09 due to binutils issues.
	(FUNCTION_ARG_REGNO_P): Ensure even numbered float register.

2002-04-22  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/rs6000.md ("*movv4si_internal"): Change 'm'
	constraint to 'o' for m=r and r=m alternatives.
	("*movv8hi_internal1"): Same.
	("*movv16qi_internal1"): Same.
	("*movv4sf_internal1"): Same.

2002-04-22  Janis Johnson  <janis187@us.ibm.com>

	* rtl.h (RTX_FLAG): New macro.
	* emit-rtl.c (copy_most_rtx): Use macros to access rtx flags.
	* final.c (alter_subreg): Use macro to access rtx flag.
	* integrate.c (copy_rtx_and_substitute): Use new access macro.
	* print-rtl.c (print_rtx): Use new access macro.

	* cse.c (insert): Check rtx code before accessing flag.

	* genattrtab.c (ATTR_IND_SIMPLIFIED_P, ATTR_CURR_SIMPLIFIED_P,
	ATTR_PERMANENT_P, ATTR_EQ_ATTR_P): New.
	(attr_hash_add_string, attr_rtx_1, attr_copy_rtx, check_attr_test,
	convert_const_symbol_ref, make_canonical, make_alternative_compare,
	evaluate_eq_attr, attr_rtx_cost, simplify_test_exp_in_temp,
	simplify_test_exp, optimize_attrs, simplify_by_exploding,
	find_and_mark_used_attributes, unmark_used_attributes,
	add_values_to_cover, simplify_with_current_value,
	simplify_with_current_value_aux, clear_struct_flag, walk_attr_value,
	copy_rtx_unchanging, main): Use new access macros.

2002-04-22  Tom Rix  <trix@redhat.com>

	* expmed.c (init_expmed): Generate shifted constant once.

2002-04-22  Zack Weinberg  <zack@codesourcery.com>

	* c-lex.c (lex_charconst): Call convert to get constant in
	proper type; don't just smash the type field.
	Fixes PR c/6300.

	* config.gcc: Add list of obsolete configurations.  Disallow
	building these without --enable-obsolete.
	* doc/install.texi: Document --enable-obsolete and obsoletion
	policy.  Mention obsoletion of individual targets in
	appropriate places.

2002-04-22  Richard Henderson  <rth@redhat.com>

	* config/sparc/sol2-bi.h (ASM_DEBUG_SPEC): New.

2002-04-22  Mark Mitchell  <mark@codesourcery.com>

	PR f/6138.
	* function.c (fixup_memory_subreg): Add promoted_mode parameter.
	(walk_fixup_memory_subreg): Likewise.
	(fixup_var_refs_insn): Adjust accordingly.
	(fixup_var_refs_1): Likewise.

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

	* config/s390/linux.h: (LIBPATH_SPEC, LIBPATH_ARCH31_SPEC,
	LIBPATH_ARCH64_SPEC): Define.
	(EXTRA_SPECS): Add libpath, libpath_arch31, libpath_arch64.
	(STARTFILE_SPEC, ENDFILE_SPEC): Define; use libpath.
	(LINK_ARCH31_SPEC): Add libpath_arch31 to search path.
	(LINK_ARCH64_SPEC): Add libpath_arch64 to search path.

2002-04-22	Joel Sherrill <joel@OARcorp.com>

	* gthr-rtems.h: Correct prototypes to remove warnings.

2002-04-22  Richard Henderson  <rth@redhat.com>

	PR c/6344
	* alias.c (canon_true_dependence): Special case (mem:blk (scratch)).

	* gcse.c (free_insn_expr_list_list): New.
	(clear_modify_mem_tables): Use it.  Fix bit set usage.
	(canon_list_insert): Use EXPR_LISTs for expressions.
	(record_last_mem_set_info): Factor BLOCK_NUM (insn).

2002-04-22  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cppfiles.c (_cpp_pop_file_buffer): Return void.  Move
	file change and include code to _cpp_pop_buffer.
	* cpphash.h (struct pending_option): Predeclare.
	(struct cpp_reader): New member next_include_file.
	(_cpp_pop_file_buffer): Update.
	(_cpp_push_next_buffer): Update, rename.
	* cppinit.c (cpp_destroy): Free include chain and pending here.
	(cpp_finish_options): Simplify.
	(_cpp_push_next_buffer): Rename and clean up.
	* cpplib.c (cpp_pop_buffer): Move code from _cpp_pop_file_buffer.
	Clarify.
	* cppmacro.c (cpp_scan_nooutput): Set return_at_eof here.

2002-04-22  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/altivec.h (vec_xor): Add variant for both args
	being vector signed int.
	(vec_andc): Same.
	(vec_xor): Add variant for both args being vector signed char.
	Remove redundant variant.
	(vec_andc): Same.

2002-04-21  David S. Miller  <davem@redhat.com>

	* config/sparc/sparc.md (set then compare DI mode peephole2): Fix
	compare mode in output RTL.

2002-04-22  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.c (rs6000_override_options): Correct
	style and formatting of previous patch.

2002-04-22  Alan Modra  <amodra@bigpond.net.au>

	* config/rs6000/rs6000.c (rs6000_override_options): Always clear
	flag_pic for ABI_AIX.

2002-04-21  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cppexp.c (struct op, parse_number): Replace U_CHAR with uchar.
	* cppfiles.c (read_include_file): Similarly.
	* cpphash.h (DSC, U_CHAR, ustrcmp, ustrncmp, ustrlen,
	uxstrdup ustrchr, ufputs): Similarly.
	* cppinit.c (TRIGRAPH_MAP, cpp_destroy): Similarly.
	* cpplex.c (parse_slow, unescaped_terminator_p, save_comment,
	cpp_ideq, parse_identifier, parse_number): Similarly.
	* cpplib.c (struct directive, dequote_string, D, run_directive,
	cpp_push_buffer): Similarly.
	* cppmacro.c (new_string_token, builtin_macro, cpp_quote_string,
	_cpp_create_definition, check_trad_stringification,
	cpp_macro_definition): Similarly.

2002-04-21  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cppmacro.c (funlike_invocation_p): Don't step back
	over CPP_EOF.

2002-04-21  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.c (output_profile_hook): Do not increment
	labelno.

2002-04-20  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/invoke.texi: Remove Chill references.
	* doc/gcc.texi: Update last modified date.

2002-04-20  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/lib1funcs.asm (___mulsi3): Remove unnecessary
	push and pop.  Replace add.l with add.w.

2002-04-20  Toshiyasu Morita  <toshiyasu.morita@hsa.hitachi.com>

	* config/h8300/lib1funcs.asm (___mulsi3): Use hardware
	multiply instructions for H8/300H case.

2002-04-20  Toshiyasu Morita  <toshiyasu.morita@hsa.hitachi.com>

	* config/h8300/lib1funcs.asm (___cmpsi2, ___ucmpsi2):
	Bum three instructions from each routine.

2002-04-20  Neil Booth  <neil@daikokuya.demon.co.uk>

	* Makefile.in: Update.
	* decl.c (push_c_function_context, pop_c_function_context,
	mark_c_function_context): Rename for consistency.
	* c-objc-common.c (c_objc_common_init): Langhooks set elsewhere.
	* c-tree.h (push_c_function_context, pop_c_function_context,
	mark_c_function_context): Rename for consistency.
	* c-lang.c (LANG_HOOKS_FUNCTION_ENTER_NESTED,
	LANG_HOOKS_FUNCTION_LEAVE_NESTED, LANG_HOOKS_FUNCTION_MARK): Redefine.
	* function.c (init_lang_status, save_lang_status,
	restore_lang_status, mark_lang_status, free_lang_status):
	Move to langhooks.h.
	(push_function_context_to, pop_function_context_from,
	free_after_parsing, prepare_function_start, ggc_mark_struct_function):
	Update.
	* function.h (init_lang_status, save_lang_status,
	restore_lang_status, mark_lang_status, free_lang_status):
	Move to langhooks.h.
	* langhooks-def.h (LANG_HOOKS_FUNCTION_INIT,
	LANG_HOOKS_FUNCTION_FREE, LANG_HOOKS_FUNCTION_ENTER_NESTED,
	LANG_HOOKS_FUNCTION_LEAVE_NESTED, LANG_HOOKS_FUNCTION_MARK,
	LANG_HOOKS_FUNCTION_INITIALIZER): New.
	(LANG_HOOKS_INITIALIZER): Update.
	(lhd_do_nothing_f): New.
	* langhooks.h (struct lang_hooks_for_functions): New.
	(struct lang_hooks): New hooks.
	* langhooks.c (lhd_do_nothing_f): New.
objc:
	* objc-lang.c (LANG_HOOKS_FUNCTION_ENTER_NESTED,
	LANG_HOOKS_FUNCTION_LEAVE_NESTED, LANG_HOOKS_FUNCTION_MARK): Redefine.

2002-04-19  David S. Miller  <davem@redhat.com>

	* config/sparc/linux.h (MD_FALLBACK_FRAME_STATE_FOR): Define.
	* config/sparc/linux64.h (MD_FALLBACK_FRAME_STATE_FOR): Likewise.

2002-04-19  Jakub Jelinek  <jakub@redhat.com>

	PR optimization/3756
	* config/i386/i386.c (ix86_expand_int_movcc): Optimize
	x = ((int) y < 0) ? cst1 : cst2.

2002-04-19  Jakub Jelinek  <jakub@redhat.com>

	PR c/6358
	* function.c: Reapply patch for c/6358.
	(expand_function_end): Copy decl_rtl's mode, not
	current_function_return_rtx mode.

2002-04-19  Joel Sherrill  <joel@OARcorp.com>

	* config/rtems.h (STARTFILE_SPEC, ENDFILE_SPEC): Fix for non-ELF
	targets.

2002-04-19  Tom Tromey  <tromey@redhat.com>

	* doc/install.texi (Specific): Update status of Solaris 2.8.
	For PR libgcj/6158.

2002-04-19  Andreas Schwab  <schwab@suse.de>

	* real.c: Allow sizeof (REAL_VALUE_TYPE) > 2*NE.
	(PUT_REAL): Restore old definition.

2002-04-19  Dan Nicolaescu  <dann@godzilla.ics.uci.edu>
	    Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* doc/install.texi (Specific, sparc-sun-solaris2*): Mention that
	binutils 2.11.2 and higher generate smaller binaries than Sun's
	native tools.

2002-04-19  Mark Mitchell  <mark@codesourcery.com>

	PR c++/6352
	* toplev.c (rest_of_compilation): Do not defer functions for which
	TREE_SYMBOL_REFERENCED has already been set.

Fri Apr 19 15:53:03 CEST 2002  Jan Hubicka  <jh@suse.cz>

	* i386.md (movsi_1, movhi_1): Force reload to use more flexible
	alternative.

2002-04-19  Neil Booth  <neil@daikokuya.demon.co.uk>

	* builtins.c: Include langhooks.h.
	(lang_type_promotes_to): Remove.
	(expand_builtin_va_arg): Use new hook.
	* c-common.c (c_common_nodes_and_builtins): Don't set hook.
	(simple_type_promotes_to): Move to c-typeck.c.
	* c-common.h (simple_type_promotes_to): Remove.
	* c-decl.c (duplicate_decls, grokdeclarator): Update.
	* c-format.c: Include langhooks.h.
	(check_format_types): Update.
	* c-tree.h (c_type_promotes_to): New.
	* c-typeck.c (c_type_promotes_to): Move from c-common.c.
	(type_lists_compatible_p): Update.
	* langhooks-def.h (lhd_type_promotes_to): New.
	(LANG_HOOKS_TYPE_PROMOTES_TO): New.
	(LANG_HOOKS_FOR_TYPES_INITIALIZER): Update.
	* langhooks.c (lhd_type_promotes_to): New.
	* langhooks.h (struct lang_hooks_for_types): New hook.
	* tree.h (lang_type_promotes_to): Remove.
objc:
	* objc-lang.c (LANG_HOOKS_TYPE_PROMOTES_TO): Redefine.

2002-04-18  Richard Henderson  <rth@redhat.com>

	* function.c: Revert patch for c/6358.

2002-04-18  Richard Henderson  <rth@redhat.com>

	* ifcvt.c (find_cond_trap): Handle cases with no proper THEN or JOIN
	blocks.  Handle multiple references to the TRAP block.  Handle
	non-adjacent THEN and OTHER blocks.

2002-04-18  Richard Henderson  <rth@redhat.com>

	* config/ia64/ia64.c (ia64_function_arg_pass_by_reference): Don't
	crash with no type for by-mode libcalls.

	* config/ia64/ia64.md (conditional_trap): Fix predicate polarity.

2002-04-18  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/lib2funcs.S (__xtensa_libgcc_window_spill,
	__xtensa_nonlocal_goto): Use a syscall instructions to flush
	the register windows.

2002-04-18  Zack Weinberg  <zack@codesourcery.com>

	* real.h: Define REAL_VALUE_TYPE_SIZE as 96 or 160, as
	appropriate.  Document need for extended precision even when
	MAX_LONG_DOUBLE_TYPE_SIZE is smaller.  Define REAL_WIDTH here,
	based on REAL_VALUE_TYPE_SIZE.  Use REAL_WIDTH to size
	REAL_VALUE_TYPE.  Define CONST_DOUBLE_FORMAT here.  Use #error
	instead of relying on later syntax error when REAL_WIDTH > 5.
	* real.c: Define NE based only on whether or not we have a
	full 128-bit extended type (not INTEL_EXTENDED_IEEE_FORMAT).
	Require sizeof(REAL_VALUE_TYPE) == 2*NE.  Unconditionally
	define GET_REAL and PUT_REAL as simple memcpy operations; no
	need to byteswap or round.
	Use #error instead of #ifdef-ing out the entire file, for
	prompt error detection.

	* rtl.c, gengenrtl.c: No need to calculate CONST_DOUBLE_FORMAT here.

2002-04-18  David S. Miller  <davem@redhat.com>

	* config/sparc/sparc.h (BRANCH_COST): Define.

	* fold-const.c (BRANCH_COST): Don't provide default here, expr.h
	does it.

2002-04-18  Hans-Peter Nilsson  <hp@bitrange.com>

	* flow.c (update_life_info): Ignore return value of cleanup_cfg.
	Mask out PROP_SCAN_DEAD_CODE | PROP_KILL_DEAD_CODE in
	propagate_block calls after relaxation loop using new variable
	stabilized_prop_flags.

2002-04-18  Richard Henderson  <rth@redhat.com>

	* config/ia64/ia64.c (ia64_function_arg_pass_by_reference): New.
	(ia64_va_arg): Expect variable sized types by reference.
	* config/ia64/ia64-protos.h: Update.
	* config/ia64/ia64.h (FUNCTION_ARG_PASS_BY_REFERENCE): Use
	ia64_function_arg_pass_by_reference.

2002-04-18  Richard Henderson  <rth@redhat.com>

	* ifcvt.c: Include except.h.
	(block_has_only_trap): Break out from find_cond_trap.
	(find_cond_trap): Use it.  Always delete the trap block.
	(merge_if_block): Allow then block null.  Be less simplistic about
	what insns can end a block.
	* Makefile.in (ifcvt.o): Depend on except.h.

	* config/ia64/ia64.md (trap, conditional_trap): New.

2002-04-18  Jakub Jelinek  <jakub@redhat.com>

	PR c/6358
	* function.c (assign_parms): Assign hard current_function_return_rtx
	register here...
	(expand_function_end): ...not here.

2002-04-18  Neil Booth  <neil@daikokuya.demon.co.uk>

	* c-lang.c (LANG_HOOKS_INCOMPLETE_TYPE_ERROR): Redefine.
	* c-tree.h (c_incomplete_type_error): New.
	* c-typeck.c (require_complete_type, build_component_ref): Update.
	(incomplete_type_error): Rename.
	* langhooks-def.h (lhd_incomplete_type_error): New.
	(LANG_HOOKS_INCOMPLETE_TYPE_ERROR): New.
	(LANG_HOOKS_FOR_TYPES_INITIALIZER): Update.
	* langhooks.c (lhd_incomplete_type_error): New.
	* langhooks.h (struct lang_hooks_for_types): New hook.
	* tree.c (size_in_bytes): Use new hook.
	* tree.h (incomplete_type_error): Remove.
objc:
	* objc-lang.c (LANG_HOOKS_INCOMPLETE_TYPE_ERROR): Redefine.

2002-04-18  Zack Weinberg  <zack@codesourcery.com>

	* config/arc/arc.md: Remove #if HOST_FLOAT_FORMAT !=
	TARGET_FLOAT_FORMAT blocks.

2002-04-18  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* doc/install.texi (Downloading the source): Do not mention Chill
	any longer, but mention Ada.
	(Configuration): Do not mention Chill any longer.

2002-04-18  Hans-Peter Nilsson  <hp@axis.com>

	* config/cris/cris.h (TARGET_VERSION): Remove local version number.

Thu Apr 18 17:14:08 CEST 2002  Jan Hubicka  <jh@suse.cz>

	* i386.h (SSE_FLOAT_MODE_P): Fix bogus conflict resolution
	in last patch.

2002-04-18  Jakub Jelinek  <jakub@redhat.com>

	* fold-const.c (fold): Use (*lang_hooks.types.unsigned_type)
	instead of unsigned_type.

Thu Apr 18 15:49:12 CEST 2002  Jan Hubicka  <jh@suse.cz>

	* i386.h (SSE_FLOAT_MODE_P): Kill bogus TARGET_SSE_MATH check.
	* i386.md (sse_mov?fcc*): Swap operands for cases they will be swapped
	later.

2002-04-18  Bernd Schmidt  <bernds@redhat.com>

	* attribs.c (vector_type_node_list): New static variable.
	(handle_vector_size_attribute): Use it to avoid generating a
	new type node each time we are called.

	* combine.c (subst): Avoid trying to make a vector mode subreg of
	an integer constant.
	(gen_lowpart_for_combine): Likewise.

2002-04-18  Roger Sayle  <roger@eyesopen.com>
	    Jakub Jelinek  <jakub@redhat.com>

	* fold-const.c (fold) [NOP_EXPR]: Convert (T)(x&c) into ((T)x&(T)c)
	for integer constant c (if x has unsigned type or sign bit is not
	set in c).  This folds the zero/sign extension into the bit-wise and
	operation.

2002-04-18  Jakub Jelinek  <jakub@redhat.com>

	PR middle-end/6205
	* config/i386/i386.md (movsf_1): Use pxor only if TARGET_SSE2,
	otherwise xorps.

2002-04-17  NIIBE Yutaka  <gniibe@m17n.org>

	* config/sh/elf.h: Undefine ASM_OUTPUT_CASE_LABEL.

2002-04-17  Nick Clifton  <nickc@cambridge.redhat.com>

	* gcc.c (read_specs): Detect and fail if an attempt is made to
	rename a spec string to an already existing string.

2002-04-17  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.c (legitimize_pic_address): Do not generate
	illegal address constant without CONST.

2002-04-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* sparc/linux64.h (CC1_SPEC): Error for -m32 and -m64.
	* sparc/netbsd-elf.h (CC1_SPEC32, CC1_SPEC64): Likewise.

2002-04-17  Ulrich Weigand  <uweigand@de.ibm.com>

	PR optimization/6305
	* config/s390/s390.c (s390_expand_plus_operand): Use find_replacement
	to make sure previous reloads are taken into account.  Generate
	better code if one operand is an in-range immediate constant.

2002-04-16  Andrew Haley  <aph@cambridge.redhat.com>

	* doc/install.texi (Building): libgcj requires GNU make.

2002-04-17  Jakub Jelinek  <jakub@redhat.com>

	PR bootstrap/6315
	* config/sparc/sparc.md (movtf reg<-reg split): Allow spliting
	even if hard quad and register is not floating.
	(movtf reg<-mem split): Disallow splitting if hard quad and
	register is floating.
	(movtf mem<-reg split): Likewise.
	* config/sparc/sparc.c (fp_register_operand): New predicate.
	* config/sparc/sparc.h (PREDICATE_CODES): Add fp_register_operand.

2002-04-17  Zack Weinberg  <zack@codesourcery.com>

	* Makefile.in (PROTO_OBJS): Add cppdefault.o.
	(protoize.o): Take $(PREPROCESSOR_DEFINES) off command line.
	(unprotoize.o): Ditto.  Build from protoize.c.  Define
	UNPROTOIZE on command line.
	* protoize.c: Include cppdefault.h.  Delete include_defaults.
	(in_system_include_dir): Use cpp_include_defaults (defined in
	cppdefault.o).
	* unprotoize.c: Delete file.

2002-04-17  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/altivec.h (vec_ld): Add array variants.
	(vec_lde): Same.
	(vec_ldl): Same.

2002-04-17  Alan Matsuoka  <alanm@redhat.com>
	    Aldy Hernandez <aldyh@redhat.com>

	* config/rs6000/altivec.h: Define __ALTIVEC__.
	(bool): New.
	(__pixel): New.
	(pixel): New.
	(vec_cfux): New.
	(vec_vmaddfp): New.
	(vec_vsldoi): New.
	Add parentheses to all macro arguments.

2002-04-16  Richard Henderson  <rth@redhat.com>

	PR c++/6320
	* except.c (remove_eh_handler): Insert inner regions at beginning
	of sibling chain.  Refactor expressions.

2002-04-16  Richard Henderson  <rth@redhat.com>

	* config/sparc/sol2-bi.h (AS_SPARC64_FLAG): New.
	* config/sparc/sol2-gas-bi.h: New file.
	* config.gcc (sparc*-solaris): Add it as needed.
	* configure.in (AS_SPARC64_FLAG): Remove check.
	* config.in, configure: Regenerate.

	* config/sparc/sol2-bi.h (CC1_SPEC): Error for -m32 and -m64.

2002-04-16  Richard Henderson  <rth@redhat.com>

	* config/mips/mips.c (override_options): Don't override N32 for
	a 64-bit ISA.

	PR 6202
	* config/mips/mips.md (can_delay): Split out of existing define_delays.
	(HILO_delay): Set can_delay false.

2002-04-16  Dale Johannesen <dalej@apple.com>

	* config/rs6000/rs6000.c (rs6000_output_function_prologue): Compute
	instruction addresses.
	(rs6000_output_function_epilogue): Likewise.

2002-04-16  Paolo Carlini  <pcarlini@unitus.it>

	* c-parse.in (poplevel, compstmt_start,
	compstmt_primary_start): Add ending ';', in accordance
	with POSIX.

2002-04-16  Richard Henderson  <rth@redhat.com>

	* config.gcc (sparcv9-solaris): Configure for 64-bit default.
	Adjust tm_file order to get TARGET_DEFAULT set properly.
	(sparc-solaris): Configure 2.[78] for 64-bit multilibs.
	* doc/install.texi (sparc-solaris): Update.

2002-04-16  Dale Johannesen <dalej@apple.com>

	* config/rs6000/rs6000.c (rs6000_emit_cmove): Fail if modes of
	comparison operands do not match each other or if modes of
	conditions do not match result.

2002-04-16  Hartmut Penner <hpenner@de.ibm.com>

	PR target/6305
	* config/s390/s390.md (mulsidi3): Set both subregs of the
	multiword register.

2002-04-16  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/altivec.h (vec_addc): Type check.

2002-04-16  Jakub Jelinek  <jakub@redhat.com>

	PR middle-end/6279
	* expr.c (store_expr): Don't copy if DECL_RTL (exp) == target.

	* expr.c (safe_from_p): Cleanup: use DECL_RTL_IF_SET.

2002-04-15  Richard Henderson  <rth@redhat.com>

	* config/mips/abi64.h (SUBTARGET_CONDITIONAL_REGISTER_USAGE): Set
	call_really_used_regs too.

2002-04-15  Richard Henderson  <rth@redhat.com>

	* config/alpha/gnu.h (CPP_PREDEFINES): Underscores for gnu_hurd.

2002-04-15  David S. Miller  <davem@redhat.com>

	* rtlanal.c (note_stores): Don't present PARALLEL SET_DESTs
	as being CLOBBERed.

2002-04-16  Jakub Jelinek  <jakub@redhat.com>

	PR c/6290
	* config/rs6000/rs6000.c (easy_vector_constant): Return 1 if the
	CONST_VECTOR is { 0, ... 0 }.

2002-04-15  Loren J. Rittle  <ljrittle@acm.org>

	* doc/install.texi (Installing GCC: Configuration): Clarify
	the only supported ways to configure gcc.

2002-04-15  Roland McGrath  <roland@frob.com>

	* config.gcc (alpha*-*-gnu*): New target configuration.
	* config/alpha/gnu.h: New file for it.
	* config/gnu.h (TARGET_MEM_FUNCTIONS): #undef before #define.

2002-04-16  Mark Mitchell  <mark@codesourcery.com>

	* c-common.h (STMT_EXPR_NO_SCOPE): New macro.
	* c-common.c (c_expand_expr): Respect STMT_EXPR_NO_SCOPE.
	* tree.h (expand_start_stmt_expr): Update prototype.
	* stmt.c (expand_start_stmt_expr): Add has_scope parameter.
	* tree-inline.c (expand_call_inline): Set STMT_EXPR_NO_SCOPE
	on the STMT_EXPR created for the inline function.

2002-04-15  Richard Henderson  <rth@redhat.com>

	* config/alpha/linux.h, config/arm/linux-elf.h, config/i370/linux.h,
	config/i386/linux-aout.h, config/i386/linux-oldld.h,
	config/i386/linux.h, config/i386/linux64.h, config/ia64/linux.h,
	config/m68k/linux-aout.h, config/m68k/linux.h, config/mips/linux.h,
	config/pa/pa-linux.h, config/pj/linux.h, config/s390/linux.h,
	config/sh/linux.h, config/sparc/linux-aout.h, config/sparc/linux.h,
	config/sparc/linux64.h, config/xtensa/linux.h (CPP_PREDEFINES):
	Define __gnu_linux__, not gnu_linux.
	* config/rs6000/sysv4.h (CPP_OS_GNU_SPEC): Likewise for gnu_hurd.

2002-04-15  Mark Mitchell  <mark@codesourcery.com>

	Remove Chill front end.
	* gcc.c (default_compilers): Remove Chill entries.
	* ch: Remove directory.
	* doc/frontends.texi: Remove information about Chill.
	* doc/sourcebuild.texi: Likewise.
	* doc/standards.texi: Likewise.

2002-04-15  Douglas B Rupp  <rupp@gnat.com>

	* config/alpha/vms.h (INCLUDE_DEFAULTS): Add /gnu/lib/gcc-lib/include.
	(LONGLONG_STANDALONE): Define.

2002-04-15  David S. Miller  <davem@redhat.com>

	* config/sparc/sparc.c (sparc_emit_float_lib_cmp):
	Call emit_library_call with LCT_NORMAL.
	(sparc_initialize_trampoline): Use LCT_foo instead of
	magic constant in emit_library_call invocations.
	(sparc64_initialize_trampoline): Likewise.
	(sparc_profile_hook): Likewise.
	* config/sparc/sparc.md: Likewise.

	* config/sparc/sparc.c (sparc_extra_constraint_check):
	Fix type of argument 'c'.
	* config/sparc/sparc-protos.h (sparc_extra_constraint_check):
	Likewise.

2002-04-15  Gabriel Dos Reis  <gdr@merlin.codesourcery.com>

	* diagnostic.h (output_buffer_state): Redefine.
	(output_format_decoder): New macro.
	(output_prefixing_rule): Likewise.
	(output_line_cutoff): Likewise.
	(diagnostic_format_decoder): Adjust.
	(diagnostic_prefixing_rule): Likewise.
	(diagnostic_line_cutoff): Likewise.
	(diagnostic_state): Likewise.
	(diagnostic_kind_count): Likewise.
	(diagnostic_buffer): Now a macro.

	* diagnostic.c (diagnostic_buffer): Remove definition.
	(output_is_line_wrapping): Adjust.
	(set_real_maximum_length): Likewise.
	(output_set_maximum_length): Likewise.
	(init_output_buffer): Likewise.
	(lhd_print_error_function): Likewise.
	(output_do_verbatim): Likewise.

2002-04-14  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cpperror.c (print_location): Don't print include chain
	if line == 0.
	(cpp_begin_message): Update to use DL_ macros.
	(cpp_ice, cpp_fatal, cpp_error_from_errno, cpp_warning,
	cpp_warning_with_line, cpp_pedwarn, cpp_pedwarn_with_line,
	cpp_notice, cpp_notice_from_errno): Remove.
	(cpp_error, cpp_error_with_line): Update to take a diagnostic
	level.
	(cpp_errno): New.
	* cppexp.c (CPP_ICE): Remove.
	(SYNTAX_ERROR, SYNTAX_ERROR2, parse_number, parse_defined,
	lex, integer_overflow, _cpp_parse_expr): Update.
	* cppfiles.c (read_include_file, find_include_file,
	handle_missing_header, _cpp_read_file, remap_filename): Update.
	* cpphash.h (enum error_type): Remove.
	(_cpp_begin_message): Update.
	* cppinit.c (append_include_chain, remove_dup_dirs, output_deps,
	cpp_handle_option, cpp_post_options): Update.
	* cpplex.c (trigraph_p, skip_escaped_newlines, skip_block_comment,
	skip_whitespace, parse_identifier, parse_slow, parse_string,
	_cpp_lex_direct, cpp_spell_token, maybe_read_ucs, cpp_parse_escape,
	cpp_interpret_charconst): Update.
	* cpplib.c (check_eol, directive_diagnostics, _cpp_handle_directive,
	lex_macro_node, do_undef, glue_header_name, parse_include,
	do_include_common, read_flag, do_line, do_linemarker, do_ident,
	cpp_register_pragma, do_pragma_once, do_pragma_system_header,
	do_pragma_poison, do_pragma_dependency, _cpp_do__Pragma, do_else,
	do_elif, do_endif, parse_answer, parse_assertion, do_assert,
	_cpp_pop_buffer, do_diagnostic): Update.
	* cpplib.h (DL_WARNING, DL_WARNING_SYSHDR, DL_PEDWARN, DL_ERROR,
	DL_FATAL, DL_ICE, DL_EXTRACT, DL_WARNING_P): New.
	(cpp_ice, cpp_fatal, cpp_error_from_errno, cpp_warning,
	cpp_warning_with_line, cpp_pedwarn, cpp_pedwarn_with_line,
	cpp_notice, cpp_notice_from_errno): Remove.
	(cpp_error, cpp_error_with_line): Update to take a diagnostic
	level.
	(cpp_errno): New.
	* cppmacro.c (builtin_macro, stringify_arg, paste_all_tokens,
	collect_args, enter_macro_context, save_parameter, parse_params,
	_cpp_create_definition, check_trad_stringification,
	cpp_macro_definition): Update.
	* cppmain.c (cpp_preprocess_file): Update.
	* fix-header.c (read_scan_file): Update.

2002-04-14  Andreas Schwab  <schwab@suse.de>

	* config/ia64/linux.h (CPP_PREDEFINES): Fix missing backslash.

2002-04-14  Jeroen Dobbelaere  <jeroen.dobbelaere@acunia.com>

	* config/arm/linux-elf.h (CPLUSPLUS_CPP_SPEC): Define.

2002-04-13  Mark Mitchell  <mark@codesourcery.com>

	* config/i386/gnu.h (CPP_PREDEFINES): Define __gnu_hurd__,
	not gnu_hurd.

2002-04-13  Hans-Peter Nilsson  <hp@axis.com>

	* config/cris/linux.h (CRIS_CPP_SUBTARGET_SPEC): Fix typo.

2002-04-13	Joel Sherrill <joel@OARcorp.com>

	* config/sparc/t-elf: Enable v8 multilibs.  Impacts
	sparc-elf and sparc-rtems targets.

2002-04-13  Mark Mitchell  <mark@codesourcery.com>

	* alpha/linux.h: Define __gnu_linux__ wherever __linux__ is
	defined, and __gnu_hurd__ wherever __GNU__ is defined.
	* arm/linux-elf.h: Likewise.
	* cris/aout.h: Likewise.
	* cris/linux.h: Likewise.
	* i370/linux.h: Likewise.
	* i386/gnu.h: Likewise.
	* i386/linux-aout.h: Likewise.
	* i386/linux-oldld.h: Likewise.
	* i386/linux.h: Likewise.
	* i386/linux64.h: Likewise.
	* ia64/linux.h: Likewise.
	* m68k/linux-aout.h: Likewise.
	* m68k/linux.h: Likewise.
	* mips/linux.h: Likewise.
	* pa/pa-linux.h: Likewise.
	* pj/linux.h: Likewise.
	* rs6000/sysv4.h: Likewise.
	* s390/linux.h: Likewise.
	* sh/linux.h: Likewise.
	* sparc/linux-aout.h: Likewise.
	* sparc/linux.h: Likewise.
	* sparc/linux64.h: Likewise.
	* xtensa/linux.h: Likewise.

2002-04-13  Richard Sandiford  <rsandifo@redhat.com>

	* stmt.c (check_unique_operand_names): Expect operand names to
	be strings rather than identifiers.  Use simple_cst_equal to
	compare them.
	(resolve_operand_name_1): Make same identifier to string change here.
	* c-parse.in (asm_operand): Convert a named operand into a string.
	* cp/parse.y (asm_operand): Likewise.

2002-04-13  Andreas Schwab  <schwab@suse.de>

	* config/ia64/ia64.h (CPP_SPEC): Include %(cpp_cpu).

2002-04-12  Mark Mitchell  <mark@codesourcery.com>

	Revert these changes:

	2002-04-06  Mark Mitchell  <mark@codesourcery.com>

	PR c++/5571
	* stor-layout.c (layout_decl): Reset the RTL for the decl.

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

	* config.gcc (sparcv9-*-solaris2): Default to 32-bit code.
	(sparc*-*-solaris): Clean up header files.
	* configure.in (AS_SPARC64_FLAG): Error out if can't find it
	and plan on generating 64-bit code.
	* toplev.c (decode_g_option): Remove LINKER_DOES_NOT_WORK_WITH_DWARF2.
	* config/sparc/sol2-64.h: Delete and reuse for default 64-bit code.
	* config/sparc/sol2-sld-64.h: Rename ...
	* config/sparc/sol2-bi.h: ... here.  Remove the bits that checked
	for AS_SPARC64_FLAG not defined.
	* config/sparc/sol2-gld-bi.h: New.
	* config/sparc/sol2-sld.h: Remove.
	* config/sparc/sol26-sld.h: New.
	* config/sparc/sol2.h: Tidy comments.
	* doc/install.texi: Document sparc-solaris configury changes.

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

	* recog.c (offsettable_address_p): Match the logic in adjust_address.

	* config/sparc/sparc.h (LEGITIMIZE_RELOAD_ADDRESS): Handle TFmode
	in 64-bit mode only.  Use only for 32-bit or MEDLOW.

2002-04-12  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* config/alpha/osf.h (LINK_SPEC): Pass -S to silence ld warnings.

Fri Apr 12 15:42:59 2002  Jeffrey A Law  (law@redhat.com)

	* pa.c (pa_can_combine_p): Call extract_insn before calling
	constrain_operands.

2002-04-12  Douglas B Rupp  <rupp@gnat.com>

	* config/i386/i386-interix.h (EH_FRAME_IN_DATA_SECTION): Define.
	(TARGET_ASM_NAMED_SECTION, RETURN_IN_MEMORY) Define.
	(DEFAULT_PCC_STRUCT_RETURN): Define as 0.
	(CPP_PREDEFINES): Handle __declspec.
	* config/i386/t-interix (USER_H): Remove.

2002-04-12  DJ Delorie  <dj@redhat.com>

	* integrate.c (compare_blocks): Make comparisons safe for when
	sizeof(int) < sizeof(char *).
	(find_block): Likewise.

2002-04-12  Jan Hubicka  <jh@suse.cz>
	    David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.c (call_operand): Allow LINK and COUNT
	registers.
	(symbol_ref_operand): New.
	* config/rs6000/rs6000.h (PREDICATE_CODES): Add symbol_ref_operand.
	* config/rs6000/rs6000.md (call_nonlocal_aix): Use symbol_ref_operand.

2002-04-12  Andreas Schwab  <schwab@suse.de>

	* config/ia64/ia64.h (ASM_SPEC): Moved from here ...
	* config/ia64/sysv4.h (ASM_SPEC): ... to here, so that it
	overrides the definition in config/svr4.h.

2002-04-12	Eric Norum <eric.norum@usask.ca>

	* config/rtems.h, config/a29k/rtems.h, config/arm/rtems-elf.h,
	config/c4x/rtems.h, config/h8300/rtems.h, config/i386/rtems.h,
	config/i386/rtemself.h, config/i960/rtems.h, config/m68k/rtems.h,
	config/m68k/rtemself.h, config/mips/rtems.h, config/mips/rtems64.h,
	config/pa/rtems.h, config/rs6000/rtems.h, config/sh/rtems.h,
	config/sh/rtemself.h, config/sparc/rtems.h, config/sparc/rtemself.h,
	config/v850/rtems.h (*-rtems*): Cleanup pass to move common
	definitions to config/rtems.h and make the targets more similar.

Fri Apr 12 08:06:54 2002  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* expr.c (expand_assigment): Remove duplicate conversions #ifdef
	POINTERS_EXTEND_UNSIGNED.
	(store_constructor, expand_expr, case COMPONENT_REF): Likewise.
	(store_expr): Use TYPE_MODE (sizetype), not ptr_mode.

	* emit-rtl.c (widen_memory_access): Don't do anything if MEMOFFSET
	not specified.

Fri Apr 12 12:11:26 2002  J"orn Rennecke <joern.rennecke@superh.com>

	* sh.c (calc_live_regs, sh_pr_n_sets): Use of PR_MEDIA_REG / PR_REG
	depends on TARGET_SHMEDIA, not TARGET_SH5.

2002-04-12  Hans-Peter Nilsson  <hp@bitrange.com>

	* function.c (fixup_var_refs_1) <SET, handling VAR in SET_SRC>:
	For paradoxical (subreg VAR), replace VAR, don't try the subreg.

Fri Apr 12 10:51:38 2002  J"orn Rennecke <joern.rennecke@superh.com>

	* sh.c (broken_move): Constant 0. / 1. load is OK if there is
	no r0 clobber.

2002-04-12  Andreas Schwab  <schwab@suse.de>

	* config/ia64/ia64.h (EXTRA_SPECS): Fix missing backslash.

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

	PR bootstrap/4191
	* config/d30v/d30v.h (INIT_SECTION_ASM_OP): Don't undef.

	* flow.c (mark_used_reg): Manage reg_cond_dead properly for
	modes spanning multiple hard regs.

	* recog.c (peephole2_optimize): Rebuild jump labels as needed.

2002-04-11  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* pa.c (pa_output_function_prologue): Don't accumulate the total
	number of code bytes when using TARGET_64BIT, or gas, SOM and not
	the portable runtime.
	(output_deferred_plabels): Handle 64bit plabels.
	(output_cbranch): Use $PIC_pcrel$0 for pc relative relocations when
	generating pic code using the GAS assembler for object formats that
	are not SOM (ie., ELF32 and ELF64).
	(output_millicode_call): Check attribute type if attribute length is 28.
	Likewise use $PIC_pcrel$0.  Only call get_attr_length and
	dbr_sequence_length once.
	(output_call): Likewise use $PIC_pcrel$0, and call get_attr_length and
	dbr_sequence_length once.
	* pa.h (TARGET_SOM): Define if not defined.
	* pa.md (pattern to load address of label): Likewise use $PIC_pcrel$0
	with GAS and not SOM.
	(jump, call_internal_reg, call_value_internal_reg): Likewise.
	* som.h (OBJ_SOM): Rename to TARGET_SOM.  Undefine before defining.

2002-04-11  David O'Brien  <obrien@FreeBSD.org>

	* config/freebsd.h (NO_IMPLICIT_EXTERN_C, SCCS_DIRECTIVE): Give value.
	(DEFAULT_PCC_STRUCT_RETURN) Do not redefine.
	(USER_LABEL_PREFIX, HANDLE_SYSV_PRAGMA, IDENT_ASM_OP,
	DWARF2_DEBUGGING_INFO, DBX_DEBUGGING_INFO, PREFERRED_DEBUGGING_TYPE):
	elfos.h and dbxelf.h values are fine now.
	* config/i386/freebsd.h, config/alpha/freebsd.h
	(DEFAULT_PCC_STRUCT_RETURN): Define to 0.

2002-04-11  David O'Brien  <obrien@FreeBSD.org>

	* config/ia64/aix.h (CPP_PREDEFINES): Do not define _LP64/__LP64__
	or set Acpu or Amachine.  Reformat.
	(ASM_SPEC, DONT_USE_BUILTIN_SETJMP, PROFILE_BEFORE_PROLOGUE): Do not
	define.
	(LINK_SPEC): Do not need to undef.
	* config/ia64/elf.h (ASM_EXTRA_SPEC): Define.
	* config/ia64/freebsd.h (LINK_SPEC): Do not need to undef.
	(ASM_SPEC, DONT_USE_BUILTIN_SETJMP, PROFILE_BEFORE_PROLOGUE): Do not
	define.
	* config/ia64/hpux.h (ASM_EXTRA_SPEC): Define.
	(ASM_SPEC): Do not define, use ASM_EXTRA_SPEC instead.
	(LINK_SPEC): Do not need to undef.
	(DONT_USE_BUILTIN_SETJMP): Do not define.
	* config/ia64/ia64.h (ASM_SPEC, ASM_EXTRA_SPEC): Add.
	(CPP_CPU_SPEC): Define _LP64, set Acpu and Amachine.  Remove -Dia64.
	(DONT_USE_BUILTIN_SETJMP, PROFILE_BEFORE_PROLOGUE): Define.
	Remove trailing spaces.
	* config/ia64/linux.h (CPP_PREDEFINES): Do not define _LP64/__LP64__,
	__ELF__, or set Acpu or Amachine.  Reformat.
	(ASM_SPEC, DONT_USE_BUILTIN_SETJMP, PROFILE_BEFORE_PROLOGUE): Do not
	define.

2002-04-11  David O'Brien  <obrien@FreeBSD.org>

	* config.gcc (ia64-*-freebsd*): Fix ordering of tm_files to match
	all other *-*-freebsd* targets.

2002-04-11  Richard Henderson  <rth@redhat.com>

	* config.gcc (alpha*-*-linux*ecoff): Detect and reject.

2002-04-11  David O'Brien  <obrien@FreeBSD.org>

	* config.gcc (alpha*-*-openbsd, alpha64-dec-*vms,alpha*-dec-*vms):
	Include {cpu}/{cpu}.h thru tm_file.
	(alpha*-*-linux*ecoff): Remove target.
	* config/alpha/elf.h (CPP_SUBTARGET_SPEC): Define __ELF__.
	(LINK_SPEC): Remove, is not OS independent.
	* config/alpha/freebsd.h (CPP_SPEC): Do not define __ELF__.
	(LINK_SPEC): Do not need to #undef any longer.
	* config/alpha/linux-ecoff.h (LINK_SPEC): Do not need to #undef
	any longer.
	* config/alpha/linux-elf.h (SUB_CPP_PREDEFINES): Do not define
	__ELF__.
	(LINK_SPEC): Moved here from alpha/elf.h.
	* config/alpha/linux.h (CPP_PREDEFINES): No longer consumer of
	SUB_CPP_PREDEFINES.
	* config/alpha/linux-ecoff.h: Remove.
	* config/alpha/netbsd.h (CPP_PREDEFINES): Do not define __ELF__.
	(CPP_SPEC): Define _POSIX_SOURCE as needed.
	(CPP_SUBTARGET_SPEC): Do not define.
	(LINK_SPEC): Do not need to #undef any longer.
	* config/alpha/openbsd.h: Do not directly include alpha/alpha.h.
	* config/alpha/vms.h: Likewise.

2002-04-11  Richard Sandiford  <rsandifo@redhat.com>

	* doc/extend.texi: Remove old claim that typedefs cannot have
	an alignment attribute.

2002-04-11  Jakub Jelinek  <jakub@redhat.com>

	PR optimization/6177
	* expr.c (expand_expr) [COMPONENT_REF]: Handle op0 CONCAT if
	bitpos is 0 and bitsize CONCAT size.

2002-04-11  Jakub Jelinek  <jakub@redhat.com>

	PR c/6223
	* combine.c (if_then_else_cond): Use trunc_int_for_mode on nz.

2002-04-10  David O'Brien  <obrien@FreeBSD.org>

	* config/alpha/freebsd.h: Minor reformatting.
	(CPP_SPEC): Define ELF and add cpp_subtarget.
	(ASM_SPEC): No longer needed.

2002-04-11  Richard Henderson  <rth@redhat.com>

	* config/sparc/sparc.md (movdi_insn_sp32): Add o/J alternative.
	(movdi_insn_sp32_v9): Likewise.  Only allow stx with aligned memory.
	(dimode mem/zero splitter): New.

2002-04-11  Hans-Peter Nilsson  <hp@axis.com>

	* config/cris/cris.c (cris_override_options): Tweak error message
	for PIC not implemented.

	* config/cris/cris.h: Tweak comments related to parameter-passing.

	* t-cris (TARGET_LIBGCC2_CFLAGS): Don't -Dinhibit_libc here.

2002-04-10  Richard Henderson  <rth@redhat.com>

	* except.c (add_ehl_entry): Allow duplicates after landing pad
	creation.

2002-04-10  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/t-aix43 (SHLIB_NM_FLAGS): Add -X32_64.

2002-04-10  Toon Moene  <toon@moene.indiv.nluug.nl>

	* c-decl.c (c_init_decl_processing): Move generation of
	decls for g77_integer_type_node and friends from here ...
	* c-common.c (c_common_nodes_and_builtins): ... to here.

2002-04-10  Ulrich Weigand  <uweigand@de.ibm.com>

	* reload1.c (choose_reload_regs): HARD_FRAME_POINTER_REGNUM
	is only used as frame pointer when frame_pointer_needed is true.

2002-04-10  Richard Earnshaw  <rearnsha@arm.com>

	PR target/817
	* arm.md (arm_movdi): Adjust neg_pool_range attribute to allow
	for the fact that the pool entry uses two words.
	(movdf_hard_insn): Similarly.  Also, ADR instruction can span
	1k bytes.
	(movdf_soft_insn): Similarly.
	(movxf_hard_insn): Adjust neg_pool_range attribute to allow
	for the fact that the pool entry uses three words.

2002-04-10  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.c (mips_va_arg): When using the struct version
	of the EABI va_list, allow arguments in the register save area to
	take up less room than a stack argument.

2002-04-10  Richard Henderson  <rth@redhat.com>

	* expr.c (expand_expr) [INTEGER_CST]: Don't force into registers
	if EXPAND_INITIALIZER.

2002-04-09  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.md (movdi_er_maybe_g): New.
	* config/alpha/alpha.c (alpha_expand_mov): Use it.

2002-04-10  Alan Modra  <amodra@bigpond.net.au>

	PR optimization/6233
	* rtlanal.c (pure_call_p): New function.
	* rtl.h (pure_call_p): Declare.
	* loop.c (prescan_loop): Use it to set has_nonconst_call.
	* gcse.c (store_killed_in_insn): Use pure_call_p here too.

2002-04-09  Eric Christopher  <echristo@redhat.com>

	* config/mips/mips.h (ASM_OUTPUT_ALIGNED_DECL_COMMON): Add additional
	information to .comm directive.

2002-04-09  Richard Henderson  <rth@redhat.com>

	PR c/5078
	* expr.c (expand_expr) [INTEGER_CST]: Force overflows into registers.

2002-04-09  Richard Henderson  <rth@redhat.com>

	* basic-block.h (flow_delete_block_noexpunge): Declare.
	(expunge_block_nocompact): Declare.
	* cfg.c (expunge_block_nocompact): Split out from ...
	(expunge_block): ... here.
	* cfgrtl.c (can_delete_label_p): Don't use exception_handler_labels.
	(flow_delete_block_noexpunge): Split out from ...
	(flow_delete_block): ... here.
	* cfgcleanup.c (delete_unreachable_blocks): Compact while
	removing dead blocks.
	* except.c (exception_handler_labels): Remove.
	(exception_handler_label_map): New.
	(struct eh_region): Add aka member.
	(mark_ehl_map_entry, mark_ehl_map, free_region): New.
	(ehl_hash, ehl_eq, ehl_free, add_ehl_entry): New.
	(for_each_eh_label, for_each_eh_label_1): New.
	(init_eh): Register exception_handler_label_map.
	(free_eh_status): Use free_region.
	(find_exception_handler_labels): Use the map, not the list.
	(remove_exception_handler_label): Likewise.
	(maybe_remove_eh_handler): Likewise.
	(remove_eh_handler): Use the region aka bitmap.
	* except.h (exception_handler_labels): Remove.
	(for_each_eh_label): Declare.
	* jump.c (rebuild_jump_labels): Don't check exception_handler_labels.
	* loop.c (invalidate_loops_containing_label): New.
	(find_and_verify_loops): Use it.  Use for_each_eh_label.
	* sched-rgn.c (is_cfg_nonregular): Use
	current_function_has_exception_handlers.

2002-04-09  Richard Henderson  <rth@redhat.com>

	* sbitmap.c (sbitmap_union_of_diff, sbitmap_a_and_b, sbitmap_a_xor_b,
	sbitmap_a_or_b, sbitmap_a_or_b_and_c, sbitmap_a_and_b_or_c):
	Do not return changed status.
	(sbitmap_union_of_diff_cg, sbitmap_a_and_b_cg, sbitmap_a_xor_b_cg,
	sbitmap_a_or_b_cg, sbitmap_a_or_b_and_c_cg, sbitmap_a_and_b_or_c_cg):
	New functions that do return changed status.
	* sbitmap.h: Update decls.
	* gcse.c, lcm.c: Use _cg functions as needed.

Tue Apr  9 19:15:57 2002  J"orn Rennecke <joern.rennecke@superh.com>

	* config.gcc (sh-*-elf*): Use sh/embed-elf.h instead of sh/elf.h.
	(sh64-*-elf*, sh-*-rtemself*): Likewise.
	* config/sh/embed_bb.c: New file.
	* config/sh/embed-elf.h: New file.
	* sh.h (CPP_SPEC): Supply __SIZE_TYPE__ and __PTRDIFF_TYPE__
	if -m[12345]* option is given.  Don't use subtarget_cpp_ptr_spec.
	(CPP_DEFAULT_CPU_SPEC): Add settings for __SIZE_TYPE__ and
	__PTRDIFF_TYPE__ .
	(SUBTARGET_CPP_PTR_SPEC): Don't define.
	(EXTRA_SPECS): Remove subtarget_cpp_ptr_spec.
	Add subtarget_asm_endian_spec.
	(ASM_SPEC): Use subtarget_asm_endian_spec.
	(SUBTARGET_ASM_ENDIAN_SPEC): Define.
	(RETURN_ADDR_RTX): Use PR_MEDIA_REG for TARGET_SH5.
	(WCHAR_UNSIGNED): Define.
	(SH_ELF_WCHAR_TYPE, SH_DBX_REGISTER_NUMBER): Define.
	(DBX_REGISTER_NUMBER): Use SH_DBX_REGISTER_NUMBER.
	(ALLOCATE_INITIAL_VALUE): Use PR_MEDIA_REG for TARGET_SH5.
	Fix value.
	* sh.c (calc_live_regs): Use PR_MEDIA_REG for TARGET_SH5.
	(sh_adjust_cost): Likewise.
	sh64.h (CPP_DEFAULT_CPU_SPEC): Add settings for __SIZE_TYPE__ and
	__PTRDIFF_TYPE__ .
	(SUBTARGET_CPP_PTR_SPEC, WCHAR_TYPE): Don't #undef/ #define.
	(WCHAR_TYPE_SIZE): Likewise.
	(ASM_SPEC): Use subtarget_asm_endian_spec.
	(SH_ELF_WCHAR_TYPE): #undef/ #define.
	(MAX_WCHAR_TYPE_SIZE): Don't #undef.
	* config/sh/elf.h (WCHAR_UNSIGNED): #undef .
	(MAX_WCHAR_TYPE_SIZE): Don't #define .
	(WCHAR_TYPE, WCHAR_TYPE_SIZE): #undef / #define .
	(USER_LABEL_PREFIX): Don't #undef /#define .
	(DBX_REGISTER_NUMBER): Use SH_DBX_REGISTER_NUMBER.
	* config/elf/linux.h (USER_LABEL_PREFIX): Don't #undef /#define .
	(SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE, WCHAR_TYPE_SIZE): Likewise.
	(ASM_SPEC): Likewise.
	(SUBTARGET_ASM_ENDIAN_SPEC): #undef / #define .
	(CC1_SPEC): don't supply -m3 for -m4*, -m5*.
	* t-sh: (LIB1ASMFUNCS): Use LIB1ASMFUNCS_CACHE.
	(LIB2FUNCS_EXTRA): Define.
	* t-sh64 (LIB2FUNCS_EXTRA): Define.
	* config/sh/t-linux (LIB1ASMFUNCS): Don't redefine.
	(LIB1ASMFUNCS_CACHE): Define.
	(LIB2FUNCS_EXTRA): Redefine empty.

2002-04-08  Richard Henderson  <rth@redhat.com>

	* reorg.c (get_branch_condition): Use reversed_comparison_code.

2002-04-09  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/larith.asm (__map_data_section): Fix condition
	and optimize for size.
	(__do_global_ctors): Fix pointer comparison.
	(__do_global_dtors): Likewise.

2002-04-09  David S. Miller  <davem@redhat.com>

	* config/sparc/sparc.c (sparc_extra_constraint_check): New
	function, implementing EXTRA_CONSTRAINTS.  For memory constraints,
	allow reloading pseudos.
	* config/sparc/sparc.h (EXTRA_CONSTRAINTS): Use it.
	* config/sparc/sparc-protos.h: Declare it.

	* config/sparc/sparc.c (const64_is_2insns): Kill signed vs.
	unsigned comparison warning.
	(output_restore_regs): Mark leaf_function as unused.

Tue Apr  9 09:35:45 2002  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* expr.c (is_aligning_offset): New function.
	(expand_expr, case COMPONENT_EXPR): Call it.

2002-04-08  David S. Miller  <davem@redhat.com>

	PR target/6082
	* config/sparc/freebsd.h (SPARC_DEFAULT_CMODEL): Set to CM_MEDLOW

	Make init_priority work on SPARC when using GNU ld.
	* config/sparc/linux.h, config/sparc/linux64.h,
	config/sparc/netbsd-elf.h, config/sparc/freebsd.h
	(CTORS_SECTION_ASM_OP, DTORS_SECTION_ASM_OP): Undefine.
	* config/sparc/sol2-gld.h: New file to do the same.
	* config.gcc (sparc*-*-solaris2*): If gnu_ld=yes add
	sparc/sol2-gld.h to tm_file.

	PR optimization/4328
	* config/sparc/sparc.h (EXTRA_CONSTRAINT): Add new constraint 'W'.
	* doc/md.texi: Document it.
	* config/sparc/sparc.md (movdi_insn_sp64_novis,
	movdi_insn_sp64_vis, movdf_insn_sp32, movdf_insn_v9only_novis,
	movdf_insn_v9only_vis, movdf_insn_sp64_novis,
	movdf_insn_sp64_vis): Use it as MEM constraing with 'e' registers.
	* config/sparc/sparc.c (mem_min_alignment): Fix comment.

2002-04-08  Andreas Jaeger  <aj@suse.de>

	* stmt.c (expand_asm_operands): Revert last patch from Richard
	Henderson.

2002-04-08  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* doc/contrib.texi (Contributors): Add John David Anglin and Loren
	J. Rittle (the latter also to Testers).  Update David O'Brien's entry.

2002-04-08  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* doc/contrib.texi (Contributors): Add David O'Brien.

2002-04-08  Alan Modra  <amodra@bigpond.net.au>

	* configure.in (auto-build.h): Use target_alias and build_alias
	when running configure.
	(gcc_cv_as, gcc_cv_ld): Search install paths when build != host too.
	(gcc_cv_nm, gcc_cv_objdump): Set for build != host too.
	* configure: Regenerate.

2002-04-07  David S. Miller  <davem@redhat.com>

	* config.gcc (sparc64-*-linux*): Add t-crtfm to tmake_file.

2002-04-07  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	PR 5933
	* pa.h (ASM_OUTPUT_MI_THUNK): Use indirect jump to target function when
	generating 32-bit pic code.

2002-04-06  Jason Thorpe  <thorpej@wasabisystems.com>

	* cppinit.c (cpp_create_reader): Initialize
	discard_comments_in_macro_exp.
	(COMMAND_LINE_OPTIONS): Add "-CC" option.
	(cpp_handle_option): Handle "-CC" option.
	* cpplex.c (save_comment): If saving a C++ comment in
	a directive, convert it to a C comment.
	(_cpp_lex_direct): Pass second comment start character to
	save_comment to indicate comment type.
	* cpplib.c (_cpp_handle_directive): If processing
	a "#define" directive and discard_comments_in_macro_exp
	is false,  re-enable saving of comments.
	(lex_macro_node): If discard_comments_in_macro_exp is false,
	discard any comments before the macro identifier.
	* cpplib.h (struct cpp_options): Add discard_comments_in_macro_exp
	member.
	* cppmacro.c (cpp_get_token): If expanding a macro while
	processing a directive, discard any comments we might encounter.
	(parse_params): If discard_comments_in_macro_exp is false,
	ignore comments in the macro parameter list.
	* gcc.c (cpp_unique_options): Add "-CC" option.
	(option_map): Map "--comments-in-macros" to "-CC".
	* doc/cppopts.texi: Document "-CC" option.
	* f/lang-specs.h: Add "-CC" option.
	* testsuite/gcc.dg/cpp/maccom1.c: New test.
	* testsuite/gcc.dg/cpp/maccom2.c: New test.
	* testsuite/gcc.dg/cpp/maccom3.c: New test.
	* testsuite/gcc.dg/cpp/maccom4.c: New test.
	* testsuite/gcc.dg/cpp/maccom5.c: New test.
	* testsuite/gcc.dg/cpp/maccom6.c: New test.

2002-04-06  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	PR middle-end/6180
	* reorg.c (dbr_schedule): Don't reposition prologue and epilogue notes.

2002-04-06  Mark Mitchell  <mark@codesourcery.com>

	PR c++/5571
	* stor-layout.c (layout_decl): Reset the RTL for the decl.

	PR opt/5120
	* sibcall.c (optimize_sibling_and_tail_recursive_call): Clear
	RTX_UNCHANGING_P for the functions arguments when a tail call
	is made.

2002-04-06  Jason Merrill  <jason@redhat.com>

	* toplev.c (flag_no_inline, flag_really_no_inline): Default to 2.
	(parse_options_and_default_flags): Set them appropriately.
	* c-common.c (c_common_post_options): Don't set flag_really_no_inline.

2002-04-06  Hans-Peter Nilsson  <hp@bitrange.com>

	* config/mmix/t-mmix (TARGET_LIBGCC2_CFLAGS): Don't -Dinhibit_libc
	here.

	* config/mmix/mmix.h (INITIAL_ELIMINATION_OFFSET): Remove spurious
	semicolon.

	* config/mmix/mmix.c (mmix_expand_builtin_va_arg): Variable-size
	types come in by-reference.  Fix typo in comment.

2002-04-05  David S. Miller  <davem@redhat.com>

	* config/sparc/freebsd.h (ENDFILE_SPEC): Add crtfastmath bits.
	* config.gcc (sparc64-wrs-vxworks, sparc-*-chorusos,
	sparc-*-rtems*, sparclite-*-elf* sparc86x-*-elf*, sparc64-*-elf*,
	{sparc64,ultrasparc}-*-freebsd*): Add sparc/t-crtfm to tmake_file.

2002-04-05  David S. Miller  <davem@redhat.com>

	* config/sparc/sparc.c (sparc_nonflat_function_epilogue): If we
	are not going to emit return instructions, emit at least a nop
	for the sake of sane backtraces.

2002-04-05  Richard Henderson  <rth@redhat.com>

	* doc/rtl.texi (Regs and Memory): Document (mem:BLK (scratch)).

2002-04-05  Jakub Jeilnek  <jakub@redhat.com>

	* mklibgcc.in: Use $tmpmapfile, not tmp-$@.

2002-04-05  Alexandre Oliva  <aoliva@redhat.com>

	* config/mips/mips.h (ISA_HAS_BRANCHLIKELY, ISA_HAS_CONDMOVE,
	ISA_HAS_FP4, ISA_HAS_MADD_MSUB, ISA_HAS_NMADD_NMSUB,
	ISA_HAS_CLZ_CLO, ISA_HAS_DCLZ_DCLO): Disable if TARGET_MIPS16.

2002-04-05  Andreas Schwab  <schwab@suse.de>

	* c-convert.c: Include c-common.h.
	* Makefile.in (c-convert.o): Updated.

2002-04-05  Jakub Jelinek  <jakub@redhat.com>

	* mklibgcc.in: Use separate libgcc.map for each multilib.
	* Makefile.in (distclean): Don't remove libgcc.map here.

2002-04-05  Jakub Jelinek  <jakub@redhat.com>

	* Makefile.in (s-mlib): Handle --disable-multilib by separate
	genmultilib invocation.

2002-04-04  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.h (CUMULATIVE_ARGS): Rename fp_regs to num_fprs
	to avoid clash with Irix header file sys/ucontext.h.  Rename gp_regs
	to num_gprs for symmetry.
	* config/mips/mips.c: Adjust accordingly.

2002-04-04  Neil Booth  <neil@daikokuya.demon.co.uk>

	* c-common.c (truthvalue_conversion): Rename, update.
	* c-common.h (c_common_truthvalue_conversion): New.
	* c-convert.c (convert): Update.
	* c-lang.c (LANG_HOOKS_TRUTHVALUE_CONVERSION): Redefine.
	* c-parse.in (expr_no_commas, if_prefix, select_or_iter_stmt): Update.
	* c-typeck.c (build_binary_op, build_unary_op,
	build_conditional_expr): Update.
	* fold-const.c (constant_boolean_node, fold): Use langhook.
	* langhooks-def.h (LANGHOOK_INITIALIZER): Update.
	* langhooks.h (struct lang_hooks): New hook.
	* stmt.c (expand_decl_cleanup): Use langhook.
	* tree.h (truthvalue_conversion): Remove.
objc:
	* objc-lang.c (LANG_HOOKS_TRUTHVALUE_CONVERSION): Redefine.

2002-04-05  Alan Modra  <amodra@bigpond.net.au>

	* config/rs6000/t-linux64 (EXTRA_MULTILIB_PARTS): Add crtsavres.o
	Add rules to make null object file.

2002-04-04  Jim Blandy  <jimb@redhat.com>

	* cppmacro.c (cpp_macro_definition): Do not emit spaces after
	macro formal parameter names.

2002-04-04  David S. Miller  <davem@redhat.com>

	* calls.c (store_one_arg): If ECF_SIBCALL, use tail_call_reg.

2002-04-04  Richard Henderson  <rth@redhat.com>

	PR middle-end/5099
	* stmt.c (expand_asm_operands): Validate outputs vs asm_operand_ok.
	Support copies into and out of memory.  Don't accept allows_reg
	and allows_mem as gospel.

2002-04-04  Richard Henderson  <rth@redhat.com>

	PR opt/6165
	* alias.c (true_dependence): Force (mem:blk (scratch)) to conflict.
	(write_dependence_p): Likewise.

2002-04-04  Richard Henderson  <rth@redhat.com>

	* predict.c (estimate_bb_frequencies): Do frequency calculation
	with a volatile temporary.

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

	* config/s390/linux.h (LOCAL_LABEL_PREFIX): Define.

2002-04-04  Jakub Jelinek  <jakub@redhat.com>

	PR c++/6119
	* final.c (final_start_function): Don't bump profile_label_no here...
	(final_end_function): ...but here.

2002-04-04  Jakub Jelinek  <jakub@redhat.com>

	* config/sparc/sparc.md (pic): New attribute.
	(do_builtin_setjmp_setup): Save %fp, %i7 and %l7 for TARGET_V9
	into stack slots.
	(split after do_builtin_setjmp_setup): New.

2002-04-04  Jakub Jelinek  <jakub@redhat.com>

	PR fortran/6106
	* config/sparc/sparc.h (MIN_UNITS_PER_WORD): Backout 2001-01-01
	change.

2002-04-04  Jakub Jelinek  <jakub@redhat.com>

	* config/sparc/sparc.c (sparc_va_arg): Adjust va_list by
	UNITS_PER_WORD for zero sized aggregates.

2002-04-03  David S. Miller  <davem@redhat.com>

	* gcc.c (LINK_GCC_C_SEQUENCE_SPEC): No need for a new
	one-character spec for this, just use %(link_gcc_c_sequence).

2002-04-03  David S. Miller  <davem@redhat.com>

	* config/sparc/crtfastmath.c (FPRS_NS): Delete bogus little-endian
	handling.

2002-04-03  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* pa-linux.h (INCOMING_RETURN_ADDR_RTX): Move.
	(DWARF_FRAME_RETURN_COLUMN): Move.
	(ASM_PREFERRED_EH_DATA_FORMAT): Define.
	(ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX): Define.
	* pa.c (except.h, predict.h): Include.
	(FRP): Delete.
	(store_reg_modify, set_reg_plus_d): Revise prototypes.
	(output_ascii): Add cast.
	(store_reg_modify): Revise to add frame notes.
	(set_reg_plus_d): Likewise.
	(compute_frame_size): Include space for eh data registers in frame if
	the current function calls eh_return.
	(hppa_expand_prologue):  Ensure register %r2 is saved if the current
	function calls eh_return.  Save eh data registers if the current
	function calls eh_return.  Fix code to add frame notes.  Emit
	blockage to prevent insns with frame notes being scheduled in the
	delay slot of calls.
	(hppa_expand_epilogue): Restore eh data registers and do final stack
	adjustment if the current function calls eh_return.  Don't add frame
	notes.
	(output_call): Revise for change in length of call insn.  Don't do
	return pointer adjustment for an unconditional jump in the delay slot
	of a call when using frame notes.
	* pa.h (EH_RETURN_DATA_REGNO): Revise for TARGET_64BIT compatibility.
	(EH_RETURN_HANDLER_RTX): Use saved value on stack.
	(ARG_POINTER_CFA_OFFSET): Define.
	* pa.md (return_external_pic): New pattern.
	(prologue): Correct formatting.  Use return_external_pic if current
	function calls eh_return.
	(call_internal_symref, call_value_internal_symref,
	sibcall_internal_symref, sibcall_value_internal_symref): Change default
	lengths of short, long non-pic, and long pic calls to 8, 68, and 84,
	respectively.
	(exception_receiver): Use hppa_pic_save_rtx () to restore pic register.

	* configure.in ("assembler dwarf2 debug_line support"): Add hppa*-*-* to
	list of targets to check using "nop" insn.
	* configure: Rebuilt.

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

	* config/rs6000/t-linux64 (EXTRA_MULTILIB_PARTS): Define.

2002-04-03  David S. Miller  <davem@redhat.com>

	* gcc.c (LINK_GCC_C_SEQUENCE_SPEC): New spec to override the gcc/c
	library sequence passed to the linker.
	(LINK_COMMAND_SPEC): Use it.
	* doc/tm.texi: Document it, and mention from LINK_COMMAND_SPEC as
	a macro a target can use to avoid overriding LINK_COMMAND_SPEC.
	* config/sparc/sparc.h (LINK_GCC_C_SEQUENCE_SPEC): Define.

2002-04-03  Jason Merrill  <jason@redhat.com>

	* except.c (struct eh_status): Remove protect_list.
	(begin_protect_partials, end_protect_partials): Remove.
	(add_partial_entry): Remove.
	* except.h: Remove prototypes.

	* expr.c (expand_expr) [WITH_CLEANUP_EXPR, TARGET_EXPR]: Use
	expand_decl_cleanup_eh.

	PR c++/5636
	* tree.h (CLEANUP_EH_ONLY): New macro.
	* stmt.c (expand_decl_cleanup_eh): New fn.
	(expand_cleanups): Check CLEANUP_EH_ONLY.
	* c-semantics.c (genrtl_decl_cleanup): Just take the CLEANUP_STMT.
	Use expand_decl_cleanup_eh.
	(expand_stmt): Adjust.
	* c-common.h: Adjust prototype.

2002-04-04  Hans-Peter Nilsson  <hp@axis.com>

	* config/cris/cris.c (cris_target_asm_function_prologue): Cast
	uses of PIC_OFFSET_TABLE_REGNUM to int to silence warnings.
	(cris_target_asm_function_epilogue): Ditto.
	(cris_initial_frame_pointer_offset): Ditto.
	(cris_simple_epilogue): Ditto.
	(cris_expand_builtin_va_arg): Variable-size types come in
	by-reference.

2002-04-03  David S. Miller  <davem@redhat.com>

	* config/sparc/crtfastmath.c (FPRS_NS): Get it right for
	little-endian.
	(set_fast_math): Correct 'fsr' type.

2002-04-03  Richard Henderson  <rth@redhat.com>

	PR opt/3569
	* langhooks.h (lang_hooks.decls.warn_unused_global): New.
	* toplev.c (check_global_declarations): Use it.
	* langhooks-def.h (lhd_warn_unused_global_decl): Declare.
	(LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL): New.
	(LANG_HOOKS_DECLS): Add it.
	* langhooks.c (lhd_warn_unused_global_decl): New.
	* c-decl.c (LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL): New.
	* c-objc-common.c (c_warn_unused_global_decl): New.
	* c-tree.h (c_warn_unused_global_decl): Declare.
	* objc/objc-lang.c (LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL): New.

2002-04-03  Neil Booth  <neil@daikokuya.demon.co.uk>

	* langhooks-def.h (lhd_set_decl_assembler_name,
	LANG_HOOKS_SET_DECL_ASSEMBLER_NAME): New.
	(LANG_HOOKS_INITIALIZER): Update.
	* langhooks.c (lhd_set_decl_assembler_name): New, from tree.c
	* langhooks.h (struct lang_hooks): New hook.
	* tree.c (set_decl_assembler_name): Move to langhooks.c.
	(lang_set_decl_assembler_name): Remove.
	(init_obstacks): Don't set hook.
	(decl_assembler_name): New function.
	* tree.h (DECL_ASSEMBLER_NAME): Turn into a function call.
	(decl_assembler_name): New.
	(lang_set_decl_assembler_name): Remove.

2002-04-03  Jakub Jelinek  <jakub@redhat.com>

	* configure.in (HAVE_SPARC_UA_PCREL_HIDDEN): Test whether %r_disp32()
	works properly with .hidden symbols.
	* configure: Rebuilt.
	* config.in: Rebuilt.
	* config/sparc/sparc.h (ASM_PREFERRED_EH_DATA_FORMAT): Use
	DW_EH_PE_absptr for flag_pic && GLOBAL if %r_disp32() doesn't work
	properly with .hidden symbols.

2002-04-03  Jakub Jelinek  <jakub@redhat.com>

	PR middle-end/6102
	* df.c (df_insn_refs_record): Use XEXP not SET_DEST to access
	USE argument.

2002-04-03  Richard Henderson  <rth@redhat.com>

	PR opt/4120
	* sched-rgn.c (sets_likely_spilled): New.
	(sets_likely_spilled_1): New.
	(add_branch_dependences): Use it.

2002-04-02  Richard Henderson  <rth@redhat.com>

	PR opt/4311
	* loop.h (LOOP_FIRST_PASS): New.
	* loop.c (strength_reduce): Mind it when deciding to unroll.
	* toplev.c (rest_of_compilation): Set it.

2002-04-02  David S. Miller  <davem@redhat.com>

	* config/sparc/sparc.md (ldd peephole2s): Fix final arg to
	mems_ok_for_ldd_peep when the order of the loads being examined
	is reversed.
	* config/sparc/sparc.c (mems_ok_for_ldd_peep): Expand upon
	existing comment to increase comprehension of this situation.

2002-04-02  Zack Weinberg  <zack@codesourcery.com>

	* config/sh/sh.md: Don't use union real_extract.

2002-04-02  Richard Henderson  <rth@redhat.com>

	* libgcc2.c (__bb_exit_func): Revert 03-31 change.

2002-04-02  David O'Brien  <obrien@FreeBSD.org>

	* config.gcc (i386-dg-dgux, i386-go32-msdos , i386-go32-rtems,
	i386-ibm-aix, i386-moss-msdos, i386-ncr-sysv4, i386-next-,
	i386-pc-msdosdjgpp, i386-sequent-bsd, i386-sequent-ptx1,
	i386-sequent-ptx2, i386-sequent-ptx4, i386-sun-sunos,
	i386-wrs-vxworks, i386-*-aout, i386-*-beoself, i386-*-bsd,
	i386-*-bsdi, i386-*-chorusos, i386-*-coff, i386-*-elf,
	i386-*-freebsd5, i386-*-freebsd-aout, i386-*-gnu, i386-*-interix,
	i386-*-interix3, i386-*-isc, i386-*-linux, i386-*-linuxaout,
	i386-*-linuxoldld, i386-*-lynxos, i386-*-mach, i386-*-mingw32,
	i386-*-netbsd, i386-*-netbsdelf, i386-*-netware, i386-*-openbsd,
	i386-*-osf1, i386-*-osfrose, i386-*-pe , i386-*-rtems,
	i386-*-rtemscoff, i386-*-sco3.2v5, i386-*-solaris2, i386-*-sysv,
	i386-*-sysv4, i386-*-sysv5, i386-*-udk, i386-*-uwin, i386-*-vsta,
	i386-*-win32, x86_64-*-freebsd5, x86_64-*-linux, x86_64-*-netbsd):
	Include as many configury headers via tm_file as possible.  This
	includes among others i386/unix.h, i386/bsd.h, i386/gas.h.
	* config/openbsd-oldgas.h: New file.
	* config/i386/386bsd.h, config/i386/aix386ng.h, config/i386/att.h,
	config/i386/bsd.h, config/i386/djgpp.h, config/i386/freebsd-aout.h,
	config/i386/gas.h, config/i386/gstabs.h, config/i386/i386-aout.h,
	config/i386/i386-coff.h, config/i386/i386-interix.h,
	config/i386/iscdbx.h, config/i386/linux-aout.h,
	config/i386/linux-oldld.h, config/i386/lynx-ng.h, config/i386/lynx.h,
	config/i386/mach.h, config/i386/netbsd.h, config/i386/next.h,
	config/i386/openbsd.h, config/i386/osfelf.h, config/i386/osfrose.h,
	config/i386/sco5.h, config/i386/seq-gas.h, config/i386/seq-sysv3.h,
	config/i386/seq2-sysv3.h, config/i386/sequent.h, config/i386/sun.h,
	config/i386/sun386.h, config/i386/svr3dbx.h, config/i386/svr3gas.h,
	config/i386/sysv3.h, config/i386/uwin.h, config/i386/vsta.h,
	config/i386/vxi386.h: Do not directly include configury headers.
	* config/i386/cygwin.h, config/i386/djgpp.h, config/i386/win32.h:
	Directly include configury headers that are no longer automatically
	included by the above headers.
	* config/i386/att.h, config/i386/bsd.h (TARGET_VERSION): Do not define.
	* config/i386/386bsd.h, config/i386/aix386ng.h, config/i386/cygwin.h,
	config/i386/djgpp.h, config/i386/i386-aout.h, config/i386/i386-coff.h,
	config/i386/lynx-ng.h, config/i386/lynx.h, config/i386/mach.h,
	config/i386/netbsd.h, config/i386/openbsd.h, config/i386/rtems.h,
	config/i386/seq-sysv3.h, config/i386/sequent.h, config/i386/svr3gas.h,
	config/i386/sysv3.h, config/i386/vsta.h, config/i386/vxi386.h
	(TARGET_VERSION): Define.
	* config/i386/beos-elf.h, config/i386/freebsd.h,
	config/i386/i386-interix.h, config/i386/i386elf.h, config/i386/linux.h,
	config/i386/linux64.h, config/i386/netbsd-elf.h, config/i386/netbsd64.h,
	config/i386/osfelf.h, config/i386/osfrose.h, config/i386/ptx4-i.h,
	config/i386/sco5.h, config/i386/sysv4.h
	(TARGET_VERSION): Do not need to protect.
	* config/i386/freebsd64.h (TARGET_VERSION): Fix style.
	* config/i386/386bsd.h, config/i386/cygwin.h, config/i386/djgpp.h,
	config/i386/freebsd-aout.h, config/i386/i386-aout.h,
	config/i386/i386-interix.h, config/i386/linux-aout.h,
	config/i386/linux-oldld.h, config/i386/mach.h, config/i386/netbsd.h,
	config/i386/openbsd.h, config/i386/vsta.h, config/i386/win32.h
	(YES_UNDERSCORES): Do not define - not needed.
	* config/i386/bsd.h, config/i386/gas.h (LPREFIX,
	ASM_GENERATE_INTERNAL_LABEL, ASM_OUTPUT_INTERNAL_LABEL,
	USER_LABEL_PREFIX): Do not handle the "NO_UNDERSCORES" case.
	* config/i386/i386-coff.h, config/i386/lynx.h, config/i386/lynx-ng.h
	(LPREFIX, ASM_GENERATE_INTERNAL_LABEL, ASM_OUTPUT_INTERNAL_LABEL,
	USER_LABEL_PREFIX): Define. (handles the "NO_UNDERSCORES" case)
	* config/i386/isc.h: Preserve comment from config/i386/isccoff.h.
	* config/i386/isccoff.h, config/i386/v3gas.h: Remove.

2002-04-02  Eric Botcazou  <ebotcazou@multimania.com>
	    Richard Henderson  <rth@redhat.com>

	PR c/5484
	* function.c (assign_temp): Accept either type or decl argument.
	Detect variables whose size is too large to fit into an integer.
	* stmt.c (expand_decl): Pass the decl, not the type.

2002-04-02  David O'Brien  <obrien@FreeBSD.org>

	* protoize.c: Match include directory usage with cppdefault.c.

2002-04-03  Jeffrey A Law  (law@redhat.com)
	    Hans-Peter Nilsson  <hp@bitrange.com>

	* combine.c (simplify_comparison): Avoid narrowing a comparison
	with a paradoxical subreg when doing so would drop signficant bits.

2002-04-02  Steve Ellcey  <sje@cup.hp.com>

	* builtins.c (expand_builtin_prefetch): Force op0 pointer to Pmode
	if POINTERS_EXTEND_UNSIGNED is defined.

2002-04-02  Richard Henderson  <rth@redhat.com>

	PR opt/3967
	* local-alloc.c (contains_replace_regs): LO_SUM may contain
	replace regs.

2002-04-02  Richard Henderson  <rth@redhat.com>

	* doc/standards.texi: Document required freestanding libc entry points.

2002-04-02  Alan Modra  <amodra@bigpond.net.au>

	* config/rs6000/rs6000.md (ctrdi*): Add FPR constraint and
	associated splitter.  Remove MQ constraint.
	(ctrdi_internal4): Correct CCmode clobber.

2002-04-02  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* milli64.S ($$dyncall): New function.
	* t-linux (LIB1ASMFUNCS): Revise module list.
	(LIB1ASMSRC): Use pa/milli64.S.

2002-04-02  Richard Henderson  <rth@redhat.com>

	* fixinc/inclhack.def (AAB_solaris_sys_varargs_h): Move and
	rename solaris_sys_varargs_h.

Tue Apr  2 06:47:40 2002  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* stor-layout.c (layout_type, case ARRAY_TYPE): Give one-element array
	the same mode as its component.

2002-04-02  Richard Henderson  <rth@redhat.com>

	PR opt/190
	* final.c (this_is_asm_operands): Export.
	* output.h (this_is_asm_operands): Declare.
	* config/i386/i386.c (print_operand): Error odd asm operands.

2002-04-02  Richard Henderson  <rth@redhat.com>

	PR opt/420
	* config/m68k/m68k.md (dbcc peepholes): Match four forms of dbra.

2002-04-01  Richard Henderson  <rth@redhat.com>

	PR target/1538
	* fixinc/inclhack.def (solaris_sys_varargs_h): New.
	* fixinc/fixincl.x: Rebuild.

2002-04-01  Richard Henderson  <rth@redhat.com>

	* config/ia64/unwind-ia64.c: Include ia64intrin.h.
	(atomic_alloc, atomic_free): New.
	(SIZE, MASK_FOR, PTR_IN): New.
	(emergency_reg_state, emergency_reg_state_free): New.
	(emergency_labeled_state, emergency_labeled_state_free): New.
	(reg_state_alloced, labeled_state_alloced): New.
	(alloc_reg_state, free_reg_state): New.
	(alloc_label_state, free_label_state, free_label_states): New.
	(push, pop, dup_state_stack, free_state_stack): Use them.
	(desc_label_state): Likewise.
	(uw_frame_state_for): Free label states and state stack.
	(uw_update_reg_address): Eliminate warnings.

2002-04-01  Vladimir Makarov  <vmakarov@redhat.com>

	* config/pa/pa-pro-end.h (ASM_OUTPUT_ALIGNED_COMMON,
	ASM_OUTPUT_ALIGNED_LOCAL): Redefine them.

2002-04-01  Neil Booth  <neil@daikokuya.demon.co.uk>

	* c-decl.c (grokdeclarator): Update.
	* c-lang.c (LANG_HOOKS_MARK_ADDRESSABLE): Redefine.
	* c-tree.h (c_mark_addressable): New.
	* c-typeck.c (default_function_array_conversion, build_unary_op,
	build_array_ref, convert_for_assignment): Update.
	(mark_addressable): Rename.
	* calls.c (try_to_integrate, expand_call): Use langhook.
	* expr.c (expand_expr): Use langhook.
	* langhooks-def.h (LANG_HOOKS_INITIALIZER): Update.
	* langhooks.h (struct lang_hooks): New hook.
	* stmt.c (expand_asm_operands): Use langhook.
	* tree.h (mark_addressable): Remove.
objc:
	* objc-lang.c (LANG_HOOKS_MARK_ADDRESSABLE): Redefine.

2002-04-01  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/xtensa.c (xtensa_va_arg): Fix compiler warning
	in previous change.

2002-04-01  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/xtensa.c (xtensa_va_arg): Fix to handle arguments
	for which MUST_PASS_IN_STACK is true (e.g., variable-sized types).

2002-04-01  Neil Booth  <neil@daikokuya.demon.co.uk>

	* c-common.c (unsigned_conversion_warning, convert_and_check,
	unsigned_type, signed_type, shorten_compare,
	c_common_get_alias_set, c_common_nodes_and_builtins): Use new hooks.
	(unsigned_type, signed_type, signed_or_unsigned_type): Rename.
	* c-common.h (unsigned_type, signed_type, signed_or_unsigned_type):
	New.
	* c-decl.c (grokdeclarator): Update.
	* c-format.c (check_format_types): Update.
	* c-lang.c (LANG_HOOKS_SIGNED_TYPE, LANG_HOOKS_UNSIGNED_TYPE,
	LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): New.
	* c-typeck.c (build_binary_op, convert_for_assignment): Update.
	* convert.c (convert_to_integer): Use new hooks.
	* expmed.c (make_tree): Use new hooks.
	* expr.c (store_expr): Use new hooks.
	* fold-const.c (operand_equal_for_comparison_p, build_range_check,
	all_ones_mask_p, unextend, fold): Use new hooks.
	* langhooks.h (struct lang_hooks_for_types): New hooks.
	* tree.h (signed_or_unsigned_type, signed_type,
	unsigned_type): Remove.
objc:
	* objc-lang.c (LANG_HOOKS_SIGNED_TYPE, LANG_HOOKS_UNSIGNED_TYPE,
	LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): New.

2002-03-31  Richard Henderson  <rth@redhat.com>

	* config/ia64/unwind-ia64.c (alloc_spill_area): Fix offset.
	(desc_frgr_mem): Fix reference to f16-f31.

2002-03-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* rtl.h (RTL_CHECK1, RTL_CHECK2, RTL_CHECKC1, RTL_CHECKC2,
	RTVEC_ELT): Const-ify.
	* varray.h (VARRAY_CHECK): Const-ify.
	* ggc.h (ggc_mark_rtx, ggc_mark_tree, ggc_mark_nonnull_tree,
	ggc_mark_rtvec, ggc_mark): Const-ify.

2002-04-01  Neil Booth  <neil@daikokuya.demon.co.uk>

	* diagnostic.c: Include langhooks-def.h.
	* Makefile.in (diagnostic.o): Update.

2002-03-31  Neil Booth  <neil@daikokuya.demon.co.uk>

	* c-common.c (c_unsafe_for_reeval): Rename.
	* c-common.h (c_unsafe_for_reeval): Rename.
	* c-decl.c (finish_incomplete_decl): Rename.
	(c_init_decl_processing): Don't set langhook.
	* c-lang.c (LANG_HOOKS_FINISH_INCOMPLETE_DECL,
	LANG_HOOKS_UNSAFE_FOR_REEVAL): Redefine.
	* c-objc-common.c (c_objc_common_init): Don't set langhook.
	* c-tree.h (finish_incomplete_decl): Rename.
	* langhooks-def.h (lhd_unsafe_for_reeval): New.
	(LANG_HOOKS_FINISH_INCOMPLETE_DECL, LANG_HOOKS_UNSAFE_FOR_REEVAL): New.
	(LANG_HOOKS_INITIALIZER): Update.
	* langhooks.c (lhd_unsafe_For_reeval): New.
	* langhooks.h (struct langhooks): New hooks.
	* toplev.c (incomplete_decl_finalize_hook): Remove.
	(wrapup_global_declarations): Update.
	* tree.c (lang_unsafe_for_reeval): Remove.
	(unsafe_for_reeval): Update.
	* tree.h (lang_unsafe_for_reeval, incomplete_decl_finalize_hook):
	Remove.
objc:
	* objc-lang.c (LANG_HOOKS_FINISH_INCOMPLETE_DECL,
	LANG_HOOKS_UNSAFE_FOR_REEVAL): Redefine.

2002-03-31  Neil Booth  <neil@daikokuya.demon.co.uk>

	* diagnostic.c (print_error_function): Remove.
	(default_print_error_function): Rename.
	(report_error_function): Update.
	* diagnostic.h (print_error_function): Remove.
	(default_print_error_function): Remove.
	* langhooks-def.h (struct diagnostic_context): Predeclare.
	(lhd_print_error_function, LANG_HOOKS_PRINT_ERROR_FUNCTION): New.
	(LANG_HOOKS_INITIALIZER): Update.
	* langhooks.h (struct diagnostic context): Predeclare.
	(struct lang_hooks): New hook.

2002-03-31  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* config/rs6000/rs6000.h (RS6000_PIC_OFFSET_TABLE_REGNUM): New.
	(PIC_OFFSET_TABLE_REGNUM): Use it and return INVALID_REGNUM if
	!flag_pic.
	(CONDITIONAL_REGISTER_USAGE): Adjust accordingly.
	* config/rs6000/rs6000.h: Use RS6000_PIC_OFFSET_TABLE_REGNUM instead
	of PIC_OFFSET_TABLE_REGNUM thruout.
	* config/rs6000/rs6000.md: Likewise.
	* config/rs6000/darwin.h: Likewise.

Sun Mar 31 14:43:24 2002  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* emit-rtl.c (adjust_address_1, offset_address): Cast value to
	unsigned HOST_WIDE_INT, not unsigned int.

2002-03-31  Jakub Jelinek  <jakub@redhat.com>

	PR middle-end/6096, middle-end/6098, middle-end/6099
	* reorg.c (emit_delay_sequence): Only increment LABEL_NUSES for
	CODE_LABELs.
	(fill_slots_from_thread): Likewise.

2002-03-31  Jakub Jelinek  <jakub@redhat.com>

	* config/sparc/sparc.c (function_arg_record_value_1): Pass complex
	floating fields in float regs.
	(function_arg_record_value_2): Likewise.

2002-03-31  Hans-Peter Nilsson  <hp@bitrange.com>

	* config/mmix/mmix.md (define_constants): Remove misleading
	FIXME.  Add MMIX_fp_rO_OFFSET.
	("nonlocal_goto_receiver"): Don't have stack-frame address of
	saved rO as part of the pattern.  Remove FIXME.
	("*nonlocal_goto_receiver_expanded"): Similar.  Generate address
	here, at output-time.

2002-03-31  Jakub Jelinek  <jakub@redhat.com>

	PR middle-end/6100
	* config/sparc/sparc.c (output_cbranch): Use REG_BR_PROB, not
	REG_BR_PRED.
	(output_v9branch): Likewise.

2002-03-31  Alexandre Oliva  <aoliva@redhat.com>

	* gcc.c: Revert previous patch for now.
	* config/i386/djgpp.h: Likewise.

2002-03-31  Hans-Peter Nilsson  <hp@bitrange.com>

	* config/mmix/crti.asm (_init): Register _fini with atexit.
	* config/mmix/crtn.asm (_fini): Add omitted "POP 0,0".

2002-03-31  Richard Henderson  <rth@redhat.com>

	PR target/3997
	* config/alpha/elf.h (ASM_OUTPUT_DEF): Tidy.
	(ASM_OUTPUT_DEF_FROM_DECLS): New.

2002-03-31  Richard Henderson  <rth@redhat.com>

	* libgcc2.c (__bb_exit_func): Make static.

	* config/alpha/alpha.md (trap): New.

2002-03-31  Richard Henderson  <rth@redhat.com>

	* builtins.c (expand_builtin_va_arg): Give warnings not errors for
	promoted argument types; build trap.
	(expand_builtin_trap): New.
	(expand_builtin): Use it.
	* stmt.c (expand_nl_goto_receivers): Likewise.
	* expr.h (expand_builtin_trap): Declare.
	* libfuncs.h (LTI_abort, abort_libfunc): New.
	* optabs.c (init_optabs): Init abort_libfunc.

2002-03-31  Alexandre Oliva  <aoliva@redhat.com>

	* gcc.c (LIBGCC_SPEC): Folded %L and duplicate %G here...
	(LINK_COMMAND_SPEC): ... from here.
	(init_gcc_specs): Duplicate it here too, omitting
	shared_name in the second copy.
	(init_spec): Test for duplicate
	* config/i386/djgpp.h (LINK_COMMAND_SPEC): Remove `%L %G'.

2002-03-30  David S. Miller  <davem@redhat.com>

	* config/sparc/linux.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define.
	* config/sparc/linux64.h (HANDLE_PRAGMA_PACK_PUSH_POP): Likewise.

2002-03-30  Roger Sayle <roger@eyesopen.com>
	    Richard Henderson  <rth@redhat.com>

	* regmove.c (combine_stack_adjustments_for_block): Avoid
	emitting a stack adjustment of zero bytes.  Let delete_insn
	update bb->head.

2002-03-30  Richard Henderson  <rth@redhat.com>

	* config/sparc/sparc.c: Remove all references to TARGET_EPILOGUE.
	(sparc_emitting_epilogue): New.
	(leaf_label, output_return, sparc_return_peephole_ok): Remove.
	* config/sparc/sparc-protos.h: Update.
	* config/sparc/sparc.h (MASK_EPILOGUE, TARGET_EPILOGUE): Remove.
	(TARGET_SWITCHES): Update.
	* config/sparc/sparc.md (return): Remove.
	(return_*): Use sparc_emitting_epilogue, not !TARGET_EPILOGUE.
	* config/sparc/freebsd.h, config/sparc/linux64.h, config/sparc/lite.h,
	config/sparc/liteelf.h, config/sparc/netbsd-elf.h,
	config/sparc/sol2-sld-64.h, config/sparc/sol2.h,
	config/sparc/sp64-aout.h, config/sparc/sp64-elf.h,
	config/sparc/sp86x-aout.h, config/sparc/sp86x-elf.h,
	config/sparc/splet.h, config/sparc/vxsparc64.h (TARGET_DEFAULT):
	Remove MASK_EPILOGUE.
	* doc/invoke.texi: Update.

2002-03-30  Daniel Berlin  <dan@dberlin.org>

	* dwarf2out.c (dwarf2out_define): Remove start_source_file call,
	CPP will start the file for us.

2002-03-30  Richard Henderson  <rth@redhat.com>

	PR target/5446
	* config/ia64/ia64.c (group_barrier_needed_p): Special case
	prologue_allocate_stack.
	(ia64_single_set): Use insn codes for recognition of special
	cases, not rtl matching.
	* config/ia64/ia64.md (prologue_allocate_stack): Op 3 is in-out.

Sat Mar 30 23:48:41 CET 2002  Jan Hubicka  <jh@suse.cz>

	* cfgbuild.c (find_basic_blocks_1): Clear aux for blocks.

2002-03-30  Richard Henderson  <rth@redhat.com>

	PR target/6032
	* config/sparc/sparc.h (OVERRIDE_OPTIONS): Don't override -fpic
	or -fomit-frame-pointer with profiling.
	(SUBTARGET_OVERRIDE_OPTIONS): Remove.
	(FUNCTION_PROFILER): Do nothing.
	(PROFILE_HOOK): New.
	* config/sparc/sparc.c (sparc_override_options): Don't check
	code models for profiling.
	(sparc_function_profiler): Remove.
	(sparc_profile_hook): New.
	* config/sparc/sparc-protos.h: Update.

2002-03-30  Jakub Jelinek  <jakub@redhat.com>

	PR optimization/6086
	* combine.c (combine_simplify_rtx): If simplify_rtx failed because
	of SUBREG of volatile MEM or because the MEM was mode dependent,
	return CLOBBER instead of unmodified SUBREG.

Sat Mar 30 14:08:55 CET 2002  Jan Hubicka  <jh@suse.cz>

	* local-alloc.c (local_alloc): Avoid call of update_equiv_regs
	when not optimizing.

	* toplev.c (rest_of_compilation): Cann mark_constant_function
	only when optimizing.

	* flow.c (calculate_global_regs_live): Ensure that all AUX fields
	are NULL.

	* cfgcleanup.c (bb_flags): Add BB_NONTHREADABLE_BLOCK.
	(thread_jump): Set BB_NONTHREADABLE_BLOCK, check it.
	(try_optimize_cfg): clear all AUX fields.

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

2002-03-29  Richard Henderson  <rth@redhat.com>

	PR target/5672
	* expr.c (expand_expr): Pass along EXPAND_INITIALIZER one more place.

2002-03-29  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* config/rs6000/rs6000.c (rs6000_va_arg): Correctly set register count
	for aggregate and TFmode types.

2002-03-29  Hans-Peter Nilsson  <hp@bitrange.com>

	* cfg.c (dump_flow_info): Guard against NULL regno_reg_rtx[i].

2002-03-29  Richard Henderson  <rth@redhat.com>

	PR target/5886
	* config/ia64/aix.h (CPP_PREDEFINES): Add -D_LP64.
	* config/ia64/hpux.h, config/ia64/linux.h: Likewise.

2002-03-29  Richard Henderson  <rth@redhat.com>

	PR target/6041
	* config/i386/i386.c (x86_arch_always_fancy_math_387): New.
	(override_options): Disable NO_FANCY_MATH_387 if the arch allows.
	* config/i386/i386.h (x86_arch_always_fancy_math_387): New.
	* config/i386/i386.md (sqrtxf2, sqrtextendsfxf2, sinxf2): Fix
	conditional.
	* docs/invoke.texi: Update -mno-fancy-math-387 docs.

2002-03-29  Dale Johannesen <dalej@apple.com>

	* loop.c (combine_movables): Do allow combination of pseudos.

2002-03-29  Loren J. Rittle  <ljrittle@acm.org>

	* config.gcc (*-*-freebsd*): Enable creation of libgcc_s.so.
	* config/t-slibgcc-elf-ver (SHLIB_LC): Add macro and use it.
	No functional change except ...
	* config/t-slibgcc-nolc-override (SHLIB_LC): Override it.  New file.
	* doc/install.texi (*-*-freebsd*): Document port configuration.

2002-03-29  Neil Booth  <neil@daikokuya.demon.co.uk>

	* Makefile.in (convert.o, calls.o, expmed.o): Update.
	* attribs.c (handle_mode_attribute, handle_vector_size_attribute):
	Use new hooks.
	* builtin-types.def (BT_PTRMODE): Update.
	* c-common.c (type_for_size): Rename c_common_type_for_size.
	(type_for_mode): Similarly.
	(shorten_compare, pointer_int_sum, c_common_nodes_and_builtins):
	Use new hook.
	* c-bommon.h (c_common_type_for_size, c_common_type_for_mode): New.
	* c-decl.c (finish_enum, build_enumerator): Use new hooks.
	* c-lang.c (LANG_HOOKS_TYPE_FOR_MODE, LANG_HOOKS_TYPE_FOR_SIZE):
	Redefine.
	* c-typeck.c (common_type, comptypes, default_conversion):
	Use new hooks.
	* calls.c: Include langhooks.h.
	(emit_library_call_value_1): Use new hooks.  Avoid redundant
	calls.
	* convert.c: Include langhooks.h
	(convert_to_pointer, convert_to_integer): Use new hooks.
	* except.c (init_eh): Similarly.
	* expmed.c: Include langhooks.h.
	(expand_mult_add): Use new hooks.
	* expr.c (store_expr, store_constructor, expand_expr, do_jump,
	try_casesi): Similarly.
	* fold-const.c (optimize_bit_field_compare, make_range,
	decode_field_reference, fold_truthop, fold): Similarly.
	* function.c (assign_stack_local_1, assign_stack_temp_for_type,
	put_var_into_stack): Similarly.
	* langhooks-def.h (LANG_HOOKS_TYPE_FOR_MODE,
	LANG_HOOKS_TYPE_FOR_SIZE): New.
	(LANG_HOOKS_TYPES_INITIALIZER): Update.
	* langhooks.h (lang_hooks_for_types): New hooks.
	* stmt.c (expand_decl_cleanup, emit_case_nodes): Use new hooks.
	* tree.c (get_unwidened, get_narrower): Similarly.
	* tree.h (type_for_mode, type_for_size): Remove.
	* varasm.c (force_const_mem): Use new hooks.
	* utils2.c (nonbinary_modular_operation): Update.
objc:
	* objc-act.c (handle_impent): Update.
	* objc-lang.c (LANG_HOOKS_TYPE_FOR_MODE, LANG_HOOKS_TYPE_FOR_SIaZE):
	Redefine.

2002-03-29  Steve Ellcey  <sje@cup.hp.com>

	* config/ia64/ia64.md (*ptr_extend_plus_1, *ptr_extend_plus_2): New.
	* config/ia64/ia64.c (basereg_operand): New.
	* config/ia64/ia64-protos.h (basereg_operand): Declare.
	* config/ia64/ia64.h (PREDICATE_CODES): Add basereg_operand.

2002-03-29  Hans-Peter Nilsson  <hp@bitrange.com>

	* config/mmix/mmix.c (mmix_target_asm_function_prologue): Correct
	unwind information when frame_pointer_needed.
	(mmix_assemble_integer): Tweak wording in comment.

2002-03-29  Neil Booth  <neil@daikokuya.demon.co.uk>

	* Makefile.in (except.o): Update.
	* except.c: Include langhooks.h.
	(init_eh): Use langhook.
	* langhooks-def.h (LANG_HOOKS_MAKE_TYPE,
	LANG_HOOKS_FOR_TYPES_INITIALIZER): New.
	(LANG_HOOKS_INITIALIZER): Update.
	* langhooks.h (lang_hooks_for_types): New.
	(struct lang_hooks): Add it.
	* tree.c (make_lang_type_fn, make_lang_type): Remove.
	* tree.h (make_lang_type_fn, make_lang_type): Remove.
config:
	* alpha/alpha.c: Include langhooks.h.
	(alpha_build_va_list): Use langhook.
	* d30v/d30v.c: Include langhooks.h.
	(d30v_build_va_list): Use langhook.
	* i386/i386.c: Include langhooks.h.
	(ix86_build_va_list): Use langhook.
	* rs6000/rs6000.c (rs6000_build_va_list): Use langhook.
	* s390/s390.c: Include langhooks.h.
	(s390_build_va_list): Use langhook.
	* stormy16/stormy16.c: Include langhooks.h.
	(stormy16_build_va_list): Use langhook.

2002-03-29  Jakub Jelinek  <jakub@redhat.com>

	PR c++/5964
	* config/sparc/sparc.md (empty_delay_slot, branch_type): New
	attributes.
	(length): Compute variable length for branches/calls/jumps here.
	(branch, inverted_branch, normal_fp_branch, inverted_fp_branch,
	normal_fpe_branch, inverted_fpe_branch): Remove length attribute,
	define branch_type attribute.
	(divsi3_sp32): Maximum length is 6 not 7.
	(call_address_struct_value_sp32, call_symbolic_struct_value_sp32,
	call_address_untyped_struct_value_sp32,
	call_symbolic_untyped_struct_value_sp32): Set length to 3 not 2.
	* config/sparc/sparc.c (empty_delay_slot): New function.
	* config/sparc/sparc.h (ADJUST_INSN_LENGTH): Remove.
	* config/sparc/sparc-protos.h (empty_delay_slot): Add prototype.

2002-03-29  Jakub Jelinek  <jakub@redhat.com>

	* combine.c (set_nonzero_bits_and_sign_copies): Don't call
	nonzero_bits if not needed.
	(nonzero_bits) [XOR]: Likewise.
	(nonzero_bits) [REG]: Use reg_last_set_nonzero_bits even if
	reg_last_set_mode and mode are both MODE_INT, but not equal.
	(record_value_for_reg): Compute reg_last_set_nonzero_bits
	in nonzero_bits_mode for MODE_INT modes.

2002-03-28  Richard Henderson  <rth@redhat.com>

	PR target/5715
	* config/alpha/osf.h (ASM_SPEC): Don't pass any special options
	to GAS.  Correct drift between alternatives.

2002-03-28  Richard Henderson  <rth@redhat.com>

	PR target/6087
	* reload1.c (fixup_abnormal_edges): Move insn to edge via sequence.

2002-03-28  Alexandre Oliva  <aoliva@redhat.com>

	* config/i386/freebsd.h (LINK_SPEC): Don't pass default
	emulation to the linker.

2002-03-28  Loren J. Rittle  <ljrittle@acm.org>

	* config/alpha/freebsd.h (LINK_SPEC): Likewise.
	* config/sparc/freebsd.h (LINK_SPEC): Likewise.

Thu Mar 28 16:35:31 2002  Jeffrey A Law  (law@redhat.com)

	* combine.c (simplify_and_const_int): Make sure to apply mask
	when force_to_mode returns a constant integer.  PR3311.

2002-03-28  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* pa-linux.h (LOCAL_LABEL_PREFIX): Define.

2002-03-28  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* doc/invoke.texi (Warning Options): Refer to C++ Dialect Options
	and Objective-C Dialect Options.

2002-03-28  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.c (alpha_emit_conditional_branch): TFmode NE
	comparison should be done vs !=0 not >0 return code.  Tidy cases.

2002-03-28  Richard Henderson  <rth@redhat.com>

	* c-decl.c (finish_function): New arg can_defer_p.  Pass it
	on to c_expand_body.
	* c-tree.h (finish_function): Update decl.
	* c-objc-common.c, c-parse.in, objc/objc-act.c: Update calls.

Thu Mar 28 19:13:36 CET 2002  Jan Hubicka  <jh@suse.cz>

	* ifcvt.c (if_convert): Clear aux_for_blocks early enough.

Thu Mar 28 13:21:53 CET 2002  Jan Hubicka  <jh@suse.cz>

	* rtlanal.c: Include flags.h
	(may_trap_p): Do not mark FP operations if trapping
	if !flag_trapping_math
	* Makefile.in (rtlanal.o): Add dependency on flag.h
	* ifcvt.c (noce_operand_ok): Avoid the lameness.

2002-03-27  Zack Weinberg  <zack@codesourcery.com>

	* mips.md: Use dconst1, not 1.0, as first argument of
	REAL_VALUE_LDEXP.  Don't use union real_extract.

2002-03-28  Alan Modra  <amodra@bigpond.net.au>

	* configure.in (gcc_cv_as): Use $target_alias in directory searchs
	rather than $target.  Heed program_prefix and
	program_transform_name.  Search for gas in cross-compiler case too.
	"test -x" rather than "test -f".
	(gcc_cv_ld): Likewise.
	(gcc_cv_nm): Heed program_prefix and program_transform_name.
	(gcc_cv_objdump): Likewise.
	* configure: Regenerate.

2002-03-27  Neil Booth  <neil@daikokuya.demon.co.uk>

	* Makefile.in (attribs.o): Update.
	* attribs.c: Include langhooks.h.
	(decl_attributes): Use langhook.
	* c-decl.c (insert_default_attributes): Rename.
	* c-tree.h (c_insert_default_attributes): New.
	* langhooks-def.h (LANG_HOOKS_INSERT_DEFAULT_ATTRIBUTES):New.
	(LANG_HOOKS_INITIALIZER): Update.
	* langhooks.h (struct lang_hooks): New hook.
	* tree.h (insert_default_attributes): Remove.
objc:
	* objc-lang.c (LANG_HOOKS_INSERT_DEFAULT_ATTRIBUTES): Redefine.

2002-03-27  Andreas Schwab  <schwab@suse.de>

	* config/i386/i386.c (classify_argument): Also check for
	QUAL_UNION_TYPE.

2002-03-27  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* doc/install.texi (alpha*-dec-osf*): Don't need --enable-libgcj
	any more.

Wed Mar 27 23:19:30 CET 2002  Jan Hubicka  <jh@suse.cz>

	* i960.md (ret): Set PC.
	(nonlocal_goto): Fix expander.
	* builtins.c (epxand_builin_longjmp): Check that we've emitted
	some jump or call.

Wed Mar 27 23:11:35 CET 2002  Jan Hubicka  <jh@suse.cz>

	* optabs.c (emit_no_conflict_block, emit_libcall_block): Avoid nesting
	of libcall regions.

Wed Mar 27 22:54:14 CET 2002  Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz>

	* cfgrtl.c (merge_blocks_nomove): Use set_block_for_insn instead of
	assigning to BLOCK_FOR_INSN directly.

Wed Mar 27 22:33:05 CET 2002  Jan Hubicka  <jh@suse.cz>

	* i386.c (ix86_output_addr_diff_elt): Remove binutils bug workaround.

2002-03-27  Neil Booth  <neil@daikokuya.demon.co.uk>

	* c-common.c (c_expand_expr): Fix prototype.
	* c-common.h (c_expand_expr): Always declare, update.
	* c-lang.c (LANG_HOOKS_EXPAND_EXPR): Redefine.
	* c-objc-common.c (c_objc_common_init): No global hook.
	* expr.c (expand_expr): Use langhook.
	* expr.h (enum expand_modifier): Conditionally declare.
	* langhooks-def.h (lhd_expand_expr, LANG_HOOKS_EXPAND_EXPR): New.
	(LANG_HOOKS_INITIALIZER): Update.
	* langhooks.c (lhd_expand_expr): New.
	* langhooks.h (struct lang_hooks): New hook.
	* toplev.c (lang_expand_expr_t, lang_expand_expr): Delete.
	(lang_independent_init): Don't default hook.
objc:
	* objc-lang.c (LANG_HOOKS_EXPAND_EXPR): Redefine.

2002-03-27  Richard Henderson  <rth@redhat.com>

	PR target/6054
	* config/ia64/ia64.c (ia64_expand_call): Use pic patterns for
	TARGET_CONST_GP.  Simplify conditions.

2002-03-27  Richard Henderson  <rth@redhat.com>

	* config/sparc/freebsd.h, config/sparc/linux.h, config/sparc/linux64.h,
	config/sparc/netbsd-elf.h, config/sparc/pbd.h, config/sparc/sol2.h,
	config/sparc/vxsim.h (LOCAL_LABEL_PREFIX): Define.

2002-03-27  Danny Smith  <dannysmith@users.sourceforge.net>

	* config/i386/cygwin.h (TARGET_DLL, TARGET_WIN32,
	TARGET_CYGWIN, TARGET_WINDOWS): Remove unused switches.
	(MASK_DLL, MASK_WIN32, MASK_CYGWIN, MASK_WINDOWS):
	Remove unnecessary masks.
	(MASK_NOP_FUN_DLLIMPORT): Use an unused an bit.
	(SUBTARGET_SWITCHES): Use empty masks for -mwin32, -mcygwin,
	-mwindows, -mdll switches and their negations.

2002-03-27  Neil Booth  <neil@daikokuya.demon.co.uk>

	* gcc-common.c (lang_mark_false_label_stack): Remove.
	* ggc.h (lang_mark_false_label_stack): Similarly.

2002-03-26  Vladimir Makarov  <vmakarov@redhat.com>

	* pa/pa-pro-end.h (CPP_PREDEFINES): Add -D__pro__.

	* pa/lib2funcs.asm: Don't use .SPACE and .SUBSPACE if __pro__
	or __rtems_ is defined.

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

	* config/alpha/alpha.c (alpha_emit_set_const): Add a REG_EQUAL note
	if a non-trivial load was emitted.
	(alpha_emit_set_const_1): Remove obsolete extension.  Fix thinko
	in high+extra+low case.

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

	* config.gcc (sparc*-solaris): Use float_format=sparc.

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

	* config/sparc/sparc.h (MAX_WCHAR_TYPE_SIZE): Don't define.
	* config/sparc/linux-aout.h (MAX_WCHAR_TYPE_SIZE): Don't undef.
	* config/sparc/linux.h, config/sparc/linux64.h: Likewise.
	* config/sparc/sol2.h (WCHAR_TYPE, WCHAR_TYPE_SIZE): Redefine.
	(WINT_TYPE_SIZE): Fix at 32.

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

	* toplev.c (rest_of_compilation): Delay emit_initial_value_sets
	until after eh landing pad generation.
	* config/alpha/alpha.c (alpha_gp_save_rtx): Use gen_mem_addressof.
	* config/alpha/alpha.md (exception_receiver_2): Only accept MEMs.

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

	* expr.h (ADD_PARM_SIZE): One more convert for INC.

2002-03-26  Phil Edwards  <pme@gcc.gnu.org>

	* gcc.c (cpp_options):  Preserve relative ordering of -pedantic
	and warning switches.
	(cc1_options):  Likewise.

2002-03-26  Hans Boehm <Hans_Boehm@hp.com>

	* config/ia64/linux.h (MD_FALLBACK_FRAME_STATE_FOR):
	Restore more of the signal context.  Set no_reg_stack_frame.
	* config/ia64/unwind-ia64.c (unw_state_record):
	Add no_reg_stack_frame, comments.
	(uw_frame_state_for): Initialize when field to UNW_WHEN_NEVER.
	(uw_update_context): Adjust bsp when unwinding from leaf,
	but not signal frame.

2002-03-26  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/aix51.h (WCHAR_TYPE): Define.

2002-03-26  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/xtensa.c (xtensa_va_arg): Handle variable-sized types.

2002-03-26  Richard Earnshaw  <rearnsha@arm.com>

	PR target/5621
	* arm.md (define_asm_attributes): Reapply patch of Thu Sep 9, 1999:
	"Add a pool_range attribute", which was lost during the ARM/Thumb
	merge.

2002-03-26  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/xtensa.c (xtensa_valid_move): Allow move from
	a register into the MAC16 accumulator.

2002-03-26  Andrew Cagney  <ac131313@redhat.com>

	* doc/invoke.texi (Option Summary): Mention -Wswitch-enum.
	(Warning Options): Document -Wswitch-enum.
	* toplev.c (W_options): Add -Wswitch-enum.  Update comment on
	-Wswitch.
	(warn_switch_enum): Define variables.
	* flags.h (warn_switch_enum): Declare variables.
	* stmt.c (expand_end_case_type): When warn_switch_enum /
	-Wswitch-enum, perform switch checks.
	Fix PR c/5044.

2002-03-26  Richard Earnshaw  <rearnsha@arm.com>

	* arm.md (reload_mulsi3, reload_mulsi_compare0, reload_muladdsi)
	(reload_mulsi_compare0_scratch, reload_muladdsi_compare0)
	(reload_muladdsi_compare0_scratch): Delete.

2002-03-26  Loren J. Rittle  <ljrittle@acm.org>

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

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

	* expr.h (ADD_PARM_SIZE): Cast INC to ssizetype.
	(SUB_PARM_SIZE): Cast DEC to ssizetype.

	* config/alpha/alpha.c (alpha_va_arg): Read MUST_PASS_IN_STACK
	types from the normal argument frame.

	* config/sparc/sparc.c (function_arg_pass_by_reference): Pass
	variable sized objects by reference.
	(sparc_va_arg): Receive them by reference too.

2002-03-26  Hartmut Penner  <hpenner@de.ibm.com>

	* config/s390/s390.c (s390_emit_epilogue): Change epilogue
	code to not restoring global registers.

2002-03-26  Neil Booth  <neil@daikokuya.demon.co.uk>

	* Makefile.in (ggc-common.o): Update.
	* c-decl.c (lang_mark_tree): Rename c_mark_tree.
	* c-lang.c (LANG_HOOKS_MARK_TREE): Redefine.
	* c-tree.h (c_mark_tree): New.
	* ggc-common.c: Include langhooks.h.
	(gcc_mark_trees): Use new langhook.
	* ggc-callbacks.c: Delete file.
	* ggc.h (lang_mark_tree): Remove.
	* langhooks-def.h (LANG_HOOKS_MARK_TREE): New.
	(LANG_HOOKS_INITIALIZER): Update.
	* langhooks.h (struct lang_hooks): New hook.
objc:
	* objc-lang.c (LANG_HOOKS_MARK_TREE): Redefine.

2002-03-25  Zack Weinberg  <zack@codesourcery.com>

	* doc/cpp.texi: Exclude entire Top node from printed manual.
	Move option index after directive index.  Insert page breaks
	before GFDL and concept index.  Index environment variables
	with command line options.
	* doc/cppenv.texi: Use @vtable for environment variable list.
	Add paragraph explaining semantics of empty elements in path
	variables.  Exclude a cross-reference to Fishkill from the
	manpage.  Remove an unnecessary cross-reference of the entry
	right above the referer.  Don't use @anchor in text that goes
	into manpage.
	* doc/cppopts.texi: Cross-reference the environment variables
	section, not the specific environment variable, for consistency.

2002-03-25  Richard Henderson  <rth@redhat.com>

	* recog.c (peephole2_optimize): Distribute EH_REGION -1 notes
	anywhere in the block.  Don't refer to insns that have been
	removed from the chain.  Iterate backward through the new insns.
	Don't refer to edges that have been removed.

2002-03-26  Alan Modra  <amodra@bigpond.net.au>

	* combine.c (simplify_comparison <ASHIFTRT, LSHIFTRT>): Correct
	test for overflow of constant.

2002-03-25  Richard Earnshaw  <rearnsha@arm.com>

	PR target/2623
	* arm.md (loadhi_preinc, loadhi_predec, loadhi_shiftpreinc)
	(loadhi_shiftpredec, loadhi-with-writeback peephole): Don't use
	these patterns on arm_archv4.

2002-03-25  Danny Smith  <dannysmith@sourceforge.users.net>

	* config/i386/mingw32.h (WINT_TYPE): Define as "short unsigned
	int".

2002-03-25  Zack Weinberg  <zack@codesourcery.com>

	* toplev.c: Don't include setjmp.h.  Kill float_handler_set,
	float_handled, float_handler, float_signal, set_float_handler,
	and do_float_handler.  Set handler for SIGFPE to crash_signal.
	* toplev.h: Don't prototype do_float_handler.

	* c-lex.c: Fold parse_float into lex_number.  Make warning
	about portability of hex float constants more informative, and
	don't issue it on top of a syntax error.
	* fold-const.c: Fold const_binop_1 and fold_convert_1 into
	their callers.
	* real.h: Define REAL_VALUE_ABS here...
	* simplify-rtx.c: ... not here.  Fold check_fold_consts,
	simplify_unary_real, simplify_binary_real, and
	simplify_binary_is2orm1 into their callers.
	* tree.c: Fold build_real_from_int_cst_1 into caller.

	* doc/tm.texi: Document REAL_VALUE_ABS and REAL_VALUE_NEGATIVE.

	* tsystem.h: Include float.h here...
	* libgcc2.c: ... not here.

2002-03-25  Nick Clifton  <nickc@cambridge.redhat.com>

	Fixes for: PR bootstrap/3591, target/5676
	* config/mcore/mcore.h (CC1_SPEC): Define only if not already
	defined.  Do not disable exceptions or rtti.
	* config/mcore/mcore-pe.h (CC1_SPEC): Define before including
	mcore.h.  Disable exceptions and rtti, since they are not
	supported by EPOC.

2002-03-25  Neil Booth  <neil@daikokuya.demon.co.uk>

	* c-decl.c (maybe_build_cleanup): Remove.
	* expr.c (expand_expr): Use langhook.
	* langhooks-def.h (lhd_return_null_tree,
	LANG_HOOKS_MAYBE_BUILD_CLEANUP): New.
	(LANGHOOKS_INITIALIZER): Update.
	* langhooks.c (lhd_return_null_tree): New.
	* langhooks.h (struct lang_hooks): New hook.
	* tree-inline.c (initialize_inlined_parameters): Use langhook.
	* tree.h (maybe_build_cleanup): Remove.

2002-03-25  Jakub Jelinek  <jakub@redhat.com>

	* regrename.c (build_def_use): Move recog_memoized
	before extract_insn.

2002-03-25  Jakub Jelinek  <jakub@redhat.com>

	PR target/6043
	* expr.c (emit_group_store): Handle storing into CONCAT.

2002-03-25  Jakub Jelinek  <jakub@redhat.com>

	* regrename.c (build_def_use): Share RTL between MATCH_OPERATOR and
	corresponding MATCH_DUP.

2002-03-24  Richard Henderson  <rth@redhat.com>

	* unroll.c (unroll_loop): Zero label_map.

	* gcse.c: Include except.h.
	* Makefile.in (gcse.o): Update.

2002-03-24  Richard Henderson  <rth@redhat.com>

	* varasm.c (asm_emit_uninitialised): Revert 2002-03-14 change.
	Do resolve_unique_section before shared data clause.

2002-03-24  Richard Henderson  <rth@redhat.com>

	* config/alpha/elf.h (STARTFILE_SPEC): Use crtbeginT with -static.

2002-03-24  Richard Henderson  <rth@redhat.com>

	* recog.c (peephole2_optimize): Split blocks when EH insns are
	generated in the middle of a block.  Do global life update if
	zapped EH edges.

2002-03-24  Richard Henderson  <rth@redhat.com>

	* mips.c (mips_function_value): Only promote_mode for non-libcalls.

2002-03-24  Neil Booth  <neil@daikokuya.demon.co.uk>

	preprocessor/3951
	* gcc.c (cpp_options): Pass -MD through as -MD not -M -MF.
	* cppinit.c (cpp_handle_option): Set no_ouput if -MD or -MMD.
	(init_dependency_output): Don't make no_output decision here.

2002-03-24  Andrew Cagney  <ac131313@redhat.com>

	* stmt.c (check_for_full_enumeration_handling): Remove tests of
	warn_switch.  Update description.
	(expand_end_case_type): Call check_for_full_enumeration_handling
	when warn_switch.

2002-03-24  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/m68hc11.c (m68hc11_autoinc_compatible_p): New function.
	(m68hc11_split_move): Call it to see if the source and destination
	operands use the same direction auto inc/dec mode, otherwise make the
	source an offsetable memory operand and generate an add.

2002-03-24  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/m68hc11.md ("*subsi3_zero_extendhi"): Allow address
	register for operand 2.
	("*subsi3_zero_extendqi"): Likewise.
	("*iorhi3_gen"): Do the operation on the upper bits and then lower
	bits so that it is compatible with a pop.
	("*andhi3_gen"): Likewise.
	("xorhi3"): Likewise.

2002-03-24  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cppinit.c (cpp_handle_option): Set warn_endif_labels if
	-pedantic here...
	(cpp_post_options): ... not here.

2002-03-24  Neil Booth  <neil@daikokuya.demon.co.uk>
	    Aldy Hernandez  <aldyh@redhat.com>

	Removal of separate preprocessor cpp0.

	* Makefile.in (GCC_PASSES, STAGESTUFF, LIBCPP_OBJS,
	cpp0, install-common): Update.
	* c-common.c (flag_preprocess_only): New.
	(c_common_init): Preprocess for -E.
	* c-common.h (flag_preprocess_only): New.
	* c-decl.c (c_decode_option): Handle -E and -std=c++98.
	* c-objc-common.c (c_init_decl_processing): Exit quickly
	for NULL return from c_common_init.
	* cpplib.h (cpp_preprocess_file): New.
	* cppmain.c (main, general_init, pfile, progname): Remove.
	(do_preprocessing): Rename cpp_preprocess_file, don't call
	cpp_finish.  Don't close stdout here.
	(setup_callbacks): Update prototype.
	* gcc.c (trad_capable_cpp, cpp_unique_options, default_compilers):
	Update.
	* tradcpp.c (main): Ignore -quiet.
objc:
	* lang-specs.h (default_compilers): Preprocess with cc1obj.

2002-03-24  Richard Henderson  <rth@redhat.com>

	PR optimization/5742
	* machmode.def: Add inner mode field to complex modes.
	* config/mips/mips.c (mips_function_value): Always define.  Add
	new argument to handle libcalls.
	* config/mips/mips.h (LIBCALL_VALUE): Use mips_function_value.
	(FUNCTION_VALUE): Likewise.
	* config/mips/abi64.h (FUNCTION_VALUE): Remove.
	* config/mips/mips-protos.h: Update.

2002-03-23  Richard Henderson  <rth@redhat.com>

	* config/sparc/sparc.c (sparc_emit_floatunsdi): New.
	* config/sparc/sparc-protos.h: Update.
	* config/sparc/sparc.md (floatunsdisf2, floatunsdidf2): New.

2002-03-23  Richard Henderson  <rth@redhat.com>

	* config/sparc/gmon-sol2.c (internal_mcount): Assume either
	_start or _init begins the text segment.

2002-03-23  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.h (RETURN_IN_MEMORY):  Cast to HOST_WIDE_INT
	not HOST_WIDEST_INT.
	(RS6000_ARG_SIZE): Remove unsigned cast of int_size_in_bytes.

2002-03-23  Richard Earnshaw  <rearnsha@arm.com>

	PR java/5489
	* arm.md (return, sibcall_epilogue): Pass const_true_rtx as the
	operand argument to output_return_instruction.
	* arm.c (arm_print_operand, case 'd'): If the operand is
	const_true_rtx then just return.
	(arm_print_operand, case 'D'): If the operand is const_true_rtx
	then abort.

2002-03-23  Andrew Cagney  <ac131313@redhat.com>

	* doc/invoke.texi (Option Summary): Mention -Wswitch-default.
	(Warning Options): Document -Wswitch-default.
	* toplev.c (W_options): Add -Wswitch-default.  Update comment on
	-Wswitch.
	(warn_switch_default): Define variable.
	(warn_switch): Update comment.
	* flags.h (warn_switch_default): Declare variable.
	(warn_switch): Update comment.
	* stmt.c (expand_end_case): Check for and, when
	warn_switch_no_default, warn of a missing default case.

2002-03-23  Alan Modra  <amodra@bigpond.net.au>

	* real.h (N): Special case 128 bit doubles.

	* combine.c (simplify_comparison): When widening modes, ignore
	sign extension on CONST_INTs.

2002-03-22  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/xtensa.c (print_operand): Fix incorrect mode
	passed to adjust_address.  Fix comment formatting.


2002-03-22  Zack Weinberg  <zack@codesourcery.com>

	* real.h: Don't define REAL_INFINITY or REAL_IS_NOT_DOUBLE.
	Always make REAL_VALUE_TYPE a struct containing an array of
	HOST_WIDE_INT, not a double.  Tidy up the code deciding how
	big it is.  Don't declare or use union real_extract.

	* emit-rtl.c (init_emit_once), varasm.c (immed_real_const_1,
	decode_rtx_const, output_constant_pool), config/a29k/a29k.c
	(print_operand), config/arm/arm.c (output_move_double),
	config/arm/arm.md (consttable_4, consttable_8),
	config/romp/romp.c (output_fpops), config/s390/s390.h
	(ASM_OUTPUT_SPECIAL_POOL_ENTRY), config/xtensa/xtensa.c
	(xtensa_output_literal): Don't use union real_extract.

	* config/dsp16xx/dsp16xx.c (print_operand), config/i860/i860.c
	(sfmode_constant_to_ulong), config/ns32k/merlin.h
	(PRINT_OPERAND), config/ns32k/ns32k.c (print_operand),
	config/pdp11/pdp11.h (PRINT_OPERAND), config/we32k/we32k.h
	(PRINT_OPERAND): Don't use local version of union
	real_extract.

	* config/convex/convex.c (check_float_value), config/vax/vax.c
	(vax_float_literal), config/m88k/m88k.md (divdf3),
	config/dsp16xx/dsp16xx.md (fixuns_trunchfhi2),
	config/pdp11/pdp11.c (output_move_quad): Don't do host
	arithmetic on target floating point quantities.

	* config/a29k/a29k.md, config/dsp16xx/dsp16xx.c
	(output_dsp16xx_float_const): Don't test HOST_FLOAT_FORMAT.

	* fold-const.c (fold), simplify-rtx.c (simplify_binary_real):
	Use MODE_HAS_INFINITIES rather than #ifdef REAL_INFINITY.

	* real.c (earith): Test INFINITY rather than REAL_INFINITY;
	NANS implies INFINITY, so can drop #ifdef NANS inside #ifndef
	INFINITY.
	* print-rtl.c (print_rtx): Disable code which needs
	floating-point emulator.
	* libgcc2.c: Include float.h and use DBL_MANT_DIG,
	FLT_MANT_DIG, to define DF_SIZE and SF_SIZE, rather than
	depending on HOST_FLOAT_FORMAT to be defined properly.

	* config/1750a/1750a.c (get_double, float_label): Delete.
	(print_operand): Delete huge commented-out chunk.  Use
	REAL_VALUE_TO_DECIMAL.
	* config/1750a/1750a-protos.h: Delete prototypes of deleted
	functions.
	* config/convex/convex.h: Always set TARGET_FLOAT_FORMAT to
	IEEE_FLOAT_FORMAT.
	* config/i370/i370.h (PRINT_OPERAND [TARGET_HLASM version]):
	Use REAL_VALUE_TO_DECIMAL as ELF version does.
	* config/m88k/m88k.c (real_power_of_2_operand,
	legitimize_operand): Take the REAL_VALUE_TYPE and/or union
	real_extract out of the union; run the input through
	REAL_VALUE_TO_TARGET_DOUBLE, then plug the pair of longwords
	from that into the union.
	* config/pdp11/pdp11.c (output_move_double): Rearrange
	parentheses to make automatic indenter happy.

	* doc/tm.texi (Cross-compilation): Rename node to "Floating
	Point" and rewrite to describe current situation.  Also adjust
	documentation of REAL_VALUE_TO_TARGET_SINGLE and friends to
	match code.
	* doc/rtl.texi: Adjust cross reference.

2002-03-22  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/xtensa-protos.h (non_acc_reg_operand): Remove.
	(xtensa_valid_move, xtensa_preferred_reload_class): Define.
	* config/xtensa/xtensa.c (non_acc_reg_operand): Remove.
	(xtensa_valid_move, xtensa_preferred_reload_class): Define to
	prevent use of sp as a reload register.
	(xtensa_emit_move_sequence): Use xtensa_valid_move instead of
	non_acc_reg_operand.
	* config/xtensa/xtensa.h (PREDICATE_CODES): Remove non_acc_reg_operand.
	(PREFERRED_RELOAD_CLASS): Move code to xtensa_preferred_reload_class.
	* config/xtensa/xtensa.md (movsi_internal, movhi_internal,
	movqi_internal): Use xtensa_valid_move instead of non_acc_reg_operand.

2002-03-22  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cpphash.h (struct cpp_reader): Remove mls_line and mls_col.
	* cpplex.c (unterminated): Delete.
	(parse_string): No string literal may extend over multiple
	lines.  Suppress the error when preprocessing assembly.
	* cppmain.c (scan_translation_unit): Strings are single-line.

	* doc/cpp.texi: Update to match.

2002-03-22  Jakub Jelinek  <jakub@redhat.com>

	PR optimization/5854
	* config/m68hc11/m68hc11.h (CONST_OK_FOR_LETTER_VALUE_P): Use K for 0.
	Shut up warnings.
	(CONST_DOUBLE_OK_FOR_LETTER_P): Use G for 0.0.
	(EXTRA_CONSTRAINT): Use S for non-push memory operand.
	* config/m68hc11/m68hc11.c (m68hc11_split_move): Handle setting from
	const0 if scratch register was not allocated.
	(m68hc11_reload_operands, m68hc11_gen_lowpart, m68hc11_gen_highpart,
	m68hc11_z_replacement): Replace gen_rtx (CONST_INT, VOIDmode, ...)
	with GEN_INT (...).
	(m68hc11_reorg): Compute BLOCK_FOR_INSN before reload_cse_regs.
	* config/m68hc11/m68hc11.md: Replace gen_rtx (CONST_INT, VOIDmode, ...)
	with GEN_INT (...) everywhere.  Remove constraints in define_split
	patterns.
	(movdi_internal, movdf_internal, movsi_internal, movsf_internal): Don't
	require scratch register for setting 0 into regs/non-pushable memory.

2002-03-22  Alexandre Oliva  <aoliva@redhat.com>

	* config/mips/mips.h (MASK_RETURN_ADDR): Define.
	(TARGET_PTRMEMFUNC_VBIT_LOCATION): Define.

2002-03-22  Phil Edwards  <pme@gcc.gnu.org>

	* cpplib.h (struct cpp_options):  New member, warn_endif_labels.
	* cppinit.c (cpp_create_reader):  On by default.
	(cpp_handle_option):  Handle -W[no-]endif-labels.
	(cpp_post_options):  Also enable if -pedantic.
	* cpplib.c (do_else):  Use it.
	(do_endif):  Likewise.
	* doc/cppopts.texi:  Document new option.
	* doc/invoke.texi:  Document new option.

2002-03-22  Lars Brinkhoff  <lars@nocrew.org>

	* config/i386/i386.c, config/i386/i386.md: Change all occurences
	of GEN_INT (trunc_int_for_mode (...)) to gen_int_mode (...).

2002-03-22  Alexandre Oliva  <aoliva@redhat.com>

	* flow.c (calculate_global_regs_live): Clear aux fields of
	ENTRY and EXIT.

2002-03-22  Jakub Jelinek  <jakub@redhat.com>

	* config/v850/v850.c (v850_reorg): Only call alter_subreg on
	REG or MEM subregs, pass rtx * instead of rtx to it.
	* config/i860/i860.c (output_delayed_branch, output_delay_insn): Pass
	rtx * instead of rtx to alter_subreg.
	* config/m32r/m32r.c (gen_split_move_double): Likewise.
	* config/pj/pj.c (pj_output_rval): Likewise.

2002-03-22  Richard Henderson  <rth@redhat.com>

	PR target/3177
	* config/ia64/ia64.h (CUMULATIVE_ARGS): Add int_regs.
	(INIT_CUMULATIVE_ARGS, INIT_CUMULATIVE_INCOMING_ARGS): Update.
	* config/ia64/ia64.c (ia64_function_arg_advance): Set int_regs.
	(ia64_expand_prologue): Look at int_regs, not words, for number
	of incomming int regs.

2002-03-22  Andrew MacLeod  <amacleod@redhat.com>

	* expr.c (expand_expr): A RESULT_DECL is part of a call.

Fri Mar 22 16:30:42 CET 2002  Jan Hubicka  <jh@suse.cz>

	* toplev.c (flag_loop_optimize, flag_crossjumping):
	New static variables.
	(rest_of_compilation): Conditionalize crossjumping and
	loop optimizer.
	(parse_options_and_default_flags): Default loop_optimize and
	crossjumping.
	(lang_independent_options): Add -fcrossjumping and -floop-optimize
	* invoke.texi (crossjumping, loop-optimize): Document.

2002-03-22  Richard Sandiford  <rsandifo@redhat.com>

	* real.c (eiisneg): Move outside #ifdef NANS.

Fri Mar 22 12:08:36 CET 2002  Jan Hubicka  <jh@suse.cz>

	* cfgcleanup.c (outgoing_edges_math): Fix condition; relax
	frequencies match; avoid match on different loop depths.
	(try_crossjump_to_bb): Kill tests that no longer brings time
	savings.
	* cfgrtl.c (force_nonfallthru_and_redirect): Fix loop_depth
	updating code.
	(split_edge): Likewise.

	* flow.c (update_life_info_in_dirty_blocks): Fix uninitialized
	variable.

	* Makefile.in (cfgrtl): Add insn-config.h depenendency.
	* cfgrtl.c: Include insn-config.h
	(split_block) Dirtify block in presence of conditional execution

2002-03-22  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/abi64.h (SETUP_INCOMING_VARARGS): Undefine.
	* config/mips/mips-protos.h (mips_setup_incoming_varargs): Declare.
	(function_arg): Constify CUMULATIVE_ARGS.
	(function_arg_partial_nregs, function_arg_pass_by_reference): Likewise.
	* config/mips/mips.h (UNITS_PER_FPVALUE): Zero when TARGET_SOFT_FLOAT.
	(UNITS_PER_DOUBLE): New macro.
	(SETUP_INCOMING_VARARGS): Define.  Use mips_setup_incoming_varargs.
	(CUMULATIVE_ARGS): Reformat.  Remove num_adjusts workaround and
	last_arg_fp field.  Replace arg_words and fp_arg_words with gp_regs,
	fp_regs and stack_words.
	(EABI_FLOAT_VARARGS_P): New macro.
	* config/mips/mips.c (struct mips_arg_info): New.
	(mips_arg_info): New function.
	(function_arg_advance): Use it.  Add adjustment instructions here
	rather than in function_arg.
	(function_arg): Constify CUMULATIVE_ARGS.  Use mips_arg_info.  Check
	for VOIDmode at the beginning of the function.
	(function_partial_nregs): Constify CUMULATIVE_ARGS.  Use mips_arg_info.
	(function_arg_pass_by_reference): Likewise.
	(mips_setup_incoming_varags): New, largely based on old abi64.h code.
	(mips_build_va_list): Test EABI_FLOAT_VARARGS_P.
	(mips_va_start): Likewise.  Use the new stack_words field of
	CUMULATIVE_ARGS to set up overflow area.  Reformat.
	(mips_va_arg): Test EABI_FLOAT_VARARGS_P.  Unify EABI handling of
	doubles and other types, aligning the overflow pointer for non-doubles
	too.  Remove some code duplication.  Replace hard-coded constants.

2002-03-22  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.h (FUNCTION_ARG_REGNO_P): Simplify.
	(CLASS_UNITS): Undefine.
	(CLASS_MAX_NREGS): Use FP_INC.
	* config/mips/mips.c (compute_frame_size): Likewise.
	(override_options): Use FP_INC and UNITS_PER_FPVALUE.

2002-03-22  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cpplex.c (parse_identifier_slow): Rename parse_slow, adjust
	prototype, and handle lexing numbers and identifiers.
	(parse_identifier): Update to new form of parse_slow.
	(parse_number): Fast path only, use parse_slow otherwise.
	(_cpp_lex_direct): Update calls to parse_number.

2002-03-21  DJ Delorie  <dj@redhat.com>

	* bb-reorder.c (make_reorder_chain_1): Protect against
	when redundant edges are omitted.
	* predict.c (dump_prediction): Likewise.

2002-03-21  Richard Henderson  <rth@redhat.com>

	PR target/5996
	* fixinc/inclhack.def (solaris_stdio_tag): New.
	* fixinc/fixincl.x: Regenerate.

2002-03-21  Eric Botcazou <ebotcazou@multimania.com>

	PR c/5597
	* c-typeck.c (process_init_element): Flag non-static
	initialization of a flexible array member as illegal.

2002-03-22  Alan Modra  <amodra@bigpond.net.au>

	* config/rs6000/t-linux64: New.
	* config.gcc (powerpc64-*-linux* <tmake_file>): Drop t-ppcos and
	t-ppccomm.  Use t-rs6000 and t-linux64.
	(powerpc64-*-gnu* <tmake_file>): Likewise.
	* mklibgcc.in (SHLIB_MKMAP_OPTS): New variable.
	* mkmap-symver.awk (dotsyms): If set, output .foo as well as foo.
	* Makefile.in (SHLIB_MKMAP_OPTS): Pass to mklibgcc.

2002-03-21  Aldy Hernandez  <aldyh@redhat.com>

	* langhooks.c (lhd_tree_inlining_cannot_inline_tree_fn): Check
	flag_really_no_inline instead of optimize == 0.

	* c-objc-common.c (c_cannot_inline_tree_fn): Same.

	* cp/tree.c (cp_cannot_inline_tree_fn): Same.

	* flags.h (flag_really_no_inline): New.

	* c-common.c (c_common_post_options): Initialize
	flag_really_no_inline.

	* toplev.c (flag_really_no_inline): New.

2002-03-21  Jakub Jelinek  <jakub@redhat.com>

	* config/avr/avr.md (length): Fix length computation for
	conditional branches.

2002-03-21  Neil Booth  <neil@daikokuya.demon.co.uk>

	* Makefile.in (fold-const.o, stor-layout.o, stmt.o,
	sdbout.o, profile.o): Update.
	* c-common.c (c_common_nodes_and_builtins): Use pushdecl
	langhook.
	* c-common.h (gettags): Move here from tree.h.
	* c-tree.h (pushdecl, pushlevel, poplevel, set_block,
	insert_block, getdecls, kept_level_p, global_bindings_p): New.
	* dbxout.c (dbxout_init): Use getdecls langhook.
	* expr.c (expand_expr): Use insert_block langhook.
	* fold-const.c: Include langhooks.h.
	(fold_range_test, fold_binary_op_with_conditional_arg,
	fold): Use global_bindings_p langhook.
	* integrate.c (expand_inline_function): Use insert_block langhook.
	* langhooks-def.h (LANG_HOOKS_DECLS, LANG_HOOKS_PUSHLEVEL,
	LANG_HOOKS_POPLEVEL, LANG_HOOKS_GLOBAL_BINDINGS_P,
	LANG_HOOKS_INSERT_BLOCK, LANG_HOOKS_SET_BLOCK, LANG_HOOKS_PUSHDECL,
	LANG_HOOKS_GETDECLS): New.
	(LANG_HOOKS_INITIALIZER): Update.
	* langhooks.c (lhd_clear_binding_stack): Use global_bindings_p
	langhook.
	* langhooks.h (struct lang_hooks_for_decls): New.
	(struct lang_hooks): Update.
	* profile.c: Include langhooks.h.
	(output_func_start_profiler): Use new langhooks.
	* sdbout.c: Include langhooks.h.
	(sdbout_init, sdbout_finish): Use getdecls langhook.
	* stmt.c: Include langhooks.h.
	(expand_fixup, fixup_gotos): Use new langhooks.
	* stor-layout.c: Include langhooks.h.
	(variable_size): Use global_bindings_p langhook.
	* toplev.c (compile_file): Use getdecls langhook.
	* tree-inline.c (remap_block): Use insert_block langhook.
	* tree.h (pushdecl, pushlevel, poplevel, set_block, gettags,
	insert_block, getdecls, kept_level_p, global_bindings_p): Remove.

2002-03-21  Richard Henderson  <rth@redhat.com>

	* config/rs6000/rs6000.c (rs6000_select_rtx_section): Put symbolic
	constants in .data when -fpic.

2002-03-21  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* doc/contrib.texi (Contributors): Use GNU/Linux instead of Linux
	where appropriate.

2002-03-21  Tom Tromey  <tromey@redhat.com>

	* config/i386/sol2.h (ASM_QUAD): Undef.  Fixes PR bootstrap/5948.

Thu Mar 21 09:50:48 2002  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* config/ia64/ia64.c (hfa_element_mode, case ARRAY_TYPE): Recurse.

	* expr.c (emit_group_store): Don't copy const0_rtx to a CONCAT.

2002-03-21  Eric Botcazou <ebotcazou@multimania.com>
	    Richard Henderson  <rth@redhat.com>

	PR c/5354
	* c-common.c (c_expand_expr): Preserve result of a statement
	expression if needed.

2002-03-21  Jakub Jelinek  <jakub@redhat.com>

	PR bootstrap/4195
	* genrecog.c (maybe_both_true_mode): Remove.
	(maybe_both_true_2, write_switch): Revert 2001-07-17 changes.
	* machmode.def (Pmode): Likewise.

Thu Mar 21 01:55:06 EST 2002  John Wehle  (john@feith.com)

	* alias.c: (nonlocal_mentioned_p): Use for_each_rtx.
	(nonlocal_mentioned_p_1): New function.
	(nonlocal_referenced_p, nonlocal_referenced_p_1): Likewise.
	(nonlocal_set_p, nonlocal_set_p_1): Likewise.
	(mark_constant_function): Recognize pure functions.
	* rtl.h (global_reg_mentioned_p): New prototype.
	* rtlanal.c (global_reg_mentioned_p,
	global_reg_mentioned_p_1): New function.

2002-03-21  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* fixinc/inclhack.def (alpha_assert): Fix assert macro in Tru64
	UNIX assert.h.
	* fixinc/fixincl.x: Regenerate.

2002-03-20  Jason Merrill  <jason@redhat.com>

	* config/i386/cygwin.h (DWARF2_UNWIND_INFO): Define to 0.

2002-03-20  Michael Meissner  <meissner@redhat.com>

	* doc/invoke.texi (Optimize Options): Document that -O2 sets
	-fstrict-aliasing.

2002-03-20  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/xtensa.h (ASM_OUTPUT_POOL_PROLOGUE): Emit a
	".literal_position" directive before the constant pool.

2002-03-20  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* doc/contrib.texi (Contributors): Update Geoffrey Keating.
	Add Craig Rodrigues.
	Add Brad Lucier to testers.

2002-03-20  Jakub Jelinek  <jakub@redhat.com>

	PR target/4792
	* config/arc/arc.md (movsicc, movdicc, movsfcc, movdfcc): Add mode
	to if_then_else.
	(movsicc_insn, movdicc_insn, movsfcc_insn, movdfcc_insn): Likewise.
	* config/arc/arc.c (arc_final_prescan_insn): Use extract_insn_cached
	instead of insn_extract.

2002-03-20  Jakub Jelinek  <jakub@redhat.com>

	PR bootstrap/4192
	* config/fr30/fr30.md (jump): Remove clobber of fixed register.

	* genemit.c (output_added_clobbers_hard_reg_p): Only output return
	stmt if some case has been output.

2002-03-20  Jakub Jelinek  <jakub@redhat.com>

	PR c/5972
	* config/i386/i386.md (movdicc_c_rex64, movsicc_noc, movhicc_noc,
	movsfcc_1, movdfcc_1): Add %O2.
	* config/i386/i386.c (print_operand): Handle %ON.
	Print . before float condition codes in Sun as cmov syntax.
	* config/i386/sol2.h (CMOV_SUN_AS_SYNTAX): Define for Sun as.
	* config.gcc (i[34567]86-*-solaris2*): Remove comment which is
	no longer true.

2002-03-20  Philip Blundell  <pb@nexus.co.uk>

	* config/arm/arm.c (arm_output_epilogue): Don't generate separate
	return instruction if PC was popped.

2002-03-20  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/xtensa.md: Remove unused type attributes.
	(adddi_carry, subddi_carry): Change type attribute to "multi".

2002-03-19  Dale Johannesen  <dalej@apple.com>

	PR optimization/5999, middle-end/5731
	* expr.c (expand_expr) [RDIV_EXPR]: Only convert real divisions into
	multiplications by reciprocals.

2002-03-20  Neil Booth  <neil@daikokuya.demon.co.uk>

	* Makefile.in: Update.
	* c-common.c: Include langhooks.h.
	(inline_forbidden_p): Use new hook.
	* diagnostic.c: Include langhooks.h.
	(format_with_decl, announce_function,
	default_print_error_function): Use new hook.
	* dwarf2out.c (dwarf2_name): Use new hook.
	* function.c: Include langhooks.h.
	(init_function_start): Use new hook.
	* langhooks-def.h (lhd_decl_printable_name): New.
	(LANGHOOKS_DECL_PRINTABLE_NAME): New.
	(LANGHOOKS_INITIALIZER): Update.
	* langhooks.c (lhd_decl_printable_name): New.
	* langhooks.h (struct lang_hooks): New hook.
	* toplev.c (decl_name, decl_printable_name): Remove.
	(open_dump_file): Use new hook.
	(process_options): Remove old hook.
	* tree.h (decl_printable_name): Remove.
objc:
	* objc-act.c (objc_init): Remove old hook.
	(objc_printable_name): Export.
	* objc-act.h (objc_printable_name): New.
	* objc-lang.c (LANG_HOOKS_DECL_PRINTABLE_NAME): Redefine.

2002-03-19  Jim Blandy  <jimb@redhat.com>

	* c-lex.c (cb_file_change): Pass the #inclusion's line number to
	the start_source_file debug hook, not the current line number.

2002-03-19  Richard Henderson  <rth@redhat.com>

	* flow.c (EH_USES): Provide default.
	(calculate_global_regs_live): Use it for EH edges and noreturn calls.
	* doc/tm.texi (EH_USES): New.

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

2002-03-19  Richard Henderson  <rth@redhat.com>

	* varasm.c (output_constant_def): Fix stupid typo.

2002-03-19  Richard Henderson  <rth@redhat.com>

	PR 5879
	* except.c (current_function_has_exception_handlers): New.
	* except.h: Declare it.
	* sibcall.c (optimize_sibling_and_tail_recursive_call): Use it.
	Combine tests that disable all sibcalls for the function.

2002-03-19  Olivier Hainque  <hainque@act-europe.fr>

	* varasm.c (output_constant_def): Don't call ENCODE_SECTION_INFO
	for INTEGER_CST.

2002-03-19  Richard Henderson  <rth@redhat.com>

	PR 5977, 5991
	* config/ia64/ia64.c: Revert 2002-03-01 patch.
	* config/ia64/ia64.h (INIT_EXPANDERS): New.

2002-03-19  Jim Blandy  <jimb@redhat.com>

	* cppmacro.c (cpp_macro_definition): Emit a space after the macro
	name, even if the replacement list contains no tokens, as required
	by Dwarf.

2002-03-19  Jason Merrill  <jason@redhat.com>

	* varasm.c (globalize_decl): Get the name from the RTL, not
	DECL_ASSEMBLER_NAME.

	* Makefile.in (LIBGCC2_DEBUG_CFLAGS): Set to -g.

2002-03-19  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/xtensa.md (adddi3, adddi_carry, subdi3,
	subdi_carry): Define.

2002-03-19  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.c (rs6000_override_options): Only warn
	about -fpic/-fPIC if extra_warnings set.

2002-03-19  David Edelsohn  <edelsohn@gnu.org>

	* expr.c (expand_expr): Sign-extend CONST_INT generated from
	TREE_STRING_POINTER.
	* fold-const.c (fold): Delete #if 0 ARRAY_REF case.

Tue Mar 19 14:12:32 2002  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* config/sparc/sparc.h (CAN_ELMINIATE): Can only eliminate FP
	in favor of SP if FRAME_POINTER_REQUIRED is false.

2002-03-19  Lars Brinkhoff  <lars@nocrew.org>

	* emit-rtl.c (gen_int_mode): New function.
	* rtl.h: Prototype for it.
	* combine.c (make_extraction, simplify_comparison), expmed.c
	(store_bit_field, expand_mult_highpart, expand_divmod), expr.c
	(convert_modes, store_field), optabs.c (expand_fix),
	simplify-rtx.c (neg_const_int, simplify_unary_real),

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

2002-03-19  Jakub Jelinek  <jakub@redhat.com>

	PR c/5656
	* langhooks.h (struct lang_hooks_for_tree_inlining): Add
	convert_parm_for_inlining.
	* c-lang.c (LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING):
	Define.
	* langhooks-def.h: Likewise.
	* objc/objc-lang.c: Likewise.
	* langhooks.c (lhd_tree_inlining_convert_parm_for_inlining): New
	function.
	* tree-inline.c (initialize_inlined_parameters):
	Call convert_parm_for_inlining lang hook if needed.
	* c-typeck.c (c_convert_parm_for_inlining): New function.
	* c-tree.h (c_convert_parm_for_inlining): Add prototype.

2002-03-18  Mark Mitchell  <mark@codesourcery.com>

	* calls.c (precompute_arguments): Do not assume that temporaries
	can be destroyed after expanding the argument.
	(expand_call): Likewise.

2002-03-15  Eric Christopher  <echristo@redhat.com>

	* config/mips/mips.md (movdf_internal2): Add two new move constraints.
	Fix register preference on last change.
	* config/mips/mips.c (mips_return_in_memory): New function.
	* config/mips/mips.h (RETURN_IN_MEMORY): Use.
	* config/mips/mips-protos.h: Declare.
	* config/mips/abi64.h (RETURN_IN_MEMORY): Remove. Add to above.
	* config/mips/elf64.h: Add #ifndef/#endif brackets around defaults.

2002-03-18  Alexandre Oliva  <aoliva@redhat.com>

	* config/mips/mips.md (andsi3) [TARGET_MIPS16]: Force operand 1 to
	a register too.
	(anddi3, iorsi3): Likewise.

	* config/mips/mips.h (ENCODE_SECTION_INFO) [TARGET_MIPS16]: Don't
	use %gprel for symbols that are going to be placed in linkonce
	sections.

	* config/mips/mips.h (ELIMINABLE_REGS): Can't eliminate
	RETURN_ADDRESS_POINTER_REGNUM to $ra.
	(CAN_ELIMINATE): Only eliminate it to $sp if a frame pointer is
	not needed.  Disregard leaf_function_p().
	(INITIAL_ELIMINATION_OFFSET): Adjust for elimination of rap to
	mips16 frame pointer.
	* config/mips/mips.md (store ra): Only to small SP offsets.
	2001-08-22  Graham Stott  <grahams@redhat.com>
	* config/mips/mips.h (RETURN_ADDR_RTX): For a leaf function
	return a REG rtx for the return address register.

2002-03-18  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/xtensa.h (GO_IF_MODE_DEPENDENT_ADDRESS): Treat
	constant-pool addresses as "mode-dependent".
	(GO_IF_LEGITIMATE_ADDRESS): Rename macro arguments.

2002-03-18  Jakub Jelinek  <jakub@redhat.com>

	PR target/5740
	* expr.c (emit_group_load): Use extract_bit_field if
	needed for CONCAT arguments.

2002-03-18  Richard Earnshaw  <rearnsha@arm.com>

	PR target/4863
	* arm.md (tablejump): Make this a define_expand.  For PIC add the
	offset to the base of the table.
	(thumb_tablejump): Matcher for Thumb tablejump insn.
	* config/arm/aout.h (ASM_OUTPUT_ADDR_DIFF_ELT): Output thumb entries
	as the difference of two labels.
	* config/arm/aof.h (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
	* config/arm/elf.h (JUMP_TABLES_IN_TEXT_SECTION): Only put ARM jump
	tables in the code.
	* config/arm/coff.h (JUMP_TABLES_IN_TEXT_SECTION): Likewise.
	* arm.c (get_jump_table_size): If the table is not in the text
	section, return zero.

2002-03-18  Bernd Schmidt  <bernds@redhat.com>

	* config/arm/arm.c (arm_gen_movstrqi): Use gen_lowpart instead
	of gen_rtx_SUBREG.
	(arm_reload_out_hi): Use gen_lowpart instead of
	gen_rtx_SUBREG to access QImode components.
	* config/arm/arm.md: Disable zero_extend split for QImode
	subregs in BIG_ENDIAN mode.
	(storehi_bigend): Match use of least significant byte.
	(storeinthi): Remove extraneous SUBREG.
	Add missing construction of operands[2].
	(movhi): Use gen_lowpart in place of gen_rtx_SUBREG.
	(movqi): Use gen_lowpart in place of gen_rtx_SUBREG.
	Replace gen_rtx (SUBREG) with gen_rtx_SUBREG.

2002-03-18  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/rs6000.h (PREDICATE_CODES): Add PARALLEL to
	any_operand.

2002-03-17  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.c (alpha_emit_set_const_1): Build add insns
	explicitly.

2002-03-17  Hans-Peter Nilsson  <hp@bitrange.com>

	* config/mmix/mmix.md ("fixuns_truncdfdi2"): Use (unsigned_fix:DI
	(unsigned_fix:DF op1)), not (unsigned_fix:DI (fix:DF op1)).

2002-03-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* ifcvt.c (dead_or_predicable): Fix uninitialized variable.

	* predict.c (estimate_bb_frequencies): Delete unused variables.

2002-03-17  Richard Henderson  <rth@redhat.com>

	* config/ia64/ia64.c (ia64_attribute_table): Move before
	targetm definition.  Make static.

2002-03-17  Neil Booth  <neil@daikokuya.demon.co.uk>

	* c-common.h (yyparse, c_common_parse_file): New.
	* c-lang.c: Include c-common.h.
	(LANG_HOOKS_PARSE_FILE): Redefine.
	* c-lex.c: Include c-common.h.
	(yyparse): Rename c_common_parse_file.  Call yyparse.
	* c-parse.in (yyparse): Remove macro.
	* c-tree.h (yyparse_1): Remove.
	* langhooks-def.h (LANG_HOOKS_PARSE_FILE): New.
	(LANG_HOOKS_INITIALIZER): Update.
	* langhooks.h (struct lang_hoooks): New hook parse_file.
	* toplev.c (compile_file): Use parse_file hook.
	* tree.h (yyparse): Remove.
	* objc/objc-lang.c (LANG_HOOKS_PARSE_FILE): Redefine.

2002-03-17  Hans-Peter Nilsson  <hp@bitrange.com>

	* config/mmix/mmix.md ("truncdfsf2"): Correct operator is
	float_truncate, not fix.
	("*truncdfsf2_real"): Ditto.
	("*nonlocal_goto_receiver_expanded"): Fix output template formatting.

	* config/mmix/mmix.h (WCHAR_TYPE, WCHAR_TYPE_SIZE): Don't define.

2002-03-16  Alexandre Oliva  <aoliva@redhat.com>

	* config/mips/mips.h (CAN_ELIMINATE): Don't eliminate rap to $fp
	(s8), but rather HARD_FRAME_POINTER_REGNUM.  Add parentheses
	where appropriate.  Make the second reference to
	leaf_function_p a function call, as intended.  Reindented.

	* config/mips/mips.h (ISA_HAS_COND_TRAP): Not available on MIPS16.
	* config/mips/mips.md (trap) [TARGET_MIPS16]: Emit `break 0'.

	* config/mips/mips.md (addsi3, adddi3): Use scratch register to
	add register to non-constant into sp.

	* config/mips/mips-protos.h (embedded_pic_fnaddr_reg): New.
	* config/mips/mips.h (embedded_pic_fnaddr_rtx): Lose.
	(mips16_gp_pseudo_rtx): Lose.
	(INIT_EXPANDERS): Deleted.
	* config/mips/mips.c (mips_init_machine_status): New.
	(mips_free_machine_status): New.
	(mips_mark_machine_status): New.
	(override_options): Set them.
	(embedded_pic_fnaddr_rtx, mips16_gp_pseudo_rtx): Moved to...
	(struct machine_function): ... new.  Replaced all references.
	(mips_add_gc_roots): Don't mark them.
	(embedded_pic_fnaddr_reg): New, extracted from...
	(embedded_pic_offset): ... here.
	* config/mips/mips.md (movdi): Call embedded_pic_fnaddr_reg.
	(movsi): Likewise.

2002-03-16  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cppinit.c: Revert -MD removal.

2002-03-16  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/m68hc11.c (m68hc11_override_options): Don't use
	soft registers by default for 68HC12.
	(m68hc11_conditional_register_usage): Don't use Z register for 68HC12
	when compiling with -fomit-frame-pointer.
	(expand_prologue): Use push/pop to allocate 4-bytes of locals on 68HC12.
	(expand_epilogue): Likewise.
	(m68hc11_gen_rotate): Use exg when rotating by 8.

2002-03-16  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/m68hc11-protos.h (ix_reg): Declare.
	* config/m68hc11/m68hc11.md ("addsi3"): Use general_operand for sources.
	(splits): Remove unused add splits.
	("*addhi3_68hc12"): Tune constraints.
	("addhi_sp"): Try to use X instead of Y in all cases and if the
	constant fits in 8-bits and D is dead use abx/aby instructions.
	("*addhi3"): Remove extern declaration of ix_reg.
	("*subsi3"): Optimize and provide new split.
	("subhi3"): Cleanup.
	("*subhi3_sp"): Avoid saving X if we know it is dead.
	(arith splits): For 68hc12 save the address register on the stack
	and do the arithmetic operation with a pop.

2002-03-16  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/m68hc11.md ("*movqi_68hc12"): Fix constraints, avoid
	allocating QImode in address registers.
	("*movqi_m68hc11"): Likewise.

Sat Mar 16 12:57:28 CET 2002  Jan HUbicka  <jh@suse.cz>

	* cfgcleanup.c (cleanup_cfg): Fix updating of liveness.

2002-03-16  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cppinit.c (print_help): Display -MD and -MMD.
	Don't display usage string.  Update assertion syntax and
	typo.
	(COMMAND_LINE_OPTIONS): Remove OPT_MD, OPT_MMD.
	(cpp_handle_option): Update.

2002-03-15  Chris Demetriou  <cgd@broadcom.com>

	* config/mips/mips.h (SUBTARGET_CPP_SIZE_SPEC): Provide an
	MEABI case for each definition of SUBTARGET_CPP_SIZE_SPEC,
	and define it so that regardless of target CPU size,
	__SIZE_TYPE__ and __PTRDIFF_TYPE__ are defined in terms
	of "int" rather than "long."

2002-03-15  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.c (alpha_va_arg): Manipulate the type
	size as a tree.

2002-03-15  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/m68hc11.md ("tstqi_1"): Try to use ldab instead of tst.
	("tstqi" split): Avoid using memory for tstqi on address register.
	(splits): Remove constraints.
	("cmphi_1_hc12"): New from "cmphi_1" and tuned for 68HC12.
	("cmpdf", "cmpsf"): Remove since not used.
	("*tbeq", "*tbne", "*tbeq8", "*tbne8"): Also look in cc_status.value2.
	(peephole2): New peepholes to optimize tstqi and pre inc/dec addressing.

2002-03-15  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/m68hc11.md ("negsi2"): Optimize inline case.
	("neghi2"): Tighten constraints.
	("one_cmplsi2"): Optimize and simplify split.
	* config/m68hc11/larith.asm (__negsi2): Likewise for library.

2002-03-15  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/m68hc11.md ("logicalsi3_zexthi"): Fix constraints
	and split of AND operation to clear the upper bits.
	("*logicalsi3_zextqi"): Likewise.
	("*logicallhi3_zexthi_ashift8"): Likewise.
	("*logicalsi3_silshr16"): Likewise.
	("logicalsi3_silshl16"): Likewise.
	("anddi3", "iordi3", "xordi3" splits): Remove constraints.

2002-03-15  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/m68hc11.c (m68hc11_symbolic_p): New function.
	(m68hc11_indirect_p): New function.
	(m68hc11_override_options): Must set MASK_NO_DIRECT_MODE for 68HC12.
	(m68hc11_gen_highpart): Use TARGET_NO_DIRECT_MODE instead of
	TARGET_M6812.
	(asm_print_register): Likewise.
	* config/m68hc11/m68hc11-protos.h (m68hc11_symbolic_p): Declare.
	(m68hc11_indirect_p): Declare.
	* config/m68hc11/m68hc11.h (EXTRA_CONSTRAINT): New constraint 'R', 'Q'.
	(TARGET_NO_DIRECT_MODE, TARGET_RELAX): New.
	(TARGET_SWITCHES): New option -mrelax.
	* config/m68hc11/m68hc11.md ("andsi3"): Allow soft register for
	destination.
	("iorsi3", "xorsi3"): Likewise.
	("andhi3", "andqi3", "iorhi3", "iorqi3"): Use a define_expand.
	("*andhi3_mem"): New to handle destination in memory with bclr
	and a scratch register.
	("*andqi3_mem", "*iorhi3_mem", "*iorqi3_mem"): Likewise.
	("*andhi3_const"): New when operand2 is constant.
	("*andqi3_const", "*iorhi3_const", "*iorqi3_const"): Likewise.
	("*andhi3_gen"): Cleanup of the old "andhi3".
	("*andqi3_gen", "*iorhi3_gen", "*iorqi3_gen"): Likewise.
	("xorqi3"): Update constraints.

2002-03-15  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/m68hc11.c (m68hc11_small_indexed_indirect_p): Look
	for reg_equiv_memory_loc when the operand is a register that does
	not get a hard register (stack location).
	(tst_operand): After reload, accept all memory operand.
	(symbolic_memory_operand): Fix detection of symbolic references.
	* config/m68hc11/m68hc11.h (VALID_CONSTANT_OFFSET_P): For 68HC12
	accept symbols and any constant.

2002-03-15  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/m68hc11.c (emit_move_after_reload): Add a REG_INC
	note on the insn that sets the soft frame register.
	(must_parenthesize): ix and iy are also reserved names.
	(print_operand_address): One more place where parenthesis are required
	to avoid confusion with register names.
	(m68hc11_gen_movhi): Allow push of stack pointer.
	(m68hc11_check_z_replacement): Fix handling of parallel with a
	clobber.
	(m68hc11_z_replacement): Must update the REG_INC notes to tell what
	the replacement register is.
	* config/m68hc11/m68hc11.h (REG_CLASS_CONTENTS): Switch Z_REGS
	and D8_REGS classes.
	(MODES_TIEABLE_P): All modes are tieable except QImode.

2002-03-15  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/larith.asm (___adddi3): Optimize saving of result.
	(___subdi3): Likewise.
	(__mulsi3, __mulhi32): Avoid using _.tmp scratch location.
	(__map_data_section): Optimize 68hc11 case.

2002-03-15  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/m68hc11.c (m6812_cost): Make cost of add higher
	than a shift to avoid adding a register with itself.
	(m68hc11_memory_move_cost): Take into account NO_REGS.
	(m68hc11_register_move_cost): Update and use memory move cost
	for soft registers.
	(m68hc11_address_cost): Make cost of valid offset not 0 so that
	it gives more opportunities to cse to optimize.
	* config/m68hc11/m68hc11.h (REGISTER_MOVE_COST): Pass the mode.
	* config/m68hc11/m68hc11-protos.h (m68hc11_register_move_cost): Update.

2002-03-15  Mark Mitchell  <mark@codesourcery.com>

	* c-common.c (statement_code_p): Handle CLEANUP_STMT.
	* c-common.def (CLEANUP_STMT): New tree node.
	* c-common.h (CLEANUP_DECL): New macro.
	(CLEANUP_EXPR): Likewise.
	* c-semantics.c (expand_stmt): Handle CLEANUP_STMT.
	* expr.c (expand_expr): Tidy.
	* tree-dump.c (dequeue_and_dump): Handle CLEANUP_STMT.
	* tree-inline.c (initialize_inlined_parameters): Clean up
	new local variables.

2002-03-15  Jakub Jelinek  <jakub@redhat.com>

	PR bootstrap/4128
	* config/sparc/sparc.c (gen_v9_scc): Move early clobber test
	before movrXX only, use reg_overlap_mentioned_p.
	Only special case NE if just one insn can be generated.

2002-03-15  Jason Merrill  <jason@redhat.com>

	* varasm.c (assemble_variable): Call resolve_unique_section before
	checking DECL_SECTION_NAME.  Use zeros for a decl with DECL_INITIAL
	of error_mark_node.

2002-03-15  Richard Earnshaw  <rearnsha@arm.com>

	PR target/5170
	* arm.md (split pattern for thumb shiftable immediates): Add comment
	explaining non-obvious test.

2002-03-15  Richard Earnshaw  <rearnsha@arm.com>

	PR target/5712
	* arm.md (movaddr, movaddr_insn): Delete.

2002-03-15  Jason Merrill  <jason@redhat.com>

	* toplev.c (wrapup_global_declarations): Clarify variable handling.
	-fkeep-static-consts doesn't apply to comdats.

2002-03-14  Richard Henderson  <rth@redhat.com>

	* c-decl.c: Include c-pragma.h.
	(start_decl, start_function): Invoke maybe_apply_pragma_weak.
	(finish_function): Tidy.
	* c-pragma.c: Include c-common.h.
	(pending_weaks, apply_pragma_weak, maybe_apply_pragma_weak): New.
	(handle_pragma_weak): Use them.
	(init_pragma): Register pending_weaks.
	* c-pragma.h (maybe_apply_pragma_weak): Declare.
	* print-tree.c (print_node): Print DECL_WEAK.
	* varasm.c (mark_weak_decls): Remove.
	(remove_from_pending_weak_list): Remove.
	(add_weak): Remove.
	(asm_emit_uninitialised): Call globalize_decl for weak commons.
	(weak_decls): Make a tree_list.
	(declare_weak): Cons weak_decls directly.
	(globalize_decl): Remove weak_decls elements directly.
	(weak_finish): Simplify weak_decls walk.  Don't weaken unused
	symbols.  Don't pretend to handle aliases.
	(init_varasm_once): Update weak_decls registry.
	* Makefile.in: Update dependencies.

2002-03-14  Richard Henderson  <rth@redhat.com>

	PR target/5312
	* config/ia64/ia64.c: Include tm_p.h last.
	(gen_nop_type): Remove duplicate definition.
	(cycle_end_fill_slots): Set sched_data for second L slot.
	(maybe_rotate): Call cycle_end_fill_slots to fill in nop slots.
	(nop_cycles_until): Fix typos.

2002-03-15  Jakub Jelinek  <jakub@redhat.com>

	PR optimization/5891
	* unroll.c (copy_loop_body) [CALL_INSN]: Copy SIBLING_CALL_P flag.

2002-03-14  David Mosberger <davidm@hpl.hp.com>, Hans Boehm <Hans_Boehm@hp.com>

	* config/ia64/unwind-ia64.c: Handle copy_state and label_state
	  descriptors correctly.

2002-03-14  Michael Meissner  <meissner@redhat.com>

	* params.def (PARAM_MAX_UNROLLED_INSNS): New macro, default to
	100, allowing MAX_UNROLLED_INSNS to be overridden.

	* params.h (MAX_UNROLLED_INSNS): Define so it can be overridden by
	--param.

	* unroll.c (params.h): Include.
	(MAX_UNROLLED_INSNS): Delete, now in params.h.

	* doc/invoke.texi (--param max-unroll-insns): Document.

	* Makefile.in (unroll.o): Add $(PARAMS_H) dependency.

2002-03-14  Richard Earnshaw  <rearnsha@arm.com>

	* arm.md: Fix warnings about constraints in peepholes and splits.

2002-03-14  Zack Weinberg  <zack@codesourcery.com>

	* cpphash.h (struct lexer_state): Remove line_extension member.
	* cpplib.c (dequote_string, do_linemarker): New functions.
	(linemarker_dir): New data object.
	(DIRECTIVE_TABLE): No longer need to interpret #line in
	preprocessed source.  Delete obsolete comment about return
	values of handlers.
	(end_directive, directive_diagnostics, _cpp_handle_directive):
	Don't muck with line_extension.
	(directive_diagnostics): No need to issue warnings for
	linemarkers here.
	(_cpp_handle_directive): Issue warnings for linemarkers here,
	when appropriate.  Dispatch linemarkers to do_linemarker, not
	do_line.
	(do_line): Code to handle linemarkers split out to do_linemarker.
	Convert escape sequences in filename argument, both places.

	* cppmacro.c (quote_string): Rename cpp_quote_string and
	export.  All callers changed.
	* cpplib.h (cpp_quote_string): Prototype.
	* cppmain.c (print_line): Call cpp_quote_string on to_file
	before printing it.

	* doc/cpp.texi: Document that escapes are now interpreted in
	#line and in linemarkers, and that non-printing characters are
	converted to octal escapes when linemarkers are generated.

Thu Mar 14 19:04:29 CET 2002  Jan Hubicka  <jh@suse.cz>

	* emit-rtl.c (try_split): Use delete_insns.
	* recog.c (split_all_insns): Fix terminating condition.

2002-03-14  Richard Earnshaw  <rearnsha@arm.com>
	    Jeroen Dobbelaere  <jeroen.dobbelaere@acunia.com>

	PR target/5828
	* arm.c (arm_output_epilogue): Fix floating-point register save
	adjustment when using a frame pointer.

2002-03-14  Richard Sandiford  <rsandifo@redhat.com>

	* config/mips/mips.h (FP_INC, UNITS_PER_FPVALUE): New macros.
	* config/mips/mips.c (compute_frame_size): Retrofit them here.
	(save_restore_insns, mips_expand_epilogue): And here.
	(build_mips16_call_stub): And here.
	(mips_function_value): Use the new macros to decide whether a single
	or complex float can be returned in floating-point registers.  Return
	a parallel rtx in the complex case.

Thu Mar 14 11:03:12 CET 2002  Jan Hubicka  <jh@suse.cz>

	* toplev.c (rest_of_compilation): Add CLEANUP_UPDATE_LIFE to cfg_cleanup
	call after liveness analysis.

	* recog.c (split_insn): Use delete_insn_and_edges.

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

2002-03-14  Geoffrey Keating  <geoffk@redhat.com>

	* configure.in: Don't pass -Wno-long-long to a ADA compiler
	that doesn't support it.
	* configure: Regenerate.

2002-03-13  Jakub Jelinek  <jakub@redhat.com>

	PR target/5626
	* config/sparc/sparc.md (normal_branch, inverted_branch,
	normal_fp_branch, inverted_fp_branch, normal_fpe_branch,
	inverted_fp_branch): Adjust calls to output_cbranch.
	Set length attribute.
	(normal_int_branch_sp64, inverted_int_branch_sp64): Adjust calls to
	output_v9branch.  Set length attribute.
	* config/sparc/sparc.c (fcc0_reg_operand, noov_compare64_op): New
	predicates.
	(noov_compare_op): Handle CCX_NOOVmode the same way as CC_NOOVmode.
	(output_cbranch): Likewise.  Handle far branches.
	(output_v9branch): Handle far branches.
	* config/sparc/sparc-protos.h (output_cbranch, output_v9branch):
	Adjust prototypes.
	* config/sparc/sparc.h (PREDICATE_CODES): Add fcc0_reg_operand and
	noov_compare64_op predicates.

2002-03-13  Jason Merrill  <jason@redhat.com>

	* gthr-posix.h (__gthread_active_p): Move __gthread_active_ptr
	into the function and constify it.
	* gthr-dce.h, gthr-solaris.h: Likewise.

2002-03-13  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.h (PAD_VARARGS_DOWN): Define.
	* config/rs6000/rs6000.c (rs6000_va_arg): Use
	std_expand_builtin_va_arg if not ABI_V4.

2002-03-13  Jason Merrill  <jason@redhat.com>

	* varasm.c (globalize_decl): New fn.
	(assemble_start_function): Use it.
	(asm_emit_uninitialized): Use it.
	(assemble_alias): Use it.
	(assemble_variable): Use it.

2002-03-13  Hans-Peter Nilsson  <hp@axis.com>

	* config/cris/cris.c (cris_target_asm_function_prologue): Revert
	2002-03-12 internal visibility change.
	(cris_encode_section_info): Consider MODULE_LOCAL_P when encoding
	visibility into SYMBOL_REF_FLAG.

2002-03-13  Ulrich Weigand  <uweigand@de.ibm.com>

	* expr.c (expand_expr, case NE_EXPR): Do not call copy_to_reg with
	VOIDmode operand.  Add compile-time optimization for constant results.

2002-03-12  Jason Merrill  <jason@redhat.com>

	* c-typeck.c (convert_for_assignment): Don't allow conversions
	between pointers and references.  Only allow lvalues to convert to
	reference.

2002-03-13  Hartmut Penner  <hpenner@de.ibm.com>

	* config/s390/s390.h (PROFILE_BEFORE_PROLOGUE): Emit profile code
	before prologue, to avoid scheduling problems.

2002-03-13  Jakub Jelinek  <jakub@redhat.com>

	* config/sparc/sparc.h (INITIAL_FRAME_POINTER_OFFSET): Remove.
	(ELIMINABLE_REGS): Add sfp->sp.
	(INITIAL_ELIMINATION_OFFSET): Compute sfp->sp offset too.

2002-03-13  Jakub Jelinek  <jakub@redhat.com>

	PR optimization/5892
	* config/ia64/ia64.c (rotate_one_bundle): Update current packet.

2002-03-13  Jakub Jelinek  <jakub@redhat.com>

	* loop.c (basic_induction_var): Don't call convert_modes if mode
	classes are different.

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

	PR optimization/5901
	* function.c (reposition_prologue_and_epilogue_notes): Position
	the markers after/before the last/first insn not deleted.

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

	PR optimization/5878
	* config/arc/arc.h, config/cris/cris.h, config/i386/i386.h,
	config/m68k/m68k.h, config/s390/s390.h, config/sparc/sparc.h
	(PIC_OFFSET_TABLE_REGNUM): Conditionalize on flag_pic.

	* config/arm/arm.h config/i386/i386.h, config/m68k/m68k.h,
	config/sparc/sparc.h (CONDITIONAL_REGISTER_USAGE): Set
	PIC_OFFSET_TABLE_REGNUM based on INVALID_REGNUM not flag_pic.

	* config/arc/arc.h (CONDITIONAL_REGISTER_USAGE): New.
	* config/arm/arm.c (arm_pic_register): Init to INVALID_REGNUM.
	(arm_override_options): Set arm_pic_register if TARGET_APCS_STACK
	also.  Don't set it if not flag_pic.
	* config/i386/i386.c (ix86_save_reg): Trust PIC_OFFSET_TABLE_REGNUM
	to be INVALID_REGNUM when not used.

2002-03-13  Aldy Hernandez  <aldyh@redhat.com>

	* expmed.c (store_bit_field): Reset alias set for memory.
	(extract_bit_field): Same.

2002-03-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* c-common.c (c_tree_code_type, c_tree_code_length,
	c_tree_code_name, add_c_tree_codes): Delete.
	* c-common.h (add_c_tree_codes): Delete.
	* c-lang.c (tree_code_type, tree_code_length, tree_code_name):
	Define.
	* c-objc-common.c (c_objc_common_init): Don't call
	add_c_tree_codes, instead set lang_unsafe_for_reeval.
	* objc/objc-act.c (objc_tree_code_type, objc_tree_code_length,
	objc_tree_code_name, add_objc_tree_codes): Delete.
	(objc_init): Don't call add_objc_tree_codes.
	* objc/objc-lang.c (tree_code_type, tree_code_length,
	tree_code_name): Define.
	* toplev.c (lang_independent_init): Don't set
	tree_code_length[IDENTIFIER_NODE].
	* tree.c (tree_code_type, tree_code_length, tree_code_name):
	Delete definitions, moved to language front-ends.
	* tree.def (IDENTIFIER_NODE): Hardwire the length.
	* tree.h (tree_code_type, tree_code_length, tree_code_name):
	Const-ify.
	(tree_code_length): Change type to unsigned char.

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

	* config/i386/i386.c (ix86_expand_prologue): Revert 2002-03-03
	internal visibility change.

2002-03-12  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/xtensa.c (xtensa_expand_block_move): Use
	validize_mem() instead of change_address to avoid clobbering
	memory attributes.

2002-03-12  Neil Booth  <neil@daikokuya.demon.co.uk>

	* c-lex.h (position_after_whitespace): Remove.

2002-03-12  Jakub Jelinek  <jakub@redhat.com>

	* c-lex.c (cb_ident, c_lex): Remove unnecessary cast.
	(lex_string): Use unsigned char pointers.

2002-03-12  Ulrich Weigand  <uweigand@de.ibm.com>

	* reload1.c (reload): Ignore MEM REG_EQUIV notes if the equivalent
	is not a valid memory_operand.

2002-03-12  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/xtensa-config.h: Define XCHAL_HAVE_LOOPS.
	* config/xtensa/lib1funcs.asm: Fix copyright to include
	special case for libgcc files.
	(__udivsi3): Avoid loop instructions when XCHAL_HAVE_LOOPS is 0.
	(__divsi3): Likewise.
	(__umodsi3): Likewise.
	(__modsi3): Likewise.
	* config/xtensa/lib2funcs.S: Fix copyright to include
	special case for libgcc files.

2002-03-12  Tom Rix  <trix@redhat.com>

	* collect2.c (resolve_lib_name): Move outside of
	OBJECT_FORMAT_COFF ifdef.
	(ignore_library): Same.

2002-03-12  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/t-xtensa (CRTSTUFF_T_CFLAGS_S): Define.

2002-03-12  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/xtensa.h (ASM_OUTPUT_POOL_PROLOGUE): Switch
	to function_section before writing out the constant pool.

2002-03-12  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.h (PREDICATE_CODES): Add any_operand and
	zero_constant.
	* config/rs6000/rs6000.c (easy_fp_constant): Fix formatting.

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

	* config/rs6000/rs6000.md (addsi3): Optimize sign extension.
	(adddi3): Likewise.
	(movdf): Likewise.
	(movdi): Likewise.
	(cmpsi splitter): Likewise.
	(modsi3): Fail if <= 0.
	* config/rs6000/rs6000.c (reg_or_add_cint64_operand): Remove
	redundant test when HOST_BITS_PER_WIDE_INT != 32.
	(reg_or_sub_cint64_operand): Likewise.
	(num_insns_constant_wide): Optimize sign extension.
	(rs6000_legitimize_address): Likewise.

2002-03-12  Andrew MacLeod  <amacleod@redhat.com>

	* config/sparc/linux.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define.
	* config/sparc/linux64.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define.

2002-03-12  Andrew MacLeod  <amacleod@redhat.com>

	* config/sparc/sparc.h (RETURN_ADDR_RTX): Include v9 stack bias in
	address calculation.

2002-03-12  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.md (reload_insi, reload_indi): Change mode of
	scratch register to DImode / TImode.
	config/s390/s390.c (s390_expand_plus_operand): Make sure scratch
	register used does not overlap the target.

2002-03-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (debug.o): Depend on debug.h.
	* dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Const-ify.
	* debug.c (do_nothing_debug_hooks): Likewise.
	* debug.h (debug_hooks, do_nothing_debug_hooks, dbx_debug_hooks,
	sdb_debug_hooks, xcoff_debug_hooks, dwarf_debug_hooks,
	dwarf2_debug_hooks, vmsdbg_debug_hooks): Likewise.
	* dwarf2out.c (dwarf2_debug_hooks): Likewise.
	* dwarfout.c (dwarf_debug_hooks): Likewise.
	* integrate.c (output_inline_function): Likewise.
	* objc/objc-act.c (synth_module_prologue): Likewise.
	* sdbout.c (sdb_debug_hooks): Likewise.
	* toplev.c (debug_hooks): Likewise.
	* vmsdbgout.c (vmsdbg_debug_hooks): Likewise.

2002-03-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* 1750a.h, a29k.h, arc.h, arm.h, c4x.h, clipper.h, cris.h, d30v.h,
	dsp16xx.h, fr30.h, h8300.h, i370.h, i386.h, i860.h, i960.h,
	m32r.h, m68hc11.h, m68k.h, m88k.h, mcore.h, mmix.h, mn10300.h,
	ns32k.h, pa.h, pdp11.h, pj.h, romp.h, s390.h, stormy16.h,
	v850.h, vax.h, we32k.h, xtensa.h (POINTER_SIZE): Delete.
	* defaults.h (POINTER_SIZE): Define.
	* doc/tm.texi (POINTER_SIZE): Document default.

2002-03-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* mn10200.h (PTRDIFF_TYPE): Change it to a signed type.

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

	* toplev.c (rest_of_compilation): Call purge_all_dead_edges
	if rebuild_label_notes_after_reload.

2002-03-12  Hans-Peter Nilsson  <hp@axis.com>

	* config/cris/cris.c (cris_target_asm_function_prologue):  Do not
	emit pic register load if "internal" visibility.
	(cris_print_operand): Avoid traditional-warning for 0xffffffff.
	(cris_expand_builtin_va_arg): Do all computations on trees.

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

	* rtlanal.c: Include recog.h.
	(keep_with_call_p): Fix thinko.
	* Makefile.in (rtlanal.o): Update dependencies.

2002-03-11  Chris Meyer  <cmeyer@gatan.com>

	* genflags.c (gen_insn): Use IS_VSPACE.
	* genoutput.c (output_insn_data): Likewise.
	(process_template): Likewise.

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

	* toplev.c (rest_of_compilation): Don't compile if we've had errors.

2002-03-11  Neil Booth  <neil@daikokuya.demon.co.uk>

	* Makefile.in: Update.
	* doc/cppenv.texi, cppopts.texi: Split out of cpp.texi and gcc.texi.
	Update documentation.
	* doc/gcc.texi: Include cppopts.texi and cppenv.texi.
	* doc/cpp.texi: Include cppopts.texi and cppenv.texi.

2002-03-11  Zack Weinberg  <zack@codesourcery.com>

	* Makefile.in: Give texi2pod its input file as a command line
	argument, not on stdin.

2002-03-11  Dan Nicolaescu  <dann@ics.uci.edu>
	    Daniel Berlin  <dan@dberlin.org>

	C++ alias analysis improvement.
	* alias.c (record_component_aliases): Record aliases for base
	classes too.

2002-03-11  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.h (REG_ALLOC_ORDER): Add missing register.

2002-03-11  Douglas B Rupp  <rupp@gnat.com>

	* toplev.c (vms_fopen): Remove, not needed.

	* vmsdbgout.c (lookup_filename): Adjust creation date for GMT.

	* config/alpha/xm-vms.h (__UNIX_FWRITE): Define.

	* config/alpha/alpha.c (alpha_sa_size, VMS): Don't reserve space
	for FP, already done later.

	* toplev.c (debug_args): Add entry for VMS_DEBUG.
	* vmsdbgout.c (vmsdbgout_init): Fix typo in call to xmalloc.

2002-03-11  Richard Sandiford  <rsandifo@redhat.com>

	* defaults.h (LARGEST_EXPONENT_IS_NORMAL, ROUND_TOWARDS_ZERO): New.
	(MODE_HAS_NANS, MODE_HAS_INFINITIES): Evaluate to false if
	LARGEST_EXPONENT_IS_NORMAL for the given mode.
	(MODE_HAS_SIGN_DEPENDENT_ROUNDING): False when ROUND_TOWARDS_ZERO.
	* real.c (eadd1): Make rounding dependent on !ROUND_TOWARDS_ZERO.
	(ediv, emul, eldexp, esqrt): Likewise.
	(etoe113, etoe64, etoe53, etoe24, etodec, etoibm, etoc4x): Likewise.
	(e24toe): Only check NaNs & infinities if !LARGEST_EXPONENT_IS_NORMAL.
	(saturate): New function.
	(toe53, toe24): Saturate on overflow if LARGEST_EXPONENT_IS_NORMAL.
	(make_nan): Use a saturation value instead of a NaN if
	LARGEST_EXPONENT_IS_NORMAL.  Warn when this happens.
	* fp-bit.c (pack_d): Saturate on NaN, infinite or overflowing
	inputs if LARGEST_EXPONENT_IS_NORMAL.  Represent subnormals as
	zero if NO_DENORMALS.  Only round to nearest if !ROUND_TOWARDS_ZERO.
	(unpack_d): No NaNs or infinities if LARGEST_EXPONENT_IS_NORMAL.
	(_fpmul_parts, _fpdiv_parts): Only round to nearest if
	!ROUND_TOWARDS_ZERO.
	* doc/tm.texi (LARGEST_EXPONENT_IS_NORMAL): Document.
	(ROUND_TOWARDS_ZERO): Document.

2002-03-11  Andreas Jaeger  <aj@suse.de>

	* cfg.c (dump_flow_info): Remove unused variable.

2002-03-11  Hans-Peter Nilsson  <hp@bitrange.com>

	* config/mmix/mmix.c (mmix_expand_builtin_va_arg): Do all
	computations on trees.

2002-03-10  Richard Henderson  <rth@redhat.com>

	PR 5693:
	* reload.c (copy_replacements_1): New.
	(copy_replacements): Use it to recurse through the rtx.

2002-03-10  Richard Henderson  <rth@redhat.com>

	* loop.c (strength_reduce): Compute number of iterations as
	unsigned HOST_WIDE_INT.

2002-03-10  Richard Henderson  <rth@redhat.com>

	* sched-rgn.c (add_branch_dependences): Don't allow insns that throw
	to move away from the end of the block.

2002-03-10  Neil Booth  <neil@daikokuya.demon.co.uk>

	PR preprocessor/5899
	* cppinit.c (init_dependency_output): Don't ignore -dM etc.

2002-03-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* mbchar.c (JIS_state_table, JIS_action_table): Const-ify.

	* attribs.c (decl_attributes): Fix signed/unsigned warning.

2002-03-10  Hans-Peter Nilsson  <hp@bitrange.com>

	* config/mmix/mmix.c: Improve comments.
	(mmix_target_asm_function_prologue): Drop variable
	empty_stack_frame.  Don't allocate unused slot above fp.
	(mmix_target_asm_function_epilogue): Mirror prologue changes.
	* config/mmix/mmix.h (MMIX_GNU_ABI_REG_ALLOC_ORDER): Don't have
	brace in first column.
	(enum reg_class): Ditto.
	(FIRST_PARM_OFFSET): Now 0.
	(USER_LABEL_PREFIX): Remove #if 0:d definition.

2002-03-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* combine.c (make_extraction): Fix error in last change.

2002-03-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* c4x.c (c4x_fp_reglist): Const-ify.
	* cris.c (cris_print_operand): Likewise.
	* i386.c (ix86_va_arg): Likewise.
	* ia64/unwind-ia64.c (unw_decode_table): Likewise.
	* m32r.c (m32r_hard_regno_mode_ok): Likewise.
	* m32r.h (m32r_hard_regno_mode_ok): Likewise.
	* mcore.c (regno_reg_class, mcore_unique_section): Likewise.
	* mcore.h (regno_reg_class): Likewise.
	* mips.c (gen_int_relational): Likewise.
	* ns32k.c (ns32k_reg_class_contents, regclass_map): Likewise.
	* ns32k.h (ns32k_reg_class_contents, regclass_map): Likewise.
	* pdp11.c (move_costs): Likewise.
	* pj.h (INITIALIZE_TRAMPOLINE): Likewise.
	* s390.c (s390_branch_condition_mnemonic, regclass_map):
	Likewise.
	* s390.h (regclass_map): Likewise.
	* sh.c (shift_amounts): Likewise.
	* sh.md (rotlsi3): Likewise.

2002-03-09  Geoffrey Keating  <geoffk@redhat.com>

	* config/rs6000/rs6000.md (ne0+4): Add extra CLOBBER.
	(ne0+5): Use new clobber to generate proper shift pattern.
	Patch by Michael Matz <matz@kde.org>.

2002-03-09  Andreas Schwab  <schwab@suse.de>

	* gcc.c (validate_all_switches): Also handle `%W{...}'.

2002-03-09  Geoffrey Keating  <geoffk@redhat.com>

	* config/rs6000/sysv4.h (BIGGEST_ALIGNMENT): Don't define.

2002-03-09  Jakub Jelinek  <jakub@redhat.com>

	PR middle-end/5877
	* expr.c (highest_pow2_factor): Check TREE_INT_CST_LOW
	even for non-representable constants.

Sat Mar  9 07:20:01 2002  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* emit-rtl.c (copy_most_rtx): Accept EXPR_LIST for may_share.
	* function.c (fixup_var_refs): Add MAY_SHARE parameter.
	(fixup_var_refs_insns, fixup_var_refs_insns_with_has): Likewise.
	(fixup_var_refs_insn, fixup_var_refs_1): Likewise.
	(pop_function_context): Compute MAY_SHARE parameter for
	fixup_var_refs.
	(fixup_var_refs_1, case MEM): Pass MAY_SHARE to copy_most_rtx, not VAR.
	(gen_mem_addressof): Call fixup_var_refs with new parm.

	* combine.c (make_extraction): Don't make extension of CONST_INT.

2002-03-09  Alexandre Oliva  <aoliva@redhat.com>

	* config/mips/mips.c (function_arg_pass_by_reference): Force to 0
	in o32 and o64 ABIs.
	* config/mips/abi64.h (MUST_PASS_IN_STACK): Define as in expr.h,
	but getting fixed-size structs passed in registers regardless of
	padding in o32 and o64 ABIs.

	* config/mips/mips.c (mips_va_arg): Apply big-endianness address
	offset before loading address of argument passed by transparent
	reference.

2002-03-08  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* t-pa64 (LIB1ASMFUNCS, LIB1ASMSRC): Delete.

2002-03-09  Alexandre Oliva  <aoliva@redhat.com>

	* config/mips/mips.c (mips_expand_prologue): Set regno of vararg
	marker such that registers after it are saved.

2002-03-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* sparc.c (arith_4096_operand): Fix error in last change.

2002-03-08  Alexandre Oliva  <aoliva@redhat.com>

	* config/mips/mips.h (SUBTARGET_CPP_SIZE_SPEC): Remove duplicate
	defaults for MEABI.

2002-03-08  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/rs6000.c (rs6000_va_arg): Fix alignment for
	vectors.

2002-03-08  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/sysv4.h (BIGGEST_ALIGNMENT): Change for altivec.

Fri Mar  8 21:27:49 CET 2002  Jan Hubicka  <jh@suse.cz>

	* cfgrtl.c (purge_dead_edges): Set BB_DRITY flags if edge has been
	removed; fix return value.
	* combine.c (combine_instructions): Dirtify blocks where we failed to
	update liveness; purge dead edges; use update_life_info_in_dirty_blocks.
	* toplev.c (rest_of_compilation): Do not purge_dead_edges after combine.

2002-03-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* gcse.c (insert_insn_end_bb): Fix typo in last change.

Fri Mar  8 21:08:52 CET 2002  Jan Hubicka  <jh@suse.cz>

	* recog.c (peephole2_optimize): Re-distribute EH edges.

2002-03-08  Neil Booth  <neil@daikokuya.demon.co.uk>

	* expr.c (expand_expr): Use unsave lang hook.
	* langhooks-def.h (LANG_HOOKS_UNSAVE): New.
	(LANG_HOOKS_INITIALIZER): Update.
	* langhooks.h (struct lang_hooks): New hook unsave.
	* tree.c (lang_unsave, lang_unsave_expr_now): Remove.
	(unsave_expr_1): Remove unused lang_unsave_expr_now.
	(unsave_expr_now_r): Rename lhd_unsave.  Update. Return input.
	(unsave_expr_now): Remove.
	* tree.h (unsave_expr_now, lang_unsave,
	lang_unsave_expr_now): Remove.
	(lhd_unsave): New.

2002-03-08  Andreas Jaeger  <aj@suse.de>

	* flow.c (propagate_block_delete_insn): Remove unused variable.

2002-03-08  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.c (h8300_adjust_insn_length): Tighten
	insn length for memory load/store.

2002-03-08  Craig Rodrigues  <rodrigc@gcc.gnu.org>

	* doc/install.texi (--with-libiconv-prefix): Document.

2002-03-08  Michael Y. Brukman  <myb2@cornell.edu>

	* doc/sourcebuild.texi: Fix typo.

2002-03-08  Jakub Jelinek  <jakub@redhat.com>

	PR c/3711
	* builtins.c (std_expand_builtin_va_arg): Do all computations on
	trees.

Fri Mar  8 06:48:45 2002  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* rtl.c (copy_most_rtx): Move from here ...
	* emit-rtl.c (copy_most_rtx): ... to here.

2002-03-08  Alexandre Oliva  <aoliva@redhat.com>

	* config/mips/mips.h (LONG_MAX_SPEC): Rewrite, along with
	SUBTARGET_CPP_SIZE_SPEC.
	* config/mips/abi64.h (LONG_MAX_SPEC): Delete.

	* config/mips/mips.h (SUBTARGET_CPP_SIZE_SPEC): Simplify.

2002-03-07  Matt Hiller  <hiller@redhat.com>

	* gensupport.c (first_dir_md_include): Renamed from include;
	change all references.
	(last_dir_md_include): Renamed from last_include; change all
	references.
	(init_md_reader): Unconditionally initialize base_dir whether or
	not filename is a relative path.

2002-03-07  Alexandre Oliva  <aoliva@redhat.com>

	* config/fp-bit.c (_unord_f2): Compile it in even if
	US_SOFTWARE_GOFAST is enabled.

	* config/gofast.h (GOFAST_RENAME_LIBCALLS): Set gt and ge as
	NULL_RTX.  Set all HFmode operations as NULL_RTX.
	* optabs.c (prepare_float_lib_cmp) <GT, GE, LT, LE>: If libfunc is
	NULL_RTX, try reversing the comparison and the operands.

2002-03-06  Ulrich Weigand  <uweigand@de.ibm.com>

	* genextract.c (walk_rtx): Recurse into MATCH_PAR_DUP.
	genoutput.c (scan_operands): Recurse into MATCH_PAR_DUP
	and MATCH_OP_DUP.

Thu Mar  7 16:54:10 CET 2002  Jan Hubicka  <jh@suse.cz>

	* reload1.c (reload_cse_delete_noop_set): Purge dead edges.

Thu Mar  7 16:33:54 CET 2002  Jan Hubicka  <jh@suse.cz>

	* basic-block.h (fixup_abnormal_edges): Declare.
	* reload1.c (fixup_abnormal_edges): New function.
	* reg-stack.c (convert_regs): Use it.

	* gcse.c (insert_insn_end_bb): Handle trapping insns.

	* gcse.c (hash_scan_set): Refuse instructions with EH edges.

2002-03-07  Richard Sandiford  <rsandifo@redhat.com>

	* defaults.h (MODE_HAS_NANS, MODE_HAS_INFINITIES): New.
	(MODE_HAS_SIGNED_ZEROS, MODE_HAS_SIGN_DEPENDENT_ROUNDING): New.
	* flags.h (HONOR_NANS, HONOR_INFINITIES, HONOR_SIGNED_ZEROS): New.
	(HONOR_SIGN_DEPENDENT_ROUNDING): New.
	* builtins.c (expand_builtin_mathfn): Use HONOR_NANS.
	* c-common.c (truthvalue_conversion): Reduce x - y != 0 to x != y
	unless x and y could be infinite.
	(expand_unordered_cmp): New, mostly split from expand_tree_builtin.
	Check that the common type of both arguments is a real, even for
	targets without unordered comparisons.  Allow an integer argument
	to be compared against a real.
	(expand_tree_builtin): Use expand_unordered_cmp.
	* combine.c (combine_simplify_rtx): Use the new HONOR_... macros.
	* cse.c (fold_rtx): Likewise.  Fix indentation.
	* fold-const.c (fold_real_zero_addition_p): New.
	(fold): Use it, and the new HONOR_... macros.
	* ifcvt.c (noce_try_minmax): Use the new HONOR_... macros.
	* jump.c (reversed_comparison_code_parts): After searching for
	the true comparison mode, use HONOR_NANS to decide whether it
	can be safely reversed.
	(reverse_condition_maybe_unordered): Remove IEEE check.
	* simplify-rtx.c (simplify_binary_operation): Use the new macros
	to decide which simplifications are valid.  Allow the following
	simplifications for IEEE: (-a + b) to (b - a), (a + -b) to (a - b),
	and (a - -b) to (a + b).
	(simplify_relational_operation): Use HONOR_NANS.
	* doc/tm.texi: Document the MODE_HAS_... macros.

2002-03-07  Richard Earnshaw  <rearnsha@arm.com>

	* combine.c (simplify_comparison): If simplifying a logical shift
	right and compare with constant, force the comparison to unsigned.

2002-03-07  Aldy Hernandez  <aldyh@redhat.com>

	* doc/invoke.texi: Add documentation for -mabi=no-altivec.

	* config/rs6000/rs6000.c (rs6000_parse_abi_options): Add
	-mabi=no-altivec
	(alt_reg_names): Remove % for vrsave.

2002-03-06  Richard Henderson  <rth@redhat.com>

	PR optimization/5844
	* genemit.c (gen_exp): New argument used.  Invoke copy_rtx
	if used indicates we've already emitted one copy of an operand.
	(gen_insn, gen_expand, output_add_clobbers): Supply a null used.
	(gen_split): Supply a non-null used.

2002-03-06  Ulrich Weigand  <uweigand@de.ibm.com>

	* reload1.c (reload): Unshare all rtl after reload is done.

	* simplify-rtx.c (simplify_plus_minus): Do not abort,
	but simply fail if the expression is too complex to simplify.
	(simplify_gen_binary): Handle simplify_plus_minus failures.

Wed Mar  6 20:32:09 CET 2002  Jan Hubicka  <jh@suse.cz>

	* toplev.c (rest_of_compilation): Do jump threading before SSA path;
	consistently call delete_trivially_dead_insns after CSE and GCSE;
	fix DFI_life dumping; do jump threading after liveness; do crossjumping
	after liveness2; update comment in last crossjumping.
	* cfgcleanup.c (try_crossjump_to_edge): Dirtify block.

Wed Mar  6 12:27:10 2002  Jeffrey A Law  (law@redhat.com)

	* ssa-ccp.c (ssa_fast_dce): Update the DF def-use chains
	after completing fast dead code elimination.

	* m68k.h (CONST_COSTS): Lower cost of 0.0 when used inside a
	COMPARE operator.

2002-03-06  Phil Edwards  <pme@gcc.gnu.org>

	* version.c:  Fix misplaced leading blanks on first line.

Wed Mar  6 19:08:03 CET 2002  Jan Hubicka  <jh@suse.cz>

	* cfgrtl.c (verify_flow_info): Accept RESX as EH edge source.

Wed Mar  6 18:14:43 CET 2002  Jan Hubicka  <jh@suse.cz>

	* cfgcleanup.c (mentions_nonequal_regs): New function.
	(thread_jump): Use it.
	* toplev.c (rest_of_compilation): Run jump threading after
	liveness.

2002-03-06  Jakub Jelinek  <jakub@redhat.com>

	* ssa-ccp.c (ssa_ccp_substitute_constants): Backout 2002-03-05
	patch.

Wed Mar  6 11:28:19 CET 2002  Jan Hubicka  <jh@suse.cz>

	* predict.c (estimate_bb_frequencies): Do not reload the
	frequencies from notes.

Wed Mar  6 10:59:39 CET 2002  Jan Hubicka  <jh@suse.cz>

	* cfgrtl.c (delete_insn_and_edges, delete_insn_chain_and_edges): New.
	* rtl.h (delete_insn_and_edges, delete_insn_chain_and_edges): Declare

	* basic-block.h (update_life_info, update_life_info_in_dirty_blocks,
	delete_noop_moves): Return indeger.
	* flow.c (ndead): New variable.
	(propagate_block_delete_insn): Use delete_insn_and_edges; remove
	BB argument; update callers.
	(propagate_block_delete_libcall): Use delete_insn_chain_and_edges.
	(life_analysis): Do not call purge_all_dead_edges.
	(update_life_info): Return number of deleted insns; print statistics.
	(update_life_info_in_dirty_blocks): likewise.
	(delete_noop_moves): Use delete_insn_and_edges; print statistics;
	return number of insns deleted.

	* cse.c: Include timevar.h
	(delete_trivially_dead_insns): Kill preserve_basic_blocks argument;
	iterate until stabilizes; print statistics; return number of killed
	insns.
	* Makefile.in: (cse.o): Add timevar.h dependency
	* rtl.h (delete_trivially_dead_insns): New.
	* timever.def: Add TV_DELETE_TRIVIALLY_DEAD timer.
	* toplev.c (rest_of_compilation): Update callers.

	* cfgcleanup.c (try_optimize_cfg): Kill blocks.
	(try_optimize_cfg): Do not update liveness.
	(cleanup-cfg): Loop until try_optimize_cfg and dead code
	removal stabilizes; use delete_trivially_dead_insns.

	* cfgrtl.c (verify_flow_info): Sanity check outgoing edges.

2002-03-05  Zack Weinberg  <zack@codesourcery.com>

	* cppmain.c (setup_callbacks): Disable #pragma and #ident
	callbacks when processing assembly language.

2002-03-05  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* pa.h (ASM_FILE_END): Define.
	* som.h (ASM_FILE_END): Delete.

	* pa.c (function_arg): Don't pass floats in general registers in
	indirect calls if TARGET_ELF32.

2002-03-05  Richard Henderson  <rth@redhat.com>

	* config/i386/i386.md (floatsidf2): Conditionalize on hard-float.

2002-03-05  Danny Smith  <dannysmith@users.sourceforge.net>

	* gthr-win32.h (__GTHREAD_MUTEX_INIT_DEFAULT): Define.

2002-03-05  Jakub Jelinek  <jakub@redhat.com>

	* mklibgcc.in: Prepend a tab before .hidden, add $flags to gcc
	-r command line.  Don't hide any symbols if not building
	shared libgcc.

Tue Mar  5 18:31:27 CET 2002  Jan Hubicka  <jh@suse.cz>

	* cfg.c (dump_flow_info): Warn about profile mismatches.
	* cfgrtl.c (verify_flow_info): Few aditional sanity checks.
	(purge_dead_edges): Remove REG_BR_PROB notes on simplejumps.

2002-03-05  Jakub Jelinek  <jakub@redhat.com>

	* expmed.c (emit_store_flag): Don't test BITS_PER_WORD * 2
	wide volatile memory by parts.

2002-03-05  Jakub Jelinek  <jakub@redhat.com>

	* ssa-ccp.c (ssa_ccp_substitute_constants): Don't crash if def
	is NULL.

2002-03-05  Richard Henderson  <rth@redhat.com>

	* rs6000.h (TOTAL_ALTIVEC_REGS): Fix off-by-one error.

2002-03-04  Geoffrey Keating  <geoffk@redhat.com>

	* toplev.c (documented_lang_options): Document more
	language-specific options.
	* doc/invoke.texi (Warning Options): Correct documentation for
	-Wno-multichar, -Wno-div-by-zero, and -Wsystem-headers.
	* c-decl.c (c_decode_option): Use a table to handle warning options.

2002-03-05  Hans-Peter Nilsson  <hp@bitrange.com>

	* config/mmix/mmix.h (ENCODE_SECTION_INFO): Pass on new second
	parameter to mmix_encode_section_info.
	(LINK_SPEC): Don't defsym __.MMIX.start..text if linking
	relocatably.  Always produce ELF, not mmo if linking relocatably.
	* config/mmix/mmix.c (mmix_encode_section_info): If new parameter
	first is nonzero, don't add symbol prefix.
	* config/mmix/mmix-protos.h (mmix_encode_section_info): Tweak
	prototype accordingly.

2002-03-04  Krister Walfridsson  <cato@df.lth.se>

	* config.gcc (*-*-netbsd*): Add t-slibgcc-elf-ver to tmake_file.

2002-03-05  Joseph S. Myers  <jsm28@cam.ac.uk>

	* configure.in: Increase required makeinfo version to 4.1.
	* configure: Regenerate.

2002-03-04  Geoffrey Keating  <geoffk@redhat.com>

	* .cvsignore: Remove *.info* and genrtl*; these files are generated
	elsewhere now.

2002-03-04  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/include/texinfo.tex: Update to version 2002-03-01.06.
	* doc/invoke.texi: Fix @math uses.

Mon Mar  4 15:33:54 CET 2002  Jan Hubicka  <jh@suse.cz>

	* toplev.c (rest_of_compilation): Cleanup CFG after dead jumptables
	removal

2002-03-03  Aldy Hernandez  <aldyh@redhat.com>

	* config.gcc (powerpc-*-eabialtivec*): Use t-ppcendian.
	(powerpc-*-eabisimaltivec*): Same.

	* config/rs6000/t-ppcendian: New.

2002-03-04  Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>

	* c4x-protos.h, c4x.h, c4x.c, c4x.md: Add new functions
	nonimmediate_src_operand and nonimmediate_lsrc_operand to
	disallow ZERO_EXTEND with CONST_INT or CONST_DOUBLE.

2002-03-03  Richard Henderson  <rth@redhat.com>

	* toplev.c (rest_of_decl_compilation): Revert last two changes.

2002-03-03  Zack Weinberg  <zack@codesourcery.com>

	* emit-rtl.c, final.c, fold-const.c, gengenrtl.c, optabs.c,
	print-tree.c, real.c, real.h, recog.c, rtl.c, simplify-rtx.c,
	tree.c, config/m68k/m68k.c:
	Remove all #ifndef REAL_ARITHMETIC blocks, make all #ifdef
	REAL_ARITHMETIC blocks unconditional.  Delete some further
	#ifdef blocks predicated on REAL_ARITHMETIC.
	* flags.h, toplev.c: Delete remaining references to
	flag_pretend_float.

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

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

2002-03-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* 1750a.h, a29k.h, alpha.h, arc.h, arm.h, avr.h, c4x.h, clipper.h,
	convex.h, cris.h, d30v.h, dsp16xx.h, elxsi.h, fr30.h, h8300.h,
	i370.h, i386.h, i860.h, i960.h, ia64.h, m32r.h, m68hc11.h, m68k.h,
	m88k.h, mcore.h, mips.h, mmix.h, mn10200.h, mn10300.h, ns32k.h,
	pa.h, pdp11.h, pj.h, romp.h, rs6000.h, s390.h, sh.h, sparc.h,
	stormy16.h, v850.h, vax.h, we32k.h, xtensa.h (BITS_PER_WORD):
	Delete.
	* defaults.h (BITS_PER_WORD): Define.
	* doc/tm.texi (BITS_PER_WORD): Document default value.

	* 1750a.h, avr.h, convex.h, d30v.h, dsp16xx.h, fr30.h, ia64.h,
	m68hc11.h, m88k.h, mips.h, pdp11.h, rs6000.h, sparc.c,
	stormy16.h, xtensa.h, vmsdbgout.c (CHAR_TYPE_SIZE): Delete.

2002-03-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* attribs.c (init_attributes, decl_attributes): Use ARRAY_SIZE in
	lieu of explicit sizeof/sizeof.
	* i386.c (override_options, ix86_init_mmx_sse_builtins,
	ix86_expand_builtin): Likewise.
	* mips.c (mips_add_gc_roots): Likewise.
	* mmix.c (mmix_output_condition): Likewise.
	* rs6000.c (rs6000_override_options, altivec_expand_builtin,
	altivec_init_builtins): Likewise.
	* sparc.c (mark_ultrasparc_pipeline_state): Likewise.
	* cppexp.c (Nsuff, parse_number): Likewise.
	* cppinit.c (builtin_array_end): Likewise.
	* gcc.c (n_default_compilers, process_command): Likewise.
	* genpreds.c (output_predicate_decls): Likewise.
	* ggc-page.c (NUM_EXTRA_ORDERS): Likewise.
	* lcm.c (N_ENTITIES): Likewise.
	* stor-layout.c (set_sizetype): Likewise.

2002-03-03  Richard Henderson  <rth@redhat.com>

	* toplev.c (rest_of_decl_compilation): Do not invoke make_decl_rtl
	for types or labels.

2002-03-03  Richard Henderson  <rth@redhat.com>

	* c-decl.c (start_decl): Initialized variables are not common.

2002-03-02  Per Bothner  <per@bothner.com>

	* gcc.c (option_map):  Suport new --bootclasspath option.
	--CLASSPATH is now just an alias for --classpath.

2002-03-02  Richard Henderson  <rth@redhat.com>

	* config/i386/i386.h (ix86_expand_prologue): Do not emit pic register
	load if "internal" visibility.
	* doc/extend.texi: Document visibility meanings.

2002-03-02  Richard Henderson  <rth@redhat.com>

	* config/i386/i386.h (ENCODE_SECTION_INFO): MODULE_LOCAL_P applies
	to functions as well.

2002-03-02  Richard Henderson  <rth@redhat.com>

	* attribs.c (handle_alias_attribute): Don't call assemble_alias.
	(handle_visibility_attribute): Don't call assemble_visibility.
	* toplev.c (rest_of_decl_compilation): Invoke make_decl_rtl even
	without asmspec.  Invoke assemble_alias when needed.
	* varasm.c (maybe_assemble_visibility): New.
	(assemble_start_function, assemble_variable, assemble_alias): Use it.

2002-03-02  Richard Henderson  <rth@redhat.com>

	* varasm.c (make_decl_rtl): Remove call to REDO_SECTION_INFO_P;
	invoke ENCODE_SECTION_INFO with first call flag.

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

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

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

2002-03-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* a29k.h, alpha.h, arc.h, arm.h, avr.h, clipper.h, convex.h,
	cris.h, d30v.h, elxsi.h, fr30.h, h8300.h, i370.h, i386.h, i860.h,
	i960.h, ia64.h, m32r.h, m68hc11.h, m68k.h, m88k.h, mcore.h,
	mips.h, mmix.h, mn10200.h, mn10300.h, ns32k.h, pa.h, pdp11.h,
	pj.h, romp.h, rs6000.h, s390.h, sh.h, sparc.h, stormy16.h, v850.h,
	vax.h, we32k.h, xtensa.h: (BITS_PER_UNIT): Delete.
	* defaults.h (BITS_PER_UNIT): Define.
	* doc/tm.texi (BITS_PER_UNIT): Document default value.

2002-03-02  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300-protos.h: Add a prototype for
	compute_a_shift_length.
	* config/h8300/h8300.c (h8300_asm_insn_count): New.
	(compute_a_shift_length): Likewise.
	(h8300_adjust_insn_length): Do not adjust insn length of shift
	insns.
	* config/h8300/h8300.md (anonymous shift patterns): Use
	compute_a_shift_length.

Sat Mar  2 06:30:14 2002  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* config/sparc/sparc.c (sparc_initialize_trampoline): Use
	trunc_int_for_mode.

	* emit-rtl.c (offset_address): Call update_temp_slot_address.

2002-03-01  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (CRTSTUFF_CFLAGS): Add -fno-zero-initialized-in-bss.
	* doc/invoke.texi (-fno-zero-initialized-in-bss): Document.
	* flags.h (flag_zero_initialized_in_bss): Declare.
	* toplev.c (flag_zero_initialized_in_bss): New flag.
	(lang_independent_options): Add flag_zero_initialized_in_bss.
	* tree.c (initializer_zerop): New function.
	* tree.h (initializer_zerop): Declare.
	* varasm.c (assemble_variable): If we can emit bss, put zero
	initializers in the bss section.

2002-03-02  Alan Modra  <amodra@bigpond.net.au>

	* config/rs6000/rs6000.h (ASM_WEAKEN_DECL): AIX assembler doesn't
	like more than one symbol per .weak directive.

2002-03-01  Richard Henderson  <rth@redhat.com>

	* config/ia64/ia64.c (ia64_initial_elimination_offset): Do not
	adjust argument_pointer by pretend_args_size.
	(ia64_va_start): Adjust va_start address by -pretend_args_size.

2002-03-01  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.c (h8300_adjust_insn_length): Clean up.

Fri Mar  1 20:59:14 CET 2002  Jan Hubicka  <jh@suse.cz>

	* toplev.c (rest_of_compilation): Delete dead jumptables before
	loop.
	* flow.c (delete_dead_jumptables): Make global.
	* rtl.h (delete_dead_jumptables): Declare.

2002-03-01  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.h (HANDLE_PRAGMA_PACK): Delete.
	* config/rs6000/darwin.h (HANDLE_SYSV_PRAGMA): Define.
	* config/rs6000/xcoff.h (COLLECT_EXPORT_LIST): Delete.

2002-03-01  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300-protos.h: Fix formatting.
	* config/h8300/h8300.c: Likewise.
	* config/h8300/h8300.h: Likewise.

2002-03-01  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.c (print_operand): Support 16-bit
	constant addresses.
	* config/h8300/h8300.h (TINY_CONSTANT_ADDRESS_P): New.

2002-02-28  Richard Henderson  <rth@redhat.com>

	* expmed.c (store_bit_field): Prevent generation of CONCATs;
	pun complex values as integers; use gen_lowpart instead of
	gen_rtx_SUBREG.
	(extract_bit_field): Likewise.

2002-03-01  Alan Modra  <amodra@bigpond.net.au>
	    David Edelsohn  <edelsohn@gnu.org>

	* doc/tm.texi (ASM_WEAKEN_DECL): Document.
	(ASM_WEAKEN_LABEL): Mention ASM_WEAKEN_DECL.
	(SUPPORTS_WEAK): Likewise.
	* output.h (add_weak): Add tree param.
	* varasm.c (add_weak): Likewise.  Save decl.
	(struct weak_syms): Add decl field.
	(mark_weak_decls): New function.
	(init_varasm_once): ggc_add_root mark_weak_decls.
	(assemble_start_function): Use ASM_WEAKEN_DECL.
	(assemble_variable): Likewise.
	(assemble_alias): Likewise.
	(declare_weak): Pass decl to add_weak.
	(weak_finish): Use ASM_WEAKEN_DECL. Try to find decl.
	(remove_from_pending_weak_list): Declare and define for
	ASM_WEAKEN_DECL.
	* c-pragma.c (handle_pragma_weak): Adjust add_weak call.
	* c-pragma.h (HANDLE_PRAGMA_WEAK): Define if ASM_WEAKEN_DECL too.
	* defaults.h (SUPPORTS_WEAK): Likewise.
	* config/rs6000/linux64.h (ASM_DECLARE_FUNCTION_NAME): Don't emit
	.weak for code sym.  Do emit .size for descriptor sym.
	(ASM_DECLARE_FUNCTION_SIZE): Define.
	* config/rs6000/rs6000.h (ASM_WEAKEN_DECL): Define.
	(ASM_OUTPUT_DEF_FROM_DECLS): Don't emit .weak here.  Don't output
	.lglobl unless TARGET_XCOFF.  Formatting fixes.
	* config/rs6000/xcoff.h (ASM_DECLARE_FUNCTION_NAME): Don't emit
	.weak for code sym.
	(HANDLE_PRAGMA_WEAK): Remove.
	(ASM_WEAKEN_LABEL): Remove.
	* config/rs6000/aix.h (HANDLE_SYSV_PRAGMA): Define.

2002-03-01  Jason Merrill  <jason@redhat.com>

	* tree.h (TARGET_EXPR_SLOT, TARGET_EXPR_INITIAL): New macros.
	(TARGET_EXPR_CLEANUP): New macro.

2002-02-28  Steve Ellcey  <sje@cup.hp.com>

	* doc/rtl.texi (SUBREG_PROMOTED_UNSIGNED_P): Change definition
	to take ptr_extend into account as third type of extension.
	(SUBREG_PROMOTED_UNSIGNED_SET): Definition of new macro to set bit
	fields used by SUBREG_PROMOTED_UNSIGNED_P.
	* rtl.h (SUBREG_PROMOTED_UNSIGNED_SET): New macro.
	(SUBREG_PROMOTED_UNSIGNED_P): Change to return -1 as well as 0 or 1.
	* calls.c (precompute_arguments): Use new macro.
	(expand_call): Ditto.
	* combine.c (nonzero_bits): Ditto.
	(record_promoted_value): Ditto.
	* expr.c (store_expr): Ditto.
	(expand_expr): Ditto.
	* function.c (assign_parms): Ditto.

2002-02-28  Alexandre Oliva  <aoliva@redhat.com>

	* gcc.c (init_gcc_specs): Get -static and -static-libgcc to
	override -shared and -shared-libgcc.

2002-02-28  David O'Brien  <obrien@FreeBSD.org>

	* config.gcc (sparc64-*-freebsd): Explicitly accept a cpu specification
	of "ultrasparc".
	* config/sparc/freebsd.h: Do not use MASK_FASTER_STRUCTS.  It appears
	to be broken.

2002-02-28  Richard Henderson  <rth@redhat.com>

	* config/ia64/ia64.c (ia64_adjust_cost): All non-MM consumers have
	4 cycle latency from MM producers.
	(ia64_internal_sched_reorder): Likewise with pipeline flush.

2002-02-28  Jakub Jelinek  <jakub@redhat.com>

	* mklibgcc.in: Don't use GNU make extension.

2002-02-28  Neil Booth  <neil@daikokuya.demon.co.uk>

	* c-parse.in (STATIC): New terminal.
	(scspec): New non-terminal.  Update productions accordingly.
	(program): Remove bogus ifc / end ifc.
	(array_declarator): Simplify production using STATIC.

2002-02-28  Jim Meyering  <meyering@lucent.com>

	* cpplex.c (cpp_parse_escape): Restore mistakenly-removed code:
	\a still means TARGET_BELL.

2002-02-28  Richard Henderson  <rth@redhat.com>

	* haifa-sched.c (sched_emit_insn): New.
	(schedule_block): Use last_scheduled_insn to track last insn.
	* sched-int.h (sched_emit_insn): Prototype.
	* config/ia64/ia64.c (last_issued): Remove.
	(ia64_variable_issue): Don't set it.
	(nop_cycles_until): Use sched_emit_insn.

2002-02-28  Andrew MacLeod  <amacleod@redhat.com>

	* config/sparc/sparc.c (sparc64_initialize_trampoline): Generate sign
	extended constants.

2002-02-28  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.c: Fix formatting.
	* config/h8300/h8300.h: Likewise.

2002-02-28  Marek Michalkiewicz  <marekm@amelek.gda.pl>

	* config/avr/avr.c (avr_hard_regno_mode_ok): Do not allow r29
	which may overwrite the high byte of the frame pointer.

2002-02-28  Bo Thorsen  <bo@suse.de>

	* config/i386/linux64.h (LINK_SPEC): Fix 32/64 bit compilation.
	(STARTFILE_SPEC): Add 64 bit files.
	(ENDFILE_SPEC): Likewise.

2002-02-28  Jason Merrill  <jason@redhat.com>

	* c-decl.c (finish_function): Only warn about missing return
	statement with -Wreturn-type.

Don Feb 28 11:24:30 CET 2002  Jan Hubicka  <jh@suse.cz>

	* cfgrtl.c (purge_dead_edges): Fix handling of EH edges.

	* i386.h (CONDITIONAL_REGISTER_USAGE): Do not write to
	PIC_OFFSET_TABLE_REGNUM when it is INVALID_REGNUM

Don Feb 28 11:07:36 CET 2002  Jan Hubicka  <jh@suse.cz>

	* basic-block.h (BB_REACHABLE): Renumber.
	(BB_DIRTY, BB_NEW): New flags.
	(clear_bb_flags): Declare.
	(update_life_info_in_dirty_blocks): Declare.
	* cfg.c (clear_bb_flags): New function.
	* cfgrtl.c (create_basic_block_structure): Set flags to BB_NEW.
	* emit-rtl.c (add_insn_after, add_insn_before, remove_insn,
	reorder_insns, emit_insn_after): Mark block as dirty.
	* flow.c (update_life_info): Fix clearing of PROP_LOG_LINKS.
	(update_life_info_in_dirty_blocks): New function.
	* recog.c (apply_change_group): Dirtify block.

	* cse.c (cse_insn): Reorder emitting of jump insn to keep
	cfg consistent.
	* gcse.c (delete_null_pointer_checks): Likewise.

	* toplev.c (dump_file_index): Move cse2 after bp,
	add DFI_null
	(dump_file_info): Similary.
	(rest_of_compilation): Avoid most of CFG rebuilds;
	do first if converision after null pointer checks, do cse2
	after branch prediction; avoid full liveness rebuild after
	initializing subregs.
	* invoke.texi (-d options): Document -du, renumber.

	* cfgcleanup.c (bb_flags): Remove BB_UPDATE_LIFE.
	(notice_new_block): Do not set BB_UPDATE_LIFE.
	(try_forward_edges, merge_blocks_move_predecessor_nojumps,
	 merge_blocks_move_successor_nojumps, merge_blocks,
	 try_crossjump_to_edge): Likewise.
	(try_optimize_cfg): Likewise; use update_life_info_in_dirty_blocks.
	* cfgrtl.c (merge_blocks_nomove): Copy b's flags to a.
	* ifcvt.c (SET_UPDATE_LIFE, UPDATE_LIFE): Kill.
	(merge_of_block): Do not use life_data_ok.
	(find_if_case_1): Do not use SET_UPDATE_LIFE.
	(if_convert): Use BB_DIRTY mechanizm to update life.
	* lcm.c (optimize_mode_switching): Update
	update_life_info_in_dirty_blocks

2002-02-28  Neil Booth  <neil@daikokuya.demon.co.uk>

	* Makefile.in (integrate.o): Update.
	* c-decl.c (copy_lang_decl): Rename.
	* c-lang.c (LANG_HOOKS_DUP_LANG_SPECIFIC_DECL): Redefine.
	* integrate.c: Include langhooks.h.
	(copy_decl_for_inlining): Update to use langhook.
	* langhooks-def.h (lhd_do_nothing_t,
	LANG_HOOKS_DUP_LANG_SPECIFIC_DECL): New.
	(LANG_HOOKS_INITIALIZER): Update.
	* langhooks.c (lhd_do_nothing_t): New.
	* langhooks.h (struct lang_hooks): Add dup_lang_specific_decl.
	* tree.h (copy_lang_decl): Remove.
objc:
	* objc-lang.c (LANG_HOOKS_DUP_LANG_SPECIFIC_DECL): Redefine.

2002-02-27  Andrew MacLeod  <amacleod@redhat.com>

	* dwarf2out.c (stack_adjust_offset): Add support for POST_INC,
	POST_DEC, and POST_MODIFY.

2002-02-27  Zack Weinberg  <zack@codesourcery.com>

	* c-typeck.c (digest_init): Remove unused parameter; all
	callers changed.

2002-02-27  Geoffrey Keating  <geoffk@redhat.com>

	* expmed.c (expand_shift): Correctly test for low part of a
	subreg.

2002-02-27  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.c (s390_chunkify_pool): Do not confuse
	insn UIDs with insn addresses.

2002-02-27  Zack Weinberg  <zack@codesourcery.com>

	* c-common.c, c-common.h, c-decl.c, c-lex.c, c-parse.in,
	c-tree.h, c-typeck.c, cppexp.c, cpplex.c, cpplib.c, cpplib.h,
	cppmacro.c, objc/lang-specs.h, objc/objc-act.c,
	builtin-types.def, builtins.def, dwarf2out.c, dwarfout.c,
	gcc.c, toplev.c: Delete code implementing -traditional mode.

	* doc/bugreport.texi, doc/cpp.texi, doc/extend.texi,
	doc/invoke.texi, doc/standards.texi, doc/trouble.texi:
	Document removal of -traditional mode for compilation, and
	remove documentation only relevant to that mode.

	* config/nextstep.h, config/ptx4.h, config/svr4.h,
	config/convex/convex.h, config/d30v/d30v.h,
	config/i386/dgux.h, config/i386/osf1elf.h,
	config/i386/osfelf.h, config/i386/osfrose.h,
	config/i386/sco5.h, config/i386/sol2.h, config/m68k/a-ux.h,
	config/m68k/hp310.h, config/m88k/dgux.h,
	config/m88k/dguxbcs.h, config/m88k/luna.h, config/m88k/m88k.c,
	config/m88k/m88k.h, config/m88k/openbsd.h,
	config/mips/abi64.h, config/mips/osfrose.h,
	config/mips/svr4-5.h, config/mips/svr4-t.h,
	config/sparc/sol2-sld-64.h, config/sparc/sol2.h,
	config/stormy16/stormy16.h: Remove all references to
	-traditional from target specs.  Delete all mention of the
	no-longer-necessary TRADITIONAL_RETURN_FLOAT macro.  Also
	delete a couple of commented-out definitions of
	DOLLARS_IN_IDENTIFIERS, with (incorrect) commentary referring
	to -traditional.

	* system.h: Poison TRADITIONAL_RETURN_FLOAT.
	* doc/tm.texi: Remove mention of TRADITIONAL_RETURN_FLOAT macro.

2002-02-27  Zack Weinberg  <zack@codesourcery.com>

	* mklibgcc.in: Don't use \n in a line subject to
	interpretation by echo.

2002-02-27  Graham Stott  <grahams@redhat.com>

	* config/rs6000/rs6000.h (ASM_OUTPUT_DEF_FROM_DELC):
	Constify NAME.

	* loop.c (prescan_loop): Handle PARALLEL.

	* unroll.c (loop_iterations): Return 0 if the add_val for
	a BIV is REG.

	* final.c (output_operand_lossage): Constify PFX_STR.

	* df.c (df_insn_refs_record): Use XEXP (x, 0) for USE.

Wed Feb 27 10:45:19 CET 2002  Jan Hubicka  <jh@suse.cz>

	* linux64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Remove.
	* x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Allways define.

Wed Feb 27 10:39:20 CET 2002  Jan Hubicka  <jh@suse.cz>

	* linux64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Define.

2002-02-27  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cpplex.c (_cpp_lex_token): Handle directives in macro
	arguments.
	* cpplib.c (_cpp_handle_directive): Save and restore state
	if parsing macro args when entering a directive.
	* cppmacro.c (collect_args): No need to handle directives
	in macro arguments.
	(enter_macro_context, replace_args): Use the original macro
	definition in case it was redefined whilst collecting arguments.
doc:
	* cpp.texi: Update.

2002-02-26  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/aix43.h (THREAD_MODEL_SPEC): Delete.
	* config/rs6000/aix51.h (THREAD_MODEL_SPEC): Delete.
	* config/rs6000/rs6000.c (rs6000_return_addr): Use efficient
	method on AIX.
	* config/rs6000/rs6000.md (movsi_low): Use gpc_reg_operand.
	(movsi_low_st, movdf_low, movdf_low_st, movsf_low, movsf_low_st): Same.
	(load_toc_v4_PIC_2): Same.

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

	* config/rs6000/rs6000.md (load_toc_aix_di): Handle TARGET_RELOCATABLE.

2002-02-26  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.md (ashldi_se): Re-enable.

2002-02-26  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.c (alpha_encode_section_info): Examine
	MODULE_LOCAL_P; improve commentary.

2002-02-26  Zack Weinberg  <zack@codesourcery.com>

	* doc/cpp.texi: Clarify documentation of relationship between
	#line and #include.

2002-02-26  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300-protos.h: Update the prototype for
	compute_logical_op_length.  Add the prototype for
	compute_logical_op_cc.
	* config/h8300/h8300.c (compute_logical_op_length): Figure out
	code from operands.
	(compute_logical_op_cc): New.
	* config/h8300/h8300.md: Combine all the logical op patterns
	in HImode and SImode.  Use compute_logical_op_cc.

2002-02-26  Kelley Cook  <kelleycook@comcast.net>

	* config/i386/i386.c (print_operand): Don't append ATT-style
	length suffixs to x87 opcodes when in Intel mode.

2002-02-26  Ryan T. Sammartino <ryants@shaw.ca>

	* emit-rtl.c (gen_const_vector_0): Remove TYPE argument.
	(init_emit_once): Update calls.
	* fixinc/gnu-regex.c (_GNU_SOURCE): Remove.
	(init_syntax_once): Prototype.

2002-02-26  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* pa-linux.h (LIB_SPEC): Update definition.
	* pa32-linux.h (LINK_COMMAND_SPEC): Delete.

2002-02-26  Richard Henderson  <rth@redhat.com>

	* config/ia64/ia64.c (nop_cycles_until): Do init_insn_group_barriers
	if we emitted a stop bit.

2002-02-26  Jakub Jelinek  <jakub@redhat.com>

	* configure.in (libgcc_visibility): Substitute.
	* configure: Rebuilt.
	* mklibgcc.in: If libgcc_visibility = yes, make libgcc.a global
	defined symbols .hidden.

2002-02-26  Jakub Jelinek  <jakub@redhat.com>

	* attribs.c (c_common_attribute_table): Add visibility.
	(handle_visibility_attribute): New function.
	* varasm.c (assemble_visibility): New function.
	* output.h (assemble_visibility): Add prototype.
	* tree.h (MODULE_LOCAL_P): Define.
	* crtstuff.c (__dso_handle): Use visibility attribute.
	* config/i386/i386.h (ENCODE_SECTION_INFO): Set SYMBOL_REF_FLAG
	for MODULE_LOCAL_P symbols too.
	* config/ia64/ia64.c (ia64_encode_section_info): Handle
	MODULE_LOCAL_P symbols the same way as local symbols.
	Add SDATA_NAME_FLAG_CHAR even if decl was explicitely forced
	into .sdata/.sbss by the user.
	* doc/extend.texi (Function Attributes): Document visibility
	attribute.

2002-02-26  Jakub Jelinek  <jakub@redhat.com>

	PR debug/5770
	* dwarf2out.c (rtl_for_decl_location): Return CONST_STRING for
	STRING_CST initializer spanning the whole variable without
	embedded zeros.
	If expand_expr returned MEM, don't use it.

2002-02-26  Alexandre Oliva  <aoliva@redhat.com>

	* dwarf2out.c (gen_inlined_subroutine_die): If block is abstract,
	generate a die for the lexical block.

2002-02-26  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300-protos.h: Add a prototype for
	compute_logical_op_length.
	* config/h8300/h8300.c (compute_logical_op_length): New.
	* config/h8300/h8300.md (anonymous logical patterns): Use
	compute_logical_op_length for length.

2002-02-26  Aldy Hernandez  <aldyh@redhat.com>

	* dwarf2out.c (modified_type_die): Do not call type_main_variant
	for vectors.
	(gen_type_die): Same.

	* attribs.c (handle_vector_size_attribute): Set debug information.

2002-02-26  Daniel Egger  <degger@fhm.edu>

	* config/rs6000/rs6000.md: Swap define_insn attributes to
	fix incorrect generation of merge high instructions instead
	of merge low.

2002-02-26  Aldy Hernandez  <aldyh@redhat.com>

	* c-typeck.c (really_start_incremental_init): Use
	bitsize_zero_node for vectors.

2002-02-26  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/rs6000.md (get_vrsave_internal): Fix typo.
	("*set_vrsave_internal"): Same.

2002-02-25  Richard Henderson  <rth@redhat.com>

	* expr.c (expand_expr) [MULT_EXPR]: Do not apply distributive law
	in EXPAND_SUM case.  Use host_integerp/tree_low_cst.

2002-02-25  Jakub Jelinek  <jakub@redhat.com>

	PR target/5755
	* config/i386/i386.c (ix86_return_pops_args): Only pop
	fake structure return argument if it was passed on the stack.

2002-02-25  Jason Merrill  <jason@redhat.com>

	* attribs.c (decl_attributes): Also re-layout PARM_DECL and
	RESULT_DECL.

2002-02-25  Alexandre Oliva  <aoliva@redhat.com>

	* gcc.c (init_gcc_specs): Get -shared-libgcc along with -shared to
	link with shared_name only.
	* doc/invoke.texi (Link Options): Document new behavior.

2002-02-25  Aldy Hernandez  <aldyh@redhat.com>

	* c-typeck.c (push_init_level): Handle vectors.

2002-02-25  Alexandre Oliva  <aoliva@redhat.com>

	* config/sparc/sparc.c (const64_high_operand): Zero-extend
	operands of SPARC_SETHI_P.
	(input_operand): Likewise.
	(sparc_emit_set_const32): Likewise.
	* config/sparc/sparc.h (SPARC_SETHI_P): Disregard TARGET_ARCH64.
	(SPARC_SETHI32_P): Zero-extend operand from 32 bits.
	(CONST_OK_FOR_LETTER_P): Use SETHI32 for `K'.  Add `N' as SETHI.
	* config/sparc/sparc.md (movdi_insn_sp64_novis): Use `N'.
	(movdi_insn_sp64_vis): Likewise.
	(movdi split, movdf split): Use SETHI32.
	* doc/md.texi: Document SPARC constraints L, M and N.

2002-02-25  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/rs6000.md ("get_vrsave_internal"): New.
	("*set_vrsave_internal"): use mfspr for Darwin.

	* config/rs6000/rs6000.c (rs6000_emit_prologue): Call
	gen_get_vrsave_internal.

Sun Feb 24 16:38:56 2002  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* optabs.c (widen_operand): Properly handle CONST_INT for NO_EXTEND.

2002-02-24  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cpplex.c (cpp_interpret_charconst): Get signedness or
	otherwise of wide character constants correct.
	* cppexp.c (lex): Get signedness of wide charconsts correct.

Sun Feb 24 07:41:31 2002  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* optabs.c (widen_operand): Only call convert_modes for
	promoted SUBREG if signedness matches.
	* config/alpha/alpha.md (*addsi_se2, *subsi_se2): New patterns.

2002-02-23  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cpplib.c (glue_header_name): Use local buffer to build up
	header name.

2002-02-23  Neil Booth  <neil@daikokuya.demon.co.uk>

	* doc/cpp.texi, doc/invoke.texi: Update documentation for -MM.

2002-02-23  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.c (output_simode_bld): Handle H8/300 and
	H8/300[HS] separately.
	* config/h8300/h8300.md: Remove the early clobber constraint
	from bit field patterns.

2002-02-23  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.md (mulqihi3): Tighten predicates to
	register_operand.
	(mulhisi3): Likewise.
	(umulqisi3): Likewise.
	(umulhisi3): Likewise.

2002-02-23  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cppinit.c (output_deps): Correct test for stdout output.
	(init_dependency_output): Cure warning.

Sat Feb 23 08:42:47 2002  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* expr.c (store_expr): When converting expression to promoted
	equivalent type, allow using SUBREG_REG of TARGET as the target
	of the expansion of EXP.
	* loop.c (basic_induction_var, case SUBREG): Always look inside.
	* config/alpha/alpha.c (rtx_equiv_function_matters): Delete decl.
	(alpha_emit_set_const): Handle SImode when can't make new pseudos.
	(alpha_emit_set_const_1, alpha_sa_mask): Use no_new_pseudos.
	* config/alpha/alpha.md (addsi3, subsi3): Don't use if optimizing.

2002-02-23  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/contribute.texi, doc/extend.texi, doc/install.texi,
	doc/invoke.texi, doc/md.texi, doc/passes.texi, doc/rtl.texi,
	doc/standards.texi, doc/tm.texi: Remove trailing whitespace.

2002-02-23  Jakub Jelinek  <jakub@redhat.com>

	PR optimization/5747
	* loop.c (scan_loop): Update reg info if move_movables created new
	pseudos.

2002-02-23  David Edelsohn  <edelsohn@gnu.org>

	* gcc.c (init_gcc_spec): Revert last change.

2002-02-23  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.md (load_toc_aix_{si,di}): Use
	gpc_reg_operand constraint.

2002-02-23  Alan Modra  <amodra@bigpond.net.au>

	* config/rs6000/rs6000.c (num_insns_constant): Fix formatting.
	Simplify comparison of `low'.
	(add_operand): Fix formatting.
	(non_add_cint_operand): Use CONST_OK_FOR_LETTER_P.
	(mask_operand): Disallow mask to wrap in 64-bit mode.
	(rs6000_stack_info): Remove redundant test setting push_p.
	(output_toc): Fix formatting.
	* config/rs6000/rs6000.md (boolsi3, boolcsi3 splitters): Use
	cc_reg_not_cr0_operand constraint.
	(booldi3, boolcdi3 splitters): Same.

2002-02-23  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/altivec.h: Add extra level of parentheses on casts.

2002-02-22  David Edelsohn  <edelsohn@gnu.org>

	* gcc.c (init_gcc_spec): Do not link with static libgcc.a if
	gcc invoked with -shared-libgcc.

2002-02-22  Jakub Jelinek  <jakub@redhat.com>

	PR c++/5748
	* stmt.c (expand_anon_union_decl): Set TREE_USED on the anon union
	decl if any of elements was TREE_USED.

2002-02-22  Alexandre Oliva  <aoliva@redhat.com>

	* config/sparc/sol2.h: Don't include sys/mman.h.
	* config/sparc/sparc.c (arith_operand): Use SMALL_INT32.
	(arith_4096_operand): Don't throw high bits away.
	(const64_operand): Take sign extension of CONST_INTs into account.
	(const64_high_operand, sparc_emit_set_const32): Likewise.
	(GEN_HIGHINT64): Likewise.
	(sparc_emit_set_const64_quick1): Likewise.
	(const64_is_2insns): Likewise.
	(print_operand): Use trunc_int_for_mode for sign extension.
	* config/sparc/sparc.h (SMALL_INT32): Likewise.
	* config/sparc/sparc.md (movqi): Sign-extend CONST_DOUBLE
	chars.  Assume CONST_INT is already properly sign-extended.
	(movdi split): Sign-extend each SImode part.
	(andsi3 split): Don't mask high bits off, so that result
	remains properly sign-extend.
	(iorsi3 split): Likewise.
	(xorsi3 split): Likewise.

2002-02-22  Richard Sandiford  <rsandifo@redhat.com>

	* fold-const.c (fold): Fix typo in comments.

2002-02-21  Diego Novillo  <dnovillo@redhat.com>

	* Makefile.in (langhooks.o): Update dependencies.

2002-02-21  Diego Novillo  <dnovillo@redhat.com>

	* langhooks.c: Include flags.h.

2002-02-21  Aldy Hernandez  <aldyh@redhat.com>

	* testsuite/gcc.dg/attr-alwaysinline.c: New.

	* c-common.c (c_common_post_options): Set inline trees by
	default.

	* doc/extend.texi (Function Attributes): Document always_inline
	attribute.
	Update documentation about inlining when not optimizing.

	* cp/decl.c (duplicate_decls): Merge always_inline attribute.

	* cp/tree.c (cp_cannot_inline_tree_fn): Do not inline at -O0
	unless DECL_ALWAYS_INLINE.

	* c-objc-common.c (c_cannot_inline_tree_fn): Do not inline at -O0
	unless DECL_ALWAYS_INLINE.
	(c_disregard_inline_limits): Disregard if always_inline set.

	* langhooks.c (lhd_tree_inlining_disregard_inline_limits):
	Disregard if always_inline set.
	(lhd_tree_inlining_cannot_inline_tree_fn): Do not inline at -O0
	unless DECL_ALWAYS_INLINE.

	* attribs.c (handle_always_inline_attribute): New.
	(c_common_attribute_table): Add always_inline.

	* config/rs6000/altivec.h: Add prototypes for builtins
	requiring the always_inline attribute.

2002-02-21  Eric Christopher  <echristo@redhat.com>

	* expmed.c (store_bit_field): Try to simplify the subreg
	before generating a new one when when the mode size of
	value is less than maxmode.

2002-02-21  Richard Henderson  <rth@redhat.com>

	* emit-rtl.c (offset_address): Use simplify_gen_binary rather
	than gen_rtx_PLUS to form the sum.
	* explow.c (force_reg): Rearrange to not allocate new pseudo
	when force_operand returns a register.
	* expr.c (expand_assignment): Allow offset_rtx expansion to
	return a sum.  Do not force addresses into registers.
	(expand_expr): Likewise.
	* simplify-rtx.c (simplify_gen_binary): Use simplify_plus_minus
	to canonicalize arithmetic that didn't simpify.
	(simplify_plus_minus): New argument force; update
	all callers.  Don't split CONST unless we can do something with it,
	and wouldn't lose the constness of the operands.

	* config/i386/i386.c (legitimize_pic_address): Recognize UNSPECs
	that we generated earlier.

2002-02-21  Tom Tromey  <tromey@redhat.com>

	* dwarf2out.c (DWARF_LINE_MIN_INSTR_LENGTH): Removed.
	(output_line_info): Use constant `1', with a long explanatory
	comment.
	* system.h (DWARF_LINE_MIN_INSTR_LENGTH): Poison.

Thu Feb 21 22:43:44 2002  J"orn Rennecke <joern.rennecke@superh.com>

	* jump.c (redirect_jump): If old label has no UID, don't try to
	delete it.

Thu Feb 21 21:17:21 2002  J"orn Rennecke <joern.rennecke@superh.com>

	* sh.md (insv): Provide byte offsets for gen_rtx_SUBREG.
	If input is constant, do shifts at compile time.

2002-02-21  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/extend.texi: Fix some more overfull hboxes.

2002-02-21  Jakub Jelinek  <jakub@redhat.com>

	PR optimization/4994
	* config/i386/i386.md (movsi_1, movsf_1): Support MMX -> MMX
	register moves.

2002-02-21  Jakub Jelinek  <jakub@redhat.com>

	PR c++/4574
	* expr.h (expand_and): Add mode argument.
	* expmed.c (expand_and): Add mode argument.
	(expand_mult_highpart_adjust, emit_store_flag): Adjust callers.
	* expr.c (store_field, expand_expr, do_store_flag): Likewise.
	* except.c (expand_builtin_extract_return_addr): Likewise.
	* config/alpha/alpha.c (alpha_initialize_trampoline): Likewise.
	* config/sparc/sparc.c (sparc_initialize_trampoline): Likewise.
	* config/c4x/c4x.h (INITIALIZE_TRAMPOLINE): Likewise.
	Use GEN_INT (x) instead of gen_rtx (CONST_INT, VOIDmode, x).
	* config/c4x/c4x.md: Use GEN_INT (x) instead of
	gen_rtx (CONST_INT, VOIDmode, x).

2002-02-21  Jakub Jelinek  <jakub@redhat.com>

	PR c/4697:
	* stmt.c (warn_if_unused_value): Move side effects test once more.

2002-02-20  Torbjorn Granlund  <tege@swox.com>

	* config/avr/avr.md: Add more patterns for mized-mode add and subtract
	(addsi3_zero_extend, subhi3_zero_extend1, subsi3_zero_extend).

Thu Feb 21 16:20:46 2002  Alexandre Oliva  <aoliva@redhat.com>

	* rtlanal.c (replace_rtx): Don't make a CONST_INT the operand of
	SUBREG or ZERO_EXTEND.

Thu Feb 21 15:35:46 2002  J"orn Rennecke <joern.rennecke@superh.com>

	* sh.h (current_function_anonymous_args): Remove.
	(SETUP_INCOMING_VARARGS): Don't set it - just check that one
	of current_function_varargs and current_function_stdarg is set.
	* sh.c (sh_expand_prologue): Check current_function_varargs /
	current_function_stdarg / TARGET_SH5 instead of
	current_function_anonymous_args.

	* sh64.h (TARGET_VERSION): Define.

2002-02-20  David Edelsohn  <edelsohn@gnu.org>

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

2002-02-20  Alan Modra  <amodra@bigpond.net.au>

	* config/rs6000/rs6000.c (includes_lshift_p): Mask irrelevant
	bits of SImode const_int.
	(includes_rshift_p): Likewise.
	(print_operand): Call mask_operand and mask64_operand with correct
	mode.
	(rs6000_output_function_epilogue): Pad traceback table to word.
	* config/rs6000/rs6000.h (MASK_64BIT): Correct comment.
	(EXTRA_CONSTRAINT, 'S' and 'T'): Call mask_operand and
	mask64_operand with correct mode.
	(FUNCTION_ARG_REGNO_P): Correct parentheses.

2002-02-20  Jakub Jelinek  <jakub@redhat.com>

	PR debug/4461
	* varasm.c (get_pool_constant_mark): New.
	* rtl.h (get_pool_constant_mark): Add prototype.
	* dwarf2out.c (mem_loc_descriptor): A pool constant cannot
	be represented if it has not been output.

2002-02-20  Alexandre Oliva  <aoliva@redhat.com>

	* combine.c (do_SUBST): Sanity check substitutions of
	CONST_INTs, and reject them in SUBREGs and ZERO_EXTENDs.
	(subst): Simplify SUBREG or ZERO_EXTEND instead of SUBSTing a
	CONST_INT into its operand.
	(known_cond): Likewise, for ZERO_EXTEND.
	* simplify-rtx.c (simplify_unary_operation): Fix condition to
	allow for simplification of wide modes.  Reject CONST_INTs in
	ZERO_EXTEND when their actual mode is not given.

2002-02-20  Alexandre Oliva  <aoliva@redhat.com>

	* c-decl.c (pushdecl): If no global declaration is found for an
	extern declaration in block scope, try a limbo one.

2002-02-20  Jakub Jelinek  <jakub@redhat.com>

	PR c++/4401
	* c-common.c (pointer_int_sum): Moved from...
	* c-typeck.c (pointer_int_sum): ...here.
	* c-common.h (pointer_int_sum): Add prototype.

2002-02-20  Jakub Jelinek  <jakub@redhat.com>

	PR c++/5713
	* c-decl.c (duplicate_decls): Return 0 if issued error about
	redeclaration.

2002-02-20  Roger Sayle  <roger@eyesopen.com>
	    Jakub Jelinek  <jakub@redhat.com>

	PR c/4389
	* tree.c (host_integerp): Ensure that the constant integer is
	representable in a HOST_WIDE_INT or an unsigned HOST_WIDE_INT
	when pos is zero or nonzero respectively.  Clarify comment.
	* c-format.c (check_format_info_recurse): Fix host_integerp
	usage; the pos argument should be zero when assigning to a
	signed HOST_WIDE_INT.

2002-02-20  Richard Henderson  <rth@redhat.com>

	* config/i386/i386.c (ix86_expand_vector_move): Use the mode
	of the operand, rather than assuming TImode.
	(ix86_expand_binop_builtin): Cope with commutative patterns
	using nonimmediate_operand for both operands.
	(ix86_expand_timode_binop_builtin): Likewise.
	(ix86_expand_store_builtin): Validate operand 1.
	(ix86_expand_unop1_builtin): Likewise.

2002-02-20  Philip Blundell  <philb@gnu.org>

	PR 5705
	* config/arm/arm.h (HARD_REGNO_RENAME_OK): New macro.

2002-02-20  Richard Henderson  <rth@redhat.com>

	PR c/5615
	* expr.h (ARGS_SIZE_TREE): Convert size.var to ssizetype.

2002-02-20  Tom Tromey  <tromey@redhat.com>

	* config/fr30/fr30.h (DWARF_LINE_MIN_INSTR_LENGTH): Removed.
	* config/sh/sh.h (DWARF_LINE_MIN_INSTR_LENGTH): Removed.
	* config/pj/pj.h (DWARF_LINE_MIN_INSTR_LENGTH): Removed.
	* config/cris/cris.h (DWARF_LINE_MIN_INSTR_LENGTH): Removed.
	* dwarf2out.c (DWARF_LINE_MIN_INSTR_LENGTH): Define
	unconditionally.

Wed Feb 20 00:03:25 EST 2002 Alan Matsuoka <alanm@redhat.com>

	* config/rs6000/rs6000.h (LEGITIMATE_OFFSET_ADDRESS_P): Look
	  for (const_int 0) in X not just INTVAL.

2002-02-20  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/extend.texi: Avoid or reduce overfull hboxes.

2002-02-20  Diego Novillo  <dnovillo@redhat.com>

	* expmed.c (store_bit_field): Do not store bit fields using SUBREG
	operations if the field does not start at a mode boundary.

2001-02-20	Joel Sherrill <joel@OARcorp.com>

	* config/a29k/rtems.h, config/arm/rtems-elf.h, config/h8300/rtems.h,
	config/mips/rtems.h: Use new style of -Asystem= rather than -Asystem().
	Also done for -Acpu and -Amachine.

2002-02-20  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cppinit.c (init_dependency_output): Take deps output file
	from -o if none given with -MF.  Suppress normal output.
	* gcc.c (cpp_unique_options): Have -M and -MM imply -E.
	* doc/cpp.texi, doc/invoke.texi: Update.

2002-02-19  Zack Weinberg  <zack@codesourcery.com>

	* toplev.c (output_quoted_string): Write unprintable
	characters with octal escapes.

2002-02-19  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.h (CONDITIONAL_REGISTER_USAGE): Set
	really_call_used[VRSAVE_REGNO] if not Altivec.

2002-02-19  Alan Modra  <amodra@bigpond.net.au>

	* config/rs6000/rs6000.c (u_short_cint_operand): Mask op with
	MODE_MASK.
	(constant_pool_expr_1): Fix formatting.
	(rs6000_legitimize_reload_address): Likewise.

Tue Feb 19 20:13:57 2002  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* config/sparc/sparc.md (nonlocal_goto): Use hard_frame_pointer_rtx
	now that we have one.

2002-02-19  Zack Weinberg  <zack@codesourcery.com>

	* tree.h (struct tree_common): Remove aux.  Add unused_0 at
	end of first block of bitfields (which was only seven bits);
	rename dummy to unused_1; remove comment which is no longer true.

2002-02-19  Gaute B Strokkenes <gs234@cam.ac.uk>

	* doc/c-tree.texi (Classes, TYPE_BINFO): Fix typo.

2002-02-19  Philip Blundell  <pb@nexus.co.uk>

	PR 5399
	* config/arm/arm.h (THUMB_LEGITIMATE_CONSTANT_P): Accept anything
	if generating PIC.

	PR 5054
	* config/arm/arm.md (call_insn) [TARGET_THUMB]: Use
	arm_is_longcall_p rather than inspecting call-type cookie
	directly.
	(call_value_insn) [TARGET_THUMB]: Likewise.

2002-02-19  Graham Stott  <grahams@redhat.com>

	* config/i386/i386.c (ix86_expand_builtin): Fix typo.

2002-02-19  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/linux64.h (LINK_OS_LINUX_SPEC): Look in /lib64.
	({STARTFILE,ENDFILE}_LINUX_SPEC): Define.
	(FP_SAVE_INLINE): Delete.

	* config/rs6000/sysv4.h (ENDFILE_SPEC): Add crtsaveres.o.
	* config/rs6000/eabi.asm: Remove ABI save restore routines.
	* config/rs6000/t-ppccomm: Build crtsavres.o.
	* config/rs6000/crtsavres.asm: New file.

2002-02-19  Philip Blundell  <philb@gnu.org>

	* config/arm/arm.c (use_return_insn): Don't reject interrupt
	functions.
	(arm_compute_save_reg_mask): Save LR for interrupt functions too.
	(output_return_instruction): Allow interrupt functions to return with
	ldmfd sp!, {... pc}^.  Use LDR to restore any single register.
	(arm_expand_prologue): Subtract 4 before stacking LR in an
	interrupt function.

2002-02-19  Philip Blundell  <pb@nexus.co.uk>

	* config/arm/arm.c (arm_encode_call_attribute): Operate on any
	decl, not just FUNCTION_DECL.
	(legitimize_pic_address): Handle local SYMBOL_REF like LABEL_REF.
	(arm_assemble_integer): Likewise.
	* config/arm/arm.h (ARM_ENCODE_CALL_TYPE): Allow any decl to be
	marked local.

2002-02-19  matthew green  <mrg@eterna.com.au>

	* config.gcc (sparc-*-netbsdelf*): Enable target.
	(sparc64-*-netbsd*): New target.
	* config/sparc/netbsd-elf.h: New file.
	* config/sparc/t-netbsd64: New file.

2002-02-19  Gaute B Strokkenes <gs234@cam.ac.uk>

	* doc/rtl.texi (Flags, MEM_SCALAR_P): Fix typo.

2002-02-19  Ryan T. Sammartino <ryants@shaw.ca>

	* doc/invoke.texi: explicitly list the style guidelines that
	-Weffc++ checks for.

Tue Feb 19 12:37:23 CET 2002  Jan Hubicka  <jh@suse.cz>

	* regmove.c (regmove_optimize): Avoid increasing of register pressure.

2002-02-19  Neil Booth  <neil@daikokuya.demon.co.uk>

	PR other/5718
	* gcc.c (cpp_unique_options): Treat -o as indicating object file
	only if not -E.  If -E, pass -o through to the preprocessor.

2002-02-19  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.h (REGNO_REG_CLASS): Replace a literal
	register number with an appropriate macro.

2002-02-19  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>

	* doc/rtl.texi (Constants): Close @code tag.

2002-02-19  Aldy Hernandez  <aldyh@redhat.com>

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

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

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

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

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

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

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

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

	* reload.c (subst_reg_equivs): Handle vectors.

	* regrename.c (scan_rtx): Handle vectors.

	* regclass.c (reg_scan_mark_refs): Handle vectors.

	* recog.c (find_single_use_1): Handle vectors.

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

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

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

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

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

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

	* flow.c (mark_used_regs): Handle vectors.

	* df.c (df_uses_record): Handle vectors.

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

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

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

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

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

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

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

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

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

	* tree.def (VECTOR_CST): New.

	* tree.c (build_vector): New.

	* expmed.c (make_tree): Handle CONST_VECTOR.

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

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

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

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

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

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

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

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

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

2002-02-18  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.c (notice_update_cc): Use
	cc_status.value2.

2002-02-18  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.md (divmod patterns): Change the
	constraints for operands[1] to register_operand.

2002-02-18  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300-protos.h: Remove the prototype for
	p_operand.
	* config/h8300/h8300.c (p_operand): Remove.
	* config/h8300/h8300.md: Replace p_operand with
	const_int_operand.

2002-02-18 Philip Blundell <pb@nexus.co.uk>

	* config/arm/arm.c (arm_compute_save_reg_mask): Fix typo in
	comment.
	(output_return_instruction): Allow use of LDR to unstack
	return addresss even for interrupt handlers or when
	interworking.  If compiling for ARMv5, use interworking-safe
	return instructions by default.  Remove duplicated code and
	lengthy "strcat" sequences.

2002-02-18  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* config/rs6000/sysv4.h (STARTFILE_SPEC): Use crtbeginT.o for -static.
	(LINK_EH_SPEC): Define.
	* config/rs6000/t-ppccomm (EXTRA_MULTILIB_PARTS): Add crtbeginT.o.

2002-02-18  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.c (s390_emit_prologue): Do not set the
	frame_related flag for call-clobbered registers.

Mon Feb 18 15:07:35 CET 2002  Jan Hubicka  <jh@suse.cz>

	* i386.c (classify_argument): Properly classify SSE/MMX modes and VOIDmode.
	(construct_container): Fix handling of SSE operands.
	(ix86_expand_builtin): Fix handling of 64bit pointers.
	(mmx_maskmovq_rex): New pattern.

Mon Feb 18 11:55:55 CET 2002  Jan Hubicka  <jh@suse.cz>

	* regrename.c (kill_set_value): Handle subregs properly.

2002-02-18  David Billinghurst <David.Billinghurst@riotinto.com>

	* objc/objc-act.c (handle_impent): Remove leading '*'
	from objc_class_name.

2002-02-17  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.c (some_small_symbolic_operand,
	some_small_symbolic_operand_1, split_small_symbolic_operand,
	split_small_symbolic_operand_1): Rename from *symbolic_mem_op*.
	Handle small SYMBOL_REFs anywhere, not just inside memories.
	* config/alpha/alpha-protos.h: Update.
	* config/alpha/alpha.h (PREDICATE_CODES): Update.
	* config/alpha/alpha.md (small symbolic operand splitter): Update.

2002-02-17  Roland McGrath  <roland@frob.com>

	* config.gcc (powerpc-*-gnu-gnualtivec*,
	powerpc-*-gnu*, powerpc64-*-gnu*): New configurations.
	* config/rs6000/gnu.h: New file.
	* config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS):
	Grok "gnu" in rs6000_abi_name.
	(ASM_SPEC, CC1_SPEC, LINK_START_SPEC, LINK_OS_SPEC,
	CPP_ENDIAN_SPEC, CPP_SPEC, STARTFILE_SPEC, LIB_SPEC, ENDFILE_SPEC):
	Grok -mcall-gnu analogous to -mcall-linux et al.
	(LIB_GNU_SPEC, STARTFILE_GNU_SPEC, ENDFILE_GNU_SPEC,
	LINK_START_GNU_SPEC, LINK_OS_GNU_SPEC, CPP_OS_GNU_SPEC): New macros.
	(SUBTARGET_EXTRA_SPECS): Add *_os_gnu specs using them.

2002-02-17  Jakub Jelinek  <jakub@redhat.com>

	PR c/3444:
	* c-typeck.c (build_binary_op) [BIT_XOR_EXPR]: Remove explicit
	shortening.

2002-02-17  Philipp Thomas  <pthomas@suse.de>

	* config/cris/cris.h: Undefine STARTFILE_SPEC and
	ENDFILE_SPEC before (re)defining them.

2002-02-17  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.c: Fix formatting.
	* config/h8300/h8300.h: Likewise.

2002-02-17  Philipp Thomas  <pthomas@suse.de>

	* doc/tm.texi: Explain why empty strings should not be
	marked for translation.

2002-02-17  Philipp Thomas  <pthomas@suse.de>

	* final.c (output_operand_lossage): Changed to accept
	printf style arguments. Change calls where necessary.
	* output.h (output_operand_lossage): Change declaration
	accordingly. Update copyright.
	* config/arc/arc.c config/fr30/fr30.c config/m32r/m32r.c
	config/m88k/m88k.c : Adapt all calls to output_operand_lossage.
	Update copyright date where necessary.

	* config/i386/i386.c (print_operand): Likewise. Remove use of
	sprintf.

	* config/cris/cris.c (cris_operand_lossage): Likewise.
	Rename parameter so that exgettext recognizes it as
	translatable message.
	(LOSE_AND_RETURN): Rename parameter to msgid.

2002-02-17  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.h (CONDITIONAL_REGISTER_USAGE): Replace a
	hard coded register number with an appropriate macro.
	(HARD_REGNO_MODE_OK): Likewise.
	(ARG_POINTER_REGNUM): Likewise.
	(STATIC_CHAIN_REGNUM): Likewise.
	(RETURN_ADDRESS_POINTER_REGNUM): Likewise.
	* config/h8300/h8300.md (define_constants): Define more
	register numbers.

2002-02-17  Philipp Thomas  <pthomas@suse.de>

	* config/i386/i386.h: Don't mark empty strings for translation.

2002-02-16  H.J. Lu <hjl@gnu.org>

	* config/mips/linux.h (ASM_PREFERRED_EH_DATA_FORMAT): New.

2002-02-16  Zack Weinberg  <zack@codesourcery.com>

	* cppinit.c (merge_include_chains): Check for brack being
	NULL before attempting to merge it with qtail.

2002-02-16  Andrew Cagney  <ac131313@redhat.com>

	* config/rs6000/netbsd.h (PREFERRED_DEBUGGING_TYPE): Set to
	DBX_DEBUG.

2002-02-16  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* pa/t-pa, pa/t-pro, som.h: Revert last patch.

2002-02-16  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* pa/t-pa (LIB2FUNCS_EXTRA): Don't build lib2funcs.asm.
	* pa/t-pro (LIB2FUNCS_EXTRA): Likewise.
	* som.h (DO_GLOBAL_DTORS_BODY): Delete define.

Sat Feb 16 13:48:50 2002  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* config/alpha/alpha.md (*movsi_nt_vms_nofix): Was *movsi_nt_vms;
	now only if !TARGET_FIX.
	(*movsi_nt_vms_fix): New pattern.

2002-02-16  Douglas B Rupp  <rupp@gnat.com>

	* config/alpha/alpha.c: Implement null frame procedure types on VMS.
	(alpha_procedure_type): Replaces alpha_is_stack_procedure.
	(alpha_sa_mask, alpha_sa_size): Reflect above change.
	(alpha_pv_save_size, alpha_expand_prologue): Likewise.
	(alpha_start_function, alpha_expand_epilogue): Likewise.
	(unicosmk_gen_dsib): Likewise.

Sat Feb 16 13:39:09 2002  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* expr.c (store_constructor): Handle target REG case for ARRAY_TYPE.

2002-02-16  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.c (pool_stop_uid, other_chunk, far_away,
	check_and_change_labels, s390_final_chunkify): Delete.
	(s390_split_branches, s390_chunkify_pool): New functions.
	(s390_function_prologue): Call them.

	* config/s390/s390.h (S390_REL_MAX): Delete.
	(S390_CHUNK_MAX, S390_CHUNK_OV): Adjust values.

	* config/s390/s390.md (cjump, icjump, jump): Fix length
	attribute calculation.


2002-02-15  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/linux64.h (STRIP_NAME_ENCODING): Delete.
	* config/rs6000/ppc-asm.h (JUMP_TARGET): Define for powerpc64.

2002-02-15  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* gcc.c (init_gcc_specs): Revert patch from 2002-02-15.
	* config/pa/pa-linux.h (LIB_SPEC): Likewise.
	* config/pa/pa32-linux.h (LINK_COMMAND_SPEC): Likewise.

2002-02-15  Richard Sandiford  <rsandifo@redhat.com>

	* c-decl.c (grokdeclarator): Prevent a segfault on unnamed decls.

2002-02-15  Richard Sandiford  <rsandifo@redhat.com>

	* reload.c (find_dummy_reload): Check that an output register
	is valid for its mode.

2002-02-14  Alexandre Oliva  <aoliva@redhat.com>

	* combine.c (known_cond): After replacing the REG of a SUBREG, try
	to simplify it.

	* function.c (assign_parms): Demote promoted argument passed by
	transparent reference.

2001-02-14	Joel Sherrill <joel@OARcorp.com>

	* config/arm/rtems-elf.h, config/h8300/rtems.h: Removed redundant
	-Acpu() and -Amachine() to eliminate warnings.

2002-02-14  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/linux.h (ASM_OUTPUT_ALIGNED_BSS): New.

2002-02-14  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300-protos.h: Update the prototype for
	const_costs.
	* config/h8300/h8300.c (const_costs): Treat SET as a little
	more expensive operation.
	* config/h8300/h8300.h (DEFAULT_RTX_COSTS): Update the
	reference to const_costs.

2002-02-14  Hans-Peter Nilsson  <hp@axis.com>

	* config.gcc (c4x-*-rtems*): Fix typo in tm_file setting.

2002-02-14  Jakub Jelinek  <jakub@redhat.com>

	PR c/5503:
	* c-decl.c (duplicate_decls): If builtin type has TYPE_ARG_TYPES NULL,
	use arguments from newtype.

2002-02-13  Eric Christopher  <echristo@redhat.com>

	* config/mips/mips.c (override_options): Add check for march/mipsX
	on the same command line. Fix error message in cpu processing.
	Remove architecture and ISA checks.

2002-02-14  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/darwin.h (ROUND_TYPE_ALIGN): Adjust for vectors.

	* config/rs6000/sysv4.h (ROUND_TYPE_ALIGN): Add MAX.

2002-02-14  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/rs6000.md ("*movv4si_internal"): Add m<-r and r<-r
	alternatives.
	("*movv8hi_internal1"): Same.
	("*movv16qi_internal1"): Same.
	("*movv4sf_internal1"): Same.

	* config/rs6000/rs6000.c (rs6000_legitimize_reload_address): Do
	not push_reload for altivec modes.

2002-02-13  Joel Sherrill  <joel@OARcorp.com>

	* config.gcc (a29k-*-rtems), config/a29k/rtems.h: General cleanup across
	all RTEMS targets including removal of #includes from config/*/rtems*.h
	file and adding them to tm_file setting. Added xm_defines=POSIX to
	many targets.
	* config.gcc (c4x-*-rtems), config/c4x/rtems.h: Ditto.
	* config.gcc (h8300-*-rtems), config/h8300/rtems.h: Ditto.
	* config.gcc (hppa1.1-*-rtems), config/pa/rtems.h: Ditto.
	* config.gcc (i960-*-rtems), config/i960/rtems.h: Ditto.
	* config.gcc (m68k-*-rtems*), config/m68k/rtems.h,
	config/m68k/rtemself.h: Ditto.
	* config.gcc (mips*-*-rtems*), config/mips/rtems.h,
	config/mips/rtems64.h: Ditto.
	* config.gcc (powerpc-*-rtems*), config/rs6000/rtems.h: Ditto.
	* config.gcc (sh-*-rtems*), config/sh/rtems.h, config/sh/rtemself.h:
	Ditto.
	* config.gcc (sparc-*-rtems*), config/sparc/rtems.h,
	config/sparc/rtemself.h: Ditto.
	* config.gcc (v850-*-rtems*), config/v850/rtems.h: Ditto.
	* config.gcc (arm-rtems), config/arm/rtems-elf.h: Ditto plus moved
	arm-rtems stanza closer to other arm-elf targets and made arm-rtems
	more like arm-elf.
	* config.gcc (i[34567]86-*-rtems*), config/i386/djgpp-rtems.h,
	config/i386/rtems.h, config/i386/rtemself.h: Ditto plus i386-rtemself
	target made more similar to i386-elf.
	* config/i386/t-rtems-i386: Added soft float support and multilibs.
	* config/m68k/t-m68kbare: Add 68040 and 68060 as multilib alternatives to
	be similar to config/m68k/t-m68kelf.
	* gthr-rtems.h: Encapsulate with extern "C" for C++.

Wed Feb 13 23:41:15 CET 2002  Jan Hubicka  <jh@suse.cz>

	* regmove.c (kill_value): Handle subregs.

Wed Feb 13 23:34:30 CET 2002  Jan Hubicka  <jh@suse.cz>

	* i386.md (mul patterns): Allow memory operand to be first;
	add expanders where needed; fix constraints.
	(min?f_nonieee, max?f_nonieee, SSE TImode patterns):
	Allow memory operand to be the first.

	* i386.c (ix86_prepare_fp_compare_args): Fix condition for swapping
	operands.

2002-02-13  Jakub Jelinek  <jakub@redhat.com>

	PR c/5681:
	* expr.c (safe_from_p): Pass VOIDmode to true_dependence instead of
	GET_MODE (x).

2002-02-13  Jakub Jelinek  <jakub@redhat.com>

	PR optimization/5547:
	* config/i386/i386.c (i386_simplify_dwarf_addr): Simplify
	all valid IA-32 address modes involving non-scaled %ebx and
	GOT/GOTOFF as displacement.

2002-02-13  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.c (s390_final_chunkify): Re-run shorten_branches
	after emitting ltorg insns.

	* config/s390/s390.md (*cmpdf_ccs_0, *cmpdf_ccs, *cmpsf_ccs_0,
	*cmpsf_ccs, truncdfsf2_ieee, *adddf3, *addsf3, *subdf3, *subsf3,
	*muldf3, *mulsf3, *divdf3, *divsf3, *negdf2, *negsf2, *absdf2,
	*abssf2): Fix "op_type" attribute.

2002-02-13  Douglas B Rupp  <rupp@gnat.com>

	* mkconfig.sh: Avoid using a subshell redirect.
	($output.T): Change to $(output)T.
	(ENABLE_NLS): Remove unneeded undef.

	* config/alpha/vms.h (MD_EXEC_PREFIX, MD_STARTFILE_PREFIX): Define.
	* config/alpha/x-vms (libsubdir): Define.

	* config/alpha/vms.h (MD_FALLBACK_FRAME_STATE_FOR): Handle
	register frame procedures. Optimize retrieving context.

	* config/alpha/t-vms (MULTILIB_OPTIONS): Define.
	(MULTILIB_DIRNAME, LIBGCC, INSTALL_LIBGCC): Likewise.
	* config/alpha/vms.h (ASM_FILE_START): Write .arch directive.

Wed Feb 13 09:45:08 2002  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* alias.c (find_base_term, case ZERO_EXTEND, case SIGN_EXTEND):
	Make same change as for find_base_value.

2002-02-13  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.h (MODES_TIEABLE_P): Accept a combination
	of QImode and SImode.

2002-02-13  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.c (h8300_adjust_insn_length): Correct the
	length computation of movsi.
	* config/h8300/h8300.md (movsi_h8300hs): Correct the length.

2002-02-13  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.md (subqi3): Tighten the predicate for
	operands[2] to register_operand.

Wed Feb 13 10:35:56 CET 2002  Jan Hubicka  <jh@suse.cz>

	* i386.md (fop_*_comm_*): allow nonimmediate in the first operand.

2002-02-12  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/rs6000.md: Use predicate altivec_register_operand
	for altivec_lvx* and altivec_stvx*.
	("*movv4si_internal"): Add constraint for loading from GPRs.
	("*movv8hi_internal1"): Same.
	("*movv16qi_internal1"): Same.
	("*movv4sf_internal1"): Same.

	* config/rs6000/rs6000.c (altivec_register_operand): New.

	* config/rs6000/rs6000.h (PREDICATE_CODES): Add
	altivec_register_operand.

2002-02-13  Hans-Peter Nilsson  <hp@bitrange.com>

	* config/mmix/mmix.c (mmix_assemble_integer) <case 4>: Don't
	handle SYMBOL_REF.

2002-02-13  Stan Shebs  <shebs@apple.com>

	* c-typeck.c (digest_init): Handle vectors.
	(really_start_incremental_init): Same.
	(pop_init_level): Same.
	(process_init_element): Same.

	* varasm.c (output_constant): Same.

	* expr.c (clear_storage): Same.
	(store_constructor): Same.

2002-02-12  Eric Christopher  <echristo@redhat.com>

	* explow.c (hard_function_value): Add comment explaining
	signed/unsigned comparison.

2002-02-12  Jakub Jelinek  <jakub@redhat.com>

	* jump.c (never_reached_warning): Add finish argument.
	If finish is NULL, stop on CODE_LABEL, otherwise stop before first
	real insn after end.
	* rtl.h (never_reached_warning): Adjust prototype.
	* cse.c (cse_insn): Pass NULL as finish to never_reached_warning.
	* cfgrtl.c (flow_delete_block): Pass b->end as finish to
	never_reached_warning.

2002-02-12  Graham Stott  <grahams@redhat.com>

	* config/hp/pa.h (GO_IF_LEGITIMATE_ADDRESS): Fix typos.

2002-02-12  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.c (shift_alg_hi): Improve the 15-bit
	logical shifts on H8/300.
	(shift_alg_si): Improve several shifts on H8/300.
	(get_shift_alg): Likewise.

2002-02-12  Graham Stott  <grahams@redhat.com>

	* config/pa/pa.c (compute_movstrsi_length): Fix typos.

Tue Feb 12 10:12:56 2002  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* alias.c (find_base_value, case ZERO_EXTEND, case SIGN_EXTEND):
	Handle #ifdef POINTERS_EXTEND_UNSIGNED.

2002-02-11  Hans-Peter Nilsson  <hp@bitrange.com>

	* config/mmix/mmix.c (mmix_assemble_integer) <case 1, 2>: Handle
	non-CONST_INT through default_assemble_integer.
	<case 4>: Likewise, for non-CONST_INT, non-SYMBOL_REF.
	<case 8>: Abort for CONST_DOUBLE.

2002-02-11  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* gcc.c (init_gcc_specs): Add static libgcc to link when "-shared"
	is specified.
	* config/pa/pa-linux.h (LIB_SPEC): Delete.
	* config/pa/pa32-linux.h (LINK_COMMAND_SPEC): Delete.

2002-02-11  Andrew Haley  <aph@cambridge.redhat.com>

	* config/stormy16/stormy16.md (zero_extendqihi2): New.

2002-02-11  Alexandre Oliva  <aoliva@redhat.com>

	* regrename.c (regrename_optimize): Don't accept a
	part-clobbered register if the replaced register is not part
	clobbered.

	* calls.c (store_one_arg): In the non-BLKmode non-partial case,
	take padding into account when computing the argument value.

	* config/sh/sh.h (FUNCTION_ARG_REGNO_P): Fix parenthesizing error.

	* combine.c (try_combine): Apply substitutions in
	CALL_INSN_FUNCTION_USAGE too.

2002-02-11  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/rs6000.c (altivec_init_builtins): Handle
	__builtin_altivec_abs*.
	(bdesc_abs): New.

	* config/rs6000/rs6000.h (rs6000_builtins): Add
	ALTIVEC_BUILTIN_ABS*.

	* config/rs6000/altivec.h: Use const char for builtins expecting
	literals.
	(vec_abs): New versions for C and C++.
	(vec_abss): Same.

2002-02-10  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.h (INITIALIZE_TRAMPOLINE): Simplify by
	using Pmode.

2002-02-10  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.h (STACK_POINTER_REGNUM): Use the
	constant definition from h8300.md.
	(FRAME_POINTER_REGNUM): Likewise.
	* config/h8300/h8300.md (define_constants): Add FP_REG.

2002-02-10  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.c (print_operand): Remove redundant code.

2002-02-10  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300-protos.h: Remove the prototype for byte_reg.
	* config/h8300/h8300.c (byte_reg): Make it static.

2002-02-10  Richard Henderson  <rth@redhat.com>

	PR c/5623
	* c-typeck.c (incomplete_type_error): Handle flexible array members.

2002-02-10  Richard Henderson  <rth@redhat.com>

	PR c++/5624
	* tree.c (append_random_chars): Don't abort if main_input_filename
	does not exist.

2002-02-10  Hans-Peter Nilsson  <hp@bitrange.com>

	* config/mmix/t-mmix (MULTILIB_EXTRA_OPTS): Disable.

2002-02-10  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.md (pushhi1_h8300): Correct the mode used.
	(pushhi1): Likewise.

2002-02-10  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* pa.c (reg_before_reload_operand): Don't accept a SUBREG operand.
	* pa.h (PREDICATE_CODES): Adjust codes for reg_before_reload_operand.

2002-02-09  David O'Brien  <obrien@FreeBSD.org>

	* config/sparc/freebsd.h(TARGET_DEFAULT): Add MASK_EPILOGUE setting and
	remove MASK_VIS.
	(ASM_CPU_DEFAULT_SPEC): Remove.  Default setting is fine.

2002-02-09  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.c (output_logical_op): Use sub.w to clear
	a half of an SImode register on H8/300.

Sat Feb  9 18:28:02 CET 2002  Jan Hubicka  <jh@suse.cz>

	* i386.md (movdi_2): Add missing '!'.

2002-02-09  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.h: Fix formatting.  Remove commented-out
	definitions.

2002-02-09  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.md (length): Correct the distance valid
	for the short branch.

2002-02-09  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.md (iorhi3): Tighten the predicates.

2002-02-09  Alexandre Oliva  <aoliva@redhat.com>

	* config/sh/sh.h (REGISTER_NATURAL_MODE): Save part-clobbered
	registers in SImode.
	(HARD_REGNO_CALL_PART_CLOBBERED) [TARGET_SHMEDIA32]: Set r18 as
	part-clobbered.

	* config/sh/sh.c (expand_prologue): Fix mis-applied 2001-11-09's
	patch.

	Contribute sh64-elf.
	2002-02-09  Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/sh.c (TARGET_CANNOT_MODIFY_JUMPS_P): Define to...
	(sh_cannot_modify_jumps_p): New function.
	2002-02-05  Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/sh.c (TARGET_MS_BITFIELD_LAYOUT_P): Define to...
	(sh_ms_bitfield_layout_p): New function.
	2002-02-04  Alexandre Oliva  <aoliva@redhat.com>
		    Zack Weinberg  <zack@codesourcery.com>
	* config/sh/sh.h (TRAMPOLINE_ADJUST_ADDRESS): Use
	expand_simple_binop instead of expand_binop.
	2002-02-03  Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/sh.h (OVERRIDE_OPTIONS) [! TARGET_SH5]: Disable
	use of .quad and .uaquad.
	* config/sh/sh.c (TARGET_ASM_UNALIGNED_DI_OP,
	TARGET_ASM_ALIGNED_DI_OP): Add comment pointing to the above.
	2002-01-24  Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/sh.md (movdi_const, movdi_const_32bit,
	movdi_const_16bit): Make sure all CONSTs have modes.
	(sym2PIC): Ditto, but by adjusting all callers.
	* config/sh/sh.c (calc_live_regs) [TARGET_SHCOMPACT]: Set pr_live
	if the prologue calls the SHmedia argument decoder or register
	saver.
	2002-01-24  Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/sh.c (TARGET_ASM_UNALIGNED_DI_OP): Define.
	(TARGET_ASM_ALIGNED_DI_OP): Likewise.
	(sh_expand_epilogue): Don't emit USE of return target register.
	(prepare_move_operands): Legitimize DImode PIC addresses.
	(sh_media_register_for_return): Skip tr0, used to initialize the
	PIC register.
	(sh_expand_prologue): Remove explicit USE of return register.
	(nonpic_symbol_mentioned_p): PC is non-PIC.  Don't recurse in
	CONST_DOUBLEs.  UNSPEC_GOTPLT is PIC.
	* config/sh/sh.h (ASM_OUTPUT_DOUBLE_INT): Removed, obsolete.
	(OVERRIDE_OPTIONS): Don't disable PIC on SH5.
	(EXTRA_CONSTRAINT_S): Use MOVI_SHORI_BASE_OPERAND_P instead of
	EXTRA_CONSTRAINT_T.
	(GOT_ENTRY_P, GOTPLT_ENTRY_P, GOTOFF_P, PIC_ADDR_P): New.
	(MOVI_SHORI_BASE_OPERAND_P): New.
	(NON_PIC_REFERENCE_P, PIC_REFERENCE_P): New.
	(EXTRA_CONSTRAINT_T): Define in terms of them.
	(OUTPUT_ADDR_CONST_EXTRA): Handle UNSPEC_GOTPLT.
	* config/sh/sh.md (movsi_media, movsi_media_nofpu,
	movdi_media, movdi_media_nofpu): Add SIBCALL_REGS class to
	alternatives supporting TARGET_REGS.
	(UNSPEC_GOTPLT): New constant.
	(movdi split): Move incrementing of LABEL_NUSES...
	(movdi_const, movdi_const_32bit): Here.  Use
	MOVI_SHORI_BASE_OPERAND_P instead of EXTRA_CONSTRAINT_T.
	(movdi_const_16bit): New.
	(call, call_value) [flag_pic]: Use GOTPLT.
	(call_pop, call_value_pop): New expands.
	(call_pop_compact, call_pop_rettramp): New insns.
	(call_value_pop_compact, call_value_pop_rettramp): New insns.
	(sibcall) [flag_pic]: Use GOT.
	(builtint_setjmp_receiver): Remove bogus, unused expand.
	(GOTaddr2picreg): Implement for SHcompact and SHmedia.
	(*pt, *ptb, ptrel): New insns.
	(sym2GOT): Handle DImode GOT.
	(sym2GOTPLT, symGOTPLT2reg): New expands.
	(sym2PIC): New expand.
	(shcompact_return_tramp): Use GOTPLT to return trampoline.
	(shcompact_return_tramp_i): Use return register explicitly.
	* config/sh/sh.h (OVERRIDE_OPTIONS) [TARGET_SHMEDIA]: Don't
	disable flag_reorder_blocks.
	2002-01-19  Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/sh.md (sibcall_compact): Reorder return, uses and
	clobbers, for clarity.
	(sibcall_epilogue) [TARGET_SHCOMPACT]: Mark saving and
	restoring of r0 in macl as MAYBE_DEAD.
	2002-01-18  Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/sh.h (LONG_DOUBLE_TYPE_SIZE): Define.
	* config/sh/sh.md (movv4sf_i, movv16sf_i): Fix uses of
	alter_subreg all over.
	(jump) [TARGET_SHMEDIA]: FAIL to create new jumps after
	reload, instead of emitting instructions that would require
	reloading.
	(casesi_load_media): Add missing modes.
	2001-11-09  Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/sh.c (sh_expand_prologue): Mark the PIC register
	as used if the argument decoder is called.
	2001-08-28  Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/sh.md (udivsi3, divsi3): Load libcall symbol name in
	Pmode, then extend it to DImode if necessary.
	2001-08-28  Stephen Clarke  <Stephen.Clarke@st.com>
	* config/sh/sh.h (LEGITIMATE_CONSTANT_P): Don't accept DFmode
	constants in FPU-enabled SHmedia, let them be loaded from memory.
	2001-08-28  Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/sh.md (cmpeqdi_media, cmpgtdi_media, cmpgtudi_media):
	Adjust whitespace in assembly output templates.
	2001-08-28  Stephen Clarke  <Stephen.Clarke@st.com>
	* config/sh/sh.md (movdicc_false, movdicc_true, movdicc): Adjust
	mode of if_then_else.
	2001-08-04  Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/sh64.h (CPP_DEFAULT_CPU_SPEC): Override definition in
	sh.h.
	2001-07-26  Andrew Haley  <aph@cambridge.redhat.com>
		    Joern Rennecke <amylaar@redhat.com>
	* config/sh/sh64.h (CPP_DEFAULT_CPU_SPEC): New.
	(SUBTARGET_CPP_PTR_SPEC): New.
	(SUBTARGET_CPP_SPEC): Remove.
	2001-07-06  Chandrakala Chavva  <cchavva@redhat.com>
	* config/sh/sh.md (movsf_media_nofpu+1, movdf_media_nofpu+1):
	Fix typo in previous checkin.
	2001-07-11  Chandrakala Chavva  <cchavva@redhat.com>
	* config/sh/sh.h (MODES_TIEABLE_P): Fix redact indentations.
	2001-07-10  Chandrakala Chavva  <cchavva@cygnus.com>
		    Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/sh.h (MODES_TIEABLE_P): Don't tie modes wider than
	what single FP register can hold for SHmedia target.
	2001-07-06  Chandrakala Chavva  <cchavva@redhat.com>
		    Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/sh.md (movsf_media_nofpu+1, movdf_media_nofpu+1):
	Do not split into SUBREG.
	2001-06-14  Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/ushmedia.h, config/sh/sshmedia.h: Updated signatures
	and added new functions as specified in SH5 ABI r9.
	2001-06-04  Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/lib1funcs.asm (GCC_nested_trampoline): Align to an
	8-byte boundary.
	2001-06-03  Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/sh.c (dump_table): Add const0_rtx in calls of
	gen_consttable_4 and gen_consttable_8.  Emit multiple labels
	and consttable_window_ends.
	2001-06-03  Graham Stott  <grahams@redhat,com>
	* config/sh/sh.md (movdi split): Remove unused variable last_insn.
	2001-05-16  Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/sh.c (print_operand): Handle floating-point pair,
	vector and matrix registers.
	* config/sh/sh.h (REGISTER_MOVE_COST): Take floating-pointer
	vector modes into account.
	* config/sh/sh.md (movv2sf): Split move between registers into
	movdf.
	(movv4sf, movv16sf): Introduce insns that get split only after
	reload.
	* config/sh/shmedia.h: Fix Copyright dates.
	* config/sh/ushmedia.h: Likewise.  Move loop counter
	declarations into conditionals that uses them.
	(sh_media_FVADD_S, sh_media_FVSUB_S): Fix off-by-one error in
	loop boundary.
	* config/sh/sshmedia.h: Fix Copyright dates.
	(sh_media_PUTCFG): Fix constraints.
	2001-05-12  Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/sh.h (TARGET_PTRMEMFUNC_VBIT_LOCATION): Define to
	ptrmemfunc_vbit_in_delta for SH5.
	2001-05-08  Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/sh.h (TARGET_SWITCHES): Document -m5-*.
	* invoke.texi: Likewise.
	2001-04-14  Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/lib1funcs.asm (GCC_push_shmedia_regs,
	GCC_push_shmedia_regs_nofpu, GCC_pop_shmedia_regs,
	GCC_pop_shmedia_regs_nofpu): New global symbols.
	* config/sh/t-sh64 (LIB1ASMFUNCS): Add them.
	* config/sh/sh.h (SHMEDIA_REGS_STACK_ADJUST): New macro.
	* config/sh/sh.c (calc_live_regs): Account for PR's saving in
	compact function with nonlocal labels.
	(sh_expand_prologue) [SHcompact]: Push SHmedia regs if needed.
	(sh_expand_epilogue) [SHcompact]: Pop them when appropriate.
	(initial_elimination_offset): Account for their stack space.
	* config/sh/sh.md (shmedia_save_restore_regs_compact): New insn.
	* config/sh/sh.md (movsi_media, movsi_media_nofpu, movqi_media,
	movhi_media, movdi_media, movdi_media_nofpu, movdf_media,
	movdf_media_nofpu, movsf_media, movsf_media_nofpu): Require at
	least one of the operands to be a register.
	(movv2sf): Likewise.  Renamed to movv2sf_i.
	(movdi, movdf, movv2sf, movv4sf, movv16sf, movsf):
	prepare_move_operands() before emitting SHmedia insns.
	2001-04-03  Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/crti.asm (init, fini) [__SH5__ && ! __SHMEDIA__]:
	Don't save nor initialize r12.  Don't mis-align the stack.
	Pad the code with a nop.
	* config/sh/crti.asm: Don't restore r12.  Don't mis-align the
	stack.
	2001-03-13  Alexandre Oliva  <aoliva@redhat.com>
	* gcc/longlong.h (__umulsidi3, count_leading_zeros)
	[__SHMEDIA__]: Implement.
	2001-03-11  Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/sh.md: Set latency of `pt' closer to reality.
	(movsi_media, movsi_media_nofpu, movdi_media, movdi_media_nofpu,
	movdf_media, movdf_media_nofpu, movsf_media, movsf_media_nofpu):
	Set move, load and store type attributes.
	* config/sh/sh.c (sh_loop_align) [TARGET_SH5]: Set to 3.
	* config/sh/sh.h (OVERRIDE_OPTIONS) [TARGET_SH5]: Disable
	profiling.
	* config/sh/sh.h (PROMOTE_MODE): Sign-extend SImode to DImode.
	* config/sh/sh-protos.h (sh_media_register_for_return): Declare.
	* config/sh/sh.c (sh_media_register_for_return): New function.
	(sh_expand_prologue) [TARGET_SHMEDIA]: Copy r18 to an available
	branch-target register.
	(sh_expand_epilogue) [TARGET_SHMEDIA]: Explicitly USE it.
	* config/sh/sh.md (return_media_i): Use any call-clobbered
	branch-target register.
	(return_media): If r18 wasn't copied in the prologue, copy it
	here.
	* config/sh/sh.h (CONDITIONAL_REGISTER_USAGE) [TARGET_SHMEDIA]:
	Clear class FP0_REGS.
	* config/sh/sh64.h (LINK_SPEC): Removed incorrect default copied
	from elf.h.
	2001-03-08  DJ Delorie  <dj@redhat.com>
	* config/sh/sh.h (OVERRIDE_OPTIONS): Disable relaxing for SHMEDIA.
	2001-02-09  Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/sh.md (sibcall_compact): Set fp_mode to single.
	2001-02-07  Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/sh.h (INT_ASM_OP) [SHMEDIA64]: Use `.quad'.
	2001-02-03  Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/sh.h (INIT_CUMULATIVE_ARGS): Compute size of BLKmode
	return value correctly for call_cookie.
	2001-02-01  Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/crt1.asm (start): Modified so as to call
	___setup_argv_and_call_main.
	2001-01-26  Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/sh.h (FUNCTION_ARG_ADVANCE): Don't count stack_regs in
	SHmedia mode.
	2001-01-20  Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/sh.h (STRIP_DATALABEL_ENCODING): New macro.
	(STRIP_NAME_ENCODING): Use it.
	(ASM_OUTPUT_LABELREF): Likewise.  Don't call assemble_name().
	2001-01-19  Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/sh.md (sgeu) [! SHMEDIA]: Fix invocation of
	prepare_scc_operands().
	* config/sh/sh.h (SH_DATALABEL_ENCODING): Change to "#"...
	(DATALABEL_SYMNAME_P): ... so that we don't need memcmp here.
	2001-01-17  Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/sh.h (STRIP_NAME_ENCODING): Strip leading `*'.
	2001-01-13  Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/sh.md (shcompact_incoming_args): Use R0_REG.
	* config/sh/sh.md (R7_REG, R8_REG, R9_REG): Define as constants,
	used in shcompact_incoming_args.
	* config/sh/sh.c (sh_expand_epilogue): Fix thinko in previous
	change.
	* config/sh/crt1.asm (start) [SH5]: Switch to single-precision
	mode.
	* config/sh/lib1funcs.asm (sdivsi3_i4, udivsi3_i4, set_fpscr):
	Adjust accordingly.
	* config/sh/sh.c (sh_expand_prologue, sh_expand_epilogue):
	Simplify.  Adjust.  Add sanity check.
	* config/sh/sh.h (TARGET_SWITCHES) [5-compact]: Set
	FPU_SINGLE_BIT.
	* config/sh/sh.md (udivsi3_i4_single, divsi3_i4_single): Match
	TARGET_SHCOMPACT.
	(udivsi3, divsi3): Use them.
	(force_mode_for_call): New insn.
	(call, call_value, sibcall_value): Emit it before SHcompact
	calls.
	2001-01-11  Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/sh.md (call, call_value, sibcall): Make sure the
	call cookie is non-NULL before taking its value.
	2001-01-10  Alexandre Oliva  <aoliva@redhat.com>
	* config.gcc (sh64): Set target_requires_64bit_host_wide_int.
	2001-01-09  Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/sh.md (shcompact_incoming_args): Set argument memory
	block.
	* config/sh/sh.h (STATIC_CHAIN_REGNUM) [SH5]: Use r1.
	* config/sh/sh.c (sh_expand_prologue) [SH5]: Use r0 as
	temporary for stack adjusts.  Use MACL and MACH to pass
	arguments to shcompact_incoming_args.
	* config/sh/sh.md (shcompact_incoming_args): Adjust.  Don't
	clobber r1.
	* config/sh/lib1funcs.asm (shcompact_incoming_args): Likewise.
	(nested_trampoline): Load static chain address into r1.
	* config/sh/sh.md (movdi_media splits): Fix sign-extension.
	2001-01-07  Alexandre Oliva  <aoliva@redhat.com
	* config/sh/sh.c (fpul_operand) [SHMEDIA]: Just call
	fp_arith_reg_operand().
	2001-01-06  Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/sh.md (casesi): Sign-extend the first two operands,
	and use signed compares for them.
	* config/sh/sh.c (dump_table): Don't emit 8-byte constants after
	4-byte ones.  Instead, inter-leave them, maintaining the 8-byte
	ones properly aligned.
	(find_barrier): Account for extra alignment needed for 8-byte wide
	constants.
	(machine_dependent_reorg): Require a label for the second 4-byte
	constant after an 8-byte one.
	* config/sh/lib1funcs.asm (sdivsi3): Fix typo in yesterday's
	change.
	2001-01-05  Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/sh.c (machine_dependent_reorg) [SHCOMPACT]: Reset
	last_float when switching float modes.
	* config/sh/sh.md (movdf) [SH5]: Don't use stack-pointer
	auto-increment for general-purpose registers.
	* config/sh/lib1funcs.asm (sdivsi3) [SHMEDIA]: Sign-extend the
	result.
	* config/sh/sh.c (sh_expand_prologue) [SH5]: Use r1 as temporary
	for stack adjust.
	* config/sh/sh.c (sh_builtin_saveregs): Support using all
	registers for varargs.
	2001-01-01  Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/sh.h (FUNCTION_ARG_ADVANCE): Simplify.
	* config/sh/sh.h (CALL_COOKIE_STACKSEQ,
	CALL_COOKIE_STACKSEQ_SHIFT, CALL_COOKIE_STACKSEQ_GET): New macros.
	(CALL_COOKIE_INT_REG_SHIFT): Adjust.
	(FUNCTION_ARG_ADVANCE): Use SHCOMPACT_FORCE_ON_STACK.  Adjust
	call_cookie accordingly.
	(FUNCTION_ARG): Test SHCOMPACT_FORCE_ON_STACK.
	(SHCOMPACT_BYREF): Likewise.
	(SHCOMPACT_FORCE_ON_STACK): New macro.
	* config/sh/sh.c (sh_expand_prologue): Use new call_cookie format.
	(sh_builtin_saveregs): Likewise.
	* config/sh/lib1funcs.asm (shcompact_call_trampoline,
	shcompact_incoming_args): Use new shift values.  Support
	sequences of consecutive and non-consecutive pushes/pops.
	* config/sh/sh.md (return): Don't explicitly use PR_REG.
	2001-01-05  Hans-Peter Nilsson  <hpn@cygnus.com>
	* config/sh/sh.h (TEXT_SECTION): Define.
	* config/sh/elf.h (ASM_FILE_START): Output TEXT_SECTION_ASM_OP.
	2001-01-05  Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/sh.h (INIT_CUMULATIVE_LIBCALL_ARGS): New macro.
	* config/sh/sh.h (BASE_RETURN_VALUE_REG): Use FP regs for
	return values on FPU-enabled SHmedia.
	(FUNCTION_VALUE_REGNO_P): Mark FIRST_FP_RET_REG as used on
	FPU-enabled SHmedia.
	(INIT_CUMULATIVE_ARGS): Set up return trampoline only if
	value is returned in a non-FP reg and is not returned by
	reference.
	* config/sh/sh.md (shcompact_return_tramp_i): Change type to
	jump_ind.
	2000-01-04  Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/sh.h (SH_MIN_ALIGN_FOR_CALLEE_COPY): New.
	(FUNCTION_ARG_CALLEE_COPIES): Require argument to be
	quad-aligned to be passed by callee-copy reference.
	2001-01-03  Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/elf.h (MAX_WCHAR_TYPE_SIZE): Define.
	* config/sh/sh64.h (MAX_WCHAR_TYPE_SIZE): Undefine.
	2001-01-02  Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/lib1funcs.asm (shcompact_call_trampoline): Fix error in
	copying low-numbered FP regs to r7 and r8.
	* config/sh/sh.h (FUNCTION_ARG_ADVANCE): Don't request copying of
	FP regs to general-purpose regs only if the copy was passed on the
	stack.
	* config/sh/lib1funcs.asm (shcompact_call_trampoline): Fix typo in
	copying FP reg to r9.
	* config/sh/sh.h (FUNCTION_ARG_ADVANCE): Use trampoline to
	copy FP regs to general-purpose regs only in outgoing calls.
	* config/sh/sh.md (movdf_media, movsf_media): Revert incorrect
	change from	2000-10-30.  Adjust for 64-bit (or 32-bit)
	HOST_WIDE_INT.
	* config/sh/sh.h (struct sh_args): Document all fields.
	(FUNCTION_OK_FOR_SIBCALL): Functions that receive arguments
	passed partially on the stack should not consider making
	sibcalls.
	* config/sh/sh.h (FUNCTION_ARG_ADVANCE): Add byref regs to
	stack_regs only for incoming calls.  When passing FP args,
	make sure there are FP regs available before modifying
	call_cookie.
	(SHCOMPACT_BYREF): Pass double args in general-purpose
	registers by reference.
	2000-12-30  Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/sh.h (FUNCTION_OK_FOR_SIBCALL) [SHCOMPACT]: Don't
	attempt to generate sibcalls if the caller got any arguments
	by reference.
	* config/sh/lib1funcs.asm (set_fpscr) [SH5]: Default to double.
	* config/sh/sh.c (dump_table) [SHCOMPACT]: Align DImode and DFmode
	to 8-byte boundaries.
	* config/sh/sh.md (shcompact_preserve_incoming_args): New insn.
	* config/sh/sh.h (CALL_COOKIE_INT_REG_GET): New macro.
	* config/sh/sh.c (sh_expand_prologue): Preserve args that will be
	stored in the stack.
	* config/sh/lib1funcs.asm (ct_main_table, ia_main_table): Arrange
	for the offsets to have the ISA bit set.
	(shcompact_call_trampoline): Document.  Swap r0 and r1, to match
	invocation.  Use beq instead of bgt to mark end of sequence of
	loads.
	(shcompact_incoming_args): Fix store of r2.  Use beq instead of
	bgt to mark end of sequence of stores.
	* config/sh/sh.c (arith_operand): Don't check whether
	CONST_OK_FOR_J for now.
	* config/sh/sh.md (movdf_media, movsf_media): Use HOST_WIDE_INT
	instead of long for conversion.
	2000-12-29  Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/sh.c (print_operand_address): Convert INTVAL to int
	before passing it to fprintf.
	2000-12-28  Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/crt1.asm (start): Reset SR.FD, to enable the FP unit.
	Call set_fpscr before reading/writing SR.
	* config/sh/crt1.asm (start): Set SR.SZ and SR.PR, but not SR.FR.
	Call set_fpscr.
	* config/sh/lib1funcs.asm: Add `.align 2' directives before
	SHmedia code.
	(FMOVD_WORKS): Define on SH5 with FPU.
	(set_fpscr): Define on SH5.  Remove separate _fpscr_values
	setting.
	* config/sh/t-sh64 (LIB1ASMFUNCS): Add _set_fpscr instead of
	_fpscr_values.
	2000-12-28  Hans-Peter Nilsson  <hpn@cygnus.com>
	* config/sh/lib1funcs.asm (ct_main_table): Align contents to even
	address.
	(ia_main_table): Ditto.
	2000-12-27  Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/sh.h (MAX_WCHAR_TYPE_SIZE): Don't define.
	* config/sh/sh64.h (WCHAR_TYPE, WCHAR_TYPE_SIZE): Reinstate
	the definitions from sh.h.
	* config/sh/sh.h (PTRDIFF_TYPE): Define as conditional on
	TARGET_SH5.
	(SUBTARGET_CPP_SPEC): Arrange for __PTRDIFF_TYPE__ to be defined.
	* config/sh/elf.h (PTRDIFF_TYPE): Likewise.
	* config/sh/sh64.h (SUBTARGET_CPP_SPEC): Likewise.
	2000-12-26  Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/sh.md (movdi_media split): Don't add REG_LABEL notes.
	Increment LABEL_NUSES.

	* config/sh/sh.h (SIZE_TYPE): Define as conditional on
	TARGET_SH5.
	(SUBTARGET_CPP_SPEC): Arrange for __SIZE_TYPE__ to be always
	defined.
	* config/sh/elf.h (SIZE_TYPE): Likewise.
	* config/sh/sh64.h (SUBTARGET_CPP_SPEC): Likewise.
	* config/sh/lib1funcs.asm (shcompact_call_trampoline,
	shcompact_incoming_args): Load switch table addresses using
	datalabel.
	* config/sh/sh.h (SUBTARGET_CPP_SPEC): Define __SIZE_TYPE__.
	(NO_BUILTIN_SIZE_TYPE): Define.
	(SIZE_TYPE): Don't define.
	* config/sh/sh64.h (SUBTARGET_CPP_SPEC): Define __SIZE_TYPE__.
	* config/sh/sh.h (CPP_SPEC): Fixed typo that prevented the
	definition of __SH5__=32 for -m5-compact-nofpu.
	* config/sh/sh.c (barrier_align): Ensure 32-bit alignment after
	ADDR_DIFF_VEC.
	2000-12-24  Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/sh.h (FUNCTION_ARG_PADDING): Removed.
	2000-12-23  Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/sh.h (TARGET_CACHE32): Enable on SH5.
	(FUNCTION_BOUNDARY): Ensure 32-bit alignment for SHmedia.
	(INSN_LENGTH_ALIGNMENT): Likewise.
	2000-12-22  Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/sh.md (call, call_value, sibcall): Simplify
	copying of non-branch-target register.
	2000-12-22  Alexandre Oliva  <aoliva@redhat.com>
	* glimits.h (__LONG_MAX__): Revert	2000-12-13's patch.
	* config/sh/sh.h (CPP_SPEC): Define it here for 64-bit SHmedia.
	2000-12-22  Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/sh.h (GET_SH_ARG_CLASS): Handle complex
	floating-point values as structs.
	(FUNCTION_ARG): Use SH5_PROTOTYPED_FLOAT_ARG.
	(SH5_PROTOTYPELESS_FLOAT_ARG): List FP registers before
	general-purpose register.
	(SH5_PROTOTYPED_FLOAT_ARG): New macro.
	2000-12-20  Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/sh.md (addsi3): Force operand1 to reg for SHmedia.
	* config/sh/sh.md (movsi_media): Split CONST_DOUBLE loads too.
	* config/sh/sh.h (DATALABEL_REF_P): Don't require the CONST.
	(ENCODE_SECTION_INFO): Enclose variables and constants in
	DATALABEL unspecs.
	(SH_DATALABEL_ENCODING, DATALABEL_SYMNAME_P): Define.
	(STRIP_NAME_ENCODING): Strip SH_DATALABEL_ENCODING off.
	(ASM_OUTPUT_LABELREF, AMS_OUTPUT_SYMBOL_REF): Define.
	* config/sh/sh.c (gen_datalabel_ref): Use UNSPEC_DATALABEL
	only for LABEL_REFs.  For SYMBOL_REFs, prepend
	SH_DATALABEL_ENCODING to the symbol name.
	* config/sh/sh.md (indirect_jump): Use SUBREG instead of
	convert_mode().
	2000-12-20  Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/sh.md (casesi): Enclose ADDR_DIFF_VEC address in
	UNSPEC_DATALABEL.
	* config/sh/sh.c (gen_datalabel_ref): Accept LABEL_REFs.
	* config/sh/sh.h (DATALABEL_REF_NO_CONST_P): Likewise.
	(DATALABEL_REF_P): Don't require CONST.
	(ASM_OUTPUT_ADDR_DIFF_ELT): On SH5, output datalabel before
	REL label.
	2000-12-19  Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/sh.md (extendhidi2, extendqidi2): Use arithmetic shift
	right.
	2000-12-18  Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/sh.md (movsi_media, call, call_value, sibcall):
	Use shallow_copy_rtx and PUT_MODE to change the mode of
	SYMBOL_REFs, LABEL_REFs, CONSTs, etc.
	* config/sh/sh.h (PREFERRED_RELOAD_CLASS): Reload SYMBOL_REFs
	on SHmedia using GENERAL_REGs.
	* config/sh/sh.md (ble_media_i, blt_media_i, bleu_media_i,
	bltu_media_i): Fix reversion of conditions.
	2000-12-18  Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/sh.md (zero_extendhidi2): Use logical shift right.
	* config/sh/sh.c (output_far_jump): Save r13 in macl.
	2000-12-17  Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/sh.c (gen_datalabel_ref): Fix mode of the UNSPEC.
	2000-12-16  Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/lib1funcs.asm (ic_invalidate): Define for SH5.
	(GCC_nested_trampoline): Likewise.
	* config/sh/sh-protos.h (gen_datalabel_ref): Declare.
	* config/sh/sh.c (gen_datalabel_ref): Define.
	* config/sh/sh.h (TRAMPOLINE_SIZE): Adjust for SH5.
	(INITIALIZE_TRAMPOLINE): Likewise.
	(TRAMPOLINE_ADJUST_ADDRESS): Define.
	(DATALABEL_REF_NO_CONST_P, DATALABEL_REF_P): Define.
	(EXTRA_CONSTRAINT_T): Match DATALABEL unspecs.
	(OUTPUT_ADDR_CONST_EXTRA): Handle DATALABEL unspecs.
	* config/sh/sh.md (UNSPEC_DATALABEL): New constant.
	(ic_invalidate): Adjust for SH5.
	(ic_invalidate_line_media, ic_invalidate_line_compact): New insns.
	* config/sh/t-sh64 (LIB1ASMFUNCS): Added _ic_invalidate and
	_nested_trampoline.
	2000-12-15  Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/sh.h (MOVE_MAX): Set to 8 for SHmedia, 4 elsewhere.
	(MOVE_MAX_PIECES): Set to 8 on SHmedia too.
	2000-12-14  Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/sh.h (DBX_REGISTER_NUMBER): Adjust for sh64-elf-gdb.
	* config/sh/elf.h (DBX_REGISTER_NUMBER): Likewise.
	2000-12-14  Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/sh.c (target_reg_operand): Match only target-branch
	registers and pseudos that aren't virtual registers.
	* config/sh/sh.md (call, call_value, sibcall) [TARGET_SHMEDIA]:
	Copy operands that don't match target_reg_operand to pseudos.
	(call_media, call_value_media, sibcall_media): Use
	target_reg_operand instead of target_operand.
	2000-12-13  Alexandre Oliva  <aoliva@redhat.com>
	* glimits.h (__LONG_MAX__) [SH5 == 64]: Adjust for 64 bits.
	* config/sh/sh.c (target_reg_operand): Match hardware registers
	other than branch-target registers.
	* config/sh/sh.md (zero_extendqidi2): Input operand is %1.
	* config/sh/lib1funcs.asm (sdivsi3) [SH5]: Make it global.
	(fpscr_values) [SH5 == 32]: Define.
	* config/sh/t-sh64 (LIB1ASMFUNCS): Add fpscr_values.
	* config/sh/sh.md (call, call_value, sibcall) [TARGET_SHMEDIA]:
	Handle function addresses coming in SUBREGs.
	2000-12-12  Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/lib1funcs.asm (shcompact_call_trampoline,
	shcompact_return_trampoline): Use datalabel where appropriate.
	2000-12-09  Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/sh.h (SECONDARY_OUTPUT_RELOAD_CLASS): Use a
	general-purpose register to copy one branch-target register to
	another.
	2000-12-06  Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/sh.c (target_operand): Accept LABEL_REFs and
	SYMBOL_REFs with VOIDmode.
	* config/sh/sh.md (ble_media_i, blt_media_i, bleu_media_i,
	bltu_media_i): New insns.
	2000-12-06  Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/sh.h (RETURN_IN_MEMORY): Adjust for SH5 ABI.
	(INIT_CUMULATIVE_ARGS): Likewise.
	2000-12-01  Alexandre Oliva  <aoliva@redhat.com>
	* machmode.def (V16SFmode): New mode.
	* c-common.c (type_for_mode): Support V2SF and V16SF.
	* tree.c (build_common_tree_nodes_2): Likewise.
	* tree.h (tree_index): Likewise.
	* calls.c (emit_call_1): Take args_so_far.  Adjust all
	callers.  Introduce CALL_POPS_ARGS.
	* tm.texi (CALL_POPS_ARGS): Document.
	* config/sh/crt1.asm: Implement in SHmedia mode.
	* config/sh/crti.asm, config/sh/crtn.asm: Likewise
	* config/sh/elf.h (ASM_SPEC, LINK_SPEC): Support SH5 flags.
	(DBX_REGISTER_NUMBER): Renumber registers for SH5.
	* config/sh/lib1funcs.asm: Disable functions unused in SH5.
	Implement divsi and udivsi in SHmedia mode.  Introduce
	SHcompact trampolines.
	* config/sh/sh.c (GEN_MOV, GEN_ADD3, GEN_SUB3): Use DImode
	only in SHmedia64.
	(regno_reg_class): Rewrite.
	(fp_reg_names): Remove.
	(sh_register_names, sh_additional_register_names): New.
	(print_operand): Added `u'.  Support SUBREGs in addresses.
	Add parentheses around shifted CONSTs.
	(output_file_start): Output .mode and .abi directives.
	(shiftcosts, addsubcosts, multcosts): Adjust.
	(output_stack_adjust): Compute alignment.  Sanity-check SIZE.
	(push_regs): Take array of HOST_WIDE_INTs.  Adjust callers.
	(calc_live_regs): Output to array of HOST_WIDE_INTs.  Count
	bytes, not registers.  Take into account the need for the
	SHcompact incoming args trampoline.  Adjust all callers.
	(sh_expand_prologue): Take stack_regs into account.  Call
	incoming args trampoline.  Keep stack aligned as per SH5 ABI.
	(sh_expand_epilogue): Take stack_regs into accoutn.  Keep
	stack aligned as per SH5 ABI.
	(sh_builtin_saveregs): Support SH5 ABI.
	(sh_build_va_list, sh_va_start): Likewise.
	(initial_elimination_offset): Take alignment into account.
	Compute location of PR according to the SH5 stack frame.
	(arith_reg_operand): Reject branch-target registers.
	(shmedia_6bit_operand): New.
	(logical_operand): Use CONST_OK_FOR_P on SHmedia.
	(target_reg_operand): Match DImode only.  Accept SUBREGs.
	(target_operand): New.
	* config/sh/sh.h (CPP_SPEC, SUBTARGET_CPP_SPEC): Support SH5 flags.
	(CONDITIONAL_REGISTER_USAGE): Implement SH5 ABI.  Initialize
	SIBCALL_REGS for SHmedia.
	(TARGET_SH3E, TARGET_SH4): Only if SH1_BIT is set too.
	(TARGET_FPU_DOUBLE, TARGET_FPU_ANY): New.
	(TARGET_SHMEDIA32, TARGET_SHMEDIA64): New.
	(TARGET_SWITCHES): New SH5 flags.
	(OVERRIDE_OPTIONS): Set SH5-specific options.  Use
	VALID_REGISTER_P to disable unsupported registers.
	(LONG_TYPE_SIZE, LONG_LONG_TYPE_SIZE): Set.
	(POINTER_SIZE, PARM_BOUNDARY): Adjust.
	(FUNCTION_ARG_PADDING): Define.
	(FASTEST_ALIGNMENT): Adjust.
	(SH_REGISTER_NAMES_INITIALIZER): New.
	(sh_register_names): Declare.
	(DEBUG_REGISTER_NAMES): Define.
	(REGISTER_NAMES): Define based on sh_register_names.
	(SH_ADDITIONAL_REGISTER_NAMES_INITIALIZER): New.
	(sh_additional_register_names): Declare.
	(LAST_GENERAL_REG, LAST_FP_REG, LAST_XD_REG): Adjust for SHmedia.
	(FIRST_TARGET_REG, LAST_TARGET_REG): Define.
	(TARGET_REGISTER_P, SHMEDIA_REGISTER_P, VALID_REGISTER_P): Define.
	(REGISTER_NATURAL_MODE): Define.
	(FIRST_PSEUDO_REGISTER): Adjust.
	(FIXED_REGISTERS, CALL_USED_REGISTERS): Adjust.
	(HARD_REGNO_CALL_PART_CLOBBERED): Define.
	(HARD_REGNO_NREGS, HARD_REGNO_MODE_OK): Adjust.
	(VECTOR_MODE_SUPPORTED_P): Define.
	(REG_CLASS_CONTENTS): Adjust.
	(SMALL_REGISTER_CLASSES): Adjust.
	(REG_ALLOC_ORDER): Adjust.
	(INDEX_REG_CLASS): Adjust.
	(CONST_OK_FOR_O, CONST_OK_FOR_P): New.
	(CONST_OK_FOR_LETTER_P): Adjust.
	(PREFERRED_RELOAD_CLASS): Adjust.
	(SECONDARY_OUTPUT_RELOAD_CLASS): Adjust.
	(SECONDARY_INPUT_RELOAD_CLASS): Adjust.
	(NPARM_REGS, FIRST_PARM_REG, FIRST_RET_REG): Adjust.
	(FIRST_FP_PARM_REG): Adjust.
	(CALL_POPS_ARGS): Define.
	(FUNCTION_ARG_REGNO_P): Adjust.
	(struct sh_args): New fields.
	(GET_SH_ARG_CLASS): Adjust.
	(INIT_CUMULATIVE_ARGS): Adjust.
	(INIT_CUMULATIVE_INCOMING_ARGS): Define.
	(FUNCTION_ARG_ADVANCE): Adjust.
	(FUNCTION_ARG): Adjust.
	(FUNCTION_ARG_PASS_BY_REFERENCE, SHCOMPACT_BYREF): Define.
	(FUNCTION_ARG_CALLEE_COPIES): Define.
	(SH5_PROTOTYPELESS_FLOAT_ARG): Define.
	(STRICT_ARGUMENT_NAMING): Define.
	(PRETEND_OUTGOING_VARARGS_NAMED): Adjust.
	(FUNCTION_ARG_PARTIAL_NREGS): Adjust.
	(SH5_WOULD_BE_PARTIAL_NREGS): Define.
	(SETUP_INCOMING_VARARGS): Adjust.
	(HAVE_POST_INCREMENT, HAVE_PRE_DECREMENT): Adjust.
	(USE_LOAD_POST_INCREMENT, USE_STORE_PRE_DECREMENT): Adjust.
	(REGNO_OK_FOR_INDEX_P, REG_OK_FOR_INDEX_P): Adjust.
	(SUBREG_OK_FOR_INDEX_P): Adjust.
	(EXTRA_CONSTRAINT_S): Update.
	(EXTRA_CONSTRAINT_T): New.
	(EXTRA_CONSTRAINT): Adjust.
	(GO_IF_LEGITIMATE_INDEX): Adjust.
	(GO_IF_LEGITIMATE_ADDRESS): Adjust.
	(LEGITIMIZE_ADDRESS, LEGITIMIZE_RELOAD_ADDRESS): Adjust.
	(MOVE_MAX): Adjust.
	(MAX_MOVE_MAX): Define.
	(Pmode): Adjust.
	(CONST_COSTS): Adjust.
	(REGISTER_MOVE_COST): Adjust.
	(BRANCH_COST): Adjust.
	(TEXT_SECTION_ASM_OP): Adjust.
	(DBX_REGISTER_NUMBER): Adjust.
	(ASM_OUTPUT_DOUBLE_INT): New.
	(UNALIGNED_DOUBLE_INT_ASM_OP): New.
	(PREDICATE_CODES): Adjust.
	(PROMOTE_MODE): Adjust.
	(CRT_CALL_STATIC_FUNCTION): Do not define for SHmedia.
	* config/sh/sh.md (AP_REG, PR_REG, T_REG, GBR_REG): Renumber.
	(MACH_REG, MACL_REG, FPUL_REG, RAP_REG, FPSCR_REG): Renumber.
	(PR_MEDIA_REG, T_MEDIA_REG, R10_REG): New.
	(DR0_REG, DR2_REG, DR4_REG): Renumber.
	(TR0_REG, TR1_REG, TR2_REG): New.
	(XD0_REG): Renumber.
	(UNSPEC_COMPACT_ARGS): New.
	(type): Added pt and ptabs.
	(length): Default to 4 on SHmedia.  Default pt length to 12
	and	20 on SHmedia32 and SHmedia64, respectively.
	(pt): New function unit.
	(movdi, movsi): Add types pt and ptabs.  Don't increment LABEL_NUSES.
	Add whitespace between operands of SHmedia instructions.
	(movdicc): Fix.
	(adddi3_media, addsi3_media): Adjust constraints.
	(subsi3) [SHmedia]: Force operand 1 into a register.
	(udivsi3_i1_media, udivsi3_i4_media): New.
	(udivsi3): Support SHmedia.
	(divsi3_i1_media, divsi3_i4_media): New.
	(divsi3): Support SHmedia.
	(anddi3, iordi3, xordi3): Adjust constraints.
	(zero_extendhidi2, zero_extendqidi2): New.
	(extendsidi2, extendhidi2, extendqidi2): New.
	(push, pop, push_e, push_fpul, push_4): Disable on SH5.
	(pop_e, pop_fpul, pop_4): Likewise.
	(movsi_media): Support FP and BT registers.
	(movsi_media_nofpu): New.  Adjust splits to DImode.
	(lduw, ldub): Renamed to zero_extend* above.
	(movqi_media): Fix typo.
	(movdi_media): Support FP and BT registers.
	(movdi_media_nofpu): New.  Adjust splits for SHmedia32.
	(movdi_const_32bit): New.
	(shori_media): Require immediate operand.  Use `u' for output.
	(movdf_media, movsf_media): Simplified.
	(movdf_media_nofpu, movsf_media_nofpu): New.
	(movdf, movsf): Adjust
	(movv2sf, movv2sf, movv16sf): New.
	(beq_media, beq_media_i): Adjust constraints.  Don't use
	scratch BT register.
	(bne_media, bne_media_i): Likewise.
	(bgt_media, bgt_media_i): Likewise.
	(bge_media, bge_media_i): Likewise.
	(bgtu_media, bgtu_media_i): Likewise.
	(bgeu_media, bgeu_media_i): Likewise.
	(beq, bne, bgt, blt, ble, bge, bgtu, bltu, bgeu, bleu,
	bunordered): Emit jump insn.  Force operands to registers when
	needed.
	(jump_media, jump): Simplify.
	(call_compact, call_compact_rettramp): New.
	(call_value_compact, call_value_compact_rettramp): New.
	(call_media, call_value_media): Simplify.
	(sibcall_compact, sibcall_media): New.
	(call, call_value): Adjust for SHmedia and SHcompact.
	(sibcall, sibcall_value, untyped_call): Likewise.
	(sibcall_epilogue): Preserve r0 across epilogue for SHcompact.
	(indirect_jump): Adjust for SHmedia.
	(casesi_jump_media): New.
	(nop): Re-enable for SHmedia.
	(call_site): Restrict to SH1.
	(casesi): Adjust for SHmedia.
	(casesi_shift_media, casesi_load_media): New.
	(return): Explicitly use PR register.  Call return trampoline
	on SHcompact.
	(return_i): Explicitly use PR register.
	(shcompact_return_tramp, shcompact_return_tramp_i): New.
	(return_media): Adjust.
	(shcompact_incoming_args): New.
	(epilogue): Adjust.
	(seq, slt, sle, sgt, sge, sgtu, sltu, sleu, sgeu, sne): Adjust.
	(movstrsi): Disable on SH5.
	(fpu_switch0, fpu_switch1, movpsi): Enable on SH4.
	(addsf3, addsf3_media): Test TARGET_SHMEDIA_FPU.
	(subsf3, subsf3_media): Likewise.
	(mulsf3, mulsf3_media, mac_media): Likewise.
	(divsf3, divsf3_media): Likewise.
	(floatdisf2, floatsisf2_media): Likewise.  Adjust constraints.
	(floatsisf2, fux_truncsfsi2): Likewise.
	(fix_truncsfdi2, fix_truncsfsi2_media): Likewise.  Adjust
	constraints.
	(cmpeqsf_media, cmpgtsf_media, cmpgesf_media): Likewise.
	(cmpunsf_media, cmpsf): Likewise.
	(negsf2, negsf2_media, sqrtsf2, sqrtsf2_media): Likewise.
	(abssf2, abssf2_media): Likewise.
	(adddf3, adddf3_media, subdf3, subdf3_media): Likewise.
	(muldf3, muldf3_media, divdf3, divdf3_media): Likewise.
	(floatdidf2, floatsidf2_media): Likewise.  Adjust constraints.
	(floatsidf2, fix_truncdfsi2): Likewise.
	(fix_truncdfdi2, fix_truncdfsi2_media): Likewise.  Adjust
	constraints.
	(cmpeqdf_media, cmpgtdf_media): Likewise.
	(cmpgedf_media, cmpundf_media, cmpdf): Likewise.
	(negdf2, negdf2_media, sqrtdf2, sqrtdf2_media): Likewise.
	(absdf2, absdf2_media): Likewise.
	(extendsfdf2, extendsfdf2_media): Likewise.
	(truncsfdf2, truncsfdf2_media): Likewise.
	* config/sh/sh64.h: New file.
	* config/sh/t-sh64: New file.
	* config/sh/shmedia.h: New file.
	* config/sh/ushmedia.h: New file.
	* config/sh/sshmedia.h: New file.
	* configure.in: Added sh64-*-elf.
	* configure: Rebuilt.
	2000-10-10  Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/sh.c (GEN_MOV, GEN_ADD3, GEN_SUB3): New macros.
	(reg_class_from_letter): Use `b' for TARGET_REGS.
	(print_operand): Support `%M', `%m', `AND' and
	`ASHIFTRT'.  Do not precede constants with `#' on SHmedia.
	(andcosts): Adjust for SHmedia.
	(output_stack_adjust, sh_expand_prologue, sh_expand_epilogue):
	Likewise.
	(target_reg_operand): New function.
	* config/sh/sh-protos.h (target_reg_operand): Declare.
	* config/sh/sh.h (CONDITIONAL_REGISTER_USAGE): Don't disable
	FP registers on SH5.
	(HARD_REGNO_MODE_OK): Accept them whenever they're acceptable
	on SH4.
	(TARGET_REGISTER_P): New macro.
	(reg_class, REG_CLASS_NAMES, REG_CLASS_CONTENTS): Added TARGET_REGS.
	(FUNCTION_VALUE): Use DImode for promoted types on SHmedia.
	(EXTRA_CONSTRAINT_S): New macro.
	(EXTRA_CONSTRAINT): Adjust.
	(FLOAT_TYPE_SIZE): Define to 32.
	(Pmode): DImode on SHmedia.
	(CONST_COSTS): Adjust for SHmedia literals.
	(PREDICATE_CODES): Added target_reg_operand.
	(PROMOTE_MODE): Promote signed types to DImode on SHmedia.
	* config/sh/sh.md: Remove all attrs from SHmedia insns.
	(cmpeqdi_media, cmpgtdi_media, cmpgtudi_media): New insns.
	(cmpdi): Accept SHmedia.
	(movdicc_false, movdicc_true): New insns.
	(movdicc): New expand.
	(adddi3): Accept arith_operand for op2, but FAIL on SH1 if
	no_new_pseudos.
	(addsi3_media): Match `S' constraint.
	(anddi3, andcdi3, iordi3, xordi3, negdi_media): New insns.
	(negdi2): Expand for SHmedia.
	(one_cmpldi2): New expand.
	(zero_extendsidi2): Change from expand to insn.
	(extendsidi2): Add constraints.
	(movdi_media, movsi_media): Change `%x' to `%M'.  Use `%m' for
	LD/ST address.  Fix SI immediate loading split.
	(movhi_media, movqi_media, lduw, ldub): New insns.
	(movhi, movqi): Accept SHmedia.
	(shori_media, movdi_media): Relax input constraints.  Split
	symbolic constants.
	(movdf_media, movsf_media): New insn.  New split to movdi.
	(movdf, movsf): Match on SHmedia.
	(beq_media, bne_media, bgt_media, bge_media, bgtu_media,
	bgeu_media): New insns and splits.  New insns with `_i' suffix.
	(beq, bne, bgt, blt, ble, bge, bgtu, bltu, bgeu, bleu): Adjust.
	(bunordered): New expand.
	(jump_compact): Renamed from `jump'.
	(jump_media): New insn.
	(jump): New expand.
	(call_media, call_value_media): New insns.
	(call, call_value): Adjust.
	(indirect_jump_compact): Renamed from `indirect_jump'.
	(indirect_jump_media): New insn.
	(indirect_jump): New expand.
	(untyped_call, return): Accept SHmedia.
	(return_media): New insn.
	(prologue, epilogue, blockage): Accept SHmedia.
	(seq, slt, sle, sgt, sge, sgtu, sltu, sleu, sgeu, sne): Adjust.
	(sunordered): New expand.
	(addsf3, subsf3, mulsf3, divsf3, floatsisf2, fix_truncsfsi2,
	cmpsf, negsf2, sqrtsf2, abssf2): Adjust for SHmedia.
	(addsf3_media, subsf3_media, mulsf3_media, mac_media,
	divsf3_media, floatdisf2, floatsisf2_media, fix_truncsfdi2,
	fix_truncsfsi2_media, cmpeqsf_media, cmpgtsf_media,
	cmpgesf_media, cmpunsf_media, negsf2_media, sqrtsf2_media,
	abssf2_media): New insns.
	(adddf3, subdf3, muldf3, divdf3, floatsidf2, fix_truncdfsi2,
	cmpdf, negdf2, sqrtdf2, absdf2): Adjust for SHmedia.
	(adddf3_media, subdf3_media, muldf3_media, divdf3_media,
	floatdidf2, floatsidf2_media, fix_truncdfdi2,
	fix_truncdfsi2_media, cmpeqdf_media, cmpgtdf_media,
	cmpgedf_media, cmpundf_media, negdf2_media, sqrtdf2_media,
	absdf2_media): New insns.
	(extendsfdf2, truncdfsf2): Adjust for SHmedia.
	(extendsfdf2_media, truncdfsf2_media): New insns.
	2000-09-14  Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/sh.c (machine_dependent_reorg): On shmedia, skip for now.
	* config/sh/sh.h (CONST_OK_FOR_J): Document.
	(LEGITIMATE_CONSTANT_P): Accept CONST_DOUBLEs on shmedia.
	* config/sh/sh.md (adddi3): New expand.
	(adddi3_media, adddi3z_media): New insns.
	(adddi3_compact): Renamed from adddi3.
	(addsi3_media): Use add.l r63 to add constant zero.
	(subdi3): New expand.
	(subdi3_media): New insn.
	(subdi3_compact): Renamed from subdi3.
	(mulsidi3): New expand.
	(mulsidi3_media): New insn.
	(mulsidi3_compact): Renamed from mulsidi3.
	(umulsidi3): New expand.
	(umulsidi3_media): New insn.
	(umulsidi3_compact): Renamed from umulsidi3.
	(ashlsi3_media, ashrsi3_media, lshrsi3_media): New insns.
	(ashlsi3, ashrsi3, lshrsi3): Use them.
	(ashldi3_media, ashrdi3_media, lshrdi3_media): New insns.
	(ashldi3, ashrdi3, lshrdi3): Use them.
	(zero_extendsidi2): New expand.
	(extendsidi2): New insn.
	(movsi_media): New insn.  Split to movdi to load constants.
	(movsi): Enable for shmedia.
	(movdi_media): New insn.  Use shori_media to load wide constants.
	(short_media): New insn.
	(movdi): Enable for shmedia.
	2000-09-08  Alexandre Oliva  <aoliva@redhat.com>
	* config/sh/sh.h (CPP_SPEC): Added `m5'.
	(SUBTARGET_CPP_SPEC): Added `!m5'.
	(SH5_BIT, TARGET_SH5, TARGET_SHMEDIA, TARGET_SHCOMPACT): New macros.
	(TARGET_SWITCHES): Added `5' and `5-compact'.  Added SH1_BIT
	to all other SH variants.
	(TARGET_DEFAULT): Set to SH1_BIT.
	(OVERRIDE_OPTIONS): Recognize sh5 CPU.
	(BITS_PER_WORD): Raise to 64 on shmedia.
	(MAX_BITS_PER_WORD): Change to 64.
	(MAX_LONG_TYPE_SIZE, MAX_WCHAR_TYPE_SIZE): Set to MAX_BITS_PER_WORD.
	(INT_TYPE_SIZE): Keep as 32.
	(UNITS_PER_WORD): Raise to 8 on shmedia.
	(MIN_UNITS_PER_WORD): Keep as 4.
	(POINTER_SIZE): Raise to 64 on shmedia.
	(CONST_OK_FOR_J): New macro.
	(CONST_OK_FOR_LETTER_P): Use it.
	(processor_type): Add PROCESSOR_SH5.
	* config/sh/sh.md: Conditionalize all expands, insns and
	splits to TARGET_SH1.
	(cpu): Added sh5.
	(addsi3_compact): Renamed from...
	(addsi3): Now an expand.
	(addsi3_media, subsi3_media): New insns.
	(subsi3): Don't negate constants with SHmedia.

	* hooks.c: New file.
	* hooks.h: New file.
	* Makefile.in (HOOKS_H): New.
	(TARGET_DEF_H): Added $(HOOKS_H).
	(OBJS): Added hooks.o.
	(cfgcleanup.o, bb-reorder.o): Added target.h.
	(hooks.o): Added dependencies.
	* target-def.h (TARGET_CANNOT_MODIFY_JUMPS_P): New, added to...
	(TARGET_INITIALIZER): this.
	* doc/tm.texi (TARGET_CANNOT_MODIFY_JUMPS_P): Document.
	* target.h (struct gcc_target): Added cannot_modify_jumps_p.
	* bb-reorder.c: Include target.h.
	(reorder_basic_blocks): Skip if cannot modify jumps.
	* cfgcleanup.c: Include target.h.
	(try_optimize_cfg): Skip merge blocking if cannot modify jumps.

2002-02-08  Chris Demetriou  <cgd@broadcom.com>

	* config/mips/mips.md (casesi_internal, casesi_internal_di):
	Protect jump delay slot instructions with .set noreorder and
	.set nomacro.

2002-02-08  Chris Demetriou  <cgd@broadcom.com>

	* config/mips/mips.md (casesi_internal_di): Calculate
	the index into the target offset table correctly.

2002-02-08  Richard Henderson  <rth@redhat.com>

	* expr.c (expand_expr): Mind EXPAND_INITIALIZER for truncation also.
	* final.c (output_addr_const): Accept and discard SUBREG.
	* varasm.c (decode_addr_const): Don't abort on unknown expressions --
	mark them unknown instead.
	(simplify_subtraction): Handle RTX_UNKNOWN.
	(initializer_constant_valid_p): Strip NOP_EXPRs that narrow the mode.

2002-02-08  David Edelsohn  <edelsohn@gnu.org>

	* doc/invoke.texi (RS/6000 and PowerPC Options): Fix typo.

2002-02-08  Richard Henderson  <rth@redhat.com>

	* config/alpha/elf.h (ASM_OUTPUT_ALIGNED_BSS): New.

2002-02-08  Andreas Jaeger  <aj@suse.de>

	* config.gcc (x86_64-*-linux): Add t-linux64 makefile fragment.
	* config/i386/t-linux64: New file.

2002-02-08  Jakub Jelinek  <jakub@redhat.com>

	* c-common.c (c_expand_expr): Revert 2002-02-06 patch.
	* c-parse.in (compstmt): Clear last_expr_type.

2002-02-07  Richard Henderson  <rth@redhat.com>

	* loop.c (strength_reduce): Sink final_value when not
	eliminating a biv.

2002-02-07  David O'Brien  <obrien@FreeBSD.org>

	* config/sparc/freebsd.h: Fix mismatched spec {.

2002-02-07  Richard Henderson  <rth@redhat.com>

	* cfgrtl.c: Include recog.h and insn-config.h.
	(keep_with_call_p): Fix general_operand invocation.
	* Makefile.in (cfgrtl.o): Update dependencies.

2002-02-07  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.c (two_insn_adds_subs_operand): Revise a
	comment.  Accept HImode only if TARGET_H8300.

2002-02-07  Eric Christopher  <echristo@redhat.com>

	* config/mips/crtn.asm: Cleanup #ifdefs.

2002-02-07  Eric Christopher  <echristo@redhat.com>

	* config/mips/crti.asm: Add changes for mips16. mips16 uses
	register 7 as RA instead of $31.
	* config/mips/crtn.asm: Ditto.
	* config/mips/mips.c (mips_move_2words): Add case for
	TARGET_MIPS16 when HOST_BITS_PER_WIDE_INT >= 64.
	(compute_frame_size): Fix typo.
	(save_restore_insns): Ditto.  Make documentation about using
	register $7 as return register more precise.
	(mips_expand_epilogue): Fix comment. Add code to work around not
	being able to add to the stack pointer directly.
	* config/mips/mips.h (EH_RETURN_DATA_REGNO): Change register number
	to 2 for TARGET_MIPS16 as we need 6 and 7 as clobbers in the
	epilogue.

2002-02-07  Tom Rix  <trix@redhat.com>

	* config/rs6000/rs6000.c (reg_or_aligned_short_operand): New. For
	immediates in ldu and stdu DS opcode field.
	* config/rs6000/rs6000.md (movdi_update, movdi_update1): Use.
	* config/rs6000/rs6000-protos.h: Add reg_or_aligned_short_operand.
	* config/rs6000/rs6000.h (PREDICATE_CODES): Same.

2002-02-07  Jeff Sturm  <jsturm@one-point.com>

	* config/sparc/sparc.c (compute_frame_size): Don't correct frame
	offset for stack bias.

2002-02-07  H.J. Lu <hjl@gnu.org>

	* config/mips/linux.h (SUBTARGET_ASM_DEBUGGING_SPEC): Defined.

2002-02-07  Ulrich Weigand  <uweigand@de.ibm.com>

	* testsuite/gcc.dg/cpp/charconst-2.c: Add -fsigned-char option.

Thu Feb  7 12:14:17 CET 2002  Jan Hubicka  <jh@suse.cz>

	* i386-protos.h (x86_order_regs_for_local_alloc): Declare
	* i386.c (x86_order_regs_for_local_alloc): New global function.
	* i386.h (REG_ALLOC_ORDER): CLeanup.
	(ORDER_REGS_FOR_LOCAL_ALLOC): New.

2002-02-07  Richard Henderson  <rth@redhat.com>

	PR optimization/2463
	* alias.c (find_base_value): Recall base values for fixed hard regs.
	* loop.c (loop_regs_update): Don't use single_set on non-insns.

2002-02-07  Alexandre Oliva  <aoliva@redhat.com>

	* config/mips/mips.md (define_delay) [mips16]: Adjust required
	length.

2002-02-06  Richard Henderson  <rth@redhat.com>

	PR c/5609
	* stmt.c (resolve_operand_name_1): Take more care with mixed
	named and unnamed operands.

2002-02-06  Janis Johnson  <janis187@us.ibm.com>
	    Jan Hubicka  <jh@suse.cz>

	* loop.c (remove_constant_addition): Avoid clobbering a shared
	CONST expression.

2002-02-06  Ulrich Weigand  <uweigand@de.ibm.com>

	* config.gcc (s390x-*-linux*): Add t-linux64 makefile fragment.
	* config/s390/t-linux64: New file.
	* config/s390/libgcc-glibc.ver: New file.

2002-02-06  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/linux64.h: Delete file.
	* config/s390/s390x.h: New file.
	* config.gcc (s390x-*-linux*): Use s390x.h instead of linux64.h
	as target header file.
	* config/s390/linux.h (TARGET_VERSION): Define depending on
	DEFAULT_TARGET_64BIT.
	(CPP_SPEC, ASM_SPEC, LINK_SPEC): Likewise.
	(SIZE_TYPE, PTRDIFF_TYPE): Likewise.
	(NO_BUILTIN_SIZE_TYPE, NO_BUILTIN_PTRDIFF_TYPE): Define.
	(CPP_ARCH31_SPEC, CPP_ARCH64_SPEC): New defines.
	(LINK_ARCH31_SPEC, LINK_ARCH64_SPEC): New defines.
	(EXTRA_SPEC): New define.
	* config/s390/s390.h (TARGET_VERSION): Define depending on
	DEFAULT_TARGET_64BIT.
	(MASK_RETURN_ADDR): Add run-time check for TARGET_64BIT.

2002-02-06  Jason Merrill  <jason@redhat.com>

	* c-decl.c (finish_function): Warn about a non-void function with
	no return statement and no abnormal exit.
	(current_function_returns_abnormally): New variable.
	(start_function): Clear it.
	(struct c_language_function): Add returns_abnormally.
	(push_c_function_context): Save it.
	(pop_c_function_context): Restore it.
	(builtin_function): Set TREE_THIS_VOLATILE on return fns.
	(grokdeclarator): Set C_FUNCTION_IMPLICIT_INT on functions without
	an explicit return type.
	* c-tree.h: Declare current_function_returns_abnormally.
	(C_FUNCTION_IMPLICIT_INT): New macro.
	* c-typeck.c (build_function_call): Set it.
	(c_expand_return): Set current_function_returns_value even if the
	value is erroneous.

2002-02-06  Jakub Jelinek  <jakub@redhat.com>

	PR c/5420:
	* c-common.c (c_unsafe_for_reeval): Make COMPOUND_LITERAL_EXPR
	unsafe for reevaluation.

2002-02-06  Jakub Jelinek  <jakub@redhat.com>

	PR c/5482:
	* c-common.c (c_expand_expr) [STMT_EXPR]: If last expression is not
	EXPR_STMT, but COMPOUND_STMT, recurse into it.

2002-02-06  Richard Henderson  <rth@redhat.com>

	* cfganal.c (keep_with_call_p): Source for fixed_reg dest must
	be a general_operand.  Dest for function value must be a pseudo.

2002-02-06  Nick Clifton  <nickc@cambridge.redhat.com>

	* dbxout.c (dbxout_symbol_location): Accept LABEL_REFs as well
	as SYMBOL_REFs from the constant pool.

2002-02-06  Alexandre Oliva  <aoliva@redhat.com>

	* dbxout.c (dbxout_parms): Apply DEBUGGER_ARG_OFFSET to parameters
	passed by invisible reference.

2002-02-05  Richard Henderson  <rth@redhat.com>

	* config/sparc/sparc.h (ARG_POINTER_CFA_OFFSET): No stack bias.

2002-02-06  Hans-Peter Nilsson  <hp@bitrange.com>

	Implement using "base addresses" in insn operands as default.
	* config/mmix/mmix.c (mmix_conditional_register_usage): if
	-mabi=gnu, modify fixed_regs to fit the GNU ABI.
	(mmix_extra_constraint): Use 'R' to indicate that GETA should be
	used to read the rtx value.
	(mmix_target_asm_function_epilogue): Fix spacing.
	(mmix_constant_address_p): Handle TARGET_BASE_ADDRESSES.
	(mmix_legitimate_address): Ditto.
	(mmix_encode_section_info): Set SYMBOL_REF_FLAG on rtx:es that
	should be loaded with a GETA insn.  Don't allocate needless extra
	char for nul termination and fix misleading comment.
	(mmix_print_operand_address): Handle constants if
	TARGET_BASE_ADDRESSES.
	(mmix_output_register_setting): Use base addressing if
	TARGET_BASE_ADDRESSES and the number of insns is 3.
	* config/mmix/t-mmix (MULTILIB_EXTRA_OPTS): New.
	* config/mmix/mmix.md ("movdi"): Change the alternative with GETA
	to use R as constraint, add LDA to match s.
	* config/mmix/mmix.h (TARGET_BASE_ADDRESSES): New.
	(TARGET_DEFAULT): Add TARGET_MASK_BASE_ADDRESSES.
	(TARGET_SWITCHES): Add -mbase-addresses, -mno-base-addresses.
	(FIXED_REGISTERS): Make registers $231..$246 fixed by default.
	(MMIX_MMIXWARE_ABI_REG_ALLOC_ORDER): Move $231..$246 last, in
	order with other fixed registers.
	(MMIX_GNU_ABI_REG_ALLOC_ORDER): Put forward $231, in order with
	other parameter/call-clobbered registers.
	* doc/invoke.texi (Option Summary) <MMIX Options>: Add
	-mbase-addresses, -mno-base-addresses.
	(MMIX Options): Ditto.

2002-02-05  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* pa.h (PREDICATE_CODES): Add reg_before_reload_operand.

2002-02-06  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/altivec.h: Change elem to _S_elem.

2002-02-05  Jason Thorpe  <thorpej@wasabisystems.com>

	* config/netbsd.h (WCHAR_TYPE): Define.
	(WCHAR_TYPE_SIZE): Ditto.
	(WINT_TYPE): Ditto.
	* config/alpha/netbsd.h (WCHAR_TYPE): Remove.
	(WCHAR_UNSIGNED): Ditto.
	(WCHAR_TYPE_SIZE): Ditto.
	(WINT_TYPE): Ditto.
	* config/arm/netbsd.h: Likewise.
	* config/i386/netbsd-elf.h: Likewise.
	* config/i386/netbsd.h: Likewise.
	* config/m68k/netbsd-elf.h: Likewise.
	* config/m68k/netbsd.h: Likewise.
	* config/ns32k/netbsd.h: Likewise.
	* config/sparc/netbsd.h: Likewise.
	* config/vax/netbsd.: Likewise.

2002-02-05  Alexandre Oliva  <aoliva@redhat.com>

	* target.h (struct gcc_target): Added ms_bitfield_layout_p.
	* target-def.h (TARGET_MS_BITFIELD_LAYOUT_P): New.  Added to...
	(TARGET_INITIALIZER): this.
	* doc/tm.texi (TARGET_MS_BITFIELD_LAYOUT_P): Document.
	(BITFIELD_NBYTES_LIMITED): Markup fix.
	* tree.h (default_ms_bitfield_layout_p): Declare.
	(record_layout_info): Added prev_field.
	* tree.c (default_ms_bitfield_layout_p): New fn.
	* c-decl.c (finish_struct): Disregard EMPTY_FIELD_BOUNDARY and
	PCC_BITFIELD_TYPE_MATTERS for MS bit-field layout.
	* stor-layout.c: Include target.h.
	(start_record_layout): Initialize prev_field.
	(place_field): Handle MS bit-field layout, and disregard
	EMPTY_FIELD_BOUNDARY, BITFIELD_NBYTES_LIMITED and
	PCC_BITFIELD_TYPE_MATTERS in this case.  Update prev_field.
	* Makefile.in (stor-layout.o): Adjust dependencies.

2002-02-05  Jason Merrill  <jason@redhat.com>

	* collect2.c (dump_file): Pass DMGL_VERBOSE to cplus_demangle.

2002-02-05  Andreas Jaeger  <aj@suse.de>

	* crtstuff.c: Fix comments.

2002-02-05  Richard Henderson  <rth@redhat.com>

	PR fortran/3393
	* loop.c (loop_iv_add_mult_emit_before): Copy multiplier as well.
	(loop_iv_add_mult_sink, loop_iv_add_mult_hoist): Likewise.

	PR fortran/3392
	* config/mips/mips.c (function_arg): Handle TImode.
	(function_arg_advance): Likewise.

2002-02-05  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/altivec.h (vec_step_help): Rename to
	__vec_step_help.

2002-02-05  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/altivec.h: Fix typos.

2002-02-05  Jason Thorpe  <thorpej@wasabisystems.com>

	* config/arm/netbsd.h: Correct a comment.

2002-02-05  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/rs6000.c (altivec_init_builtins): Fix typo
	building void typed builtins.

	* config/rs6000/altivec.h (vec_ld*): Fix typos.
	(vec_step): Implement for C++.

Mon Feb	 4 19:23:19 2002  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* final.c (final_scan_insn): Add case for NOTE_INSN_LOOP_END_TOP_COND.

2002-02-04  Richard Henderson  <rth@redhat.com>

	* combine.c (nonzero_bits): Re-introduce special case for
	sp/fp/ap wrt REGNO_POINTER_ALIGN.

2002-02-05  Aldy Hernandez  <aldyh@redhat.com>

	* doc/extend.texi: Warn about unsupported usage of altivec
	builtins.

	* config/rs6000/rs6000.md (altivec_vcmp*_p): Remove.
	(altivec_predicate_*): New.

	* config/rs6000/altivec.h: Rewrite predicates to use new builtins.
	Add C++ version of vec_*() functions.

	* config/rs6000/rs6000.c (bdesc_altivec_preds): New.
	(bdesc_2arg): Remove altivec predicates.
	(altivec_expand_builtin): Handle predicates.
	(altivec_init_builtins): Handle predicates.
	(altivec_expand_predicate_builtin): New.

2002-02-04  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* pa.c (DO_FRAME_NOTES): Move forward.
	(store_reg): Revise handling of frame notes.
	(load_reg): Likewise.
	(set_reg_plus_d): Likewise.
	(hppa_expand_prologue): Likewise.
	(hppa_expand_epilogue): Likewise.

2002-02-04  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* unwind-dw2-fde-glibc.c: Define _GNU_SOURCE if not defined.

2002-02-04  Jakub Jelinek  <jakub@redhat.com>

	PR c/4475, c++/3780:
	* c-common.def (SWITCH_STMT): Add SWITCH_TYPE operand.
	* c-common.h (SWITCH_TYPE): Define.
	* c-typeck.c (c_start_case): Set SWITCH_TYPE.
	* stmt.c (all_cases_count): Set lastval to thisval at end of loop.
	Rename spareness variable to sparseness.
	(expand_end_case_type): Renamed from expand_end_case, use orig_type
	if non-NULL instead of TREE_TYPE (orig_index).
	* tree.h (expand_end_case_type): Renamed from expand_end_case.
	(expand_end_case): Define using expand_end_case_type.
	* c-semantics.c (genrtl_switch_stmt): Pass SWITCH_TYPE
	to expand_end_case_type.
	* doc/c-tree.texi (SWITCH_STMT): Document SWITCH_TYPE.

2002-02-04  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* pa.h (PREFERRED_STACK_BOUNDARY): Define to match standard rounding.
	(BIGGEST_ALIGNMENT): Change to 128.

2002-02-04  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* pa32-linux.h (LINK_COMMAND_SPEC): Define.

2002-02-04  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* pa.md (call_internal_reg_64bit): Remove unused variable.

2002-02-04  Nick Clifton  <nickc@cambridge.redhat.com>

	* config/arm/arm.h (machine_function): Add uses_anonymous_args
	field.
	(SETUP_INCOMING_VARARGS): Set uses_anonymous_args.
	* config/arm/arm.c (current_function_anonymous_args): Delete,
	replace uses with cfun->machine->uses_anonymous_args.
	(arm_reorg): Do not reset uses_anonymous_args.

	* config/arm/arm.c (arm_hard_regno_mode_ok): Allow any value in
	any geenral register.

2001-02-04  Bernd Schmidt  <bernds@redhat.com>s

	* cfgrtl.c (force_nonfallthru_and_redirect): Don't try to redirect
	the entry block.

2002-02-04  Richard Henderson  <rth@redhat.com>

	* combine.c (force_to_mode): Remove STACK_BIAS code.
	(nonzero_bits): Likewise.  Replace sp/fp special case with
	REGNO_POINTER_ALIGN.

	* config/sparc/sparc.h (FRAME_POINTER_REGNUM): Change to SFP.
	(HARD_FRAME_POINTER_REGNUM): New.
	(FIRST_PSEUDO_REGISTER, REG_CLASS_CONTENTS): Update.
	(FIXED_REGS, CALL_USED_REGS): Update.
	(REG_ALLOC_ORDER, REGISTER_NAMES): Update.
	(CONDITIONAL_REGISTER_USAGE): Update for HFP.
	(HARD_REGNO_NREGS): Update for SFP.
	(STACK_POINTER_OFFSET): Include bias here ...
	(FIRST_PARM_OFFSET): ... not here.
	(STACK_BIAS): Remove.
	(INIT_EXPANDERS): New.
	(STARTING_FRAME_OFFSET): Do not include bias.
	(ELIMINABLE_REGS, CAN_ELIMINATE, INITIAL_ELIMINATION_OFFSET): New.
	(REGNO_OK_FOR_INDEX_P, REGNO_OK_FOR_BASE_P): Update for SFP.
	(REG_OK_FOR_INDEX_P, REG_OK_FOR_BASE_P): Likewise.
	* config/sparc/aout.h (DBX_REGISTER_NUMBER): Update for HFP.
	* config/sparc/litecoff.h, config/sparc/sol2.h: Likewise.
	* config/sparc/sparc.c (mem_min_alignment): Update for HFP.
	(sparc_nonflat_function_prologue, epilogue_renumber): Likewise.
	(MUST_SAVE_REGISTER): Likewise.
	(sparc_flat_function_prologue): Likewise.
	(sparc_flat_function_epilogue): Likewise.
	(HARD_FRAME_POINTER_MASK): Rename from FRAME_POINTER_MASK.
	(sparc_init_modes): SFP is GENERAL_REGS.
	(sparc_builtin_saveregs): SFP does not have bias applied.

2002-02-04  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.c (current_function_is_thunk): Don't check
	current_function_is_thunk.
	(alpha_sa_mask): Distinguish between current_function_is_thunk
	called from ASM_OUTPUT_MI_THUNK and not.
	(alpha_does_function_need_gp): Thunks always need gp.
	(alpha_start_function, alpha_output_function_end_prologue): Likewise.
	(alpha_output_mi_thunk_osf): New.
	* config/alpha/alpha-protos.h: Update.
	* config/alpha/alpha.h (ASM_OUTPUT_MI_THUNK): New.

2002-02-04  Richard Sandiford  <rsandifo@redhat.com>

	* c-typeck.c (build_c_cast): Warn when qualifiers are added to
	function types, not when they're taken away.

Mon Feb  4 09:05:58 2002  Jeffrey A Law  (law@redhat.com)

	* cfgrtl.c (try_redirect_by_replacing_jump): Remove associated
	CODE_LABEL and jump table when replacing a table jump with a
	simple jump.

2002-02-04  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390-protos.h (legitimize_la_operand,
	s390_secondary_input_reload_class, s390_plus_operand,
	s390_expand_plus_operand): Add prototypes.

	config/s390/s390.c (s390_secondary_input_reload_class,
	s390_plus_operand, s390_expand_plus_operand): New functions.

	(struct s390_address): New member 'pointer'.
	(s390_decompose_address): Compute it.
	(legitimate_la_operand_p): Use it.
	(legitimize_la_operand): New function.
	(movti, movdi, movdf splitters): Call it.

	config/s390/s390.h (SECONDARY_INPUT_RELOAD_CLASS): Define.
	(PREDICATE_CODES): Add s390_plus_operand.

	config/s390/s390.md (adddi3_inv_64, addaddr_ccclobber): Delete.
	(la_ccclobber): Allow GENERAL_REGS as output operand.

	(reload_load_address, *reload_load_address_reg_0, *la, *do_la_reg_0,
	*reload_la_64, *reload_la_31 and splitters): Delete, replace by ...
	(*la_64, *la_31, reload_indi, reload_insi): ... these.

2002-02-04  Ulrich Weigand  <uweigand@de.ibm.com>

	* gcc/config/s390/s390.h (CRT_CALL_STATIC_FUNCTION): Fixed
	register names for regular asm () construct.

2002-02-04  Jakub Jelinek  <jakub@redhat.com>

	* config/i386/i386.md (movsf_1): Allow moving SF values in MMX
	registers.

2002-02-04  Jakub Jelinek  <jakub@redhat.com>

	* combine.c (recog_for_combine): Create a dummy insn with PATTERN
	pat for recog.

2002-02-04  Hartmut Penner  <hpenner@de.ibm.com>

	* varasm.c (decode_rtx_const): Allow unspec (symbol_ref) in
	constant pool to be identical by string address and index.

2002-02-04  Anthony Green  <green@redhat.com>

	* output.h (SECTION_OVERRIDE): Define.
	* varasm.c (named_section): Obey SECTION_OVERRIDE.

2002-02-03  Jason Thorpe  <thorpej@wasabisystems.com>

	* config.gcc (arm*-*-netbsdelf*): Placeholder to prevent match
	by existing arm*-*-netbsd* (a.out) target.
	(ns32k-*-netbsdelf*): Likewise.
	(sparc-*-netbsdelf*): Likewise.
	(vax-*-netbsdelf*): Likewise.

2002-02-03  Danny Smith <dannysmith@users.sourceforge.net>

	* gthr-win32.h: Protect against conflicting typedef for BOOL in windows
	headers and libobjc headers.

2002-02-03  Mumit Khan  <khan@nanotech.wisc.edu>

	* gthr-win32.h (__mingwthr_key_dtor): Use extern "C" linkage for C++.
	(_mingw.h): Remove duplicate include.

2002-02-03  Jason Thorpe  <thorpej@wasabisystems.com>

	* config.gcc: Set cpu_type to m68k for 68010, as well.
	(m68010-*-netbsdelf*): New...
	(m68k*-*-netbsdelf*): ...targets.
	* config/m68k/netbsd-elf.h: New file.

2002-02-02  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.c (hand_list): Move inside function_arg.

2002-02-02  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.c (h8_push_ops): Move inside
	h8300_init_once.
	(h8_pop_ops): Likewise.
	(h8_move_ops): Likewise.

2002-02-02  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.c (os_task): Make it static.
	(monitor): Likewise.
	(pragma_saveall): Likewise.

2002-02-02  Alexandre Oliva  <aoliva@redhat.com>

	* config/sh/sh.md (ic_invalidate_line): Make sure the immediate
	constant is a valid sign-extension for Pmode.

2002-02-02  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.c: Fix formatting.

2002-02-02  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.md: Fix formatting.

2002-02-02  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.md (one_cmpl patterns): Tighten the
	predicates of operands[1].  Split the patterns for each
	processor variant.

2002-02-02  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.md (xor patterns): Tighten the predicates
	of operands[1] to register_operand.

2002-02-02  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cpphash.h (struct spec_nodes): Remove n__CHAR_UNSIGNED__.
	* cpphash.c (_cpp_init_hashtable): Similarly.
	* cppinit.c (cpp_create_reader): Default the signed_char flag.
	(init_builtins): Define __CHAR_UNSIGNED__ appropriately.
	(COMMAND_LINE_OPTIONS): Recognize -f{un,}signed-char.
	(cpp_handle_option): Handle the new options.
	* cpplex.c (cpp_interpret_charconst): Use new flag.
	* cpplib.h (struct cpp_options): New member signed_char.
	* gcc.c (cpp_unique_options): Remove %c spec and documentation.
	(cpp_options): Handle -fsigned-char and -funsigned-char.
	(static_specs): Remove signed_char_spec.
	(do_spec1): Don't handle %c.
	* system.h: Poison SIGNED_CHAR_SPEC.
	* tradcif.y (yylex): Use flag_signed_char.
	* tradcpp.h (flag_signed_char): New.
	* tradcpp.c (flag_signed_char): New.
	(main): Handle new command-line options.
	(initialize_builtins): Define __CHAR_UNSIGNED__ if appropriate.
config:
	* alpha/alpha.h (SIGNED_CHAR_SPEC): Remove.
	* avr/avr.h: Remove old comments.
	* i960/i960.h (CPP_SPEC): Pass -fsigned-char if -mic*.
	(CC1_SPEC): Pass -fsigned-char if -mic*.
	(SIGNED_CHAR_SPEC): Remove.
doc:
	* tm.texi (SIGNED_CHAR_SPEC): Remove documentation.

2002-02-01  Eric Christopher  <echristo@redhat.com>

	From Daniel Jacobowitz <dmj+@andrew.cmu.edu>
	* config/mips/mips.h (FUNCTION_PROFILER): Fix function profiling.
	* config/mips/linux.h (ASM_OUTPUT_REG_PUSH): Undefine.
	(ASM_OUTPUT_REG_POP): Ditto.

2002-02-02  Neil Booth  <neil@daikokuya.demon.co.uk>

	* c-decl.c, tree.c, tree.h, objc/objc-act.c: Revert bitfield
	patch.

2002-02-02  Jakub Jelinek  <jakub@redhat.com>

	* config/i386/i386.h (CPP_CPUCOMMON_SPEC): Add missing | separators.

2002-02-02  Jakub Jelinek  <jakub@redhat.com>

	PR c/5304:
	* expmed.c (expand_mult_highpart): Use immed_double_const for wide_op1
	unconditionally.

2002-02-01  Janis Johnson  <janis187@us.ibm.com>

	* cfganal.c: Include tm_p.h.
	(keep_with_call_p): Fix the test that determines if a register holds
	the return value of a call.

2002-02-01  DJ Delorie  <dj@redhat.com>

	* config/sparc/sparc.c (sparc_emit_set_symbolic_const64): If
	we are given conflicting registers, switch to the other one we
	had allocated for us.
	* config/sparc/sparc.md (reload_indi, reload_outdi): Pass op[2]
	as TImode so we know when the "other" register is available.

2002-02-01  David O'Brien  <obrien@FreeBSD.org>

	* config/sparc/sol2-sld-64.h: Include sparc/biarch64.h rather than
	sparc/sparc_bi.h.

2002-02-01  Janis Johnson  <janis187@us.ibm.com>

	* cfganal.c (keep_with_call_p): New function.
	(flow_call_edges_add): Prevent splitting a block between a call and
	a single-set instruction that should be kept in the same block.

2002-02-01  Craig Rodrigues  <rodrigc@gcc.gnu.org>

	* doc/install.texi (avr): Update outdated URL.

2002-01-30  Andrew Haley  <aph@cambridge.redhat.com>

	* config/stormy16/stormy16.md (pushqi): New.
	(popqi): New.
	(pushhi): New.
	(pophi): New.
	(movhi): Remove stack operands.
	(movqi): Likewise.
	* config/stormy16/stormy16.h (PREDICATE_CODES): Add
	nonimmediate_nonstack_operand.
	* config/stormy16/stormy16.c (nonimmediate_nonstack_operand):
	New.
	* config/stormy16/stormy16-protos.h (nonimmediate_nonstack_operand)
	New.

2002-01-31  Jason Merrill  <jason@redhat.com>

	* Makefile.in (c-parse.c): Handle .output file.
	* objc/Make-lang.in (objc-parse.c): Likewise.

2002-02-01  Alexandre Oliva  <aoliva@redhat.com>

	* config/mips/mips.h (ENDIAN_SPEC): Output the endianness flag if
	the -me[lb] option is given.  Don't output the default flag
	twice.

2002-01-31  Zack Weinberg  <zack@codesourcery.com>

	* c-lex.c (yyparse): Call debug_hooks->start_source_file for
	the primary source file; this has not been done yet.
	* c-decl.c (c_expand_body): Reset input_filename from
	DECL_SOURCE_FILE (fndecl) before calling init_function_start.

2002-01-31  Kazu Hirata  <kazu@hxi.com>

	* rtlanal.c (subreg_regno_offset): Do not use
	SUBREG_REGNO_OFFSET.
	* system.h: Add SUBREG_REGNO_OFFSET to the GCC poison list.
	* doc/tm.texi (SUBREG_REGNO_OFFSET): Remove.

2002-01-31  Joseph S. Myers  <jsm28@cam.ac.uk>

	* gccbug.in: Follow GNU Coding Standards for --version.  Use GCC
	version rather than GNATS version in --version output.

2002-01-31  Richard Sandiford  <rsandifo@redhat.com>

	* ifcvt.c (noce_process_if_block): Make a copy of the destination
	when copying back from a temporary.

2002-01-30  Richard Henderson  <rth@redhat.com>

	* ifcvt.c (dead_or_predicable): Handling merging when other_bb
	and new_dest are the same.

2002-01-30  Richard Henderson  <rth@redhat.com>

	PR opt/5076
	* rtl.h (NOTE_INSN_LOOP_END_TOP_COND): New.
	* rtl.c (note_insn_name): Update.
	* emit-rtl.c (remove_unnecessary_notes): Kill it.
	* stmt.c (expand_end_loop): Kill jump opt code.  Use LOOP_END_TOP_COND
	to perform loop rotation.
	(expand_exit_loop_top_cond): New.
	* tree.h (expand_exit_loop_top_cond): Declare it.
	* c-semantics.c (genrtl_while_stmt): Use it.
	(genrtl_for_stmt): Likewise.

2002-01-30  Alexandre Oliva  <aoliva@redhat.com>

	* config/mips/mips.h (PARM_BOUNDARY): Guarantee alignment of
	arguments to 64-bit boundaries on 64-bit ABIs.

2002-01-30  Steve Ellcey  <sje@cup.hp.com>

	* loop.c (loop_invariant_p): Special case pic_offset_table_rtx.

2002-01-31  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-decl.c (grokdeclarator): Handle type being a typedef for an
	invalid type.

2002-01-30  David O'Brien  <obrien@FreeBSD.org>

	* config.gcc: Include sparc/biarch64.h rather than sparc/sparc_bi.h.
	* config/sparc/sparc_bi.h: Remove file.
	* config/sparc/biarch64.h: New file (rename of sparc_bi.h).

2002-01-30  Richard Henderson  <rth@redhat.com>

	* sched-deps.c (sched_analyze): Make a call read the frame pointer.

2002-01-30  Zack Weinberg  <zack@codesourcery.com>

	* expmed.c (emit_store_flag): Call protect_from_queue on op0 and op1.

2002-01-30  Jason Merrill  <jason@redhat.com>

	* dwarf2out.c (dwarf_cfi_name): Add other DWARF 3 codes.
	(output_cfi): Likewise. Disable DW_CFA_GNU_negative_offset_extended.
	(reg_save): Use DW_CFA_offset_extended_sf instead.

	* dwarf2out.c (dwarf2out_finish): Don't abort if there were errors.

2002-01-29  Jakub Jelinek  <jakub@redhat.com>

	* cselib.c (cselib_record_sets): Use IF_THEN_ELSE result
	in cselib_lookup.

2002-01-29  Aldy Hernandez  <aldyh@redhat.com>

	* rs6000.md ("*call_value_local32"): Remove constraints.
	("*call_value_local64"): Same.
	("*call_value_indirect_nonlocal_aix32"): Same.
	("*call_value_nonlocal_aix32"): Same.
	("*call_value_indirect_nonlocal_aix64"): Same.
	("*call_value_nonlocal_aix64"): Same.
	("*call_value_nonlocal_sysv"): Same.

2002-01-29  Richard Henderson  <rth@redhat.com>

	* config/alpha/elf.h (SDB_DEBUGGING_INFO): Undef.

2002-01-29  Richard Henderson  <rth@redhat.com>

	* expr.c (force_operand): Ignore flag_pic for detecting pic
	address loads.
	* regclass.c (init_reg_sets_1): Test fixed_regs not flag_pic
	for determining if PIC_OFFSET_TABLE_REGNUM is call-clobbered.
	* resource.c (mark_target_live_regs): Use regs_invalidated_by_call
	instead of open-coded loop.
	* doc/tm.texi (PIC_OFFSET_TABLE_REGNUM): Clarify that it must
	be fixed when in use.

2002-01-29  Richard Henderson  <rth@redhat.com>

	* sched-int.h (struct deps_reg): Add uses_length, clobbers_length.
	* sched-rgn.c (propagate_deps): Update them.
	* sched-deps.c (sched_analyze_insn): Update them.  Flush the
	clobbers list when either gets too long.

2002-01-29  Jakub Jelinek  <jakub@redhat.com>

	* config/i386/i386.h (LIMIT_RELOAD_CLASS): Handle LEGACY_REGS
	and INDEX_REGS the same as GENERAL_REGS.
	(SECONDARY_OUTPUT_RELOAD_CLASS): Likewise.

2002-01-29  Neil Booth  <neil@daikokuya.demon.co.uk>

	* tree.c (build_nonstandard_integer_type): Correct prototype.

2002-01-29  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.md (movstrsico, movstrdix_64,
	movstrsix_31): Remove, replace by ...
	(movstrdi_short, movstrsi_short, movstrdi_long,
	movstrsi_long): ... these.  New.
	(movstrdi, movstrsi): Adapt.

	(rotldi3, rotlsi3, ashldi3, *ashldi3_31, *ashldi3_64,
	ashlsi3, lshrdi3, *lshrdi3_31, *lshrdi3_64, lshrsi3):
	Remove unnecessary CC clobber.
	(*ashrdi3_cc_31, *ashrdi3_cconly_31, *ashrdi3_cc_64,
	*ashrdi3_cconly_64, *ashrsi3_cc, *ashrsi3_cconly): New.

	(divmoddi4): Don't partially initialize TImode register.

2002-01-29  Geoffrey Keating  <geoffk@redhat.com>

	* doc/sourcebuild.texi (C Tests): Document gcc.dg/debug directory.

2002-01-29  Richard Henderson  <rth@redhat.com>

	* flow.c (print_rtl_and_abort): Remove.
	(print_rtl_and_abort_fcn): Remove.
	(verify_local_live_at_start): Use dump_bb instead.
	(verify_wide_reg): Likewise. Take a basic_block, not rtl endpoints.
	(verify_wide_reg_1): Return 2 on mode test failure.

2002-01-29  Neil Booth  <neil@daikokuya.demon.co.uk>

	PR c/3325, c/3326, c/2511, c/3347
	* c-decl.c (enum_decl_context): Remove BITFIELD.
	(grokdeclarator): Take bitfield width as an input.
	Ensure bitfields are given the correct type.  Perform
	bitfield width validation with build_bitfield_integer_type
	rather than waiting for finish_struct.
	(grok_typename, grok_typename_in_parm_context, start_decl,
	push_parmdecl, grokfield, start_function): Update calls to
	grokdeclarator.
	(build_bitfield_integer_type): New function.
	(finish_struct): Move bitfield validation to grokdeclarator
	and build_bitfield_integer_type.
	* tree.c (build_nonstandard_integer_type): New function.
	* tree.h (build_nonstandard_integer_type): New prototype.
objc:
	* objc-act.c (objc_copy_list): Remove DECL_INITIAL kludge.

2002-01-29  Jakub Jelinek  <jakub@redhat.com>

	PR other/1502:
	* cppinit.c (cpp_handle_option): Add ignore argument, if it is zero,
	don't ignore unrecognized -W* options.
	(cpp_handle_options): Pass 1 as last argument to cpp_handle_option.
	* cpplib.h (cpp_handle_option): Adjust prototype.
	* c-decl.c (c_decode_options): Pass 0 as last argument to
	cpp_handle_option.

	PR c/2896:
	* gcc.c (cpp_unique_options): Split from cpp_options.
	(cpp_options): Source cpp_unique_options.
	(default_compilers): Use cpp_unique_options instead of cpp_options
	when used together with cc1_options.
	(static_specs): Add cpp_unique_options.
	* objc/lang-specs.h: Use cpp_unique_options instead of cpp_options
	when used together with cc1_options.

2002-01-29  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300-protos.h: Update the prototype of
	output_a_shift.
	* config/h8300/h8300.c (output_a_shift): Remove an unused
	argument 'insn'.  Remove redundant code.
	* config/h8300/h8300.md: Adust to the new prototype of
	output_a_shift.

2002-01-29  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300-protos.h: Update the prototypes of
	emit_a_rotate and expand_a_rotate.
	* config/h8300/h8300.c (emit_a_rotate): Change the type of the
	first argument to 'enum rtx_code'.
	(expand_a_rotate): Likewise.

2002-01-28  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300-protos.h: Update the prototype of
	output_simode_bld.
	* config/h8300/h8300.c (output_simode_bld): Remove an argumen
	'log2'.
	* config/h8300/h8300.md: Adjust to the new prototype.

2002-01-28  Kazu Hirata  <kazu@hxi.com>

	* conifg/h8300/h8300.c (h8300_adjust_insn_length): Remove
	redundant code.

2002-01-28  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* emit-rtl.c (gen_rtx_REG): Check that the PIC_OFFSET_TABLE_REGNUM
	is a fixed register before returning pic_offset_table_rtx.
	* loop.c (scan_loop): Don't hoist insns that set pic_offset_table_rtx
	when PIC_OFFSET_TABLE_REG_CALL_CLOBBERED is defined.

2002-01-28  Jason Merrill  <jason@redhat.com>

	* dwarf2.h: Sync with src version.

2002-01-28  Paul Koning  <pkoning@equallogic.com>

	* builtin-types.def (BT_FN_VOID_CONST_PTR_VAR): Replace
	BT_FN_VOID_PTR_VAR.
	* builtins.def (BUILT_IN_PREFETCH): Change first argument to be const.
	* doc/extend.texi (__builtin_prefetch): Update documentation:
	first argument is now const void ptr.

2002-01-28  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300-protos.h: Remove an unused prototype.

2002-01-28  Roman Zippel  <zippel@linux-m68k.org>

	* toplev.c (lang_independent_init): Round up identifier size.

2002-01-28  Richard Earnshaw  <rearnsha@arm.com>

	* config.gcc: Revert previous change.

2002-01-28  Andris Pavenis  <pavenis@latnet.lv>

	* config/i386/djgpp.h: Use STRIP_NAME_ENCODING in macro UNIQUE_SECTION

2002-01-28  Richard Earnshaw  <rearnsha@arm.com>

	* config.gcc (*-*-netbsdelf*): Set up generic parameters.
	(*-*-netbsd*): Always use collect2.  Remove collect2 settings from
	other non-elf netbsd config frags.
	* config/netbsd-aout.h (STARTFILE_SPEC): Don't pull in c++rt0 since
	collect2 will does that.
	* config/netbsd.h (LIBGCC_SPEC): Add white space before -lgcc, so that
	shared-lib frobbing will work.

2002-01-28  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.h: Fix formatting.
	* config/h8300/h8300.md: Likewise.

2002-01-28  Loren J. Rittle  <ljrittle@acm.org>

	* fixinc/inclhack.def (strict_ansi_not): Add a bypass based on
	the old, removed AAA_standards fix.
	* fixinc/fixincl.x: Rebuilt.

2002-01-28  Hans-Peter Nilsson  <hp@axis.com>

	* config/cris/cris.h (CRT_CALL_STATIC_FUNCTION): Change to emit
	atexit call in crtbegin, hooked in after call to frame_dummy;
	register EH before registering __fini__start.

2002-01-28  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/altivec.h: Remove spurious semicolons.

2002-01-27  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.md: Replace dead bit extraction patterns
	with ones that work.

Sun Jan 27 13:23:40 2002  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* emit-rtl.c (get_mem_attrs): Don't default alignment for non-BLKmode
	if not STRICT_ALIGNMENT.
	* rtl.h (MEM_ALIGN): Likewise.

2002-01-27  Craig Rodrigues  <rodrigc@gcc.gnu.org>

	* doc/invoke.texi (-fdump-translation-unit): Revert this
	patch: 2001-10-21  Craig Rodrigues  <rodrigc@gcc.gnu.org>

2002-01-27  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.md (define_constants): New.
	(anonymous patterns) Use defined constants appropriately.

2002-01-27  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.c (function_arg): Remove redundant code.

2002-01-26  Richard Henderson  <rth@redhat.com>

	* sched-deps.c (reg_pending_uses_head): New.
	(reg_pending_barrier): Rename from reg_pending_sets_all.
	(find_insn_list): Don't mark inline.
	(find_insn_mem_list): Remove.
	(add_dependence_list, add_dependence_list_and_free): New.
	(flush_pending_lists): Replace only_write param with separate
	for_read and for_write parameters.  Update all callers.  Use
	add_dependence_list_and_free.
	(sched_analyze_1): Do not add reg dependencies here; just set
	the pending bits.  Use add_dependence_list.
	(sched_analyze_2): Likewise.
	(sched_analyze_insn): Replace schedule_barrier_found with
	reg_pending_barrier.  Add all dependencies for pending reg
	uses, sets, and clobbers.
	(sched_analyze): Don't add reg dependencies for calls, just
	set pending bits.  Use regs_invalidated_by_call.  Treat
	sched_before_next_call as a normal list, not a fake insn.
	(init_deps): No funny init for sched_before_next_call.
	(free_deps): Free pending mems lists.  Don't zero reg_last.
	(init_deps_global): Init reg_pending_uses.
	(finish_deps_global): Free it.
	* sched-int.h (deps): Make in_post_call_group_p boolean.  Update docs.
	(find_insn_mem_list): Remove.
	* sched-rgn.c (concat_INSN_LIST, concat_insn_mem_list): New.
	(propagate_deps): Use them.  Zero temp mem lists.

2002-01-26  Richard Henderson  <rth@redhat.com>

	* Makefile.in (CRTSTUFF_CFLAGS): New.
	(crtbegin.o, crtend.o, crtbeginS.o, crtendS.o, crtbeginT.o): Use it.
	* config.gcc (alpha-linux, alpha-freebsd, alpha-netbsd): Use plain
	crtstuff.c instead of alpha assembly version.
	* crtstuff.c (CRT_CALL_STATIC_FUNCTION): Rewrite to assume the
	entire dummy function sequence.  Use FORCE_CODE_SECTION_ALIGN
	not FORCE_{INIT,FINI}_SECTION_ALIGN.
	(__do_global_dtors_aux): Mark used.
	(frame_dummy, __do_global_ctors_aux): Mark used.
	(fini_dummy, init_dummy): Remove.

	* config/alpha/crtbegin.asm: Remove file.
	* config/alpha/crtend.asm: Remove file.
	* config/alpha/t-crtbe: Remove file.
	* config/alpha/elf.h (CRT_CALL_STATIC_FUNCTION): New.
	(LINK_EH_SPEC): New.

	* config/cris/cris.h (CRT_CALL_STATIC_FUNCTION): Rewrite old
	FORCE_INIT_SECTION_ALIGN hack.  Register __fini_start before
	calling constructors.
	* config/cris/linux.h (CRT_CALL_STATIC_FUNCTION): Undef.

	* config/i386/i386.h (CRT_CALL_STATIC_FUNCTION): New.
	* config/i386/linux.h (CRT_CALL_STATIC_FUNCTION): Replace old
	CRT_END_INIT_DUMMY hack.
	* config/i386/sol2.h (FORCE_CODE_SECTION_ALIGN): Replace
	FORCE_{INIT,FINI}_SECTION_ALIGN.

	* config/mcore/mcore-elf.h (FORCE_CODE_SECTION_ALIGN): Replace
	FORCE_{INIT,FINI}_SECTION_ALIGN.

	* config/s390/s390.h (CRT_CALL_STATIC_FUNCTION): Update for new
	invocation sequence.
	* config/sh/sh.h (CRT_CALL_STATIC_FUNCTION): Likewise.

	* doc/tm.texi (CRT_CALL_STATIC_FUNCTION): Update.
	(FORCE_CODE_SECTION_ALIGN): New.

2002-01-26  Richard Henderson  <rth@redhat.com>

	* config/cris/cris.c (cris_print_operand): Handle 64-bit CONST_INT.

2002-01-26  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.c (alpha_sa_mask): Mark RA for unicos here too.
	(alpha_sa_size): Use alpha_sa_mask to compute size of saved regs.

2002-01-26  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.md: Remove bit extraction patterns that
	cannot be triggered.
	Restrict each bit extraction pattern to a variant on which the
	pattern is tested.

2002-01-26  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/include/texinfo.tex: Update to version 2002-01-04.07.

2002-01-26  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.md: Remove bit test patterns that cannot
	be triggered.
	Restrict each bit test pattern to a variant on which the
	pattern is tested.

2002-01-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtins.c (expand_builtin_strncat): Remove redundant check for
	INTEGER_CST.

2002-01-25  David O'Brien  <obrien@FreeBSD.org>

	* config/i386/x86-64.h (DEFAULT_PCC_STRUCT_RETURN): Do not overide
	default setting.
	* config/i386/freebsd64.h (DEFAULT_PCC_STRUCT_RETURN): Do not override
	existing setting.

2002-01-25  Geoffrey Keating  <geoffk@redhat.com>

	* dbxout.c (dbxout_init): Use assemble_name rather than just
	stripping off the first character.
	(dbxout_source_file): Likewise.

2002-01-25  DJ Delorie  <dj@redhat.com>

	* config/sparc/sparc.c (sparc_emit_set_symbolic_const64): Compare
	using rtx_equal_p, not by comparing pointers.

2002-01-25  Steve Ellcey  <sje@cup.hp.com>

	* emit-rtl.c (gen_rtx_REG): Always return the same rtx
	for PIC_OFFSET_TABLE_REGNUM.
	(init_emit_once): Use gen_raw_REG to initialize pic_offset_table_rtx.

2002-01-25  David O'Brien  <obrien@FreeBSD.org>

	* config.gcc (x86_64-*-freebsd*): New target.
	(x86_64-*-netbsd*,x86_64-*-linux*): Use ${tm_file} rather than its
	value.
	(i[34567]86-*-freebsd*): Don't include svr4.h.
	* config/i386/freebsd64.h: New file.

2002-01-25  Douglas B Rupp  <rupp@gnat.com>

	* config/alpha/x-vms (version): Make static.

	* config/alpha/vms.h (MD_FALLBACK_FRAME_STATE_FOR): Fix error
	in previous checkin.

	* Makefile.in (install-headers-cp): New target.
	* config.gcc (alpha-dec-*vms*): Install headers with
	install-headers-cp

Fri Jan 25 22:42:49 CET 2002  Jan Hubicka  <jh@suse.cz>

	* unroll.c (unroll_loop): Lower final_value to nonmemory operand;
	avoid it's copies.

Fri Jan 25 08:26:19 2002  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* builtins.c (expand_builtin_strncpy): Use integer_zerop instead
	of compare_tree_int.
	(expand_builtin_strncat): Likewise.
	* c-decl.c (finish_struct): Use tree_low_cst.
	* tree.h (compare_tree_int): Arg is unsigned HOST_WIDE_INT.
	* tree.c (compare_tree_int): Likewise.

2002-01-25  Ulrich Weigand  <uweigand@de.ibm.com>

	* reload1.c (eliminate_regs_in_insn): Recognize frame pointer
	adjustments even if they are implemented by more than two insns.

Fri Jan 25 20:43:56 CET 2002  Jan Hubicka  <jh@suse.cz>

	* df.c (df_ref_create, df_ref_record_1, df_ref_record): Kill BB arg.
	* df.h (struct ref): Kill B.
	(DF_REF_BB, DF_REF_BBNO): Use BLOCK_FOR_INSN.

	* basic-block.h (PROP_EQUAL_NOTES): New flag.
	* flow.c (propagate_one_insn): Use it.
	(mark_used_regs): Handle NIL.

2002-01-25  Geoffrey Keating  <geoffk@redhat.com>

	* config/stormy16/stormy16.md (tablejump_pcrel): Use a MEM
	to help folding.

2002-01-25  David Edelsohn  <edelsohn@gnu.org>

	* rs6000.md (prefetch): Make address V4SI mode so that the address
	is restricted to legitimate form for instruction.

2002-01-25  Bob Wilson  <bob.wilson@acm.org>

	* doc/install.texi (xtensa-*-elf): New target.
	(xtensa-*-linux*): New target.
	* doc/contrib.texi: Add myself.

2002-01-25  Nick Clifton  <nickc@cambridge.redhat.com>

	* config/arm/arm.c (arm_hard_regno_mode_ok): Allow any general
	purpose register to hold an SImode (or smaller) value.

2002-01-25  Jakub Jelinek  <jakub@redhat.com>

	* unwind-dw2-fde-glibc.c: If inhibit_libc, use __register_frame*
	registry only.
	* crtstuff.c: Likewise.

2002-01-25  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.md (negation patterns): Tighten
	predicates to register_operand.

2002-01-24  Aldy Hernandez  <aldyh@redhat.com>

	* loop.c (emit_prefetch_instructions): Use the prefetch insn's
	mode, not Pmode.

	* builtins.c (expand_builtin_prefetch): Same.

2002-01-24  Alexandre Oliva  <aoliva@redhat.com>

	* config/sh/sh.md (sym_label2reg): Make sure all CONSTs have
	modes.

2002-01-24  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.c (print_operand): Remove support for
	operand character 'A'.
	* config/h8300/h8300.md (three anonymous patterns): Replace
	operand character 'A' with either 'T' or 'S'.

2002-01-24  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.c (print_operand): Remove support for
	operand character 'U'.

2002-01-24  Andris Pavenis  <pavenis@latnet.lv>

	* config/i386/t-djgpp: Use NATIVE_SYSTEM_HEADER_DIR.

2002-01-24  Nick Clifton  <nickc@cambridge.redhat.com>

	* config/arm/arm.c (arm_hard_regno_mode_ok): Allow SImode
	values to be assigned to the stack pointer.

2002-01-14  Hartmut Penner  <hpenner@de.ibm.com>

	* emit_rtl.c (gen_lowpart_common): Conversion from const_int
	to const_double needs to be done right for big-endian systems.

2002-01-24  Jason Merrill  <jason@redhat.com>

	PR c++/2432
	* config/sparc/sparc.md (call-jump peepholes): Pass the right insn
	to can_throw_internal.

2002-01-23  Richard Henderson  <rth@redhat.com>

	* fold-const.c (fold): Change UINT_MAX test to check vs precision
	rather than TYPE_MAX_VALUE.  Fix indentation and a bogus negation.

2002-01-24  Alexandre Oliva  <aoliva@redhat.com>

	* config/sh/sh.md (symGOT_load, sym2GOT, sym2GOTOFF): New expands.
	(symGOT2reg): Use them, then set as GOT value as unchanging.
	(symGOTOFF2reg): Set REG_EQUAL note.  Use a different pseudo
	as a temporary, if possible.
	(symPLT_label2reg): Enclose (pc) in UNSPEC_PIC.  Emit
	sym@PLT-(.LPCS#+2-.) instead of sym@PLT+.-(.LPCS#+2).

2002-01-23  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.md: Fix xorqi and xorqi so that they will
	accept to accept 0x80 as operands[2].

2002-01-24  Alexandre Oliva  <aoliva@redhat.com>

	* config/sparc/sparc.md (fix_trunctfdi2): Correct typo in mode.

2002-01-23  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.md (call_value_osf_1_er peepholes): Fix typo.

2002-01-23  Aldy Hernandez  <aldyh@redhat.com>

	* c-parse.in (parmlist_or_identifiers): Add maybe_attribute.
	(parmlist_or_identifiers_1): Verify that only a parmlist follows
	an attribute.

2002-01-23  Richard Henderson  <rth@redhat.com>

	* expr.c (move_by_pieces_1): Extend size before negation.

	* config/m68k/t-m68kbare (MULTILIB_OPTIONS): Add 68040 and 68060.
	(MULTILIB_MATCHES): Remove 68040 and 68060 aliases.
	(MULTILIB_EXCEPTIONS): Ignore 68881 and soft-float for 68040 and 68060.
	* config/m68k/t-m68kelf: Likewise.

2002-01-23  Bob Wilson  <bob.wilson@acm.org>

	* config/xtensa/elf.h: New file.
	* config/xtensa/lib1funcs.asm: New file.
	* config/xtensa/lib2funcs.S: New file.
	* config/xtensa/linux.h: New file.
	* config/xtensa/t-xtensa: New file.
	* config/xtensa/xtensa-config.h: New file.
	* config/xtensa/xtensa-protos.h: New file.
	* config/xtensa/xtensa.c: New file.
	* config/xtensa/xtensa.h: New file.
	* config/xtensa/xtensa.md: New file.
	* config.gcc (xtensa-*-elf*): New target.
	(xtensa-*-linux*): New target.
	* cse.c (canon_hash): Compare rtx pointers instead of register
	numbers.  This is required for the Xtensa port.
	* integrate.c (copy_insn_list): Handle case where the static
	chain is in memory and the memory address has to be copied to
	a register.
	* doc/invoke.texi (Option Summary): Add Xtensa options.
	(Xtensa Options): New node.
	* doc/md.texi (Machine Constraints): Add Xtensa machine constraints.

2002-01-23  Zack Weinberg  <zack@codesourcery.com>

	* diagnostic.c (internal_error): Do ICE suppression only
	when ENABLE_CHECKING is not defined.

	* c-typeck.c (require_complete_type): Return error_mark_node
	if type is error_mark_node.

2002-01-23  Janis Johnson  <janis187@us.ibm.com>

	* toplev.c (process_options): Disable -fprefetch-loop-arrays with
	-Os and issue a warning.

2002-01-23  Zack Weinberg  <zack@codesourcery.com>

	* doc/fragments.texi, doc/hostconfig.texi: Update to reflect
	current (lack of) need for host configuration by hand.

	* doc/gccint.texi, doc/rtl.texi, doc/tm.texi: Adjust cross
	references.  Documentation of some target macros moved from
	hostconfig.texi to tm.texi.

2002-01-23  Will Cohen  <wcohen@redhat.com>

	* config/arm/arm.h (THUMB_FUNCTION_PROFILER): Define if not currently
	defined.

2002-01-23  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.md (*andorhi3): Accept 0x8000 as an
	operand[3].

2002-01-23  Jason Merrill  <jason@redhat.com>

	* tree.c (build1): Don't set TREE_READONLY on INDIRECT_REF.

	* function.c (assign_parms): Don't put args of inline functions
	into registers when not optimizing.

2002-01-23  Nick Clifton  <nickc@cambridge.redhat.com>

	* config/arm/arm.md (UNSPEC_PROLOGUE_USE): New unspec constant.
	(prologue_use): New pattern.
	* config/arm/arm.c (expand_prologue): Use gen_prologue_use in
	preference to gen_rtx_USE.
	(thumb_expand_prologue): Use gen_prologue_use in preference to
	gen_rtx_USE.
	(thumb_expand_epilogue): Use gen_prologue_use in preference to
	gen_rtx_USE.

2002-01-23  Hans-Peter Nilsson  <hp@bitrange.com>

	* loop.c [!HAVE_prefetch] (CODE_FOR_prefetch): Define to 0.

2002-01-23  Neil Booth  <neil@daikokuya.demon.co.uk>

	PR c/3504
	* doc/extend.texi: Correct documentation of __alignof__.

2002-01-22  Zack Weinberg  <zack@codesourcery.com>

	* params.h: Rename arguments of DEFPARAM so that it will be
	recognized as a translation keyword.

2002-01-22  Aldy Hernandez  <aldyh@redhat.com>

	* extend.texi: Document altivec functions.
	Fix N-bit adjectives in X86 builtin documentation.

2002-01-22  Alexandre Oliva  <aoliva@redhat.com>

	* reload.c (reg_overlap_mentioned_for_reload_p): Handle PLUS and
	auto_inc_dec values.

2002-01-22  Richard Earnshaw  <rearnsha@arm.com>

	* config/netbsd-aout.h (SWITCH_TAKES_ARG): Remove bogus white space
	after backslash.
	(ASM_DECLARE_OBJECT_NAME): Add missing backslash before final line.

2002-01-22  Alexandre Oliva  <aoliva@redhat.com>

	* config/i386/freebsd-aout.h (ASM_QUAD): Undefine.

2002-01-22  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.c (split_small_symbolic_mem_operand): Use
	copy_insn not copy_rtx.

2002-01-23  Alan Modra  <amodra@bigpond.net.au>

	* combine.c (simplify_and_const_int): Don't trunc_int_for_mode
	"nonzero" as that might add "1" bits.  Ensure "constop" is
	properly sign extened.
	(force_to_mode): Tweak for sign extended constop.

2002-01-22  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.c (some_small_symbolic_mem_operand) Use
	for_each_rtx instead of assuming we're already looking at the MEM.
	(split_small_symbolic_mem_operand): Likewise.
	* config/alpha/alpha.h (PREDICATE_CODES): Update.
	* config/alpha/alpha.md (small symbolic memory splitters): Update.

2002-01-22  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.md (divmodsi_internal_er): Generate lituse
	sequence number for the literal.
	(divmoddi_internal_er): Likewise.

2002-01-22  Craig Rodrigues  <rodrigc@gcc.gnu.org>

	PR java/4972
	* aclocal.m4 (AM_ICONV): Put linking flags for libiconv
	in LIBICONV variable.
	* configure: Regenerated.

2002-01-22  Krister Walfridsson  <cato@df.lth.se>

	* dependence.c (build_def_use): Remove array_idx.

	* dwarfout.c (last_filename): Remove.
	(output_compile_unit_die): Remove last_filename.

2002-01-22  Roger Sayle  <roger@eyesopen.com>
	    Richard Henderson  <rth@redhat.com>

	PR opt/3640
	* fold-const.c (fold): Optimize unsigned comparisons against
	UINT_MAX (and similar unsigned constants).

2002-01-22  Janis Johnson  <janis187@us.ibm.com>

	* Makefile.in (loop.o): Depend on OPTABS_H.
	* loop.c (emit_prefetch_instructions): Check the prefetch operand
	against the predicate.

	PR target/5379
	* config/i386/i386.md (prefetch_sse): Specify "p" as a constraint
	for the address operand.

2002-01-22  Richard Henderson  <rth@redhat.com>

	* config/alpha/freebsd.h (FUNCTION_PROFILER): Remove.

2002-01-22  Craig Rodrigues  <rodrigc@gcc.gnu.org>

	PR other/5450
	* config/i386/sysv4.h (CPP_SPEC): Define, and add CPU
	preprocessor flags.

2002-01-22  Jason Thorpe  <thorpej@wasabisystems.com>

	* config.gcc (x86_64-*-netbsd*): New target.
	* config/i386/netbsd64.h: New file.

2002-01-22  Aldy Hernandez  <aldyh@redhat.com>

	* regrename.c (kill_value): Fix typo.

2002-01-22  Aldy Hernandez  <aldyh@redhat.com>

	* doc/tm.texi: Remove STARTING_FRAME_PHASE.

	* config/rs6000/rs6000.h: Same.

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

2002-01-22  Nick Clifton  <nickc@redhat.com>

	* config/arm/arm.h (CONDITIONAL_REGISTER_USAGE): Move 'regno'
	variable declaration to outer scope in order to simplify
	future extensions.
	(HARD_REGNO_MODE_OK): Replace macro body with a with a call to
	arm_hard_regno_mode_ok.
	* config/arm/arm-protos.h: Add a prototype for
	arm_hard_regno_mode_ok.
	* config/arm/arm.c (soft_df_operand): Remove now redundant
	check for DImode values using IP_REGNUM.
	(nonimmediate_soft_df_operand): Remove now redundant check for
	DImode values using IP_REGNUM.
	(arm_hard_regno_mode_ok): New function. New check: make sure
	that DImode values are not stored in IP_REGNUM.

	* config/arm/arm.c (arm_expand_prologue): Replace REG_MAYBE_DEAD
	note with a USE.
	(thumb_expand_prologue): Replace REG_MAYBE_DEAD	note with a USE.

2002-01-22  Jason Merrill  <jason@redhat.com>

	* c-semantics.c (genrtl_compound_stmt): Only check nesting
	consistency if this COMPOUND_STMT is scoped.

2002-01-22  Kazu Hirata  <kazu@hxi.com>

	* predict.c: Fix formatting.
	* print-tree.c: Likewise.
	* protoize.c: Likewise.
	* real.h: Likewise.
	* rtl.h: Likewise.
	* sbitmap.h: Likewise.
	* scan.c: Likewise.
	* sched-deps.c: Likewise.
	* sched-vis.c: Likewise.
	* sdbout.c: Likewise.
	* sibcall.c: Likewise.
	* ssa.c: Likewise.
	* ssa-ccp.c: Likewise.
	* ssa-dce.c: Likewise.
	* stmt.c: Likewise.
	* stor-layout.c: Likewise.
	* system.h: Likewise.

Tue Jan 22 06:26:33 2002  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* tree.c (int_fits_type_p): If bounds of a subtype are variable, see
	if fits in bounds of base type.

	* dwarf2out.c (equate_decl_number_to_die): Add "int" to decls.
	(loc_descriptor_from_tree, case CALL_EXPR, case ADDR_EXPR): New.
	(add_bound_info, default): If can't find a context, make a
	SAVE_EXPR.
	(dwarf2out_finish): Check for SAVE_EXPR in node->created_for.

2002-01-22  Hans-Peter Nilsson  <hp@axis.com>

	* c-typeck.c (parser_build_binary_op): If result from
	build_binary_op is ERROR_MARK just return error_mark_node without
	further processing.

2002-01-21  Jason Thorpe  <thorpej@wasabisystems.com>

	* config/netbsd.h (TARGET_HAS_F_SETLKW): define.
	Split a.out-specific bits into...
	* config/netbsd-aout.h: ...this.
	* config/netbsd-elf.h: New file.
	* config/alpha/netbsd-elf.h: Remove.
	* config/alpha/netbsd.h: Rewrite for a NetBSD/alpha ELF target.
	* config/i386/netbsd-elf.h (LIB_SPEC): Remove.
	(STARTFILE_SPEC): Remove redundant definition.
	(ENDFILE_SPEC): Likewise.
	(LINK_SPEC): Likewise.
	(CPP_SPEC): Likewise.
	(ASM_SPEC): Likewise.
	(LIB_SPEC): Likewise.
	(SWITCH_TAKES_ARG): Likewise.
	(TARGET_MEM_FUNCTIONS): Likewise.
	(CPP_PREDEFINES): Redefine.
	(ASM_FINAL_SPEC): Remove redefinition.
	(ASM_COMMENT_START): Redefine.
	(FUNCTION_PROFILER): Define.
	(TARGET_VERSION): Redefine.
	Comment and formatting cleanup.
	* config/i386/netbsd.h: Include <netbsd-aout.h>.
	* config/m68k/netbsd.h: Include <netbsd-aout.h>.
	* config/mips/netbsd.h: Rewrite for NetBSD/mips ELF target,
	big- or little-endian.
	* config/ns32k/netbsd.h: Include <netbsd-aout.h>.
	* config.gcc (*-*-netbsd*): Add definitions common to all
	NetBSD configs.
	(alpha*-*-netbsd*): Remove redundant xm_defines, gas, and
	gnu_ld definitions.  Add netbsd-elf.h to and remove
	alpha/netbsd-elf.h from tm_file.  Remove alpha/t-crtfm from
	tmake_file, and don't lose previous tmake_file contents.
	(arm*-*-netbsd*): Add netbsd-aout.h to tm_file.
	(i[34567]86-*-netbsdelf*): Remove redundant xm_defines, gas, and
	gnu_ld definitions.  Add netbsd-elf.h to tm_file.
	(mips-dec-netbsd*): Remove as alias for mipsel-*-netbsd*.
	(mipsel-*-netbsd*): Rename this to...
	(mips*-*-netbsd*): ...this.  Add elfos.h to tm_file.  Add
	mips/little.h to tm_file for mips*el-*.
	(powerpc-*-netbsd*): Remove redundant xm_defines definition.
	(sparc-*-netbsd*): Add netbsd-aout.h to tm_file.
	(vax-*-netbsd*): Add netbsd-aout.h to tm_file.

2002-01-21  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* pa-protos.h (reg_before_reload_operand): New function prototype.
	* pa.c (reg_before_reload_operand): New function implementation.
	* pa.md (decrement_and_branch_until_zero, movb): Use it.  Change "!*m"
	contraints to "*m".

2002-01-21  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* combine.c (simplify_and_const_int): Properly sign-extend CONSTOP.

2002-01-21  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* pa64-hpux.h (MD_EXEC_PREFIX): Set to "/usr/ccs/bin".
	(MD_STARTFILE_PREFIX): Set to "/usr/ccs/lib/pa20_64/".
	(MD_STARTFILE_PREFIX_1): Set to "/opt/langtools/lib/pa20_64/".
	(EH_FRAME_IN_DATA_SECTION): Define and update comment on init sections.
	(ENDFILE_SPEC): Undefine.
	(STARTFILE_SPEC): Redefine for PA.

2002-01-21  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* config/rs6000/t-ppccomm (CRTSTUFF_T_CFLAGS_S): Re-add -fPIC.

2002-01-21  Daniel Jacobowitz  <drow@mvista.com>

	* config.gcc: Add entries to supported PowerPC --with-cpu
	types.

2002-01-21  Jakub Jelinek  <jakub@redhat.com>

	* config/i386/i386.c (ix86_function_arg_regno_p): Never return
	true for 64-bit mode only SSE registers in 32-bit mode.

2002-01-21  Kazu Hirata  <kazu@hxi.com>

	* unwind-dw2.c: Fix formatting.
	* unwind-dw2-fde.c: Likewise.
	* unwind-dw2-fde.h: Likewise.
	* unwind-pe.h: Likewise.
	* varasm.c: Likewise.
	* varray.h: Likewise.

2002-01-21  Hans-Peter Nilsson  <hp@bitrange.com>

	Remove workaround for register stack overwrite bug in mmix.
	* config/mmix/mmix.c (mmix_target_asm_function_prologue): Remove
	support for TARGET_REG_STACK_FILL_BUG.
	* config/mmix/mmix.h: Remove member has_call_without_parameters.
	(TARGET_MASK_REG_STACK_FILL_BUG, TARGET_REG_STACK_FILL_BUG):
	Delete.
	(TARGET_DEFAULT): Remove TARGET_MASK_REG_STACK_FILL_BUG.
	(TARGET_SWITCHES): Remove -mreg-stack-fill-bug-workaround and
	-mno-reg-stack-fill-bug-workaround.
	* config/mmix/mmix.md ("call", "call_value"): Don't set struct
	machine member has_call_without_parameters.
	* doc/invoke.texi (Option Summary) <MMIX Options>: Remove
	-mreg-stack-fill-bug-workaround	and
	-mno-reg-stack-fill-bug-workaround.
	(MMIX Options): Ditto.

2002-01-21  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.c (function_arg): Replace 0 with NULL_RTX
	as appropriate.
	Remove redundant code.

2002-01-21  Joseph S. Myers  <jsm28@cam.ac.uk>

	* config/alpha/alpha.h, config/arc/arc.h, config/avr/avr.h,
	config/c4x/c4x.h, config/d30v/d30v.h, config/dsp16xx/dsp16xx.h,
	config/fr30/fr30.h, config/ia64/ia64.h, config/m68hc11/m68hc11.h,
	config/mips/mips.h, config/rs6000/rs6000.h, config/sparc/sparc.h,
	config/stormy16/stormy16.h, config/v850/v850.h: Remove commented
	out target macro definitions and non-target-specific comments
	mostly taken from old versions of the manual.

2002-01-20  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.h: Fix comment formatting.
	* config/ia64/aix.h: Likewise.
	* config/ia64/ia64-protos.h: Likewise.
	* config/ia64/ia64.c: Likewise.
	* config/ia64/ia64.h: Likewise.
	* config/ia64/ia64intrin.h: Likewise.
	* config/ia64/linux.h: Likewise.
	* config/ia64/unwind-aix.c: Likewise.
	* config/ia64/unwind-ia64.c: Likewise.

2002-01-20  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.c: Revise comments about shift code.

2002-01-20  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.c (function_arg): Update a comment.

2002-01-20  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.md: Update the comments at the beginning
	of the file.

2002-01-20  Kazu Hirata  <kazu@hxi.com>

	* config/i370/i370.c: Fix comment formatting.
	* config/i370/i370.h: Likewise.
	* config/i370/i370.md: Likewise.
	* config/i370/linux.h: Likewise.

Sun Jan 20 18:40:14 2002  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* reg-stack.c (subst_stack_regs): Properly check for deleted insn.

	* dwarf2out.c (loc_descriptor_from_tree): Add TRUTH_*_EXPR cases.
	(gen_struct_or_union_type_die): Don't SIGSEGV if no TYPE_STUB_DECL
	in incomplete case.

2002-01-20  Graham Stott  <grahams@redhat.com>

	* cfgloop.c (flow_loop_preheader_scan): Fix typo.

2002-01-19  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* config.gcc (hppa*64*-*-hpux11*): Fix tmake_file.

2002-01-19  Tom Rix  <trix@redhat.com>

	* config/rs6000/rs6000.md: Fix DF split for 64 bit hosts.

2002-01-18  Aldy Hernandez  <aldyh@redhat.com>

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

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

	* config/rs6000/rs6000.h (STARTING_FRAME_PHASE): New.

2002-01-19  Alexandre Oliva  <aoliva@redhat.com>

	* config/sh/sh.md (movdf_i4 split): Fix alter_subreg calls.

2002-01-18  Craig Rodrigues  <rodrigc@gcc.gnu.org>

	* doc/install.texi (hppa*-hp-hpux11): Clarify that GCC 2.95.x cannot
	be used for bootstrapping GCC 3.0.

2002-01-18  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.md: Fix an insn length.

2002-01-18  Kazu Hirata  <kazu@hxi.com>

	* bitmap.h: Fix comment formatting.
	* combine.c: Likewise.
	* cppfiles.c: Likewise.
	* c-pragma.h: Likewise.
	* c-typeck.c: Likewise.
	* df.c: Likewise.
	* dwarf2out.c: Likewise.
	* function.c: Likewise.
	* gcc.c: Likewise.
	* genattrtab.c: Likewise.
	* gthr-win32.h: Likewise.
	* haifa-sched.c: Likewise.
	* predict.c: Likewise.
	* rtlanal.c: Likewise.
	* rtl.h: Likewise.
	* unwind-dw2-fde.h: Likewise.
	* unwind-pe.h: Likewise.
	* vmsdbgout.c: Likewise.

Thu Jan 17 15:28:26 2002  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* attribs.c (decl_attributes): Clear ATTR_FLAG_TYPE_IN_PLACE
	if type_required and passed decl.

2002-01-17  Aldy Hernandez  <aldyh@redhat.com>

	* config.gcc (cpu_type): Include altivec.h in powerpc
	extra_headers.
	Same for darwin.

	* config/rs6000/altivec.h: New.

2002-01-17  David Edelsohn  <edelsohn@gnu.org>

	* doc/install.texi (*-ibm-aix*): Update assembler and exception
	handling information.
	* doc/trouble.texi (Interoperation): Add libstdc++ information
	for AIX.
	(Misunderstandings): Add template instantiation and static template
	member information for AIX.

2002-01-17  Jason Merrill  <jason@redhat.com>

	* dbxout.c (dbxout_type): Support const and volatile.

	* except.c (add_partial_entry): Remove backwards compatibility code.
	(end_protect_partials): Likewise.

2002-01-17  Jakub Jelinek  <jakub@redhat.com>

	* config/ia64/ia64.md (prologue_use): New.
	* config/ia64/ia64.c (ia64_expand_prologue): Use
	gen_prologue_use instead of gen_rtx_USE.
	(group_barrier_needed_p): Handle CODE_FOR_prologue_use the same way
	as CODE_FOR_pred_rel_mutex.
	(ia64_sched_reorder2): Likewise.

2002-01-16  Eric Christopher  <echristo@redhat.com>

	* config/mips/r3900.h: Reformat.
	(SUBTARGET_CPP_SIZE_SPEC): Remove.
	* config/mips/isa3264.h (SUBTARGET_CPP_SIZE_SPEC): Ditto.
	* config/mips/mips.h (ABI_GAS_ASM_SPEC): Default to "".
	(SUBTARGET_CPP_SIZE_SPEC): Rewrite.
	* config/mips/t-elf: Remove mips3 multilib.

2002-01-16  H.J. Lu <hjl@gnu.org>

	* config/mips/linux.h: Include "mips/abi64.h".

2002-01-16  H.J. Lu <hjl@gnu.org>

	* config/mips/t-linux: New.

	* config.gcc: Add mips/t-linux to tmake_file for mips*-*-linux*.

	* config/mips/linux.h: Don't include "gofast.h".
	(INIT_SUBTARGET_OPTABS): Removed.

2002-01-16  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300-protos.h: Replace emit_a_shift with
	output_a_shift.
	* config/h8300/h8300.c: Likewise.
	* config/h8300/h8300.md: Likewise.

2002-01-16  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.md (pushqi1_h8300): Use a tab instead of
	spaces after an opcode name.
	(pushqi1_h8300hs): Likewise.
	(pushhi1_h8300hs): Likewise.

2002-01-16  Kazu Hirata  <kazu@hxi.com>

	* doc/extend.texi: Replace "option" with "attribute"
	appropriately.

2002-01-16  Jakub Jelinek  <jakub@redhat.com>

	* config/alpha/alpha.c (some_small_symbolic_mem_operand): Look into
	(and:DI () (const_int -8)).
	(split_small_symbolic_mem_operand): Split
	(mem (and:DI () (const_int -8)).

2002-01-16  Jakub Jelinek  <jakub@redhat.com>

	PR target/5309:
	* config/sparc/sparc.c (ultrasparc_adjust_cost): Handle TYPE_IDIV the
	same way as TYPE_IMUL.
	(ultrasparc_sched_reorder): Likewise.
	* config/sparc/sparc.md (type): Add comment to update
	ultrasparc_sched_reorder when making changes.

2002-01-16  Kazu Hirata  <kazu@hxi.com>

	* doc/invoke.texi: Change the dump file name of block
	reordering pass from 28.bbro to 29.bbro.
	Mention -dk option.

Wed Jan 16 17:54:22 CET 2002  Jan Hubicka  <jh@suse.cz>

	* i386.md (minsf splitter): Fix pasto.

2002-01-16  Nick Clifton  <nickc@cambridge.redhat.com>

	* config/arm/arm.c (arm_expand_prologue): Add REG_MAYBE_DEAD note
	to frame pointer initialisation instruction.
	(thumb_expand_prologue): Add REG_MAYBE_DEAD note to frame pointer
	initialisation instruction.
	(soft_df_operand): Do not accept the IP register.
	(nonimmediate_soft_df_operand): Do not accept the IP register.

2002-01-16  Jakub Jelinek  <jakub@redhat.com>

	PR target/5357:
	* config/sparc/sparc.c (sparc_override_options): Avoid MASK_V9 and
	MASK_V8 being both set.

2002-01-16  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.c (s390_emit_prologue): Do not emit USE
	insn for GOT register; add REG_MAYBE_DEAD notes instead.
	config/s390/s390.md (call, call_value): Add GOT register to
	CALL_INSN_FUNCTION_USAGE where needed.
	(call_exp, call_value_exp): New.

2002-01-16  Nick Clifton  <nickc@cambridge.redhat.com>

	* config/arm/arm.c: General formatting tidy up.

2002-01-16  Graham Stott  <grahams@redhat.com>

	* calls.c (try_to_integrate): Use "(size_t)" intermediate
	cast and when casting an integer literal to "rtx" pointer.
	(expand_call): Likewise.
	* flow.c (try_pre_increment): Likewise.
	(find_use_as_address): Likewise.
	* integrate.c (expand_iline_function): Likewise.
	* regmove.c (try_auto_increment): Likewise.

2002-01-16  Graham Stott  <grahams@redhat.com>

	* sched-rgn.c (passed): Use sbitmap_free.
	(header): Likewise.
	(inner): Likewise.
	(in_queue): Likewise.
	(in_stack): Likewise.

2002-01-15  Eric Christopher  <echristo@redhat.com>

	* flow.c (propagate_one_insn): Change to use fatal_insn.

2002-01-15  Kazu Hirata  <kazu@hxi.com>

	* expmed.c (extract_fixed_bit_field): Remove unused code.
	* system.h: Poison SLOW_ZERO_EXTEND.
	* doc/tm.texi: Remove.
	* config/1750a/1750a.h (SLOW_ZERO_EXTEND): Remove.
	* config/arm/arm.h: Likewise.
	* config/avr/avr.h: Likewise.
	* config/clipper/clipper.h: Likewise.
	* config/convex/convex.h: Likewise.
	* config/d30v/d30v.h: Likewise.
	* config/dsp16xx/dsp16xx.h: Likewise.
	* config/elxsi/elxsi.h: Likewise.
	* config/fr30/fr30.h: Likewise.
	* config/h8300/h8300.h: Likewise.
	* config/i370/i370.h: Likewise.
	* config/i386/i386.h: Likewise.
	* config/m68k/m68k.h: Likewise.
	* config/mips/mips.h: Likewise.
	* config/ns32k/ns32k.h: Likewise.
	* config/pdp11/pdp11.h: Likewise.
	* config/pj/pj.h: Likewise.
	* config/s390/s390.h: Likewise.
	* config/sh/sh.h: Likewise.
	* config/stormy16/stormy16.h: Likewise.
	* config/v850/v850.h: Likewise.
	* config/vax/vax.h: Likewise.
	* config/we32k/we32k.h: Likewise.

2002-01-15  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/rs6000.md (altivec_stvx): Add parallels to stvx.
	(altivec_lvsl): Change constraint to b.
	(altivec_lvsr): Same.
	(altivec_lvebx): Same.
	(altivec_lvehx): Same.
	(altivec_lvewx): Same.
	(altivec_lvxl): Same.
	(altivec_lvx): Same.
	(altivec_stvx): Add parallel.
	(altivec_stvxl): Same.
	(altivec_stvehx): Same.
	(altivec_stvebx): Same.
	(altivec_stvebx): Same.

2002-01-15  Aldy Hernandez  <aldyh@redhat.com>

	* config.gcc: Change altivec.h to altivec-defs.h.

	* config/rs6000/altivec.h: Delete.

	* config/rs6000/altivec-defs.h: Add.

2002-01-15  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* vax.c (vax_rtx_cost): Return MAX_COST for unsupported MULT, UDIV
	and UMOD modes.

	* vax.h (INDEX_TERM_P): Restrict indexing to modes which have a size
	less than or equal to eight bytes.

	* vax.md (andsi3): Remove constraints and change SET destination
	operand type to nonimmediate_operand.
	(andhi3, andqi3): Likewise.  Don't clear high order bits of operand 1
	when it is a CONST_INT.

2002-01-15  Jason Merrill  <jason@redhat.com>

	* c-common.def (FILE_STMT): New code.
	* c-common.c (statement_code_p): It's a statement.
	* c-common.h (stmt_tree_s): Add x_last_filename.
	(FILE_STMT_FILENAME_NODE, FILE_STMT_FILENAME): New macros.
	(last_expr_filename): New macro.
	* c-semantics.c (begin_stmt_tree): Initialize it.
	(add_stmt): If the filename changed, also insert a
	FILE_STMT.
	(expand_stmt): Handle seeing one.

2002-01-15  Eric Christopher  <echristo@redhat.com>

	* flow.c (propagate_one_insn): Add error message and print out
	insn for debugging.

2002-01-15  Joseph S. Myers  <jsm28@cam.ac.uk>

	* system.h (ASM_IDENTIFY_GCC, STDC_VALUE, TRAMPOLINE_ALIGN,
	ASM_IDENTIFY_GCC_AFTER_SOURCE): Poison.
	* config/pdp11/pdp11.h (TRAMPOLINE_ALIGN): Rename to
	TRAMPOLINE_ALIGNMENT.
	* config/arm/arm.h, config/mcore/mcore.h: Likewise.  Change value
	to be in bits.
	* config/i386/cygwin.h (PCC_BITFIELDS_TYPE_MATTERS): Rename to
	PCC_BITFIELD_TYPE_MATTERS.
	* config/interix.h (STDC_VALUE): Remove.  Use
	STDC_0_IN_SYSTEM_HEADERS.
	* config/darwin.h (ASM_IDENTIFY_GCC), config/dsp16xx/dsp16xx.h
	(ASM_IDENTIFY_GCC), config/stormy16/stormy16.h (ASM_IDENTIFY_GCC,
	ASM_IDENTIFY_GCC_AFTER_SOURCE): Remove.

2002-01-15  Craig Rodrigues  <rodrigc@gcc.gnu.org>

	* doc/install.texi (hppa*-hp-hpux11): --enable-threads does
	not work on this platform currently.

2002-01-15  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-typeck.c (build_unary_op): Don't wrap msgid argument of
	readonly_warning in _().

2002-01-15  Douglas B Rupp  <rupp@gnat.com>

	* gcc.c (delete_if_ordinary): Backout previous change.

2002-01-15  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.c (print_operand): Remove support for
	unused operand characters.

	* read-rtl.c: Fix formatting.
	* real.c: Likewise.
	* recog.c: Likewise.
	* regclass.c: Likewise.
	* regmove.c: Likewise.
	* reg-stack.c: Likewise.
	* reload1.c: Likewise.
	* rtlanal.c: Likewise.

2002-01-15  Kazu Hirata  <kazu@hxi.com>

	* config/i386/i386.c: Fix formatting.

2002-01-15  Jakub Jelinek  <jakub@redhat.com>

	* c-typeck.c (process_init_element): Don't save_expr
	COMPOUND_LITERAL_EXPR if just its initializer will be used.

2002-01-15  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.c (rs6000_output_function_epilogue): Do not
	emit optional traceback table if optimize_size or TARGET_ELF.
	* config/rs6000/rs6000.md (prefetch): New.

2002-01-15  Andreas Jaeger  <aj@suse.de>

	* config.gcc (x86_64-*-*): Install mmintrin.h and xmmintrin.h.

2002-01-15  Kazu Hirata  <kazu@hxi.com>

	* mips-tfile.c: Fix formatting.

Tue Jan 15 00:56:11 CET 2002  Jan Hubicka  <jh@suse.cz>

	* unroll.c (final_reg_note_copy): Fix previous commit.

2002-01-14  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300-protos.h: Remove the prototype for
	eq_operator.
	* config/h8300/h8300.c (eq_operator): Remove.

2002-01-14  Richard Henderson  <rth@redhat.com>

	* config/i386/i386.md (prefetch): Tidy.
	(prefetch_3dnow): Fix locality operand.

2002-01-14  Richard Henderson  <rth@redhat.com>

	* config/mips/mips.h (HI_AND_FP_REGS): New register class.
	(CLASS_CANNOT_CHANGE_MODE): Disallow HI in little-endian mode.

2002-01-14  Hans-Peter Nilsson  <hp@bitrange.com>

	* reload1.c (reload_combine): Pass reg_sum replacement through
	copy_rtx in loop performing multiple changes.

2002-01-14  Jakub Jelinek  <jakub@redhat.com>

	* except.c (remove_unreachable_regions): New.
	(free_eh_status): Clear exception_handler_labels.
	(convert_from_eh_region_ranges): Call remove_unreachable_regions.
	(find_exception_handler_labels): Don't add the same label more than
	once.
	(remove_exception_handler_label): Don't die if
	find_exception_handler_labels hasn't been called for the current
	function yet.

Mon Jan 14 21:26:13 CET 2002  Jan Hubicka  <jh@suse.cz>

	* toplev.c (rest_of_compilation): Rebuild jump labels after
	gcse.

2002-01-14  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/extend.texi: Move documentation of X86 built-in functions
	here.
	* doc/invoke.texi: From here.
	* doc/sourcebuild.texi: Document location of documentation for
	machine built-in functions.

2002-01-13  Christopher Faylor  <cgf@redhat.com>

	* cppfiles.c (TEST_THRESHOLD): New macro.
	(SHOULD_MMAP): Ditto.
	(read_include_file): Use SHOULD_MMAP macro to decide when mmap should
	be used.

Mon Jan 14 20:23:34 CET 2002  Jan Hubicka  <jh@suse.cz>

	* unroll.c (final_reg_note_copy): Properly handle
	REG_LABEL
	(unroll_loops): Fix LOOP_CONDITION heuristics.

2002-01-14  Geoffrey Keating  <geoffk@redhat.com>

	* doc/invoke.texi (Xstormy16 Options): Add xstormy16 option.
	* doc/md.texi (Machine Constraints): Use @minus{} where appropriate.

Mon Jan 14 20:18:19 CET 2002  Jan Hubicka  <jh@suse.cz>

	* cfgcleanup.c (try_forward_edges): Avoid infinite loop at infinite
	threaded loop.

2002-01-14  Tom Rix  <trix@redhat.com>

	* config/rs6000/rs6000.md: Fix typo with sradi.

2002-01-14  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.md (movstrdix_64, movstrsix_31, movstrdi_64,
	movstrsi_31, clrstrsi_64, clrstrsi_31): Improve RTL templates.
	(clrstrdi, clrstrsi): Adapt callers.

	(extendsidi2, zero_extendsidi2): Remove no-conflict blocks.

	(movti splitter): Never use register 0 as base register.

2002-01-14  Hartmut Penner  <hpenner@de.ibm.com>

	* combine.c (simplify_shift_const): Always generate new rtx
	for shift expression instead of reusing given expression.

Mon Jan 14 07:08:55 2002  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* config/alpha/alpha.c (alpha_expand_mov): Don't call
	alpha_legitimize_address unless mode is Pmode.

2002-01-13  Geoffrey Keating  <geoffk@redhat.com>

	* doc/md.texi (Modifiers): Document the '*' constraint for the
	user.

	* doc/md.texi (Machine Constraints): Add constraints for xstormy16.
	* doc/extend.texi (Function Attributes): 'interrupt' is valid
	for xstormy16 too.

2002-01-13  Richard Henderson  <rth@redhat.com>

	* reload.c (find_reloads): Use a hard reg destination as reload reg
	for an input reload of the source.

2002-01-13  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* doc/install.texi (Binaries): Make link to ftp.writtenword.com
	more generic.

Sun Jan 13 07:23:01 2002  Douglas B Rupp  <rupp@gnat.com>

	* Makefile.in (LIB2FUNCS): Split into LIB2FUNCS_1 and LIB2FUNCS_2.
	* mklibgcc.in (LIB2FUNCS): Split into LIB2FUNCS_1 and LIB2FUNCS_2.

	* config/alpha/x-vms (USE_COLLECT2): Set to empty.

Sun Jan 13 06:55:31 2002  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* dwarf2out.c (mem_loc_descriptor, case ADDRESSOF): New case.

2002-01-12  Tom Rix  <trix@redhat.com>

	* config/rs6000/rs6000.c (rs6000_emit_set_long_const): Use ior for
	TARGET_POWERPC64.

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

	* config/i386/i386.c (bdesc_2arg): Mark psadbw MASK_3DNOW_A.

	* doc/invoke.texi: Update Alpha options.

	* doc/invoke.texi: Update i386 built-in function lists.

Sat Jan 12 17:38:11 CET 2002  Jan Hubicka  <jh@suse.cz>

	* unroll.c (final_reg_note_copy): Avoid crash on REG_LABEL note
	referencing outside.

Sat Jan 12 08:54:51 2002  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* diagnostic.c (warn_deprecated_use): Rework to lower indentation.
	* expr.c (emit_move_insn_1): Remove warning, use HOST_WIDE_INT for
	offsets, and change line folding.
	* optabs.c (expand_binop): Remove warnings.
	* sdbout.c (sdbout_record_type_name): Constify NAME to avoid warning.

2002-01-12  Graham Stott <grahams@redhat.com>

	* attribs.c (handle_deprecated_attribute): constify WHAT.
	* diagnostic.c (warn_deprecated_use): Add braces, fixes
	dangling else warning and constify WHAT.
	* except.h (struct function, struct inline_remap): Move
	struct tag forward defs before all prototypes.
	(duplicate_eh_regions): Whitespace.

2002-01-12  Nick Clifton  <nickc@cambridge.redhat.com>

	* config/arm/arm.h (ARM_LEGITIMIZE_RELOAD_ADDRESS): Use
	MODE_BASE_REG_CLASS.
	(THUMB_LEGITIMIZE_RELOAD_ADDRESS): Use MODE_BASE_REG_CLASS.

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

	* config/i386/i386.c (override_options): If SSE, enable sse prefetch.
	(ix86_expand_vector_move): New.
	(bdesc_2arg): Remove andps, andnps, orps, xorps.
	(ix86_init_mmx_sse_builtins): Make static.  Remove composite builtins.
	Remove old prefetch builtins.  Special case the logicals removed above.
	(ix86_expand_builtin): Likewise.
	(safe_vector_operand): Use V4SFmode, not TImode.
	(ix86_expand_store_builtin): Remove shuffle arg.  Update callers.
	(ix86_expand_timode_binop_builtin): New.
	* config/i386/i386-protos.h: Update.
	* config/i386/i386.h (enum ix86_builtins): Update.
	* config/i386/i386.md: Correct predicates on MMX/SSE patterns.
	Use ix86_expand_vector_move in vector move expanders.
	(movti_internal, movti_rex64): Add xorps alternative.
	(sse_clrv4sf): Rename and adjust from sse_clrti.
	(prefetch): Don't work so hard.
	(prefetch_sse, prefetch_3dnow): Use PREFETCH rtx, not UNSPEC.
	* config/i386/xmmintrin.h (__m128): Use V4SFmode.
	(_mm_getcsr, _mm_setcsr): Fix typo in builtin name.

2002-01-11  Richard Henderson  <rth@redhat.com>

	* config/i386/mmintrin.h: New file.
	* config/i386/xmmintrin.h: New file.
	* config.gcc (i?86-*-*): Add extra_headers.
	* simplify-rtx.c (simplify_unary_operation): Handle saturating
	truncation codes.
	(simplify_binary_operation): Handle saturating arithmetic codes.
	* config/i386/i386.c (ix86_expand_sse_comi): Return the full result,
	not the lowpart subreg.
	(ix86_expand_builtin): Return a TImode dummy register instead of 0
	on error.
	* config/i386/i386.md (mmx_clrdi): Override memory attribute.

2002-01-12  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* conflict.c (conflict_graph_compute): Free regsets when finished.
	* ssa.c (compute_coalesced_reg_partition): Likewise.

2002-01-12  Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>

	* global.c (find_reg): Check for HARD_REGNO_CALL_PART_CLOBBERED
	every where we allocate a register.

2002-01-12  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* gcse.c (compute_pre_data, pre_gcse): Use sbitmap_free.
	* lcm.c (compute_earliest, compute_farthest): Likewise.

2002-01-11  Janis Johnson  <janis187@us.ibm.com>

	* expr.c (expand_assignment): Fix misuse of MEM_KEEP_ALIAS_SET.

2002-01-11  Janis Johnson  <janis187@us.ibm.com>

	* doc/rtl.texi (Insns): Fix 2 typos.

2002-01-11  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/invoke.texi: Avoid overfull hboxes.  Add summary of D30V
	options.  Use @table @gcctabopt for MMIX options.  Add index
	entries for MMIX options.  Start new paragraph with first
	heading of the machine-dependent options.

2002-01-11  Craig Rodrigues  <rodrigc@gcc.gnu.org>

	PR other/5299
	* config/ns32k/ns32k.md: Fix spelling mistake of "than" in comments.
	* combine.c (force_to_mode): Same.
	* reload1.c (clear_reload_reg_in_use): Same.

2002-01-11  Nick Clifton  <nickc@cambridge.redhat.com>

	* config/arm/arm.c (arm_gen_constant): Correct test of 'remainder'
	and 'subtargets'.

2002-01-11  Andreas Jaeger  <aj@suse.de>,
	    Brad Lucier <lucier@math.purdue.edu>

	* config/i386/i386.h (CPP_CPUCOMMON_SPEC): Remove wrong
	mcpu.

Fri Jan 11 07:35:12 2002  Douglas B Rupp  <rupp@gnat.com>

	* config/alpha/vms.h: (MD_FALLBACK_FRAME_STATE_FOR): Fix errors.
	Protect with IN_LIBGCC.
	(LINK_EH_SPEC): Add required trailing space.

Fri Jan 11 09:25:05 2002  Nicola Pero  <n.pero@mi.flashnet.it>

	* c-tree.h: Move function declarations so that they are listed
	under the filename which contains them.
	(check_identifier, finish_decl_top_level,
	lookup_name_current_level_global, shadow_record_fields): Remove.

2002-01-11  Andreas Jaeger  <aj@suse.de>

	* config/i386/i386.h (CPP_CPUCOMMON_SPEC): Remove duplicated
	march.

2002-01-10  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.c (print_operand): Add 'J'.
	* config/alpha/alpha.md (call_osf_1_er, call_value_osf_1_er): Take a
	new operand with the sequence number for the lituse.  When splitting
	the insns, use gen_movdi_er_high_g and generate a sequence number.
	(gen_movdi_er_high_g): Print the sequence number if nonzero.

2002-01-10  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/rs6000.c (altivec_init_builtins): Add support for
	lvebx, lvehx, lvewx, lvxl, lvx, stvx, stvebx, stvehx, stvewx,
	stvxl.
	(altivec_expand_builtin): Same.
	(altivec_expand_stv_builtin): New.

	* config/rs6000/rs6000.h (rs6000_builtins): Same.

	* config/rs6000/rs6000.md ("altivec_lvebx"): New.
	("altivec_lvehx"): New.
	("altivec_lvewx"): New.
	("altivec_lvxl"): New.
	("altivec_lvx"): New.
	("altivec_stvx"): New.
	("altivec_stvebx"): New.
	("altivec_stvehx"): New.
	("altivec_stvewx"): New.
	("altivec_stvxl"): New.

2002-01-10  Richard Henderson  <rth@redhat.com>

	* cfgrtl.c (delete_insn): Assert insn hasn't been deleted yet.
	* reload1.c (delete_output_reload): Zap spill_reg_store.  Take
	care not to delete instructions twice.

2002-01-10  Zack Weinberg  <zack@codesourcery.com>

	* toplev.c: Don't declare environ (it's not used anywhere).
	* configure.in: Don't check for declaration of environ.
	* config/i386/xm-mingw32.h: Don't #define environ.
	* config.in, configure: Regenerate.

2002-01-10  Zack Weinberg  <zack@codesourcery.com>

	* configure.in: Set stage1_cflags for powerpc-*-darwin*.
	* configure: Regenerate.

	* config/interix.h: Set DO_GLOBAL_CTORS_BODY and
	DO_GLOBAL_DTORS_BODY here, not in xm-interix.h.
	* config/alpha/vms.h: Set INCLUDE_DEFAULTS here, not in
	alpha/xm-vms.h.
	* config/m68k/t-next: Set OTHER_FIXINCLUDES_DIRS and
	LIMITS_H_TEST here, not in m68k/x-next.
	* config/rs6000/beos.h: Set STANDARD_INCLUDE_DIR and
	SYSTEM_INCLUDE_DIR here, not in rs6000/xm-beos.h.

	* config/x-interix: Don't set RANLIB, RANLIB_TEST, SHELL,
	LIBGCC2_INCLUDES, or SYSTEM_HEADER_DIR.
	* config/alpha/x-vms: Don't set USE_COLLECT2.  Add comments.

	* config/i386/x-djgpp: Renamed i386/t-djgpp.
	* config/m88k/x-dolph: Renamed m88k/t-dolph.
	* config/m88k/x-texXD88: Renamed m88k/t-texXD88.
	* config/pa/x-pa-mpeix: Renamed pa/t-mpeix.  Update for
	replacement of quadlib.asm with quadlib.c.

	* config/x-interix3, config/xm-interix.h, config/i386/x-beos,
	config/i386/xm-osf1elf.h, config/rs6000/x-darwin,
	config/rs6000/xm-beos.h: Delete file.

	* config.gcc: Update to match above changes.

2002-01-10  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.h: Fix comment typos.
	* config/h8300/h8300.md: Likewise.
	* config/h8300/lib1funcs.asm: Likewise.

2002-01-10  Dale Johannesen  <dalej@apple.com>

	PR optimization/5269
	* unroll.c (precondition_loop_p): Make *increment be the correct
	sign when n_iterations known, to avoid confusing caller.

2002-01-10  Kazu Hirata  <kazu@hxi.com>

	* doc/extend.texi (deprecated): Fix a typo.

Thu Jan 10 22:35:54 CET 2002  Jan Hubicka  <jh@suse.cz>

	* basic-block.h (update_br_prob_note): Declare.
	* cfgcleanup.c (try_simplify_condjump): Call update_br_prob_note.
	(try_forward_edges): Care negative frequencies and update note.
	(outgoing_edges_match): Tweek conditional merging heuristics.
	(try_crossjump_to_edge): use update_br_prob_note.
	* cfglayout.c (fixup_reorder_chain): Likewise.
	* cfrtl.c (update_br_prob_note): New.
	* ifcvt.c (dead_or_predicable): Call update_br_prob_note.

	* i386.c (ix86_decompose_address): Return -1 if address contains
	shift.
	(legitimate_address_p): Require ix86_decompose_address to return 1.

	* gcse.c (hash_scan_set): Use CONSTANT_INSN_P.
	(cprop_insn): Likewise.

2002-01-10  Kazu Hirata  <kazu@hxi.com>

	* toplev.c: Fix formatting.
	* tree.c: Likewise.
	* tree-dump.c: Likewise.
	* unroll.c: Likewise.
	* unwind-dw2.c: Likewise.
	* unwind-dw2-fde.c: Likewise.
	* unwind-dw2-fde-glibc.c: Likewise.
	* unwind-sjlj.c: Likewise.

2002-01-10  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/invoke.texi: Document PDP-11 options.

2002-01-10  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.h: Fix formatting.

2002-01-10  Ira Ruben	<ira@apple.com>

	Add __attribute__ ((deprecated)).
	* extend.texi: Document __attribute__ ((deprecated)).
	* invoke.texi: Document -Wno-deprecated-declarations.
	* testsuite/g++.dg/other/deprecated.C: New C++ test.
	* testsuite/gcc.dg/deprecated.c: New C test.
	* attribs.c (enum attrs): Declare handle_deprecated_attribute().
	(c_common_attribute_table): Add "deprecated" entry.
	(handle_deprecated_attribute): New function.
	* c-decl.c (deprecated_states): New enum.
	deprecated_state: State of "deprecated" handling.
	(start_decl): Set deprecated_state based on attributes.
	(grokdeclarator): Test for deprecated uses, propagate attribute.
	* c-typeck.c (build_component_ref): Test for deprecated fields.
	(build_external_ref): Test for deprecated primaries.
	* diagnostic.c (warn_deprecated_use) New function to issue
	warnings about __attribute__ ((depricated)) references.
	* flags.h (warn_deprecated_decl): Extern declared for
	-W[no-]deprecated-declarations option.
	* print-tree.c (print_node): Show deprecated flag status.
	* toplev.c (warn_deprecated_decl): Defined.
	(W_options): Added "deprecated-declaration".
	* toplev.h (warn_deprecated_use): Extern declared.
	* tree.h (struct tree_common): Define deprecated_flag.
	(TREE_DEPRECATED): New macro to access flag.
	* cp/call.c (build_call): Test for deprecated calls.
	* cp/class.c (add_implicitly_declared_members): Set global
	flag to tell grokdeclarator to not issue deprecated warnings.
	* cp/cp-tree.h: Add extern for adding_implicit_members.
	* cp/decl.c (deprecated_states): New enum.
	(start_decl): Set deprecated_state based on attributes.
	(grokdeclarator): Test for deprecated uses, propagate attribute.
	* cp/lex.c (do_identifier): Test for deprecated primaries.
	* cp/typeck.c (build_component_ref): Test for deprecated fields.

2002-01-10  Ira Ruben	<ira@apple.com>

	Fix to assign attributes to inline member functions.
	* cp/decl.c (start_method): Handle attrlist.

2002-01-10  Kazu Hirata  <kazu@hxi.com>

	* combine.c (expand_field_assignment): Use subreg_lsb().

2002-01-10  David Edelsohn  <edelsohn@gnu.org>

	* alias.c (find_base_value): Add cases for HIGH, PRE_INC, PRE_DEC,
	POST_INC, POST_DEC, PRE_MODIFY, and POST_MODIFY.
	(find_base_term): Add cases for TRUNCATE, PRE_MODIFY, and POST_MODIFY.
	Recurse for any operand of AND as long as constant is nonzero.

2002-01-10  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.md: Remove constraints from expanders.

2002-01-10  Kazu Hirata  <kazu@hxi.com>

	* varasm.c: Fix formatting.
	* varray.c: Likewise.
	* vmsdbgout.c: Likewise.
	* xcoffout.c: Likewise.

Thu Jan 10 17:19:12 CET 2002  Jan Hubicka  <jh@suse.cz>

	* cfgcleanup.c (try_forward_edges): Properly initialize nthreaded_edges;
	update edge probabilities to match.

2002-01-10  Joseph S. Myers  <jsm28@cam.ac.uk>

	* Makefile.in ($(docdir)/gccint.info, gccint.dvi): Add additional
	dependencies.
	* doc/languages.texi, doc/sourcebuild.texi: New files.
	* doc/configfiles.texi: Make a subsubsection.  Update.
	* doc/configterms.texi: Add @node.  Remove warning that this isn't
	instructions for building GCC.
	* doc/makefile.texi: Make a subsection.
	* doc/gccint.texi: Update.

Thu Jan 10 16:39:58 CET 2002  Jan Hubicka  <jh@suse.cz>

	* i386.md (sse_mov?fcc_const0_?): Fix constraints.

Thu Jan 10 12:45:50 2002  Nicola Pero  <n.pero@mi.flashnet.it>

	* doc/cpp.texi: Document the __OBJC__ preprocessor macro.

Thu Jan 10 11:19:18 CET 2002  Jan Hubicka  <jh@suse.cz>

	* optabs.c (expand_fix): Look for wider integer modes first.

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

2002-01-10  Graham Stott  <grahams@redhat.com>

	* dwarf2out.c (indirect_string_alloc, output_indirect_string):
	Move prototype into DWARF2_DEBUGGING_INFO conditional block.

2002-01-10  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.md (extendsidi2_fix): Penalize f/f alternative.

2002-01-10  Richard Henderson  <rth@redhat.com>

	* regrename.c (find_oldest_value_reg): Fix typo in mode change check.
	(copyprop_hardreg_forward_1): Likewise.  Use mode_change_ok.

2002-01-10  Kazu Hirata  <kazu@hxi.com>

	* combine.c (can_combine_p): Fix a comment typo.

2002-01-09  Zack Weinberg  <zack@codesourcery.com>

	* Makefile.in (s-gencheck, s-options, s-specs): Handle an
	empty list correctly.  Change loop index $t to $f for
	consistency with rest of Makefile.

2002-01-08  Aldy Hernandez  <aldyh@redhat.com>

	* testuite/gcc.dg/altivec-4.c: Add test for mtvscr, dssall,
	mfvscr, dss, lvsl, lvsr, dstt, dstst, dststt, dst.

	* config/rs6000/rs6000.c (altivec_expand_builtin): Add support for
	mtvscr, dssall, mfvscr, dss, lvsl, lvsr, dstt, dst, dstst, dststt.
	(altivec_init_builtins): Same.
	(altivec_expand_unop_builtin): Return NULL_RTX on error.
	(altivec_expand_binop_builtin): Same.
	(altivec_expand_ternop_builtin): Same.
	(bdesc_dst): New.

	* config/rs6000/rs6000.md ("altivec_mtvscr"): New.
	("altivec_vctuxs"): Fix typo.
	("altivec_vnmsubfp"): Same.
	("altivec_dssall"): New.
	("altivec_mfvscr"): New.
	("altivec_dss"): New.
	("altivec_lvsl"): New.
	("altivec_lvsr"): New.
	("altivec_dstt"): New.
	("altivec_dstst"): New.
	("altivec_dststt"): New.
	("altivec_dst"): New.

	* config/rs6000/rs6000.h (rs6000_builtins): Add mtvscr, dssall,
	mfvscr, dss, lvsl, lvsr, dstt, dstst, dststt, dst.

2002-01-09  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.md (prologue_mcount): Remove lituse_jsr reloc.

2002-01-10  Hans-Peter Nilsson  <hp@bitrange.com>

	* config/mmix/mmix.c (mmix_asm_identify_gcc): Remove unused
	function.
	* config/mmix/mmix-protos.h (mmix_asm_identify_gcc): Don't
	prototype.
	* config/mmix/mmix.h (ASM_IDENTIFY_GCC): Remove unused macro.

2002-01-09  Kazu Hirata  <kazu@hxi.com>

	* read-rtl.c: Fix formatting.
	* real.c: Likewise.
	* regclass.c: Likewise.
	* regrename.c: Likewise.
	* reg-stack.c: Likewise.
	* reload1.c: Likewise.
	* reload.c: Likewise.
	* rtl.c: Likewise.

2002-01-09  Kazu Hirata  <kazu@hxi.com>

	* rtlanal.c (find_reg_fusage): Use XEXP instead of SET_DEST
	to extract items in the expr_list chain.

2002-01-09  Richard Henderson  <rth@redhat.com>

	* config/vax/vax.c (vax_rtx_cost): Never abort.

	* config/vax/vax.h (REAL_ARITHMETIC): Define.

2002-01-09  Jan Hubicka  <jh@suse.cz>

	* gcse.c (cprop_jump): Delete insn if simplified jump is no-op.

2002-01-09  Richard Henderson  <rth@redhat.com>

	* config/arm/arm.c (arm_gen_constant): Use trunc_int_for_mode.
	Unify code from various alternatives.

2002-01-09  Richard Henderson  <rth@redhat.com>

	* regrename.c (copy_value): Ignore the copy if the source register
	is present in the value chain with a narrower mode.

2002-01-09  Herman A.J. ten Brugge  <Haj.Ten.Brugge@net.HCC.nl>

	* real.c (c4xtoe, toc4x): Do some special conversion on long doubles
	for the c4x target. Also improve layout.

2002-01-09  Richard Henderson  <rth@redhat.com>

	* config/m32r/m32r.c (move_src_operand): Fix 32-bit int test.
	* config/m32r/m32r.md (and ior xor splitters): Swap operands
	to match insn patterns.

2002-01-09  Richard Henderson  <rth@redhat.com>

	* regrename.c (find_oldest_value_reg): Use gen_rtx_raw_REG.
	(copyprop_hardreg_forward_1): Likewise.

2002-01-09  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* pa.md (decrement_and_branch_until_zero): Change predicate for
	operand 0 from register_operand to reg_or_nonsymb_mem_operand.

2002-01-09  Bryce McKinlay  <bryce@waitaki.otago.ac.nz>

	* ginclude/stddef.h: Define _BSD_WCHAR_T_DEFINED_ if _BSD_WCHAR_T_
	gets undefined. For Darwin.

2002-01-09  Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>

	* config/c4x/c4x.h: Use PUSH_ARGS and PUSH_ROUNDING for stack passing.

2002-01-09  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* config/c4x/c4x/md: Remove extraneous constraints from define_splits.

2002-01-08  Richard Henderson  <rth@redhat.com>

	* regrename.c (copy_value): Ignore overlapping copies.

2002-01-08  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.c (alpha_split_conditional_move): Call copy_rtx
	as needed to avoid shared structure.

2002-01-08  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.c (get_shift_alg): Fix 15-bit LSHIFTRT on
	H8/300H and H8S.

2002-01-08  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/tm.texi (EASY_DIV_EXPR, IMPLICIT_FIX_EXPR,
	LONGJMP_RESTORE_FROM_STACK, MAX_INT_TYPE_SIZE): Remove
	documentation of obsolete macros.
	* system.h: Poison these macros.
	* config/1750a/1750a.h, config/a29k/a29k.h, config/alpha/alpha.h,
	config/arc/arc.h, config/arm/arm.h, config/avr/avr.h,
	config/c4x/c4x.h, config/clipper/clipper.h,
	config/convex/convex.h, config/cris/cris.h, config/d30v/d30v.h,
	config/dsp16xx/dsp16xx.h, config/elxsi/elxsi.h,
	config/fr30/fr30.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/m32r/m32r.h, config/m68hc11/m68hc11.h,
	config/m68k/m68k.h, config/m88k/m88k.h, config/mcore/mcore.h,
	config/mips/mips.h, config/mmix/mmix.h, config/mn10200/mn10200.h,
	config/mn10300/mn10300.h, config/ns32k/ns32k.h, config/pa/pa.h,
	config/pdp11/pdp11.h, config/pj/pj.h, config/romp/romp.h,
	config/rs6000/rs6000.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/we32k/we32k.h: Remove
	definitions and commented out definitions of obsolete macros.
	* config/mips/iris5.h (MAX_WCHAR_TYPE_SIZE): Don't define in terms
	of MAX_INT_TYPE_SIZE.

2002-01-08  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/s390.c (s390_preferred_reload_class): Never
	return ADDR_REGS if it isn't a subset of the given class.
	* config/s390/s390.h (REGISTER_MOVE_COST): Penalize not just
	FP_REGS, but all superclasses as well.

	* config/s390/s390.c (s390_function_profiler): Fix thinko.

	* config/s390/s390.md (cmpdi_ccu_mem, cmpsi_ccu_mem,
	cmphi_ccu_mem, cmpqi_ccu_mem): First operand of compare
	must not be a const_int.

2002-01-08  Richard Henderson  <rth@redhat.com>

	* Makefile.in (toplev.o): Depend on options.h.
	(gcc.o): Depend on specs.h.

2002-01-08  Jakub Jelinek  <jakub@redhat.com>

	* expr.c (store_expr): Convert VOIDmode constants back to target's
	mode.

2002-01-08  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* doc/invoke.texi: Markup gcc as @command.  Refer to
	http://gcc.gnu.org/onlinedocs/gcc/Contributors.html instead
	of http://gcc.gnu.org/thanks.html.

2002-01-08  Dale Johannesen  <dalej@apple.com>

	* config/rs6000/rs6000.md: Add missing int register
	target case to movdf_low.

2002-01-08  Zack Weinberg  <zack@codesourcery.com>

	* Makefile.in (cs-tconfig.h): Don't depend on $(CONFIG_H) or
	except.h.  Remove commands to define USING_SJLJ_EXCEPTIONS.
	(cppinit.o): Depend on except.h.
	(gencheck.h, options.h, specs.h, s-gencheck, s-options,
	s-specs): New rules.

	* configure.in: Don't AC_DEFINE_UNQUOTED PACKAGE or VERSION.
	Don't create specs.h/options.h/gencheck.h here.  Remove
	unnecessary variable settings from last argument of AC_OUTPUT.
	* config.in, configure: Regenerate.
	* intl.c: Hardcode package name as "gcc".

	* cppinit.c: Include except.h.
	(builtin_array): Define __USING_SJLJ_EXCEPTIONS__ when
	appropriate.
	* unwind-dw2.c, unwind-sjlj.c, config/ia64/unwind-ia64.c:
	Use #if(n)def __USING_SJLJ_EXCEPTIONS, not #if
	(!)USING_SJLJ_EXCEPTIONS.
	* doc/cpp.texi: Document __USING_SJLJ_EXCEPTIONS__.

2002-01-08  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/tm.texi (ASM_OUTPUT_EH_REGION_BEG, ASM_OUTPUT_EH_REGION_END,
	ASM_OUTPUT_LABELREF_AS_INT, DOESNT_NEED_UNWINDER, EH_TABLE_LOOKUP,
	OBJC_SELECTORS_WITHOUT_LABELS, OMIT_EH_TABLE): Remove
	documentation of obsolete macros.
	* system.h: Poison these macros.
	* config/d30v/d30v.h, config/ns32k/encore.h,
	config/stormy16/stormy16.h: Remove definitions and commented out
	definitions of obsolete macros.

Tue Jan  8 15:56:41 2002  Nicola Pero  <nicola@brainstorm.co.uk>

	* objc/objc-act.c (handle_class_ref): Mark the declaration of
	%sobjc_class_ref_%s as used - to prevent unwanted compiler
	warnings.

2002-01-08  Ulrich Weigand  <uweigand@de.ibm.com>

	* config/s390/linux.h (ASM_OUTPUT_LABELREF): Remove.
	* config/s390/s390.c (s390_emit_epilog): Add REG_FRAME_RELATED_EXPR
	to insn adjusting stack/frame pointer.
	* config/s390/s390.md (reload_la_64, reload_la_31): Do not
	accept operands that cause the insn to be non-splittable.

2002-01-08  Graham Stott  <grahams@redhat.com>

	* c-tree.h (C_TYPE_FIELDS_READONLY): Uppercase macro parameter.
	(C_TYPE_FIELDS_VOLATILE): Likewise.
	(C_TYPE_BEING_DEFINED): Likewise.
	(C_IS_RESERVED_WORD): Likewise.
	(C_TYPE_VARIABLE_SIZE): Likewise.
	(C_DECL_VARIABLE_SIZE): Likewise.
	(C_MISSING_PROTOTYPE_WARNED): Likewise.
	(C_SET_EXP_ORIGINAL_CODE): Likewise.
	(C_TYPEDEF_EXPLICITLY_SIGNED): Uppercase macro parameter and remove
	parenthesis.
	(C_DECL_ANTICIPATED): Likewise.
	(c_build_type_variant): Add parenthesis.

2002-01-08  Joseph S. Myers  <jsm28@cam.ac.uk>

	* gcc.c (option_map): Remove --version.
	(process_command): Handle -fversion following the GNU Coding
	Standards.  Partially addresses PR other/704.

2002-01-08  Graham Stott  <grahams@redhat.com>

	* combine.c (combine_instructions): Fix typo.

2002-01-08  Graham Stott  <grahams@redhat.com>

	* debug.h: Use "tree" and "rtx" throughout.

	* debug.c: Likewise.

2002-01-08  Nick Clifton  <nickc@cambridge.redhat.com>

	* dbxout.c (dbxout_symbol_location): If a symbol ref is in the
	constant pool, use the pool's version of the symbol instead.

2002-01-07  Richard Henderson  <rth@redhat.com>

	* regrename.c (find_oldest_value_reg): Ignore the value chain if
	the original register was copied in a mode with a fewer number of
	hard registers than the desired mode.
	(copyprop_hardreg_forward_1): Likewise.
	(debug_value_data): Fix loop test.
	* toplev.c (parse_options_and_default_flags): Reenable
	-fcprop-registers at -O1.

2002-01-07  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/rs6000.c (bdesc_2arg): Add altivec predicates.
	(altivec_init_builtins): New node v4si_ftype_v16qi_v16qi.

	* config/rs6000/rs6000.h (rs6000_builtins): Add enums for altivec
	predicates.

	* config/rs6000/rs6000.md: Add altivec predicate patterns.

2002-01-07  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* pa.c (FUNC_BEGIN_PROLOG_LABEL, current_function_number): Define.
	(pa_output_function_prologue): Output local label at the beginning of
	the prologue when profiling.
	(hppa_profile_hook): Use the local label rather than the function label.
	* pa.h (PROFILE_BEFORE_PROLOGUE): Define.

2002-01-07  Aldy Hernandez  <aldyh@redhat.com>

	* config/rs6000/rs6000.c (print_operand): Remove extra space.
	(altivec_expand_unop_builtin): Fix thinko.
	(altivec_expand_binop_builtin): Same.
	(altivec_expand_ternop_builtin): Same.
	(altivec_expand_builtin): Same.

2002-01-07  Richard Henderson  <rth@redhat.com>

	* config/rs6000/xcoff.h (ASM_FILE_START): Reverted to profile_flag.

2002-01-07  Jason Merrill  <jason@redhat.com>

	* unwind-dw2.c (execute_cfa_program): Use < again.

2002-01-07  Jakub Jelinek  <jakub@redhat.com>

	* predict.c (combine_predictions_for_insn): Avoid division by zero.

2002-01-07  Jakub Jelinek  <jakub@redhat.com>

	* simplify-rtx.c (simplify_plus_minus): Bump n_ops for NOT.
	Don't allow -1 - x -> ~x simplifications in the first pass.

2002-01-07  Aldy Hernandez  <aldyh@redhat.com>

	* rs6000.c (altivec_expand_ternop_builtin): Don't die on invalid
	arguments.
	(altivec_expand_binop_builtin): Same.
	(altivec_expand_unop_builtin): Same.
	(print_operand): Fix typo.
	(bdesc_1arg): Add vupk* variants.

	* rs6000.h (rs6000_builtins): Add vupk* enums.

	* rs6000.md: Add altivec_vupk* variants.

2002-01-07  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/gcc.texi, doc/gccint.texi, doc/cppinternals.texi,
	doc/install.texi, doc/invoke.texi, doc/rtl.texi: Update copyright
	and last update dates.

2002-01-07  Janis Johnson  <janis187@us.ibm.com>

	* doc/rtl.texi (Flags): Clean up documentation of RTL flags

2002-01-07  Marek Michalkiewicz  <marekm@amelek.gda.pl>

	* config/avr/avr.c (avr_mcu_types): Add new MCU types.
	* config/avr/avr.h (CPP_SPEC): Likewise.
	(LINK_SPEC): Likewise.
	(CRT_BINUTILS_SPECS): Likewise.
	* config/avr/t-avr (MULTILIB_MATCHES): Likewise.
	* doc/invoke.texi (AVR Options): Document them.

Mon Jan  7 11:59:34 CET 2002  Jan Hubicka  <jh@suse.cz>

	* unroll.c (copy_loop_body): Always properly update JUMP_LABEL and
	LABEL_NUSES.

2002-01-07  Graham Stott  <grahams@redhat.com>

	* config/i386/i386.h: Update copyright date.
	(HALF_PIC_PTR): Add parenthesis.
	(OPTIMIZATION_OPTIONS): Whitespace, add parenthesis and wrap.
	(CONSTANT_ALIGNMENT): Add parenthesis.
	(DATA_ALIGNMENT): Likewise.
	(LOCAL_ALIGNMENT): Likewise.
	(FUNCTION_ARG_BOUNDARY): Whitespace, add parenthesis and wrap.
	(IS_STACK_MODE): Uppercase macro parameter, add parenthesis and wrap.
	(CONDITIONAL_REGISTER_USAGE): Wrap in do {...} while (0).
	(HARD_REGNO_NREGS): Add paranethesis.
	(VALID_SSE_REG_MODE): Whitespace.
	(VALID_MMX_REG_MODE): Whitespace.
	(VALID_FP_MODE_P): Uppercase macros parameter and whitespace.
	(ix86_hard_regno_mode_ok): Add parenthesis.
	(HARD_REGNO_CALLER_SAVE_MODE): Whitespace.
	(RETURN_IN_MEMORY): Whitespace.
	(N_REG_CLASSES): Add parenthesis.
	(INTEGER_CLASS_P): Add parenthesis and wrap.
	(FLOAT_CLASS_P): Likewise.
	(SSE_CLASS_P): Likewise.
	(MMX_CLASS_P): Likewise.
	(MAYBE_INTEGER_CLASS_P): Likewise.
	(MAYBE_FLOAT_CLASS_P): Likewise.
	(MAYBE_SSE_CLASS_P): Likewise.
	(MAYBE_MMX_CLASS_P): Likewise.
	(Q_CLASS_P): Likewise.
	(GENERAL_REGNO_P): Uppercase macro parameter.
	(REX_INT_REGNO_P): Uppercase macro parameter and wrap.
	(FP_REGNO_P): Likewise.
	(ANY_FP_REGNO_P): Uppercase macro parameter.
	(SSE_REGNO_P): Likewise.
	(SSE_REGNO): Likewise.
	(SSE_REG_P): Likewise.
	(SSE_FLOAT_MODE_P): Likewise.
	(MMX_REGNO_P): Likewise.
	(MMX_REG_P):Likewise.
	(STACK_REG_P): Likewise.
	(NON_STACK_REG_P): Likewise.
	(STACK_TOP_P): Likewise.
	(CONVERT_HARD_REGISTER_TO_SSA_P): Add parenthesis.
	(PREFERRED_RELOAD_CLASS): Add parenthesis and whitespace.
	(SECONDARY_MEMORY_NEEDED): Likewise.
	(SECONDARY_OUTPUT_RELOAD_CLASS): Whitespace.
	(MD_ASM_CLOBBERS): Whitespace and wrap.
	(MUST_PASS_IN_STACK): Whitespace and wrap.
	(RETURN_POPS_ARGS): Add parenthesis.
	(INIT_CUMULATIVE_ARGS): Likewise.
	(FUNCTION_ARG): Likewise.
	(FUNCTION_OK_FOR_SIBCALL): Add parenthesis and whitespace.
	(SETUP_INCOMING_VARARGS): Likewise.
	(BUILD_VA_LIST_TYPE):  Add parenthesis.
	(EXPAND_BUILTIN_VA_START): Uppercase macro paremeters and add
	parenthsis.
	(EXPAND_BUILTIN_VA_ARG): Likewise.
	(FUNCTION_PROFILER): Wrap in do { ... } while (0) and add parenthesis.
	(INITIALIZE_TRAMPOLINE): Add parenthesis.
	(INITIAL_ELIMINATION_OFFSET): Likewise.
	(REGNO_OK_FOR_INDEX_P): Add parenthesis.
	(REGNO_OK_FOR_BASE_P): Likewise.
	(REGNO_OK_FOR_SIREG_P): Add parenthesis and wrap.
	(REGNO_OK_FOR_DIREG_P): Likewise.
	(REG_OK_FOR_INDEX_P): Whitespace.
	(REG_OK_FOR_BASE_P): Whitespace.
	(GO_IF_LEGITIMATE_ADDRESS): Wrap in do { ... } while (0) and add
	parenthesis.
	(FIND_BASE_TERM): Fix typo.
	(LEGITIMIZE_ADDRESS): Wrap in  { .. } while (0) and add parenthesis.
	(REWRITE_ADDRESS): Uppercase macro parameter and whitespace.
	(SYMBOLIC_CONST; Whitespace.
	(GO_IF_MODE_DEPENDENT_ADDRESS):Wrap in  { .. } while (0) and wrap.
	(ENCODE_SECTION_INFO): Whitespace.
	(FINALIZE_PIC): Remove do { ... } while (0).
	(PROMOTE_MODE): Wrap in do { ... } while (0).
	(CONST_COSTS): Whitespace.
	(RTX_COSTS): Add paramethesis, whitespace and wrap.
	(REGISTER_MOVE_COST): Add parenthesis.
	(MEMORY_MOVE_COST): Likewise.
	(EXTRA_CC_MODES): Whitespace.
	(SELECT_CC_MODE): Add parenthesis and whitespace.
	(DBX_REGISTER_NUMBER): Uppercase macro parameter and add parenthsis.
	(ASM_PREFERRED_EH_DATA_FORMAT): Add parenthesis and whitespace.
	(ASM_OUTPUT_LABEL): Add paramethesis.
	(ASM_OUTPUT_REG_PUSH): Add parenthesis and whitespace.
	(ASM_OUTPUT_REG_POP): Likewise.
	(ASM_OUTPUT_ADDR_VEC_ELT): Add parenthesis.
	(ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.

	* config/i386/i386.c: Update copyright.
	(CHECK_STACK_LIMIT): Add parenthesis.
	(AT_BP): Uppercase macro parameter.
	(x86_64_int_parameter_registers): Constify.
	(x86_64_int_return_registers): Likewise.
	(ix86_compare_op0): Use rtx.
	(construct_container): Constify INTREG parameter.
	(function_arg): Use rtx.

	* diagnostic.h: Update copyright date.
	(output_buffer_state): Add parenthesis.
	(output_buffer_format_args): Likewise.

	* combine.c (combine_instructions): Replace XEXP (links, 0)
	with link.

2002-01-06  H.J. Lu <hjl@gnu.org>

	* cfgcleanup.c (thread_jump): Fix 2 typos.

2002-01-06  Aldy Hernandez  <aldyh@redhat.com>

	* config.gcc: Add support for --enable-altivec.

2002-01-06  Craig Rodrigues  <rodrigc@gcc.gnu.org>

	* emit-rtl.c (gen_highpart): Add check for NULL_RTX.

2002-01-06  Jakub Jelinek  <jakub@redhat.com>

	* objc/objc-act.c (handle_impent): Use assemble_variable to emit
	__objc_class_name_*.

2002-01-06  Craig Rodrigues  <rodrigc@gcc.gnu.org>

	* doc/install.texi (sparcv9-*-solaris2*): Add documentation.

2002-01-06  Richard Henderson  <rth@redhat.com>

	* reorg.c (emit_delay_sequence): Remove death notes, not merely
	nop them out.  Increment label reference count for REG_LABEL.
	(fill_slots_from_thread): Frob label reference count around
	delete_related_insns.

2002-01-05  Richard Henderson  <rth@redhat.com>

	* cfgcleanup.c (try_forward_edges): Detect infinite loops while
	jump threading.

2002-01-05  Richard Henderson  <rth@redhat.com>

	* c-decl.c (c_expand_body): Don't call outlining_inline_function.
	* integrate.c (output_inline_function): Likewise.
	* toplev.c (rest_of_compilation): Do it here instead.  Move call
	to remove_unnecessary_notes after emitting abstract instance.
	Force an emitted nested function to have its parent emited as well.
	* dwarf2out.c (loc_descriptor_from_tree): Read mode after checking
	for null.
	(rtl_for_decl_location): Do not look at reload data structures
	before reload has run.

2002-01-05  Kazu Hirata  <kazu@hxi.com>

	* cse.c: Fix formatting.
	* dwarf2asm.c: Likewise.
	* dwarf2out.c: Likewise.
	* explow.c: Likewise.
	* expmed.c: Likewise.
	* function.c: Likewise.
	* gcov.c: Likewise.
	* gencheck.c: Likewise.
	* genrecog.c: Likewise.
	* ggc-common.c: Likewise.
	* ggc-page.c: Likewise.
	* global.c: Likewise.

2002-01-05  Kazu Hirata  <kazu@hxi.com>

	* combine.c: Fix formatting.

2002-01-05  Craig Rodrigues  <crodrigu@bbn.com>

	PR middle-end/1557
	* config/ia64/ia64.h (RENAME_EXTENDED_BLOCKS): Remove.

2002-01-05  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.h (TARGET_POWERPC): For IN_LIBGCC2, define
	as 1 for __powerpc64__ as well.

	* config/rs6000/t-aix43 (T_ADAFLAGS): Define.

	* alias.c (find_base_value, PLUS/MINUS): If we found a base,
	return it.

2002-01-05  Daniel Berlin  <dan@dberlin.org>

	* lcm.c: Revert change, due to performance regression it causes on
	SPEC because it's slightly more conservative (sigh, I hate
	edge-based LCM).

Sat Jan  5 11:52:05 CET 2002  Jan Hubicka  <jh@suse.cz>

	* cfgcleanup.c (try_forward_edges): Allow multiple jump threading.

2002-01-05  Neil Booth  <neil@daikokuya.demon.co.uk>

	* doc/cppinternals.texi: Update.

2002-01-05  Hans-Peter Nilsson  <hp@bitrange.com>

	* doc/invoke.texi (Option Summary) <MMIX Options>: Document
	-mbranch-predict, -mreg-stack-fill-bug-workaround and their
	negatives.
	(MMIX Options): Ditto.  Fix item/itemx typo for -mno-zero-extend.
	* config/mmix/mmix.c (mmix_target_asm_function_prologue): Rework
	kludge for pre-october-14th mmix versions to handle new-found bug
	with PUSHJ/PUSHGO and the register stack.
	* config/mmix/mmix.h (struct machine_function): Rename member
	has_call_value_without_parameters to has_call_without_parameters.
	All referers changed.
	(TARGET_MASK_REG_STACK_FILL_BUG, TARGET_DEFAULT
	TARGET_MASK_BRANCH_PREDICT): New macros.
	(TARGET_SWITCHES): New options -mreg-stack-fill-bug-workaround,
	-mno-reg-stack-fill-bug-workaround.
	* config/mmix/mmix.md ("call"): Set struct machine member
	has_call_without_parameters.

Sat Jan  5 02:20:22 CET 2002  Jan Hubicka  <jh@suse.cz>

	* cfgcleanup.c (thread_jump): Fix handling of reversed branches.

Sat Jan  5 01:35:29 CET 2002  Jan Hubicka  <jh@suse.cz>

	* cfgcleanup.c: Include tm_p.h
	(mark_effect): Fix handling of hard register; fix handling of SET

2002-01-04  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.md (anonymous patterns): Check that
	operands are registers before using REGNO on them.

2002-01-03  Roland McGrath  <roland@frob.com>

	* doc/invoke.texi (RS/6000 and PowerPC Options): Add -mcall-gnu.

2002-01-04  Jakub Jelinek  <jakub@redhat.com>

	* tree.h (expand_expr_stmt_value): Add maybe_last argument.
	* c-common.h (genrtl_expr_stmt_value): Likewise.
	* stmt.c (expand_expr_stmt): Pass 1 as maybe_last.
	(expand_expr_stmt_value): Add maybe_last argument.
	Don't warn about statement with no effect if it is the last statement
	in expression statement.
	* c-semantics.c (genrtl_expr_stmt): Pass 1 as maybe_last.
	(genrtl_expr_stmt_value): Add maybe_last argument, pass it down to
	expand_expr_stmt_value.
	(expand_stmt) [EXPR_STMT]: Pass 1 as maybe_last to
	genrtl_expr_stmt_value if t is the last EXPR_STMT in its scope.
	* expr.c (expand_expr) [LABELED_BLOCK_EXPR, LOOP_EXPR]: Pass 1
	as maybe_last to expand_expr_stmt_value.

Fri Jan  4 11:45:05 2002  Jeffrey A Law  (law@redhat.com)

	* c-common.c (c_expand_start_cond): Expect the IF_STMT node to
	be passed in, do not build it.
	(c_begin_if_stmt): New function.
	(c_begin_while_stmt, c_finish_while_stmt_cond): Likewise.
	* c-common.h (c_expand_start_cond): Update prototype.
	(c_begin_if_stmt): Prototype new function.
	(c_begin_while_stmt, c_finish_while_stmt_cond): Likewise.
	* c-parse.in (if_prefix): Use c_begin_if_stmt,
	c_begin_while_stmt and c_finish_while_stmt_cond.

2002-01-04  William Cohen  <wcohen@redhat.com>

	* config/pa/elf.h (ASM_FILE_START): Reverted to profile_flag.
	* config/pa/pa-linux.h (ASM_FILE_START): Likewise.
	* config/pa/pa64-hpux.h (ASM_FILE_START): Likewise.
	* config/pa/som.h (ASM_FILE_START): Likewise.

2002-01-04  Daniel Berlin  <dan@cgsoftware.com>

	* lcm.c: Include df.h.
	Add available_transfer_function prototype.
	(compute_available): Rework to use iterative dataflow framework.
	(struct bb_info): s/bb_info/lcm_bb_info/g to avoid conflict
	with bb_info in df.h
	(available_transfer_function): New function.

	* Makefile.in (lcm.o): add df.h to dependencies.

2002-01-04  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.c (some_operand): Accept HIGH.
	(input_operand): Likewise; accept simple references to globals.
	(alpha_const_ok_for_letter_p): New, outlined from alpha.h.
	(alpha_const_double_ok_for_letter_p): Likewise.
	(alpha_extra_constraint): Likewise.
	(alpha_preferred_reload_class): Likewise.  Do not force
	symbolic constants to memory.
	(alpha_legitimate_address_p): Accept simple references
	to small_symbolic_operand.
	(alpha_legitimize_address): New arg scratch.  Be prepared to be
	called when no_new_pseudos.  Emit simple symbolic references.
	Split integers into low, high, and rest.
	(alpha_expand_mov): Use alpha_legitimize_address.
	(some_small_symbolic_mem_operand): New.
	(split_small_symbolic_mem_operand): New.
	* config/alpha/alpha-protos.h: Update.
	* config/alpha/alpha.h (CONST_OK_FOR_LETTER_P): Out-line.
	(CONST_DOUBLE_OK_FOR_LETTER_P): Likewise.
	(EXTRA_CONSTRAINT): Likewise.
	(PREFERRED_RELOAD_CLASS): Likewise.
	(LEGITIMIZE_ADDRESS): Update for alpha_legitimize_address change.
	(PREDICATE_CODES): Update.
	* config/alpha/alpha.md: New post-reload splitters to convert
	simplfied symbolic operands to the form that references $29.
	(divide expanders): Use emit_move_insn, not gen_movdi_er_high_g.
	(movdi_er_nofix, movdi_er_fix): Accept any symbolic operand.

2002-01-03  Richard Henderson  <rth@redhat.com>

	* local-alloc.c (function_invariant_p): Update commentary.

2002-01-04  H.J. Lu <hjl@gnu.org>

	* toplev.c (rest_of_compilation): Fix a typo when calling
	cleanup_cfg.

2002-01-03  Kazu Hirata  <kazu@hxi.com>

	* c-common.c: Fix formatting.
	* diagnostic.c: Likewise.
	* doloop.c: Likewise.
	* dwarf2out.c: Likewise.

2002-01-03  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.c (output_logical_op): Use 'not.w' instead
	of 'neg.w' when xoring with 0x0000ffff or 0xffff0000.

2002-01-03  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cpperror.c: Update comments and copyright.
	* cppexp.c, cppfiles.c, cpphash.c, cpphash.h, cppinit.c,
	cpplex.c, cpplib.c, cpplib.h, cppmacro.c, cppmain.c: Similarly.

2002-01-03  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* collect2.c (main): Use strcmp when testing for "-shared".

2002-01-03  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cppmacro.c: Don't include intl.h.  Update comments.
	(new_number_token): Allocate enough buffer for 64-bit unsigned
	integers; update prototype.
	* cppmain.c: Update comments.

2002-01-03  William Cohen  <wcohen@redhat.com>

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

2002-01-03  Jakub Jelinek  <jakub@redhat.com>

	* simplify-rtx.c (simplify_binary_operation) [DIV]: If
	gen_lowpart_common fails, use gen_lowpart_SUBREG.

2002-01-03  Turly O'Connor  <turly@apple.com>

	* darwin.c (machopic_output_possible_stub_label): Don't generate
	stub routines for pseudo-stubs which we've just defined.

2002-01-03  Kazu Hirata  <kazu@hxi.com>

	* builtins.c: Fix formatting.
	* c-typeck.c: Likewise.
	* combine.c: Likewise.
	* expr.c: Likewise.
	* loop.c: Likewise.

2002-01-03  Andreas Schwab  <schwab@suse.de>

	* cppfiles.c (_cpp_pop_file_buffer): Change return type to bool
	and return true if _cpp_push_next_buffer pushed a new include
	file.
	* cpplib.c (_cpp_pop_buffer): Only call obstack_free if
	_cpp_pop_file_buffer did not push a new file.
	* cpphash.h (_cpp_pop_file_buffer): Update declaration.

2002-01-02  Eric Christopher  <echristo@redhat.com>

	* final.c (final_scan_insn): Change 0 -> NULL_RTX in
	FIND_REG_INC_NOTE call. Update copyright.
	* loop.c (canonicalize_condition): Ditto.
	* reorg.c (delete_scheduled_jump): Ditto.

2002-01-03  Kazu Hirata  <kazu@hxi.com>

	* gcse.c: Fix formatting.

2002-01-03  Graham Stott  <grahams@redhat.com>

	* mkconfig.sh: Output to config.h, hconfig.h and tconfig.h
	forward defs for struct tags rtx_def, union_tree, rtvec_def
	also output corresponding typedefs for rtx, tree, and rtvec.

	* system.h: Move forward defs for struct tags rtx_def, union_tree,
	rtvec_def along with corresponding typedefs for rtx, tree, and
	rtvec to config.h, hconfig.h, tconfig.h.

2002-01-03  Graham Stott  <grahams@redhat.com>

	* tree.h: Update copyright date.
	(IS_EXPR_CODE_CLASS): Add parenthesis.
	(TREE_SET_CODE): Add whitespace.
	(TREE_CHECK): Add parenthesis.
	(TREE_CLASS_CODE): Add parenthesis and wrap long line.
	(CST_OR_CONSTRUCTOR_CHECK):
	(EXPR_CHECK): Add parenthis, whitespace and wrap line.
	(TREE_SYMBOL_REFERENCED): Whitespace.
	(INT_CST_LT): Likewise.
	(INT_CST_LT_UNSIGNED): Likewise.
	(tree_real_cst): Unwrap comment.
	(tree_string): Likewise.
	(tree_complex): Likewise.
	(IDENTIFIER_POINTER): correct cast.
	(SAVE_EXPR_CONTEXT): Whitespace.
	(EXPR_WFL_FILENAME_NODE): Likewise.
	(EXPR_WFL_FILENAME): Remove parenthesis.
	(DECL_ORIGIN): Add parenthesis.
	(DECL_FROM_INLINE): Use NULL_TREE.
	(build_int_2): Whitespace.
	(build_type_variant): Add parenthesis.

	* gcc/jcf-parse.c: Update copyright date.
	(yyparse): Constify resource_filename.

2002-01-03  Graham Stott  <grahams@redhat.com>

	* rtl.h: Update copyright date.
	(RTL_CHECK1): Wrap long line.
	(RTL_CHECK2): Likewise.
	(RTL_CHECKC1): Wrap long line and whitespace.
	(RTL_CHECKC2): Likewise.
	(XWINT): Whitespace.
	(XINT): Likewise.
	(XSTR): Likewise.
	(XEXP): Likewise.
	(XVEC): Likewise.
	(XMODE): Likewise.
	(XBITMAP): Likewise.
	(XTREE): Likewise.
	(XBBDEF): Likewise.
	(XTMPL): Likewise.
	(X0WINT): Likewise.
	(X0INT):Likewise.
	(X0UINT): Likewise.
	(X0STR): Likewise.
	(X0EXP): Likewise.
	(X0VEC): Likewise.
	(X0MODE): Likewise.
	(X0BITMAP): Likewise.
	(X0TREE): Likewise.
	(X0BBDEF): Likewise.
	(X0ADVFLAGS): Likewise.
	(X0CSELIB): Likewise.
	(X0MEMATTR): Likewise.
	(XCWINT): Likewise.
	(XCINT): Likewise.
	(XCUINT): Likewise.
	(XCSTR): Likewise.
	(XCEXP): Likewise.
	(XCVEC): Likewise.
	(XCMODE): Likewise.
	(XCBITMAP): Likewise.
	(XCTREE): Likewise.
	(XCBBDEF): Likewise.
	(XCADVFLAGS): Likewise.
	(XCCSELIB): Likewise.
	(XC2EXP): Likewise.
	(INSN_UID): Likewise.
	(PREV_INSN): Likewise.
	(PATTERN): Likewise.
	(INSN_CODE): Likewise.
	(PUT_REG_NOTE_KIND): Likewise.
	(CODE_LABEL_NUMBER): Likewise.
	(NOTE_SOURCE_FILE): Likewise.
	(NOTE_BLOCK): Likewise.
	(NOTE_EH_HANDLER): Likewise.
	(NOTE_RANGE_INFO): Likewise.
	(NOTE_LIVE_INFO): Likewise.
	(NOTE_BASIC_BLOCK): Likewise.
	(NOTE_EXPECTED_VALUE): Likewise.
	(NOTE_LINE_NUMBER): Likewise.
	(LABEL_NAME): Likewise.
	(LABEL_NUSES): Likewise.
	(LABEL_ALTERNATE_NAME): Likewise.
	(ADDRESSOF_DECL): Likewise.
	(JUMP_LABEL): Likewise.
	(LABEL_NEXTREF): Likewise.
	(REGNO): Likewise.
	(ORIGINAL_REGNO: Likewise.
	(HARD_REGISTER_NUM_P): Add parenthesis.
	(SUBREG_REG): Whitespace.
	(SUBREG_BYTE): Likewise.
	(ASM_OPERANDS_TEMPLATE): Remove parenthesis.
	(ASM_OPERANDS_OUTPUT_CONSTRAINT): Likewise.
	(ASM_OPERANDS_OUTPUT_IDX): Likewise.
	(ASM_OPERANDS_INPUT_VEC): Likewise.
	(ASM_OPERANDS_INPUT_CONSTRAINT_VEC): Likewise.
	(ASM_OPERANDS_INPUT): Likewise.
	(ASM_OPERANDS_INPUT_LENGTH): Likewise.
	(ASM_OPERANDS_INPUT_CONSTRAINT_EXP): Likewise.
	(ASM_OPERANDS_INPUT_CONSTRAINT): Likewise.
	(ASM_OPERANDS_INPUT_MODE): Likewise.
	(ASM_OPERANDS_SOURCE_FILE): Likewise.
	(ASM_OPERANDS_SOURCE_LINE): Likewise.
	(MEM_SET_IN_STRUCT_P): Minor reformat.
	(TRAP_CONDITION): Whitespace.
	(TRAP_CODE): Likewise.
	(COND_EXEC_TEST): Likewise.
	(COND_EXEC_CODE): Likewise.
	(FIND_REG_INC_NOTE): Uppercase macro args and add parenthesis.
	(PHI_NODE_P): Add parenthesis.
	(plus_constant): Whitespace and add parenthesis.

2002-01-03  Kazu Hirata  <kazu@hxi.com>

	* config/avr/avr.c: Fix comment typos.
	* config/c4x/c4x.md: Likewise.
	* config/dsp16xx/dsp16xx.h: Likewise.
	* config/dsp16xx/dsp16xx.md: Likewise.
	* config/i386/i386.md: Likewise.
	* config/ia64/ia64.c: Likewise.
	* config/m32r/m32r.h: Likewise.
	* config/m68hc11/m68hc11.md: Likewise.
	* config/mmix/mmix.c: Likewise.
	* config/mn10200/mn10200.c: Likewise.
	* config/romp/romp.c: Likewise.
	* config/sh/sh.c: Likewise.
	* config/stormy16/stormy16.c: Likewise.
	* config/stormy16/stormy16.h: Likewise.
	* config/stormy16/stormy16.md: Likewise.

2002-01-03  Graham Stott  <grahams@redhat.com>

	* loop.h: Update copyright date.
	(LOOP_MOVABLES): Fix typo.
	(LOOP_REGS): Likewise.
	(LOOP_IVS): Likewise.

2002-01-03  Graham Stott  <grahams@redhat.com>

	* cppinit.c: Update copyright date.
	Don't include output.h
	* Makefile.in: Update copyright date.
	Update dependency.

2002-01-02  Craig Rodrigues  <rodrigc@gcc.gnu.org>

	PR c/5226
	* invoke.texi (-mthreads): Remove from documented RS/6000 options.
	(-pthread) Add to RS/6000 options.

2002-01-02  Kazu Hirata  <kazu@hxi.com>

	* except.c: Fix comment typos.
	* loop.c: Likewise.
	* varasm.c: Likewise.
	* doc/tm.texi: Fix a typo.

2002-01-02  Jakub Jelinek  <jakub@redhat.com>

	* c-typeck.c (output_init_element): Allow initializing static storage
	duration objects with compound literals.

2002-01-02  Richard Henderson  <rth@redhat.com>

	* objc/objc-act.c (hack_method_prototype): Clear current_function_decl
	after abusing it.

2002-01-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* gcc.c (default_compilers): Const-ify.
	* mips-tdump.c (stab_names): Likewise.
	* mips-tfile.c (map_coff_types, map_coff_storage,
	map_coff_sym_type, map_coff_derived_type, stabs_symbol,
	pseudo_ops_t, pseudo_ops): Likewise.
	* protoize.c (default_include): Likewise

	* real.c (GET_REAL, PUT_REAL): Don't cast away const-ness.
	(ezero, ehalf, eone, etwo, e32, elog2, esqrt2, epi): Const-ify.
	Add array size in declaration.
	(endian, emov, eisneg, eisinf, eisnan, eiisnan, eiisneg, emovi,
	emovo, emovz, eiisinf, ecmpm, eaddm, esubm, m16m, edivm, emulm,
	esub, eadd, eadd1, ediv, emul, e53toe, e64toe, e113toe, e24toe,
	etoe113, etoe64, etoe53, etoe24, ecmp, eround, ltoe, ultoe,
	eifrac, euifrac, e24toasc, e53toasc, e64toasc, e113toasc, etoasc,
	efloor, efrexp, eldexp, eremain, dectoe, etodec, ibmtoe, etoibm,
	c4xtoe, etoc4x, uditoe, ditoe, etoudi, etodi, esqrt, etens,
	emtens, make_nan): Const-ify.
	(TFbignan, TFlittlenan, XFbignan, XFlittlenan, DFbignan,
	DFlittlenan, SFbignan, SFlittlenan): Make static and const-ify.

2002-01-02  Joseph S. Myers  <jsm28@cam.ac.uk>

	* config.gcc (ia64-*-*): Set extra_headers.
	(alpha*-dec-osf*): Likewise.  Don't use alpha/t-osf.
	* config/alpha/t-osf: Remove.
	* config/ia64/t-ia64 (EXTRA_HEADERS): Remove.

2002-01-02  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/t-aix43: Revert previous change.

2002-01-02  Jason Merrill  <jason@redhat.com>

	* c-decl.c (c_expand_body): Call outlining_inline_function when
	emitting an inline function out of line.

2002-01-02  Richard Henderson  <rth@redhat.com>

	* dwarf2out.c (limbo_die_node): Add created_for member.
	(new_die): New argument created_for.  Update all callers.
	(mark_limbo_die_list): New.
	(dwarf2out_init): Register limbo_die_list as a root.
	(dwarf2out_finish): Force insert limbo dies into their function
	context.

2002-01-02  Nathan Sidwell  <nathan@codesourcery.com>

	PR c++/5089
	* doc/invoke.texi (-Wold-style-cast): Only warn about non-void casts.

2002-01-02  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/fixunssfsi.c: Update copyright.
	Fix comment typos.
	Fix formatting.
	* config/h8300/h8300.c: Update copyright.
	Eliminate warnings.

2002-01-02  Kazu Hirata  <kazu@hxi.com>

	* config/romp/romp.c: Fix comment formatting.
	* config/romp/romp.h: Likewise.
	* config/romp/romp.md: Likewise.
	* config/s390/s390.c: Likewise.
	* config/stormy16/stormy16.c: Likewise.
	* config/stormy16/stormy16.h: Likewise.

2002-01-02  Alexandre Oliva  <aoliva@redhat.com>

	* c-common.h (genrtl_expr_stmt_value): Declare.
	* c-semantics.c (genrtl_goto_stmt): Redirect to...
	(genrtl_goto_stmt_value): ... this new function.  Pass new
	argument down to expand_expr_stmt_value, taking
	TREE_ADDRESSABLE into account.
	* c-common.c (c_expand_expr): Mark the last EXPR_STMT of a
	STMT_EXPR as addressable, i.e., one whose result we want.
	* expr.c (expand_expr): Don't save expression statement value
	of labeled_blocks or loop_exprs.
	* stmt.c (expand_expr_stmt): Redirect to...
	(expand_expr_stmt_value): ... this new function.  Use new
	argument to tell whether to save expression value.
	(expand_end_stmt_expr): Reset last_expr_type and
	last_expr_value if we don't have either.
	* tree-inline.c (declare_return_variable): Mark its use
	statement as addressable.
	* tree.h: Document new use of TREE_ADDRESSABLE.
	(expand_expr_stmt_value): Declare.

2002-01-01  Tom Rix  <trix@redhat.com>

	* config/rs6000/rs6000.c (rs6000_emit_set_long_const): Fix for use by
	rs6000_emit_allocate_stack.

2002-01-01  Joseph S. Myers  <jsm28@cam.ac.uk>

	* configure.in: Prepend ${srcdir}/config/${cpu_type}/ instead of
	${srcdir}/ginclude/ to every entry in extra_headers.
	* configure: Regenerate.
	* ginclude/math-3300.h: Rename to config/m68k/math-3300.h.
	* ginclude/math-68881.h: Rename to config/m68k/math-68881.h.
	* ginclude/ppc-asm.h: Rename to config/rs6000/ppc-asm.h.
	* ginclude/proto.h: Rename to config/convex/proto.h.

Tue Jan  1 17:12:56 2002  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* attribs.c (handle_vector_size_attribute): Use host_integerp
	and tree_int_cst; remove warnings.
	* caller-save.c (insert_restore): Add cast to get rid of warning.
	(insert_save): Likewise.
	* emit-rtl.c (adjust_address_1, offset_address): Likewise.
	* regmove.c (find_matches): Add temporary var to kill a warning.

2002-01-01  Douglas B Rupp  <rupp@gnat.com>

	* config/alpha/vms.h (DWARF2_UNWIND_INFO, EH_RETURN_HANDLER_RTX,
	LINK_EH_SPEC, MD_FALLBACK_FRAME_STATE_FOR): Define.
	* config/alpha/t-vms (EXTRA_PARTS): Add vms-dwarf2eh.o
	(vms-dwarf2eh.o): Add Makefile rule.
	* config/alpha/vms-ld.c (main): Handle vms-dwarf2eh.o.
	* config/alpha/vms-dwarf2eh.asm: New file.

	* gcc.c (delete_if_ordinary): Delete all versions.

2002-01-01  Hans-Peter Nilsson  <hp@bitrange.com>

	* config/mmix/mmix.md: Update FIXME to not mention
	define_constants.
	(MMIX_rJ_REGNUM): New define_constants constant.
	("movqi", "movsi", "movdi", "*movdicc_real_foldable",
	"*movdicc_real"): Adjust contraints formatting.
	("*bCC_foldable"): Add %+ for P in output format and delete FIXME
	for branch prediction.
	("*bCC", "*bCC_inverted_foldable", "*bCC_inverted"): Add %+ in
	output template.
	("*call_real", "*call_value_real", "nonlocal_goto_receiver",
	"*nonlocal_goto_receiver_expanded"): Use MMIX_rJ_REGNUM instead of
	number.  Delete related FIXMEs.
	* config/mmix/mmix.h (MMIX_INCOMING_RETURN_ADDRESS_REGNUM): Change
	from number to MMIX_rJ_REGNUM.
	(TARGET_MASK_BRANCH_PREDICT): New.
	(TARGET_DEFAULT): Change to TARGET_MASK_BRANCH_PREDICT.
	(TARGET_SWITCHES): Update comment.  Correct -mno-toplevel-symbols
	value.  Add -mbranch-predict and -mno-branch-predict.
	(TARGET_VERSION): Drop date.
	(ADDITIONAL_REGISTER_NAMES): Use MMIX_rJ_REGNUM, not number.
	* config/mmix/mmix.c (mmix_encode_section_info): Correct condition
	for finding out global symbols.
	(mmix_asm_output_labelref): Revert condition for global symbol.
	(mmix_print_operand): <case '+'>: Emit P for a likely branch.
	(mmix_print_operand_punct_valid_p): A '+' is valid.

See ChangeLog.6 for earlier changes.
