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

	* rtl.def (DEFINE_INSN, DEFINE_INSN_AND_SPLIT, DEFINE_PEEPHOLE):
	Change output-template slot to format 'T'.
	* rtl.h (XTMPL): New.
	* read-rtl.c (read_escape): New function.
	(read_quoted_string, read_braced_string): Use it.
	(read_rtx): Set star_if_braced from the format string.
	Use XTMPL where appropriate.
	* genoutput.c (gen_insn, gen_peephole): Use XTMPL to get the
	template string.

	* rtl.c: Include errors.h for sake of rtl_check_failed* routines.
	Document 'T' in rtx format strings.
	* Makefile.in (rtl.o, $(HOST_PREFIX_1)rtl.o): Depend on errors.h.
	* errors.c (internal_error): Add missing ": " at end of string.

	* i860.md: Change triple backslashes to double backslashes at
	ends of lines in output templates.
	* ns32k.md: Remove stray backslash-newline in output template.

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

	* gcc.c (process_command): Append a DIR_SEPARATOR to a path
	specified by the -B switch, if doing so would create a valid
	directory name.
	* doc/invoke.texi: Document changed behavior of -B.

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

	* simplify-rtx.c (simplify_subreg): When simplifying a CONCAT, at
	least get rid of the CONCAT if we can't simplify further.

Fri Jun 29 12:27:24 2001  Jeffrey A Law  (law@cygnus.com)

	* simplify-rtx.c (simplify_rtx): Use swap_commutative_operands_p.

	* doc/gcc.texi (Passes): Update due to recent -fdce -> -fssa-dce
	changes.  Fix documentation for SSA DCE pass.

	* ssa-dce.c (ssa_eliminate_dead_code): Renamed from
	eliminate_date_code.
	* ssa.h (ssa_eliminate_dead_code): Corresponding changes.
	* timevar.def (TV_SSA_DCE): Renamed from TV_DEAD_CODE_ELIM.
	* toplev.c (DFI_ssa_dce): Renamed from DFI_dce.
	(dump_file_info): Similar changes.
	(flag_ssa_dce): Similarly
	(f_options): Similar changes.
	(rest_of_compilation): Corresponding changes.
	* doc/invoke.texi: Update as option is now -fssa-dce instead
	of -fdce.  Update dump file name.

	* ssa-dce.c (note_inherently_necessary_set): New function.
	(find_inherently_necessary): Use it.  Do not consider
	NOTEs, CODE_LABELs or BARRIERS are necessary.  Improve
	handling of asms and unspecs.
	(delete_insn_bb): Only delete INSNs, CALL_INSNs or JUMP_INSNs.

2001-06-29  Joseph S. Myers  <jsm28@cam.ac.uk>

	* target.h (struct gcc_target): Add comp_type_attributes and
	set_default_type_attributes.
	* target-def.h (TARGET_COMP_TYPE_ATTRIBUTES,
	TARGET_SET_DEFAULT_TYPE_ATTRIBUTES): Define.
	(TARGET_INITIALIZER): Update.
	* doc/tm.texi (COMP_TYPE_ATTRIBUTES, TARGET_COMP_TYPE_ATTRIBUTES,
	SET_DEFAULT_TYPE_ATTRIBUTES, TARGET_SET_DEFAULT_TYPE_ATTRIBUTES):
	Update documentation of old target macros to describe new target
	hooks.
	* tree.c (make_node): Use target.set_default_type_attributes.
	(default_comp_type_attributes,
	default_set_default_type_attributes): New functions.
	* tree.h (default_comp_type_attributes,
	default_set_default_type_attributes): Declare.
	* c-typeck.c (COMP_TYPE_ATTRIBUTES): Don't define.
	(comptypes): Use target.comp_type_attributes.
	* config/arc/arc-protos.h, config/arc/arc.c, config/arc/arc.h
	(arc_comp_type_attributes, arc_set_default_type_attributes,
	COMP_TYPE_ATTRIBUTES, SET_DEFAULT_TYPE_ATTRIBUTES): Remove
	functions and macros with default behavior.
	* config/m32r/m32r-protos.h, config/m32r/m32r.c,
	config/m32r/m32r.h (m32r_comp_type_attributes,
	m32r_set_default_type_attributes, COMP_TYPE_ATTRIBUTES,
	SET_DEFAULT_TYPE_ATTRIBUTES): Likewise.
	* config/m68hc11/m68hc11-protos.h, config/m68hc11/m68hc11.c,
	config/m68hc11/m68hc11.h (m68hc11_comp_type_attributes,
	m68hc11_set_default_type_attributes, COMP_TYPE_ATTRIBUTES,
	SET_DEFAULT_TYPE_ATTRIBUTES): Likewise.
	* config/ns32k/ns32k-protos.h, config/ns32k/ns32k.c,
	config/ns32k/ns32k.h (ns32k_comp_type_attributes,
	COMP_TYPE_ATTRIBUTES): Likewise.
	* config/rs6000/rs6000-protos.h, config/rs6000/rs6000.c,
	config/rs6000/rs6000.h (rs6000_comp_type_attributes,
	rs6000_set_default_type_attributes, COMP_TYPE_ATTRIBUTES,
	SET_DEFAULT_TYPE_ATTRIBUTES): Likewise.
	* config/d30v/d30v.h (COMP_TYPE_ATTRIBUTES,
	SET_DEFAULT_TYPE_ATTRIBUTES): Remove commented out macro
	definitions.
	* config/i386/i386.h (SET_DEFAULT_TYPE_ATTRIBUTES): Likewise.
	* config/ns32k/ns32k.h (SET_DEFAULT_TYPE_ATTRIBUTES): Likewise.
	* config/arm/arm.c (arm_comp_type_attributes,
	arm_set_default_type_attributes): Make static.
	(TARGET_COMP_TYPE_ATTRIBUTES, TARGET_SET_DEFAULT_TYPE_ATTRIBUTES):
	Define.
	* config/arm/arm.h (COMP_TYPE_ATTRIBUTES,
	SET_DEFAULT_TYPE_ATTRIBUTES): Don't define.
	* config/arm/arm-protos.h (arm_comp_type_attributes,
	arm_set_default_type_attributes): Don't declare.
	* config/i386/i386.c (ix86_comp_type_attributes): Make static.
	(TARGET_COMP_TYPE_ATTRIBUTES): Define.
	* config/i386/i386.h (COMP_TYPE_ATTRIBUTES): Don't define.
	* config/i386/i386-protos.h (ix86_comp_type_attributes): Don't
	declare.

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

	* predict.c (dump_prediction): Eliminate fprintf warning.

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

	* flow.c (dump_bb): Remove unused third argument to call
	to fprintf when displaying the basic block header.

2001-06-28  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>
	    Jeff Law <law@redhat.com>

	* Makefile.in (OBJS): Add df.o
	(df.o): Add dependencies.
	* basic-block.h (flow_depth_first_order_compute): Declare.
	* flow.c (flow_depth_first_order_compute): No longer declare.
	Make external.
	* df.c, df.h: New files.

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

	* config/i386/i386.md: Global update to use new string syntax
	where it will improve readability.  Warning fixes:
	(*truncdfsf2_2): Abort if which_alternative is not 0 or 1.
	(*adddi_1_rex64, *adddi_2_rex64, *adddi_3_rex64,
	*adddi_4_rex64, *adddi_5_rex64): Cast 1 to unsigned int.

	* read-rtl.c: Syntactic sugar for C embedded in strings in
	machine descriptions.
	(read_string): Break inner loop into separate function.  Takes
	an int.  Dispatch to read_quoted_string or read_braced_string
	as appropriate.  Automatically insert a leading star on braced
	strings if STAR_IF_BRACED is true.
	(read_quoted_string, read_braced_string): New functions.
	* doc/rtl.texi, doc/md.texi: Document new syntax.  Update
	examples to match.

	* rtl.c: Split RTL reader (read_rtx, read_skip_spaces,
	traverse_md_constants, fatal_with_file_and_line,
	fatal_expected_char, read_name, read_string, def_hash,
	def_name_eq_p, read_constants, and related data) to its own
	file.  Weed out now-unnecessary #includes.
	* read-rtl.c: New file.
	* Makefile.in (HOST_RTL): Add read-rtl.o.
	(read-rtl.o): New rule.
	(rtl.o, $(HOST_PREFIX_1)rtl.o): Update dependencies.
	* doc/gcc.texi (Passes): Talk briefly about the support
	library used by genfoo.
	* doc/rtl.texi (Reading RTL): read_rtx is not available in the
	compiler itself.

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

	* config/darwin.h (REGISTER_TARGET_PRAGMAS): Define.
	* config/darwin-c.c: New file.
	* config/darwin-protos.h: Declare new functions.
	* config/rs6000/t-darwin (darwin-c.o): New rule.
	* config.gcc (powerpc-*-darwin*): Define c_target_objs and
	cxx_target_objs.
	* doc/extend.texi (Pragmas): New section.

Thu Jun 28 20:13:11 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* flow.c (try_merge_block): Rename to try_optimize_cfg;
	do basic simplifications on the CFG.
	(is_forwarder_block_p, can_fallthru, try_redirect_by_replacing_jump,
	 try_simplify_condjump): New.
	(redirect_edge_and_branch): Try replace jump insn.
	(flow_delete_insn): Handle deleting of ADDR_VEC insns.

	* basic-block.h (FALLTHRU_EDGE, BRANCH_EDGE): New macros.

Thu Jun 28 11:19:42 2001  Jeffrey A Law  (law@cygnus.com)

	* ssa-dce.c (eliminate_dead_code): Properly handle control
	dependencies implied by PHI nodes.

	* ssa-dce.c (eliminate_dead_code): Remove fake edges from the
	CFG after dead code elimination is complete.

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

	* gthr-posix.h [LIBOBJC]: Add weak definitions of
	sched_get_priority_max, sched_get_priority_min.

2001-06-28  Gabriel Dos Reis  <gdr@codesourcery.com>

	* diagnostic.c (default_print_error_function): Tweak.
	(report_error_function): Likewise.
	* toplev.h (default_print_error_function): Move to...
	* diagnostic.h: ...here. Add a `diagnostic_context *' parameter.
	* tree.h (print_error_function): Move to...
	* diagnostic.h: ...here. Add a `diagnostic_context *' parameter.

Thu Jun 28 06:16:45 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* expr.c (expand_assignment): When have varying-length object,
	make MEM a BLKmode.
	(expand_expr, case ADDR_EXPR): Use SAVE_EXPR_RTL after putting
	SAVE_EXPR stack in case we had a SUBREG.

Thu Jun 28 10:31:06 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (cmp?i): Simplify; refuse immediate operand
	in alternative 0
	* i386.c (cmpsi_operand): Refuse constants.

	* i386.md (movsi_insv_1, movsi_insv_1_rex64): Allow immediate operand.

	* flow.c (block_label, redirect_edge_and_branch): Split out from ....
	(split_edge) .... here;

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

	* i386/i386.c (ix86_valid_type_attribute_p): Give external
	linkage, move declaration to...
	* i386/i386-protos.h: ...here.

2001-06-27  H.J. Lu  (hjl@gnu.org)

	* build-make (CC): Removed.
	(HOST_CC): Set to $(CC_FOR_BUILD).
	(HOST_CFLAGS): Replace $(CFLAGS) with $(CFLAGS_FOR_BUILD).
	Fix a typo in comments.

	* configure.in: Set CFLAGS to $(CFLAGS_FOR_BUILD) when
	generating auto-build.h for canadian cross compile. Set CC
	to `"${CC_FOR_BUILD}"' instead of just `${CC_FOR_BUILD}'.
	Save/restore CFLAGS.
	* configure: Regenerated.

2001-06-27  Jim Wilson  <wilson@redhat.com>

	* emit-rtl.c (gen_highpart): Call validize_mem.

2001-06-27  Bruce Korb  <bkorb@gnu.org>

	* fixinc/inclhack.def(hpux11_cpp_pow_inline): new, but real similar to
	hpux10_cpp_pow_inline.  Not similar enough.
	(solaris_mutex_init): renamed.  PTHREAD_*_INITIALIZER is a problem for
	all Solaris versions.  This fix patches MUTEX and COND initializers,
	the RWLOCK one will wait for someone to complain.  For now, anyway.
	(uw7_byteorder_fix): It was looking for the byteorder.h file in the
	wrong directory.

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

	* objc/objc-act.c (handle_impent): Rewrite to be more portable
	and to use ASM_DECLARE_CLASS_REFERENCE.
	* config/darwin.h (ASM_DECLARE_CLASS_REFERENCE): Rename from
	undocumented DECLARE_CLASS_REFERENCE, add file argument.
	* doc/tm.texi (ASM_DECLARE_CLASS_REFERENCE): Document.

Wed Jun 27 18:01:09 2001  Jeffrey A Law  (law@cygnus.com)

	* simplify-rtx.c (simplify_rtx): Canonicalize commutative expressions
	by putting complex operands first and constants second.

2001-06-27  Gabriel Dos Reis  <gdr@codesourcery.com>

	* diagnostic.h: Add documentation. Make macros polymorphic.
	* diagnostic.c (ideal_line_wrap_cutoff): Remove
	definition. Replace with diagnostic_line_cutoff.
	(prefixing_policy): Remove. Replace with diagnostic_prefixing_rule.

2001-06-27  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/c-tree.texi, doc/contrib.texi, doc/cpp.texi,
	doc/cppinternals.texi, doc/extend.texi, doc/gcc.texi,
	doc/gcov.texi, doc/install-old.texi, doc/install.texi,
	doc/invoke.texi, doc/md.texi, doc/rtl.texi, doc/tm.texi: Replace
	. at end of sentences preceded by a capital letter with @..

2001-06-26  Daniel Berlin  <dan@cgsoftware.com>

	* doc/invoke.texi: Add description of max-gcse-passes param.

	* gcse.c (gcse_main): Use MAX_GCSE_PASSES instead of MAX_PASSES.
	(MAX_PASSES): Remove now unneeded macro.

	* params.h (MAX_GCSE_PASSES): New macro, to get parameter value of
	max-gcse-passes param.

	* params.def (PARAM_MAX_GCSE_PASSES): New parameter, controlling
	maximum number of GCSE passes to run. Defaults to 1 (which is what
	MAX_PASSES in gcse.c used to be).

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

	* system.h (TARGET_ESC): Move to ...
	* defaults.h (TARGET_ESC): ... here.
	* target-def.h (TARGET_VALID_DECL_ATTRIBUTE,
	TARGET_VALID_TYPE_ATTRIBUTE): Default to a no-op handler.
	* tree.c (default_valid_attribute_p): New.
	(valid_machine_attribute): Handlers can not be NULL.
	* tree.h (default_valid_attribute_p): New.
	* doc/tm.texi: Document TARGET_ESC.
	* cp/decl2.c (import_export_class): Update.

2001-06-26  Bruce Korb  <bkorb@gnu.org>

	* gcc/fixinc/fixincl.c(initialize): In very strict ANSI, you cannot
	use preprocessing directives inside a string literal.  Fixed.

2001-06-26  Jim Wilson  <wilson@redhat.com>

	* doc/tm.texi (MAX_LONG_DOUBLE_TYPE_SIZE, INTEL_EXTENDED_IEEE_FORMAT):
	Document.

2001-06-27  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/cpp.texi, doc/cppinternals.texi, doc/extend.texi,
	doc/gcc.texi, doc/install.texi, doc/invoke.texi, doc/md.texi,
	doc/tm.texi: Use @: where necessary when a full stop does not end
	a sentence.

2001-06-27  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/gcc.texi, doc/install.texi, doc/invoke.texi: Remove trailing
	whitespace.

2001-06-26  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/c-tree.texi, doc/cpp.texi, doc/extend.texi, doc/gcc.texi,
	doc/install.texi, doc/invoke.texi, doc/objc.texi, doc/rtl.texi,
	doc/tm.texi: Use two spaces after ends of sentences.

2001-06-26  Daniel Berlin  <dan@cgsoftware.com>

	* toplev.c (display_help): Fix param thinko.
	* Makefile.in: Fix params.h dependencies.

2001-06-26  Gabriel Dos Reis  <gdr@codesourcery.com>

	* toplev.c (decode_f_option): Adjust setting.
	(toplev_main): Call diagnostic_initialize.  Remove call to
	reshape_diagnostic_buffer._

	* diagnostic.h (struct output_buffer): Add new field format_decoder.
	(diagnostic_format_decoder): New macro.
	(diagnostic_prefixing_rule): Likewise.
	(diagnostic_line_cutoff): Likewise.
	(set_message_prefixing_rule): Remove.

	* diagnostic.c (lang_printer): Remove.
	(diagnostic_message_length_per_line): Likewise.
	(current_prefixing_rule): Likewise.
	(initialize_diagnostics): Rename to...
	(diagnostic_initialize): ...this. Tweak.
	(default_initialize_buffer): Remove.
	(reshape_diagnostic_buffer): Likewise.
	(init_output_buffer): Adjust prefixing rule setting.
	(output_format): Use format_decoder from the output_buffer.

	* c-lang.c (c_init): Adjust tree formatter setting.

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

	* config/i386/sol2.h (CPP_SPEC): Pass -P for .S files.

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

	* Makefile.in (TARGET_H, TARGET_DEF_H): New.
	(c-decl.o, tree.o, c-typeck.o, $(out_object_file)): Update.
	* c-decl.c (duplicate_decls): Use function pointer.
	* c-typeck.c (common_type): Similarly.
	* tree.c (valid_machine_attribute): Similarly.
	(merge_machine_type_attributes): Rename merge_type_attributes.
	(merge_machine_decl_attributes): Rename merge_decl_attributes.
	(merge_dllimport_decl_attributes): New function.
	* tree.h (merge_machine_type_attributes): Rename merge_type_attributes.
	(merge_machine_decl_attributes): Rename merge_decl_attributes.
	(merge_dllimport_decl_attributes): New prototype.
	* target.h: New.
	* target-def.h: New.

doc:	(Joseph Myers)
	* doc/gcc.texi, doc/tm.texi: Update documentation.

cp:	Make-lang.in: Update dependencies.
	* spew.c: Include target.h.
	(duplicate_decls): Call target function.
	* decl2.c: include target.h
	(import_export_class): Use existence of target function pointer.
	* typeck.c: Include target.h.
	(qualify_type_recursive): Rename variable.  Call target function.
	(type_after_usual_arithmetic_conversions): Similarly.
	(common_type): Similarly.

config:	* 1750a/1750a.c, a29k/29k.c, alpha/alpha.c, arc/arc.c, arm/arm.c,
	avr/avr.c, c4x/c4x.c, clipper/clipper.c, convex/convex.c,
	d30v/d30v.c, dsp16xx/dsp16xx.c, elxsi/elxsi.c, fr30/fr30.c,
	i370/i370.c, i386/i386.c, i860/i860.c, i960/i960.c, ia64/ia64.c,
	m32r/m32r.c, m68hc11/m68hc11.c, m68k/m68k.c, m88k/m88k.c,
	mips/mips.c, mn10200/mn10200.c, mn10300/mn10300.c, ns32k/ns32k.c,
	pa/pa.c, pdp11/pdp11.c, pj/pj.c, romp/romp.c, rs6000/rs6000.c,
	sh/sh.c, sparc/sparc.c,	v850/v850.c, vax/vax.c, we32k/we32k.c)
	: Include target.h and target-def.h.  Define target.

	* arc/arc-protos.h (arc_valid_machine_decl_attribute): Remove.
	* arc/arc.c (arc_valid_machine_decl_attribute): Rename
	arc_valid_decl_attribute, make static.
	* arc/arc.h (VALID_MACHINE_TYPE_ATTRIBUTE): Remove.
	* arm/arm-protos.h (arm_valid_machine_decl_attribute,
	arm_valid_type_attribute_p, arm_pe_valid_machine_decl_attribute,
	arm_pe_merge_machine_decl_attributes): Remove.
	* arm/arm.c (arm_valid_machine_decl_attribute_p): Rename
	arm_valid_decl_attribute_p, make static.
	(arm_pe_valid_decl_attribute_p): Move from pe.c.
	* arm/pe.c (arm_pe_valid_machine_decl_attribute_p): Move to arm.c.
	(arm_pe_merge_machine_decl_attributes): Move to tree.c.
	* arm/arm.h (VALID_MACHINE_TYPE_ATTRIBUTE): Remove.
	* arm/coff.h (VALID_MACHINE_DECL_ATTRIBUTE): Remove.
	* arm/elf.h (VALID_MACHINE_DECL_ATTRIBUTE): Remove.
	* arm/pe.h (TARGET_DLLIMPORT_DECL_ATTRIBUTES): New.
	(VALID_MACHINE_TYPE_ATTRIBUTE, VALID_MACHINE_DECL_ATTRIBUTE): Remove.
	* avr/avr-protos.h (valid_machine_type_attribute,
	valid_machine_decl_attribute): Remove.
	* avr/avr.c (valid_machine_type_attribute,
	valid_machine_decl_attribute): Rename and make static.
	* avr/avr.h (VALID_MACHINE_TYPE_ATTRIBUTE,
	VALID_MACHINE_DECL_ATTRIBUTE): Remove.
	* c4x/c4x-protos.h (c4x_valid_type_attribute_p): Remove.
	* c4x/c4x.c (c4x_valid_type_attribute_p): Make static.
	* c4x/c4x.h (VALID_MACHINE_TYPE_ATTRIBUTE): Remove.
	* d30v/d30v.h: Remove obsolete comments.
	* h8300/h8300-protos.h (h8300_valid_machine_decl_attribute): Remove.
	* h8300/h8300.c (h8300_valid_machine_decl_attribute): Rename, make
	static.
	* h8300/h8300.h (VALID_MACHINE_DECL_ATTRIBUTE): Remove.
	* i386/cygwin.h (TARGET_DLLIMPORT_DECL_ATTRIBUTES): Define.
	(i386_pe_merge_decl_attributes, MERGE_MACHINE_DECL_ATTRIBUTES,
	i386_pe_valid_type_attributes_p): Remove.
	* i386/i386-protos.h (ix86_valid_decl_attribute_p,
	ix86_valid_type_attribute_p): Remove.
	* i386/i386.c (ix86_valid_decl_attribute_p): Remove.
	(ix86_valid_type_attribute_p): Make static.
	* i386/i386.h (VALID_MACHINE_DECL_ATTRIBUTE,
	VALID_MACHINE_TYPE_ATTRIBUTE): Remove.
	* i386/winnt.c (i386_pe_merge_decl_attributes): Move to tree.c.
	* ia64/ia64-protos.h (ia64_valid_type_attribute): Remove.
	* ia64/ia64.c (ia64_valid_type_attribute): Make static.
	* ia64/ia64.h (VALID_MACHINE_TYPE_ATTRIBUTE): Remove.
	* m32r/m32r-protos.h (m32r_valid_machine_decl_attribute): Remove.
	* m32r/m32r.c (m32r_valid_decl_attribute): Make static.
	* m32r/m32r.h (VALID_MACHINE_DECL_ATTRIBUTE): Remove.
	* m68hc11/m68hc11-protos.h (m68hc11_valid_decl_attribute_p,
	m68hc11_valid_type_attribute_p): Remove.
	* m68hc11/m68hc11.c (m68hc11_valid_decl_attribute_p): Remove.
	(m68hc11_valid_type_attribute_p): Make static.
	* m68hc11/m68hc11.h (VALID_MACHINE_DECL_ATTRIBUTE,
	VALID_MACHINE_TYPE_ATTRIBUTE): Remove.
	* mcore/mcore-protos.h (mcore_valid_machine_decl_attribute,
	mcore_merge_machine_decl_attribute): Remove.
	* mcore/mcore.c (mcore_valid_machine_decl_attribute): Rename,
	make static.
	(mcore_merge_machine_decl_attributes): Move to tree.c.
	* mcore/mcore.h (VALID_MACHINE_DECL_ATTRIBUTE,
	VALID_MACHINE_TYPE_ATTRIBUTE): Remove.
	(TARGET_DLLIMPORT_DECL_ATTRIBUTES): Define.
	* ns32k/ns32k-protos.h (ns32k_valid_decl_attribute_p,
	ns32k_valid_type_attribute_p): Remove.
	* ns32k/ns32k.c (ns32k_valid_decl_attribute_p): Remove.
	(ns32k_valid_type_attribute_p): Make static.
	* ns32k/ns32k.h (VALID_MACHINE_DECL_ATTRIBUTE,
	VALID_MACHINE_TYPE_ATTRIBUTE): Remove.
	* rs6000/rs6000-protos.h (rs6000_valid_decl_attribute_p,
	rs6000_valid_type_attribute_p): Remove.
	* rs6000/rs6000.c (rs6000_valid_decl_attribute_p): Remove.
	(rs6000_valid_type_attribute_p): Make static.
	* rs6000/rs6000.h (VALID_MACHINE_DECL_ATTRIBUTE,
	VALID_MACHINE_TYPE_ATTRIBUTE): Remove.
	* sh/sh-protos.h (sh_valid_machine_decl_attribute): Remove.
	* sh/sh.c (sh_valid_machine_decl_attribute): Rename, make static.
	* sh/sh.h (VALID_MACHINE_DECL_ATTRIBUTE): Remove.
	* v850/v850-protos.h (v850_valid_machine_decl_attribute): Remove.
	* v850/v850.c (v850_valid_machine_decl_attribute): Rename, make static.
	* v850/v850.h (VALID_MACHINE_DECL_ATTRIBUTE): Remove.

2001-06-26  Vladimir Makarov  <vmakarov@toke.toronto.redhat.com>

	* glimits.h (USHRT_MAX): Use unsigned suffix if int can not hold
	it.

2001-06-26  Gabriel Dos Reis  <gdr@codesourcery.com>

	* diagnostic.h (struct diagnostic_context): Add new field.
	(lang_diagnostic_starter, lang_diagnostic_finalizer): Remove
	declaratons.
	(global_dc): Declare.
	* diagnostic.c (global_diagnostic_context): New variable.
	(global_output_buffer): Remove.
	(global_dc): Define.
	(lang_diagnostic_starter, lang_diagnostic_finalizer): Remove
	definitions.
	(initialize_diagnostics): Adjust initialization.
	(set_diagnostic_context): Adjust setting.

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

	* config/mips/iris5.h (UNALIGNED_INT_ASM_OP,
	UNALIGNED_SHORT_ASM_OP): Define.
	* config/mips/iris6.h (UNALIGNED_INT_ASM_OP,
	UNALIGNED_SHORT_ASM_OP): Undef.

Tue Jun 26 12:40:12 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (float_truncate splitter, and to mov splitters): Add
	reload_completed; fix operand predicate.

	* haifa-sched.c (sched_init): Do not split insns.
	* toplev.c (rest_of_compilation): Call split_all_insns before
	sched1 pass; simplify condition of post-reload splitter;
	call split_all_insn before sched2 pass.

2001-06-26  Gabriel Dos Reis  <gdr@codesourcery.com>

	* diagnostic.h (diagnostic_prefixing_rule_t): New enum type.
	(set_message_prefixing_rule): Adjust prototype.
	* diagnostic.c (current_prefixing_rule): Adjust type.

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

	* defaults.h: Default escape sequences to ASCII.
	* config/i370/i370.h: Adjust for ASCII default.
	* config/1750a/1750a.h: Remove escape sequence definitions.
	* config/a29k/a29k.h: Similarly.
	* config/alpha/alpha.h: Similarly.
	* config/arc/arc.h: Similarly.
	* config/arm/arm.h: Similarly.
	* config/avr/avr.h: Similarly.
	* config/c4x/c4x.h: Similarly.
	* config/clipper/clipper.h: Similarly.
	* config/convex/convex.h: Similarly.
	* config/d30v/d30v.h: Similarly.
	* config/dsp16xx/dsp16xx.h: Similarly.
	* config/elxsi/elxsi.h: Similarly.
	* config/fr30/fr30.h: Similarly.
	* config/h8300/h8300.h: Similarly.
	* config/i386/i386.h: Similarly.
	* config/i860/i860.h: Similarly.
	* config/i960/i960.h: Similarly.
	* config/ia64/ia64.h: Similarly.
	* config/m32r/m32r.h: Similarly.
	* config/m68hc11/m68hc11.h: Similarly.
	* config/m68k/m68k.h: Similarly.
	* config/m88k/m88k.h: Similarly.
	* config/mcore/mcore.h: Similarly.
	* config/mips/mips.h: Similarly.
	* config/mn10200/mn10200.h: Similarly.
	* config/mn10300/mn10300.h: Similarly.
	* config/ns32k/ns32k.h: Similarly.
	* config/pa/pa.h: Similarly.
	* config/pdp11/pdp11.h: Similarly.
	* config/pj/pj.h: Similarly.
	* config/romp/romp.h: Similarly.
	* config/rs6000/rs6000.h: Similarly.
	* config/sh/sh.h: Similarly.
	* config/sparc/sparc.h: Similarly.
	* config/v850/v850.h: Similarly.
	* config/vax/vax.h: Similarly.
	* config/we32k/we32k.h: Similarly.
	* doc/tm.texi: Update documentation.

2001-06-26  Gabriel Dos Reis  <gdr@merlin.codesourcery.com>

	* diagnostic.c (digit_buffer): Remove as global.  Move to...
	* diagnostic.h (struct output_buffer): ... here.
	* diagnostic.c (output_formatted_integer): Adjust use of digit_buffer.

2001-06-25  Steve Ellcey  <sje@cup.hp.com>

	* config.gcc (ia64*-*-hpux*): Add ia64/hpux_longdouble.h to tm_file.
	Define tmake_file to include ia64/t-hpux.
	* real.c (INTEL_EXTENDED_IEEE_FORMAT): Test for value instead of
	testing to see if it is defined.
	* real.h (INTEL_EXTENDED_IEEE_FORMAT): Likewise.  Default to 0 if
	undefined.
	* config/ia64/hpux_longdouble.h: New.
	* config/ia64/ia64.c (hfa_element_mode): Add comment about incorrect
	handling of long doubles.
	(ia64_function_arg, ia64_function_value): Add checks for TFmode
	and INTEL_EXTENDED_IEEE_FORMAT.
	* config/ia64/ia64.h (INTEL_EXTENDED_IEEE_FORMAT): Define to one.
	(HARD_REGNO_NREGS, HARD_REGNO_MODE_OK, LIBCALL_VALUE): Add checks for
	TFmode and INTEL_EXTENDED_IEEE_FORMAT.
	* config/ia64/ia64.md (all TFmode patterns): Test
	INTEL_EXTENDED_IEEE_FORMAT in condition.
	(floatdidf2, floatdisf2): New, for !INTEL_EXTENDED_IEEE_FORMAT.
	* config/ia64/quadlib.c: New.
	* config/ia64/t-hpux: New.
	* config/i386/i386.h (INTEL_EXTENDED_IEEE_FORMAT): Define to one.

2001-06-25  Jim Wilson  <wilson@redhat.com>

	* config/i960/t-960bare (i960-c.o): Add missing header dependencies.
	* config/i960/t-vxworks960: Likewise.

2001-06-25   Dale Johannesen    <dalej@apple.com>

	* bitmap.c (bitmap_last_bit_set): Fix a non-c89 usage (null actual
	argument to macro).

Mon Jun 25 11:10:51 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (movsi_insv_1, movsi_insv_1_rex64): Fix constraints.

2001-06-25  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/c-tree.texi, doc/contrib.texi, doc/extend.texi,
	doc/gcc.texi, doc/gcov.texi, doc/install.texi, doc/invoke.texi,
	doc/md.texi, doc/rtl.texi, doc/tm.texi: Be more consistent about
	the use of "GCC" and related terms.
	* doc/gcc.1, doc/gcov.1: Regenerate.

2001-06-24  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/extend.texi, doc/gcc.texi, doc/install-old.texi,
	doc/invoke.texi, doc/md.texi, doc/rtl.texi, doc/tm.texi: Remove
	uses of @refill.

Sun Jun 24 21:21:49 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* (movsi_insv_1, movsi_insv_1_rex64): Allow immediate operand.

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

	* builtins.c (expand_builtin_expect_jump): Disable if the
	expression can't be re-evaluated.

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

	* config/arm/arm.c (arm_compute_save_reg_mask): For FIQ interrupt
	handlers examine register r0-r7, for other interrupt handlers
	examine r0-r12.  If the interrupt handler is not a leaf function
	save all call clobbered registers.
	(arm_output_epilogue): If the prologue has pushed the IP register,
	restore it here.
	(Arm_expand_prologue): For interrupt functions that need the frame
	pointer, push the IP register before it is corrupted.

	* config/arm/arm.h (ARM_SIGN_EXTEND): Fix compile time warnings
	about the use of signed and unsigned quantities in a conditional.

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

	* config/alpha/crtfastmath.c: New file.
	* config/alpha/t-crtfm: New file.
	* config/alpha/elf.h (ENDFILE_SPEC): Use crtfastmath.o.
	* config/alpha/osf.h (ENDFILE_SPEC): Likewise.
	* config/alpha/t-crtbe (EXTRA_PARTS): Add pieces defined here.
	* config.gcc (alpha-{linux,freebsd,netbsd,osf}): Use alpha/t-crtfm;
	do not set extra_parts here.

2001-06-24  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/install-old.texi: Remove more documentation of configure
	options.
	* doc/install.texi: Add it here.

Sat Jun 23 19:40:05 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386-protos.h (emit_i387_cw_initialization): Declare.
	* i386.md (movsi_insv_1): Remove '*'.
	(fix_trunc?f?i2): Revamp to use control word parameters.
	(fix_trunc?i_1): Likewise; update splitters.
	(fix splitter): Remove.
	* i386.c (MAX_386_STACK_LOCALS): set to 3.
	(emit_i387_cw_initialization): New function.
	(output_fix_trunc): Do not initialize control word;
	kill dead code; simplify.

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

	* cppmacro.c (make_string_token): Avoid warning.
	(cpp_macro_definition): Prepend the macro name.  Update
	comments.
	* cppmain.c (cb_define, dump_macro): Update for changes
	to cpp_macro_definition.

Sat Jun 23 10:20:03 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* flow.c (attempt_auto_inc, try_pre_increment_1): Fix typo.

Sat Jun 23 01:23:59 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* flow.c (mark_set_1, attempt_auto_inc, mark_used_reg,
	try_pre_increment_1): compute REG_FREQ using bb->frequency.

	* regclass.c (loop_cost): Kill.
	(frequency): New global variable.
	(record_operand_costs): Replace loop_cost by frequency.
	(scan_one_insn): Likewise.
	(regclass): Likewise; set frequency according to bb->frequency.

	* flow.c (split_edge): Set frequency.

Sat Jun 23 01:16:42 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* predict.c (block_info_def): Add nvisited.
	(propagate_freq): Count nvisited; re-queue delayed blocks; handle
	irreducible regions.

	* flow.c (dump_edge_info): Dump the probability of edge.
	(combine_predictions_for_insn): Dump the basic block.

2001-06-22  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/gcc.texi: Update documentation of source files of C
	compiler.

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

	* doc/invoke.texi (-funsafe-math-optimizations): Document its
	possible effects at link time.

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

	* basic-block.h (dump_edge_info): Declare.
	(clear_edges): Declare.
	(mark_critical_edges): Declare.
	* flow.c (dump_edge_info): Remove static declaration.
	(clear_edges): Ditto.
	(mark_critical_edges): Ditto.
	(free_basic_block_vars): Only clear edges and free basic block
	array if basic_block_info is not NULL.
	* ssa.c (compute_dominance_frontiers): Remove static declaration.
	* ssa.h (compute_dominance_frontiers): Declare.

2001-06-22  Toshiyasu Morita  (toshiyasu.morita@hsa.hitachi.com)

	* predict.c: (expected_value_to_br_prob): Check for const_true_rtx
	instead of const1_rtx for true case.

2001-06-22  David Mosberger  <davidm@hpl.hp.com>

	* config/ia64/crtfastmath.c: New file.
	* config/ia64/t-ia64 (EXTRA_PARTS): Include it.
	* config/ia64/linux.h (ENDFILE_SPEC): New.

2001-06-22  Toshiyasu Morita  <toshiyasu.morita@hsa.hitachi.com>

	* config/h8300/h8300.c (asm_file_start): Remove reference to
	"release F-1".

2001-06-22  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-common.c (verify_tree): Check for x being NULL.
	* doc/c-tree.texi: Document COMPOUND_BODY of an empty
	COMPOUND_STMT.
	Fixes PR c/3259.

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

	* config/arm/arm.h (struct machine_function): Remove ra_rtx.
	* config/arm/arm.c (arm_mark_machine_status): Remove ra_rtx.
	(arm_return_addr): Use get_hard_reg_initial_val et al.
	* config/d30v/d30v.h (struct machine_function): Remove ra_rtx.
	* config/d30v/d30v.c (d30v_mark_machine_status): Remove ra_rtx.
	(d30v_return_addr): Use get_hard_reg_initial_val et al.
	* config/rs6000/rs6000.h (struct machine_function): Remove ra_rtx.
	* config/rs6000/rs6000.c (rs6000_override_options): Don't set
	mark_machine_status.
	(rs6000_mark_machine_status): Remove.
	(rs6000_return_addr): Use get_hard_reg_initial_val.
	(rs6000_ra_ever_killed): Use has_hard_reg_initial_val.
	* config/v850/v850.h (INIT_EXPANDERS): Delete.
	* config/v850/v850.c (struct machine_function): Delete.
	(v850_init_machine_status): Delete.
	(v850_mark_machine_status): Delete.
	(v850_free_machine_status): Delete.
	(v850_return_addr): Use get_hard_reg_initial_val.
	(v850_init_expanders): Delete.

Fri Jun 22 19:20:59 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* predict.c (estimate_bb_frequencies): Do not handle conditional
	jumps jumping to fallthru basic block as conditional jumps.

Fri Jun 22 19:11:28 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* regs.h (struct reg_info_def): Add freq field.
	(REG_N_REFS): Update comment.
	(REG_FREQ): New.
	* regclass.c (scan_one_insn): Update REG_FREQ.
	* flow.c (mark_set_1): Update REG_FREQ, make REG_N_SETS unweighted.
	(attempt_auto_inc): Likewise.
	(mark_used_reg): Likewise.
	(try_pre_increment_1): Likewise.
	* local-alloc.c (struct qty): Add freq field.
	(alloc_qty): Set freq.
	(update_equiv_regs): Set REG_FREQ.
	(QTY_CMP_PRI): Use freq.
	(combine_regs): Update qty->freq.
	* global.c (struct allocno): Update comment for n_refs;
	add freq field.
	(local_reg_freq): New array.
	(global_alloc): Update freq field;
	allocate and initialize local_reg_freq.
	(allocno_compare): Use freq field.
	(find_reg): Likewise.
	* reload1.c (count_pseudo): Use freq isntead of n_refs.
	(count_spilled_pseudo): Likewise.

	* tm.texi (GCOV_TYPE_SIZE): Document.
	* basic-block.h (gcov_type): Define.
	(struct edge_def): Use gcov_type for count field.
	(struct basic_block_def): Likewise.
	* defaults.h (GCOV_TYPE_SIZE): Define.
	* final.c (end_final): Use GCOV_TYPE_SIZE.
	* flow.c (dump_edge_info, dump_flow_info, dump_bb): Print count fields
	using HOST_WIDEST_INT_PRINT_DEC.
	* gcov-io.h (__fetch_gcov_type, __store_gcov_type, __read_gcov_type,
	__write_gcov_type): New.
	(store_long): Remove.
	* gcov.c (gcov_type): Set default.
	(struct adj_list): Use gcov_type for arc_count.
	(bb_info): Use gcov_type for succ_count, pred_count and exec_count.
	(create_program_flow_graph): Read arc_count properly.
	(solve_program_flow_graph): 'total' is gcov_type.
	(output_data): Line_counts is gcov_type, print it properly.
	* libgcc2.c (struct bb): Counts is gcov_type.
	(__bb_exit_func): Use __read_gcov_type and __write_gcov_type.
	* profile.c (LONG_TYPE_SIZE, LONG_LONG_TYPE_SIZE): Set default.
	(GCOV_TYPE_SIZE): Define.
	(struct bb_info): succ_count and pred_count is gcov_type.
	(compute_branch_probabilities): Use __read_gcov_type,
	print read edges to the dump file.
	(total): Is gcov_type.
	(gen_edge_profiler): Use GCOV_TYPE_SIZE.

2001-06-14  Andrew Haley  <aph@cambridge.redhat.com>

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

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

	* objc/objc-act.c (hash_init): Use xcalloc.

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

	* flow.c (entry_exit_blocks): Initialize frequency.
	(split_block): Copy it.
	(dump_flow_info): Dump it.

Thu Jun 21 22:15:10 2001  J"orn Rennecke <amylaar@redhat.com>

	* sh.c (barrier_align): Also recognize branch-around-a-jump-sequence
	from machine-depedent_reorg for purposes of alignment supression
	when no delay slot insn has been added.

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

	* cppmacro.c (make_string_token): Null terminate.

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

	* config/alpha/alpha.h (struct machine_function): Remove.
	* config/alpha/alpha.c (integrate.h): Include.
	(override_options): Don't set up machine_status hooks.
	(alpha_init_machine_status): Remove.
	(alpha_mark_machine_status): Remove.
	(alpha_free_machine_status): Remove.
	(alpha_return_addr): Use get_hard_reg_initial_val.
	(alpha_gp_save_rtx): Likewise.
	(alpha_ra_ever_killed): Use has_hard_reg_initial_val.

2001-06-20  Aldy Hernandez  <aldyh@redhat.com>

	* config/sh/sh.md (interrupt_function): Use
	current_function_interrupt.
	(define_delay): Schedule in delay slot if TARGET_SH3, even if it is
	an interrupt function.

	* config/sh/sh.h (current_function_interrupt): Define extern.

	* config/sh/sh.c (current_function_interrupt): New global.
	(sh_expand_prologue): Set current_function_interrupt.

2001-06-21  Phil Edwards  <pme@sources.redhat.com>

	* doc/install.texi:  Add 'c' to list of --enable-languages choices.

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

	* integrate.c (mark_hard_reg_initial_vals): Check for NULL.

	* integrate.c (ggc.h): Include.
	(initial_value_pair, initial_value_struct,
	setup_initial_hard_reg_value_integration): Add prototypes.
	(expand_inline_function): Call
	setup_initial_hard_reg_value_integration.
	(has_func_hard_reg_initial_val, get_func_hard_reg_initial_val,
	get_hard_reg_initial_val, has_hard_reg_initial_val): New functions
	to keep track of values present at the start of a function.
	(mark_hard_reg_initial_vals): New, for gc.
	(setup_initial_hard_reg_value_integration): New.  Sets up pseudo
	mappings for initial values.
	(emit_initial_value_sets): New.  Emits code to set initial value
	pseudos.
	* integrate.h: Add prototypes for new functions.
	* function.h (struct function): Add hard_reg_initial_vals field.
	* function.c (integrate.h): Include.
	(mark_function_status): Call
	mark_hard_reg_initial_vals.
	* toplev.c (integrate.h): Include.
	(rest_of_compilation): Call emit_initial_value_sets.

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

	* doc/contrib.texi, doc/cpp.texi, doc/cppinternals.texi,
	doc/extend.texi, doc/gcc.texi, doc/install.texi, doc/invoke.texi,
	doc/objc.texi, doc/tm.texi: Use the correct name "Objective-C"
	everywhere instead of "Objective C".

2001-06-21  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/c-tree.texi, doc/contrib.texi, doc/extend.texi,
	doc/gcc.texi, doc/install-old.texi, doc/install.texi,
	doc/invoke.texi, doc/rtl.texi: Consistently use "front end" and
	"back end" as nouns and "front-end" and "back-end" as adjectives.

Wed Jun 20 21:53:35 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* predict.c (estimate_probability): Fix loop bounds.

Wed Jun 20 19:10:48 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* toplev.c (rest_of_compilation): Run mark_constant_function
	before profile-arcs.

Wed Jun 20 19:08:18 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* predict.c (estimate_loops_at_level, propagate_freq
	estimate_bb_frequencies, count_to_freqs): New functions.
	(estimate_probability): Call estimate_bb_frequencies.
	* basic-block.h (basic_block_def): Add field "freq".
	(BB_FREQ_MAX): New constant.

Wed Jun 20 17:02:50 2001  J"orn Rennecke <amylaar@redhat.com>

	* sh.c (barrier_align): Don't ask for alignment when seeing a
	branch-around-a-jump from machine_dependent_reorg.

Wed Jun 20 08:35:02 2001  Jeffrey A Law  (law@cygnus.com)

	* ssa.c (rename_block): Update parameter to remove_phi_alternative
	(convert_from_ssa): Do create REG_DEAD and REG_UNUSED notes when
	re-running life analysis.

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

	* objc/objc-act.c (hash_init): Assume xmalloc always succeeds,
	also use memset to clear the hash tables.
	(hash_enter): Assume xmalloc always succeeds.
	(hash_add_attr): Ditto.
	(continue_class): Ditto.

2001-06-20  Michael Meissner  <meissner@redhat.com>

	* builtins.c (predict.h): Include.
	(expand_builtin_expect): Update comment.
	(expand_builtin_expect_jump): New function to expand
	__builtin_expect inside of a conditional jump expansion.

	* expr.c (do_jump): Special case __builtin_expect (<test>, 0) and
	__builtin_expect (<test>, 1).

	* Makefile.in (builtins.o): Depend on $(PREDICT_H).

	* rtl.h (expand_builtin_expect_jump): Add prototype.

2001-06-19  Geoffrey Keating  <geoffk@redhat.com>

	* doc/rtl.texi (Machine Modes): Correct description of
	floating-point modes on machines with non-8-bit bytes.

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

	* regmove.c (optimize_reg_copy_3): Do nothing if previous insn
	carries a REG_EQUIV note.  If it carries REG_EQUAL, delete the
	note.

Tue Jun 19 07:53:52 2001  Jeffrey A Law  (law@cygnus.com)

	* ssa.c (remove_phi_alternative): Remove declaration.  No longer
	static.  Second argument is a pointer to a basic block structure,
	not a basic block index.
	(convert_to_ssa): Do not remove dead code.
	(convert_from_ssa): Do not remove dead code to create death notes.
	* ssa.h (remove_phi_alternative): Declare.

	* flow.c (delete_unreachable_blocks): Fix patch error in
	previous change (call to find_unreachable_blocks was lost).

	* ssa.c (ssa_uses): Remove definition.
	(apply_delayed_renames): Don't grow ssa_uses.
	(rename_block): Remove comment related to ssa_uses.
	(rename_registers): Do not initialize ssa_uses.
	(convert_from_ssa): Do not free ssa_uses.

	* ssa-dce.c: Renamed from dce.c.
	* Makefile.in (OBJS): Replace dce.o with ssa-dce.o
	(dependencies): Replace dce.c with ssa-dce.c and dce.o with
	ssa-dce.o.

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

	* emit-rtl.c (gen_lowpart_common): Do not assume that SFmode
	and DFmode are UNITS_PER_WORD and 2*UNITS_PER_WORD.  Use
	GET_MODE_BITSIZE instead of GET_MODE_SIZE/UNITS_PER_WORD.

Tue Jun 19 01:52:27 2001  J"orn Rennecke <amylaar@redhat.com>

	* sh.c (output_branch): Delete bogus code.

	* sh.c (initial_elimination_offset):
	Fix FROM == RETURN_ADDRESS_POINTER_REGNUM case.

Mon Jun 18 12:50:49 2001  Jeffrey A Law  (law@cygnus.com)

	* flow.c (find_unreachable_blocks): New function.
	(delete_unreachable_blocks): Use find_unreachable_blocks.
	* basic-block.h (find_unreachable_blocks): Declare.

	* dce.c (eliminate_dead_code): Fix formatting glitch.

2001-06-18  Jason Merrill  <jason_merrill@redhat.com>

	* c-common.h (RETURN_NULLIFIED_P): New macro.
	* c-semantics.c (genrtl_return_stmt): Check it.

	* expr.c (clear_storage): Set TREE_NOTHROW on the decl for memset.
	(emit_block_move): Likewise.

Mon Jun 18 17:27:24 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* unroll.c: Include predict.h.
	(unroll_loop): Drop prediction notes on preconditioning.
	* predict.def (PRED_LOOP_PRECONDITIONG, PRED_LOOP_CONDITION):
	New; add comments on the others.
	* Makefile.in: (unroll.o): Add dependency on predict.h.
	* loop.c (strength_reduce): Fix branch prediction.

Mon Jun 18 17:26:56 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* stmt.c (emit_case_nodes): Optimize test whether index is in given
	interval.

Mon Jun 18 15:43:10 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* predict.c (estimate_probability): Do not bail out early
	when note is present.
	(combine_predictions_for_insn): Fix note removal code.

2001-06-18  Ben Elliston  <bje@redhat.com>

	* except.c (resolve_fixup_regions): Initialize "cleanup".

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

	* tm.texi: Document STDC_0_IN_SYSTEM_HEADERS.

Sat Jun 16 20:20:39 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* expr.c (expand_expr, case ADDR_EXPR): If taking address of SAVE_EXPR,
	use put_var_into_stack.

2001-06-16  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* gccspec.c (lang_specific_driver): If compiling ObjC, add
	-shared-libgcc when necessary.
	* Makefile.in (gccspec.o): Compile with DRIVER_DEFINES.

2001-06-16  Daniel Berlin  <dan@cgsoftware.com>

	* bitmap.h: Add dump_bitmap, bitmap_zero, bitmap_union_of_diffs,
	bitmap_a_or_b, bitmap_a_and_b, bitmap_first_set_bit,
	bitmap_last_set_bit. All for compatibility with sbitmap's.

	*bitmap.c (bitmap_zero): New function.
	(bitmap_union_of_diffs): New function.
	(bitmap_first_set_bit): New function.
	(bitmap_last_set_bit): New function.

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

	* cpp.texi, invoke.texi: Update.
	* cpp.1, gcc.1: Regenerate.

Sat Jun 16 12:45:20 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (minsf): Fix splitter. (PR fortran/3191)

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

	* doc/cpp.texi: Update.
	* doc/cpp.1: Regenerate.

2001-06-15  Loren J. Rittle  <ljrittle@acm.org>

	* doc/install.texi: Use correct markup hints.

Fri Jun 15 18:05:22 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* function.c (gen_mem_addressof): Handle case where DECL is SAVE_EXPR.

	* explow.c (expr_size): If DECL and size specified, use it.

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

	* doc/cpp.texi: Formatting corrections.
	Correct buggy example of use of __GNUC__ etc.
	Clarify $ in identifiers.
	* doc/cpp.1: Regenerate.

Fri Jun 15 19:35:38 CEST 2001 Jan Hubicka  <jh@suse.cz>

	* optabs.c (expand_twoval_binop): Avoid undefined behavior.

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

	* doc/install.texi (Specific, alpha*-*-*): Fixed Tru64 UNIX
	etc. spelling.
	(Specific, alpha-*-osf1): Renamed to alpha*-*-osf*.
	Added Tru64 UNIX V5.1 bootstrap hints.
	(Specific, alpha*-*-osf*): Removed old section, obsolete.

2001-06-15  Andreas Jaeger  <aj@suse.de>

	* doc/install.texi (Specific): Mention that glibc cannot be
	compiled with GCC 3.0.

2001-06-14  Andrew Haley  <aph@cambridge.redhat.com>

	* combine.c (nonzero_bits): Don't optimize away division by
	zero.

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

	* doc/cpp.texi: Revised and brought up to date.
	* doc/cpp.1: Regenerate.

2001-06-15  Loren J. Rittle  <ljrittle@acm.org>

	* doc/install.texi: Update --enable-threads to match reality.

2001-06-15  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* doc/install.texi: Update for C4x.
	* README.C4X: Remove.

2001-06-14  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/c-tree.texi, doc/contrib.texi, doc/extend.texi,
	doc/gcc.texi, doc/install.texi, doc/invoke.texi, doc/md.texi,
	doc/objc.texi, doc/rtl.texi, doc/tm.texi: Fix spelling and typos.
	Consistently use "built-in" and "bit-field".  Minor logical markup
	improvements.
	* doc/gcc.1: Regenerate.

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

	* config/mips/mips.md (exception_receiver): New.

2001-06-14  Daniel J. Berlin <dan@cgsoftware.com>

	* doc/gcc.texi:  Update passes documentation to be more in tune
	with reality.

Thu Jun 14 15:38:28 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.c (ix86_expand_prologue): Fix merging conflict.

2001-06-14  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/c-tree.texi, doc/contrib.texi, doc/extend.texi,
	doc/gcc.texi, doc/gcov.texi, doc/install-old.texi,
	doc/invoke.texi, doc/md.texi, doc/rtl.texi, doc/tm.texi: Use more
	logical markup.  Use TeX quotes and dashes.  Use @dots{} and
	@minus{}.  Avoid spaces inside @var.  Update last modification
	date in gcc.texi.
	* doc/gcc.1, doc/gcov.1: Regenerate.

Thu Jun 14 12:44:15 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.c (x86_accumulate_outgoing_args, x86_prologue_using_move,
	x86_epilogue_using_move): New global variables.
	(override_options): Enable ACCUMULATE_OUTGOING_ARGS if preferred.
	(ix86_emit_save_regs_using_mov): New static function.
	(ix86_expand_prologue, ix86_expand_epilogue): Use moves if preferred.
	* i386.h (MASK_MMX, MASK_SSE, MASK_SSE2, MASK_128BIT_LONG_DOUBLE,
	MASK_MIX_SSE_I387): Renumber.
	(MASK_NO_ACCUMULATE_OUTGOING_ARGS): New.
	(x86_accumulate_outgoing_args, x86_prologue_using_move,
	x86_epilogue_using_move): Declare.
	(TARGET_PROLOGUE_USING_MOVE, TARGET_EPILOGUE_USING_MOVE): New.

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

	* inclhack.def (hpux10_cpp_pow_inline): New hack.

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

	* ifcvt.c (dead_or_predicable): Fix return value last patch.

2001-06-13  Mark Mitchell  <mark@codesourcery.com>

	* NEWS: Remove.

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

	* ifcvt.c (cond_exec_get_condition): Use reversed_comparison_code.
	(cond_exec_process_if_block, dead_or_predicable): Likewise.

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

	* mips-tfile.c (copy_object): Always pass indexNil for symbol
	table index.

2001-06-13  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.h (OK_FOR_T): Remove.
	(EXTRA_CONSTRAINT): Do not use OK_FOR_T.
	* config/h8300/h8300.md: Remove alternatives involving inc and dec
	in the helper patterns for addhi3 and addsi3.

2001-06-13  Phil Edwards  <pme@sources.redhat.com>

	* doc/contrib.texi:  Link to libstdc++'s thanks.html for now.

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

	* Makefile.in: Move _bb and __gcc_bcmp to LIB2FUNCS_ST.
	* libgcc-std.ver: Take out __bb* and __gcc_bcmp.

	* config/t-slibgcc-elf-ver, config/t-slibgcc-sld,
	config/alpha/t-osf4, config/mips/t-iris6: Extract all
	references to @shlib_map_file@, @shlib_objs@, or
	@shlib_base_name@ to Makefile variables.
	Bump soname version of libgcc to 1.

2001-06-13  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/install.texi: Use more logical markup.  Include @node
	commands in the source when generating any non-HTML.

2001-06-13  Joseph S. Myers  <jsm28@cam.ac.uk>

	* README: Remove.  Some of the contents moved to ../README.

2001-06-13  Alexandre Oliva  <aoliva@redhat.com>

	* doc/install.texi (--enable-shared): List package names
	recognized by GCC.

2001-06-13  Alexandre Oliva  <aoliva@redhat.com>

	* doc/install.texi (ix86-*-solaris*): Removed, outdated.
	(*-*-solaris*): Document problem in /bin/sh that affects
	configuring libraries.
	(sparc-*-solaris*): Recommend GNU binutils 2.11.1 or vendor tools.
	(*-sun-solaris2.8): Document linker problem that explains why
	libjava is disabled by default.

2001-06-09  Mark Mitchell  <mark@codesourcery.com>

	Revert this patch:
	* toplev.c (rest_of_compilation): Remove dead code before
	purge_addressof.

2001-06-12  Alexandre Oliva  <aoliva@redhat.com>

	Reverted:
	2001-06-07  Nathan Sidwell  <nathan@codesourcery.com>
	* configure.in (sparc*-*-*): Check assembler R_SPARC_UA32 support.
	* configure: Rebuilt.

2001-06-12  Jim Wilson  <wilson@redhat.com>

	* loop.c (strength_reduce): Move bl->all_reduced set before
	check_ext_dependant_givs call.
	(check_ext_dependant_givs): Clear bl->all_reduced when ignoring givs.

2001-06-12  Alexandre Oliva  <aoliva@redhat.com>

	* doc/extend.texi (Function Attributes): Document SH's sp_switch
	and trap_exit.

2001-06-13  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/invoke.texi: Use more logical markup.  Use TeX quotes,
	dashes and @dots{}.

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

	* config/i386/i386.c (ix86_expand_prologue): Always use
	gen_pro_epilogue_adjust_stack; update arguments.
	(ix86_expand_epilogue): Likewise.
	(ix86_emit_epilogue_esp_adjustment): Remove.
	(ix86_adjust_cost): Remove pro_epilogue_adjust_stack hack.
	* config/i386/i386.md (pro_epilogue_adjust_stack): Use a BLKmode
	clobber of scratch memory instead of a modification of EBP as the
	barrier.  Update all peepholes to match.

2001-06-12  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/gcc.texi: Change the font used for @def... commands to a
	fixed width font.
	* doc/extend.texi: Use more logical markup.  Use "built-in"
	instead of "builtin".  Use @deftypefn to mark up built-in
	functions; specify their types in the @deftypefn and not in the
	descriptive text.  Use TeX quotes and dashes.  Add more index
	entries.

2001-06-12  lars brinkhoff  <lars@nocrew.org>

	* gcc.texi (HOST_BITS_PER_LONGLONG): Document.
	(DIR_SEPARATOR_2): Likewise.

2001-06-12  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/install.texi (--exec-prefix, --bindir, --libdir,
	--with-slibdir, --infodir, --mandir, --with-cpp-install-dir):
	Document.
	(--enable-cpp): Change to document --disable-cpp instead; update
	to reflect current default.
	(--without-fast-fixincludes): Remove documentation.
	(Final install): Document installation directories in more
	detail.  Document use of make dvi.

Tue Jun 12 19:01:43 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* recog.c (validate_replace_rtx_1): Fix previous patch.

Tue Jun 12 17:25:39 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* recog.c (validate_replace_rtx_1): Do plus_constant call always.

Tue Jun 12 17:24:07 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* simplify-rtx.c (simplify_subreg): Allow volatile memory
	to be subregged in case we don't have move instruction.

Tue Jun 12 12:20:12 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* loop.c: Include predict.h
	(strength_reduce): Drop branch prediction note in case
	number of iterations is known.
	* predict.def (PRED_LOOP_ITERATIONS): new.
	* Makefile.in (loop.o): Add dependency on predict.h

2001-06-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* c-decl.c (grokdeclarator): Use INTEGRAL_TYPE_P.

	* c-typeck.c (c_start_case): Likewise.

2001-06-12  Mark Mitchell  <mark@codesourcery.com>

	* expr.c (store_field): Don't set MEM_ALIAS_SET for a field
	in a structure at a variable address.

2001-06-12  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/gcov.texi: Use more logical markup.

2001-06-11  Mark Mitchell  <mark@codesourcery.com>

	* unroll.c (initial_reg_note_copy): Use PUT_REG_NOTE_KIND and
	REG_NOTE_KIND, not PUT_MODE and GET_MODE.
	(final_reg_note_copy): Remove REG_WAS_0 notes that are no longer
	valid.

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

	* config/darwin.h (ASM_FILE_END): Remove decl of language_string.

2001-06-11  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/m68hc11.md ("*lshrdi3_const32"): Mark the clobber
	as an early clobber to make sure it is not used by reload in
	one of the operands.

2001-06-11  Mark Mitchell  <mark@codesourcery.com>

	* doc/c-tree.texi: Update information about flag_honor_std.
	* doc/install.texi: Note that binutils is required on HPUX 11.
	* doc/invoke.texi (-fhonor-std): Note that -fno-honor-std is
	now the default.

	* config/mips/abi64.h (RETURN_IN_MEMORY): Fix handling of
	variable-sized types.

2001-06-11  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/md.texi: Use TeX dashes and quotes.

2001-06-11  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/rtl.texi: Reference manual chapter about trees.

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

	* config/mips/iris6.h (NO_BUILTIN_WINT_TYPE): Define.
	(WINT_TYPE): Override.
	(WINT_TYPE_SIZE): Likewise.
	(SUBTARGET_CPP_SIZE_SPEC): Define __WINT_TYPE__ as appropriate.

	* config/sparc/sol2.h (WINT_TYPE): Define.
	(WINT_TYPE_SIZE): Likewise.

	* config/sparc/sol2-sld-64.h (NO_BUILTIN_WINT_TYPE): Define.
	(WINT_TYPE): Override.
	(WINT_TYPE_SIZE): Likewise.
	(CPP_ARCH32_SPEC): Add __WINT_TYPE__ definition.
	(CPP_ARCH64_SPEC): Likewise.

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

	* unwind-dw2-fde.c (__deregister_frame_info): Don't play games
	with alias attribute.

	* config/linux.h (CPLUSPLUS_CPP_SPEC): Use %(cpp) not $(cpp_cpu).
	* config/alpha/linux.h (CPLUSPLUS_CPP_SPEC): Likewise.

2001-06-11  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* config/rs6000/linux.h (CPLUSPLUS_CPP_SPEC): New.

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

	* config/darwin.c (darwin_encode_section_info):  Rewrite to simplify
	and fix coding mistakes.

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

	* config/m32r/m32r.md (movstrsi_internal): Do not expect a
	return string from m32r_output_block_move.
	* config/m32r/m32r-protos.h: Make m32r_output_block_move a
	void function.
	* config/m32r/m32r.h (INT32_P): Rename to UNIT32_P and remove
	integer overflow.
	(ROUND_ADVANCE): Remove signed/unsigned conflict.
	* config/m32r/m32r.c: Declare prototypes for static functions.
	(move_src_operand): Replace INT32_P with UINT32_P.
	(function_arg_partial_nregs): Fixed signed/unsigned conflict
	in initialisation of 'size'.
	(m32r_sched_reord): Remove redundant declarations of 'code'.
	(m32r_output_block_move): Change to a void function.
	(m32r_encode_section_info): Cast return of
	TREE_STRING_POINTER to avoid compile time warning.

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

	* config/alpha/osf5.h (TARGET_LD_BUGGY_LDGP): New.
	* config/alpha/alpha.h (TARGET_LD_BUGGY_LDGP): Default.
	(struct machine_function): Add gp_save_rtx.
	* config/alpha/alpha.c (alpha_mark_machine_status): Mark it.
	(alpha_gp_save_rtx): New.
	* config/alpha/alpha-protos.h: Declare it.
	* config/alpha/alpha.md (exception_receiver): Make an expander.
	Use alpha_gp_save_rtx if TARGET_LD_BUGGY_LDGP.

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

	* config/alpha/osf.h (LINK_SPEC): Hide _GLOBAL_* symbols.

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

	* configure.in: Align --help messages.
	Remove trailing full stops.
	Consistently use lower case.
	Fix DWARF 2 spelling.
	* configure: Rebuilt.

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

	* config/alpha/alpha.h (CPP_SPEC): Don't define __LANGUAGE_C and
	variants for .cpp/.cp/.c++ files.
	Move definition of __LANGUAGE_C_PLUS_PLUS ...
	(CPLUSPLUS_CPP_SPEC): ... here.

Mon Jun 11 15:47:45 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* jump.c (duplicate_loop_exit_test): Fix loop header heuristics.

2001-06-11  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-decl.c (store_parm_decls): When comparing types in an
	old-style function declaration with those from a previous
	prototype, compare the unqualified versions of parameter types.
	Fixes PR c/3116.

2001-06-11  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/objc.texi: Use more logical markup.  Use TeX dashes.

2001-06-11  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/c-tree.texi: Use more logical markup.

2001-06-11  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-decl.c (xref_tag): Don't return previous tags of wrong type.

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

	* loop.c (scan_loop): Do not combine asm statements.

2001-06-11  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* simplify-rtx.c (simplify_subreg): Fix offset calculation
	for complex values within a CONCAT.

2001-06-11  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/install.texi: Update details of what components are included
	in the GCC distribution.  Update default directory for g++
	includes.  Update documentation relating to old libio.  Adjust
	documentation on DejaGnu environment variables.  Remove
	documentation of --enable-cpplib.

2001-06-11  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/contrib.texi: Fix alphabetical order.  Fix typos.  Improve
	markup.

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

	* ifcvt.c (life_data_ok): New.
	(merge_if_block): Use it to determine whether to update
	global_live_at_end.
	(if_convert): Set it.

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

	* config/alpha/osf5.h (ASM_OLDAS_SPEC): Add -c.

2001-06-10  Alexandre Oliva  <aoliva@redhat.com>

	* doc/invoke.texi (MN10300 Options): Document -mno-crt0.
	(SH Options): Document -mieee.
	* doc/install.texi (Final install): Remove obsolete information
	about installing cross compilers.
	* doc/gcc.1: Rebuilt.

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

	* config/alpha/alpha.c (override_options): Set align_loops,
	align_jumps, and align_functions.
	* config/alpha/alpha.h (FUNCTION_BOUNDARY): Set to 32 bits.
	(LOOP_ALIGN, LABEL_ALIGN_AFTER_BARRIER): Remove.

2001-06-11  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* emit-rtl.c (gen_lowpart_common): Do not assume that SFmode and DFmode
	are one and two words in size.

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

	* doc/invoke.texi (Optimization Options): Document -fpeephole2.
	(Code Generation Options): Document -fnon-call-exceptions.

2001-06-10  Mark Kettenis  <kettenis@gnu.org>

	* config/i386/gnu.h (MD_FALLBACK_FRAME_STATE_FOR): Undefine.

2001-06-10  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* m68hc11.md (peepholes): Remove unused and wrong peepholes.

2001-06-10  Mark Mitchell <mark@codesourcery.com>
	    Gabriel Dos Reis  <gdr@codesourcery.com>

	* Makefile.in (c-parse.o): Depend on diagnostic.h
	(dwarf2out.o): Likewise.

	* dwarf2out.c: #include diagnostic.h

	* toplev.h (warningcount, errorcount, sorrycount): Remove
	declarations.

	* toplev.c (warningcount, errorcount, sorrycount): Remove
	definitions.

	* diagnostic.h (struct output_buffer): Reorder fields.
	(diagnostic_kind_count): New macro.
	(errorcount, warningcount, sorrycount): Define as macros.
	(diagnostic_report_warnings_p): New macro.
	(output_state): Add diagnostic_count field.

	* diagnostic.c (warningcount, errorcount, inhibit_warnings):
	Remove tentative declaration.
	(count_error): Use diagnostic_report_warnings_p.

	* c-parse.in: #include diagnostic.h

2001-06-10  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/m68hc11.md ("extendhisi2"): Fix constraints to
	prefer a memory for operand 1.
	("*addsi3"): Fix constraints, the '!' was too strong.
	("*addsi3_split"): Accept soft register and split accordingly.

2001-06-10  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/m68hc11-protos.h (m68hc11_initialize_trampoline):
	Move definition in the RTX_CODE section.

2001-06-10  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/m68hc11.h (RETURN_ADDR_RTX): Define the return
	address as relative to the argument pointer.

Sun Jun 10 10:58:53 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* predict.def (PRED_OPCODE): Place before call and error_return.

Sun Jun 10 10:00:17 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* predict.def (PRED_CALL, PRED_ERROR_RETURN): New.
	* predict.c (estimate_probability): Calculate dominance
	information; improve detection of NORETURN heuristics;
	add call/error_return heuiristics; tweak comparison heuristics
	to recognize -1.

2001-06-09  Alexandre Oliva  <aoliva@redhat.com>

	* doc/invoke.texi (C Dialect Options): Document -aux-info.
	(Debugging Options): Document -print-multi-directory and
	-print-multi-lib.
	* doc/gcc.1: Rebuilt.

	* toplev.c (independent_decode_option): Require `=' between
	`-aux-info' and filename in the same argument.
	* gcc.c: Don't pass -aux-info=filename twice.

2001-06-09  Mark Mitchell  <mark@codesourcery.com>

	* expr.c (expand_expr, case ARRAY_REF): Do not replace
	an array element with the known initializing value if it has
	side-effects.

	* toplev.c (rest_of_compilation): Remove dead code before
	purge_addressof.

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

	* cppinit.c (print_help): Document -fpreprocessed.
	* invoke.texi: Similarly.

Sun Jun 10 00:35:37 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* predict.def: New file.
	* predict.h: New file.
	* predict.c: Include predict.h.
	(predictor_info): New structure and array.
	(predict_edge, predict_insn): Rewrite; make global.
	(predict_edge_def, predict_insn_def): New global functions.
	(dump_prediction, combine_predictions_for_insns): New
	static functions.
	(estimate_probability): Change calls to predict_edge
	to predict_edge_def and calls to predict_insn to predict_insn_def;
	combine probabilities.
	(expected_value_to_br_prob): Behave as predictor.
	* rtl.h (REG_BR_PRED): Update coment.
	(invert_br_probabilities): New.
	* jump.c: Include predict.h
	(duplicate_loop_exit_test): Drop branch prediction notes.
	(invert_jump): Use invert_br_probabilities.
	* Makefile.in: Add dependency on predict.h for jump and predict pass.
	* ifcvt.c (dead_or_predicable): Use invert_br_probabilities.
	* combine.c (distribute_notes): Handle BR_PRED.

Sat Jun  9 23:29:41 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* predict.c (predict_insn, predict_edge): New static functions.
	(estimate_probability): Revamp to use new functions;
	fix loop header heruistics; add loop exist heruistics

2001-06-09  Alexandre Oliva  <aoliva@redhat.com>

	* config.gcc: Re-enable bi-arch sparc on Solaris 7 and above.

2001-06-09  Peter Jakubek <pjak@snafu.de>

	* config/m68k/m68k.md (ashrdi_const): Fix right shift by 16.

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

	* vax.h (NOTICE_UPDATE_CC): Set CC_NO_OVERFLOW in cc_status.flags
	for integer operations that don't update C bit.

2001-06-09  Nicola Pero <nicola@brainstorm.co.uk>

	* gthr-posix.h (__gthread_objc_init_thread_system): If
	pthread_key_create fails, it's not clear what the return value is.
	This obvious fix makes sure it always returns -1 if a problem
	occurs.

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

	* doc/gcc.texi: Use @defcodeindex for the index of options.  Add
	more index entries.  Use more logical markup where appropriate.
	Use TeX quotes and dashes.

2001-06-09  Benjamin Kosnik  <bkoz@redhat.com>

	* unwind-pe.h: Conditionally qualify references to abort with
	std::.

2001-06-09  Julian Foad <julian_foad@hotmail.com>

	* doc/invoke.texi: Remove superfluous text.

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

	* config/alpha/linux.h (CPLUSPLUS_CPP_SPEC): New.
	(LIB_SPEC): Mirror config/linux.h version.

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

	* except.c (get_exception_pointer, get_exception_filter): Take a
	struct function.  Update all callers.
	* except.h (get_exception_pointer): Update declaration.
	* expr.c (expand_expr): Update get_exception_pointer call.
	* integrate.c (expand_inline_function): Remap the exception pointer
	from callee to caller.

2001-06-08  Mark Mitchell  <mark@codesourcery.com>

	* c-decl.c (grokdeclarator): Make the TREE_TYPE for declarations
	accurately reflect its cv-qualification.
	* c-typeck.c (type_lists_compatible_p): Ignore the top-levl
	cv-qualifiers on function types.

2001-06-08  Mark Mitchell  <mark@codesourcery.com>

	* basic-block.h: Improve comments.
	* except.c (expand_eh_region_end_allowed): Remove redundant call
	to do_pending_stack_adjust.
	* flow.c (life_analysis): Fix typo in comment.
	(calculate_global_regs_live): Add documentation.
	(mark_set_1): Likewise.
	(debug_regset): Likewise.
	* doc/rtl.texi (cond_exec): Document it.

Fri Jun  8 21:52:51 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.h (CONST_COSTS): set cost of constants representable in
	immediate fields to 0.

Fri Jun  8 21:34:54 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* function.c (diddle_return_value): Kill code to determine
	return value before expand_function_end.
	(expand_function_end): Delay call to clobber_return_register
	after fucntion return value is computed.

	Re-install temporary reverted patch:
	* toplev.c (rest_of_compilation): Call split_all_insns
	before reg-stack and shorten-branches. Do shorten-branches
	after reg-stack.
	* final.c (shorten_branches): Remove insn splitting code.

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

	* doc/gcc.texi, doc/invoke.texi: Add index of command line
	options.  Use @opindex to index them rather than other indexing
	commands.  Use @var{...} instead of <...>.  Avoid spaces in names
	inside @var.  Don't use @kindex to index escape sequences in
	source code.

2001-06-08  Jason Merrill  <jason_merrill@redhat.com>

	* stmt.c (current_nesting_level): New fn.
	* tree.h: Declare it.
	* c-semantics.c (genrtl_compound_stmt): Use it.

	* dbxout.c (dbxout_symbol): Use DECL_RTL_SET_P.

2001-06-08  Jakub Jelinek  <jakub@redhat.com>

	* jump.c (mark_modified_reg): Allow jump threading if condition
	codes are represented by a hard register.

2001-06-08  Jakub Jelinek  <jakub@redhat.com>

	* config/ia64/ia64.c (ia64_function_arg): Use [SDT]Fmode as gr_mode
	for complex floats passed to unprototyped functions.

2001-06-08  Mark Mitchell  <mark@codesourcery.com>

	* except.c (expand_eh_region_end_allowed): Call
	do_pending_stack_adjust as necessary.

Fri Jun  8 14:16:33 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* function.c (clobber_return_register): Clobber the pseudo return
	register too.

	* sibcall.c (skip_unreturned_value): New function.
	(call_ends_block_p): Use it.

	* recog.c (split_insn): Break out from ...
	(split_all_insns): ... here; do not use basic block information
	when it is broken.

Thu Jun  7 18:27:53 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* simplify-rtx.c (simplify_subreg):  Fix verification of
	combined subreg.

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

	* config/mips/mips.h (CPP_SPEC): Simplify .s/.S handling.
	Don't define _LANGUAGE_C and variants for .cpp/.cp/.c++ files.
	Move definition of _LANGUAGE_C_PLUS_PLUS ...
	(CPLUSPLUS_CPP_SPEC): ... here.
	Fixes PRs c++/3047, target/441.

2001-06-08  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* doc/install.texi2html (MAKEINFO): Keep value if set already.

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

	* doc/gcc.texi: Add trailing slash to URL.

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

	* config/darwin.h (ENCODE_SECTION_INFO): Define.
	(REDO_SECTION_INFO_P): Ditto.
	(STRIP_NAME_ENCODING): Ditto.
	(ASM_DECLARE_OBJECT_NAME): Use ENCODE_SECTION_INFO.
	(ASM_OUTPUT_ALIGNED_DECL_LOCAL): Ditto.
	(ASM_OUTPUT_LABELREF): Use STRIP_NAME_ENCODING.
	(GEN_LAZY_PTR_NAME_FOR_SYMBOL): Ditto.
	* config/darwin.c: No longer include c-tree.h.
	(machopic_classify_ident): Rewrite to use symbol encoding.
	(lookup_name_darwin): Remove.
	(machopic_non_lazy_ptr_name): Handle encoded symbols.
	(machopic_stub_name): Use STRIP_NAME_ENCODING.
	(machopic_validate_stub_or_non_lazy_ptr): Ditto.
	(machopic_finish): Ditto, remove test of decl.
	(update_non_lazy_ptrs): New function.
	(darwin_encode_section_info): New function.
	* config/darwin-protos.h: Declare it.
	* config/rs6000/rs6000.c (machopic_output_stub): Use
	STRIP_NAME_ENCODING.

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

	* tree.h (DECL_SOURCE_FILE): Improve documentation.
	(DECL_SOURCE_LINE): Likewise.

2001-06-07  Loren J. Rittle  <ljrittle@acm.org>

	* config/alpha/elf.h (MAKE_DECL_ONE_ONLY): Copy definition
	from config/elfos.h.

2001-06-07  Phil Edwards  <pme@sources.redhat.com>

	* linux.h (CPLUSPLUS_CPP_SPEC):  Move -D_GNU_SOURCE to here.
	* pa/pa-linux.h:  Allow CPLUSPLUS_CPP_SPEC to remain.

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

	* doc/contrib.texi: Add copyright notice.

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

	* doc/md.texi: Use four digit years in copyright notice.

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

	* config.gcc: For $target_alias of athlon-*, set
	target_cpu_default2=5.

Thu Jun  7 16:17:40 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* global.c (build_insn_chain): Allow ADDR_VEC or ADDR_DIF_VEC after
	end of last block if last real insn is a JUMP_INSN.

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

	* NEWS: Regenerate.

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

	* gthr-posix.h (__gthread_objc_thread_detach): Simply cast
	pthread_t to objc_thread_t.
	(__gthread_objc_thread_id): Likewise.

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

	* alpha/osf5.h (CPP_XFLOAT_SPEC): Override default definition.
	(ASM_OLDAS_SPEC): Likewise.

	* alpha/osf.h (CPP_XFLOAT_SPEC): Define.
	(CPP_SUBTARGET_SPEC): Use it.
	(ASM_OLDAS_SPEC): Define.
	(ASM_SPEC): Use it.
	(SUBTARGET_EXTRA_SPECS): Define, declare the new specs above.

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

	* config/alpha/alpha.c (alpha_va_arg): Handle TFmode, TCmode args,
	passed by reference.

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

	* doc/tm.texi (TARGET_SWITCHES, TARGET_OPTIONS): Adjust markup.
	Document use of N_(...), and show it in examples.  Note that
	documentation should be added to invoke.texi.  Avoid an overfull
	hbox.

Thu Jun  7 17:09:50 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* toplev.c (rest_of_compilation): Revert previous patch.
	* final.c (shorten_branches): Likewise.

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

	* pself.c, pself1.c, pself2.c, pself3.c, pself4.c, pself5.c:
	Remove.

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

	* doc/install-old.texi: Remove more obsolete documentation.

Thu Jun  7 13:20:14 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* expr.c (copy_blkmode_from_reg): Fix operand_subword_force call.

Thu Jun  7 12:12:58 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* toplev.c (rest_of_compilation): Call split_all_insns
	before reg-stack and shorten-branches. Do shorten-branches
	after reg-stack.
	* final.c (shorten_branches): Remove insn splitting code.

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

	* configure.in (sparc*-*-*): Check assembler R_SPARC_UA32 support.
	* configure: Rebuilt.

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

	* emit-rtl.c (operand_subword): Remove unused variable.

Wed Jun  6 14:51:05 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (floatdi?f): Avoid usinf of SSE instructions
	if TARGET_64BIT is false.
	(floatdi?f_i386_only): New insn.
	(floatdi?f_i386): Disable for !TARGET_64BIT.

	* (min?f, max?f splitters): Handle case where
	operands are cross-matched.

	* i386.h (HI_REGISTER_NAMES): Remove redundant definition
	(MMX_REGISTER_NAMES): Kill.
	(PRINT_OPERAND): Fix comment.
	(PRINT_REG): Likewise.
	* i386.c (print_reg): Kill support for 'm' CODE; simplify.
	(print_operand): Update comment; kill 'm'.

	* i386.c (x86_branch_hints): New global variable
	(print_operand): Support outputting of branch prediction hints.
	* i386.md (conditional jump patterns): Add branch prediction hints
	to the template.
	* i386.h (x86_branch_hints): Declare
	(TARGET_BRANCH_PREDICTION_HINTS): New macro.
	(PRINT_OPERAND_FUNCT_VALID_P): New.
	* final.c (final_forward_branch_p): New function.

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

	* flow.c (mark_used_reg): Clean up looping over multiple hard
	registers.  Do conditional life bits across multiple hard regs.

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

	* reload1.c (reload): Revert Schmidt's change so all USEs are not
	deleted during reload.

2001-06-05  Mark Mitchell  <mark@codesourcery.com>

	* c-semantics.c (genrtl_scope_stmt): Write out nested inline
	functions here, instead of ...
	* c-decl.c (c_expand_body): ... here.

2001-06-05  David O'Brien  <obrien@FreeBSD.org>

	* config.gcc, config/sparc/bsd.h:  Do not directly include
	sparc/sparc.h.  Instead do it via tm_file.

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

	* dwarf2.h (DW_EH_PE_aligned): New.
	* dwarf2asm.c (eh_data_format_name): Name it.
	(dw2_asm_output_encoded_addr_rtx): Align for it.
	* dwarf2out.c (output_call_frame_info): Handle it for personality
	routine and LSDA pointers.

	* unwind-pe.h (DW_EH_PE_aligned): New.
	(base_of_encoded_value): Handle it.
	(read_encoded_value_with_base): Likewise.
	* unwind-dw2-fde.c (base_from_object): Likewise.
	(get_cie_encoding): Likewise.

	* config/alpha/elf.h: Remove ecoff commentary.
	* config/alpha/osf.h (ASM_PREFERRED_EH_DATA_FORMAT): New.

2001-06-05  David O'Brien  <obrien@FreeBSD.org>

	* config.gcc, config/i386/bsd386.h:  Do not directly include
	i386/386bsd.h.  Instead do it via tm_file.

2001-06-05  David O'Brien  <obrien@FreeBSD.org>

	* elfos.h (USING_ELFOS_H):  Identify the use of elfos.h in the same
	way svr4.h does.

2001-06-05  Pascal Obry  <obry@act-europe.fr>

	* configure.in: Quote $enable_win32_registry in case the value has
	spaces in it.
	* configure: Ditto.

2001-06-05  Mark Mitchell  <mark@codesourcery.com>

	* print-rtl.c (xspaces): Remove.
	(print_rtx): Use printf field-width, rather than xpsaces, to
	indent.
	* toplev.c (main): Disable sibling-call optimization if we are
	handling exceptions.

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

	* reload1.c (reload): Delete all USEs generated during reload.

2001-06-05  scott snyder  <snyder@fnal.gov>

	* gccbug.in:  Fix typo.

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

	* builtins.def: Fix definition of __builtin_cosf, it uses float as
	parameter and return value.

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

	* config/sparc/elf.h (CPP_PREDEFINES): Don't assert cpu or
	machine.  This is now done in sparc.h.

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

	Correct CVS resurrection of invoke.texi.
	* doc/invoke.texi: Document new tree dump flags.

2001-06-05  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-typeck.c (build_c_cast): Use TYPE_MAIN_VARIANT when checking
	for casting an aggregate to its own type.  Fixes PR c/2735.

2001-06-05  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/texinfo.tex: Update to version 2001-05-24.08.

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

	* c-common.h (flag_dump_translation_unit): Remove.
	(enum tree_dump_index): Define.
	(TDF_ADDRESS, TDF_SLIM): New #defines.
	(dump_node_to_file): Remove.
	(dump_node): Make extern. Add flags.
	(dump_flag, dump_enabled_p, dump_begin, dump_end,
	dump_switch_p): Prototype.
	* c-common.c (flag_dump_translation_unit): Remove.
	* c-decl.c (c_decode_option): Remove -fdump-translation-unit
	logic. Use dump_switch_p.
	* c-dump.h (struct dump_info): Add node and user fields.
	(dump_pointer): Declare.
	* c-dump.c (dump_node): Make extern. Add flags.
	(SOL_COLUMN, EOL_COLUMN, COLUMN_ALIGNMENT): New #defines.
	(dump_new_line, dump_maybe_newline): Use them.
	(dump_pointer): New function.
	(dequeue_and_dump): Check TDF_SLIM before dumping a _DECL's
	chain or function's body. Dump address, if TDF_ADDRESS set.
	(dump_flag): Define.
	(dump_node_to_file): Remove.
	(struct dump_file_info): New struct.
	(dump_files): New array.
	(dump_begin, dump_end, dump_enabled_p, dump_switch_p): Define.
	* c-lang.c (finish_file): Adjust dumping.
	* toplev.h (dump_base_name): Make extern.
	* invoke.texi: Document new flags.

2001-06-04  Mark Mitchell  <mark@codesourcery.com>

	* c-tree.h (lang_decl): Add pending_sizes fields.
	* c-decl.c (store_parm_decls): Save pending_sizes away for nested
	functions.
	(c_expand_body): Expand them.
	(lang_mark_tree): Mark lang_decl:pending_sizes.
	* function.c (expand_pending_sizes): New function, broken out
	from ...
	(expand_function_start): ... here.
	* tree.h (expand_pending_sizes): Declare it.

2001-06-04  Loren J. Rittle  <ljrittle@acm.org>

	* doc/install.texi: Update FreeBSD information.  Generalize
	and update information for alpha-based platforms using ELF.

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

	* c-decl.c (get_parm_info): Use INTEGRAL_TYPE_P.
	(store_parm_decls): Likewise.
	* c-typeck.c (convert_arguments): Likewise.

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

	* sibcall.c (optimize_sibling_and_tail_recursive_call): Suppress
	optimization if current_function_calls_setjmp.

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

	* doc/c-tree.texi: Fix documentation of TREE_STRING_LENGTH for
	wide strings.

Mon Jun  4 20:44:25 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* simplify-rtx.c (simplify_subreg): Fix combining of
	paradoxical subregs.

Mon Jun  4 20:15:25 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* rtlanal.c (rtx_unsable_p): ADDRESSOF is stable.
	(no_labels_between_p): Short circuit case beg==end.

Mon Jun  4 20:03:05 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* rtlanal.c (operand_preference): Fix preference for objects.

Mon Jun  4 20:00:40 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* gcse.c (handle_avail_expr): Be prepared to handle single_set
	parallels.

Mon Jun  4 19:59:46 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* combine.c (if_then_else_cond): Use simplify_subreg instead
	of operand_subword.
	* integreate.c (sub_constants): Likewise.

Mon Jun  4 19:59:12 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* emit-rtl.c (constant_subword): Deprecate; remove most of code
	and use simplify_gen_subreg.

Mon Jun  4 19:55:23 CEST 2001  Lars Brinkhoff  <lars@nocrew.org>

	* sibcall.c (skip_copy_to_return_value): recognize the situation
	when the called function's return value is copied into an
	intermediate pseudo, and then into the calling functions return
	value register.

Mon Jun  4 16:50:33 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* simplify_rtx.c (simplify_subreg): Keep subregs on return values,
	check CLASS_CANNOT_CHANGE_MODE before avoiding subreg on hard reg,
	in case register wasn't OK previously, accept it now; allow
	subregs of frame pointer if reload completed and frame pointer
	is not needed.

	* combine.c (sombine_simplify_rtx): Fix comment;
	use subreg_lowpart_offset instead of subreg_lowpart_p
	(gen_lowpart_for_combine): Use subreg_lowpart_offset.
	* rtl.h (subreg_lowpart_parts_p): Kill.
	(subreg_lowpart_offset, subreg_highpart_offset): Declare.
	* simplify-rtx.c (simplify_subreg): Use subreg_lowpart_offset.
	* emit-rtl.c (gen_lowpart_SUBREG): Use subreg_lowpart_offset;
	(gen_lowpart_common): Likewise.
	(subreg_lowpart_p): Likewise.
	(subreg_lowpart_parts_p): Kill.
	(subreg_lowpart_offset, subreg_highpart_offset): New function.

	* emit-rtl.c (gen_lowpart_common): Use simplify_gen_subreg
	to simplify SUBREG and REG.
	(gen_highpart): Use simplify_gen_subreg for all simplifications.

	* emit-rtl.c (gen_realpart, gen_imagpart): Do not handle
	CONCAT specially.

	* rtlanal.c (replace_regs):  Use simplify_gen_subreg

Mon Jun  4 09:21:19 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* doc/c-tree.texi (ARRAY_REF): Say what type of expression must be.
	(ARRAY_RANGE_REF): Added description.

	* tree.def (ARRAY_RANGE_REF): New code.
	* alias.c (handled_component_p, can_address_p): Handle it.
	* dwarf2out.c (loc_descriptor_from_tree): Likewise.
	* explow.c (set_mem_attributes): Likewise.
	* expr.c (expand_assignment, get_inner_reference): Likewise.
	(expand_expr, expand_expr_unaligned, do_jump): Likewise.
	* fold-const.c (operand_equal_p): Likewise.
	* tree.c (staticp, stabilize_reference): Likewise.
	* varasm.c (decode_addr_const): Likewise.

Sun Jun  3 21:59:51 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* reload.c (reload_inner_reg_of_subreg): Return 1 for PLUS.
	(push_reload): Handle non-REG in reload_inner_reg_of_subreg case.

2001-06-03  kaz Kojima  <kkojima@rr.iij4u.or.jp>

	* gcc/config/sh/sh.c (print_operand_address, print_operand): Call
	mark_constant_pool_use before output_addr_const.
	(struct pool_node): New field wend.
	(add_constant): Note a sequence of constants that are referenced
	by a given label.
	(pool_window_label, pool_window_last): New variables.
	(dump_table): Emit a unspec_volatile representing the end of a
	sequence of constants.
	(mark_constant_pool_use): New function.
	* gcc/config/sh/sh.md (UNSPECV_WINDOW_END): New constant.
	(consttable_2): Add the second operand which flags whether
	this consttable entry was used or not.
	(consttable_4, consttable_8, consttable_sf, consttable_df):
	Likewise.
	(consttable_window_end): New insn.

2001-06-03  Alexandre Oliva  <aoliva@redhat.com>

	* insn-addr.h (INSN_ADDRESSES_NEW): Make insn_uid__ unsigned.
	Reformat according to coding standards.

	Warning removal.
	* config/sh/sh.c (print_operand_address): Cast INTVAL to int.
	(shl_and_kind): Cast wide constant.
	(gen_far_branch): Define as static, as in declaration.
	(barrier_align): Compute cache-line length as unsigned.  Add
	parentheses in initial credit computation.
	(rounded_frame_size): Add parentheses.
	(permanent_obstack): Remove declaration.  Include ggc.h for
	declaration of ggc_add_root_rtx().
	(get_free_reg): Removed declaration of unused variable reg.
	(legitimize_pic_address): Mark mode argument as unused.

2001-06-03  Igor Shevlyakov  <igor@windriver.com>

	* config/sh/sh.c (output_branch): Support for insn with lenght
	attr 12 & 16 which represents cond branches outside +-4096 range.

2001-06-03  Alexandre Oliva  <aoliva@redhat.com>

	* config/sh/lib1funcs.asm (ic_invalidate): Align the
	cache-mirroring sequence.  Add nops.

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

	* doc/install-old.texi: Remove more old installation
	documentation.
	* doc/install.texi: Add relevant parts here.

2001-06-03  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* doc/install.texi2html: New script.

2001-06-03  David Edelsohn  <edelsohn@gnu.org>

	* doc/install.texi: Update AIX information again.

2001-06-02  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/gcc.texi, doc/install-old.texi: Remove old system-specific
	installation documentation.
	* doc/install.texi: Move it to here.

2001-06-02  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/install.texi: Clean up Texinfo markup.

2001-06-02  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/cpp.texi, doc/cppinternals.texi, doc/gcc.texi: Move contents
	to just after title page.

2001-06-02  Joseph S. Myers  <jsm28@cam.ac.uk>

	* doc/install-old.texi: Remove documentation of some configuration
	options.
	* doc/install.texi: Add relevant parts of this documentation here.

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

	* contrib.texi: Updated entries for Mark Mitchell, Joseph S. Myers,
	Gerald Pfeifer, Bernd Schmidt, and Dean Wakerley.

Sat Jun  2 12:23:51 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (all uses of ext_register_operand): Make sure they are
	VOIDmode; replace all uses outside zero_extend.
	(and?i splitters): Use ext_register_operands.
	(test?i peep2): Remove ignored constraints.
	* i386.c (ext_register_operand): Check that operand is
	either pseudo or hard or 'Q' register.

Sat Jun  2 06:53:50 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* tree.h (struct record_layout_info_s): New field unpadded_align.
	(set_lang_adjust_rli): New declaration.
	* stor-layout.c (layout_decl): If DECL is packed, but at alignment
	it would have if not packed, do not downgrade DECL_ALIGN.
	(lang_adjust_rli, set_lang_adjust_rli): New.
	(start_record_layout): Initialize new field unpadded_align.
	(debug_rli): Display it.
	(place_union_field, place_field): Set it.
	(layout_type, case RECORD_TYPE): Call via lang_adjust_rli if set.

	* print-tree.c (print_node): Don't print "regdecl" when bit doesn't
	mean that; use proper names instead.
	Print DECL_NO_STATIC_CHAIN.

	* except.c (expand_builtin_frob_return_addr): Add missing call
	to convert_memory_address #ifdef POINTERS_EXTEND_UNSIGNED.
	(expand_builtin_eh_return): Likewise.
	(expand_eh_return): Clean up ptr_mode != Pmode cases.

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

	* doc/invoke.texi: Remove references to papers about sequence points
	to readings.html, refer to that page.

2001-06-01  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* README: Update references to installation instructions.

2001-06-01  Laurent Guerby  <guerby@acm.org>
	    Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* doc/install.texi: Define srcdir when sources come from CVS.
	Significantly improve markup.  Wrap overly long lines

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

	* c-tree.texi, contrib.texi, cpp.texi, cppinternals.texi,
	extend.texi, fdl.texi, gcov.texi, invoke.texi, md.texi,
	objc.texi, rtl.texi, tm.texi, texinfo.tex, gcc.1, cpp.1,
	gcov.1: Move to doc subdirectory.
	* install.texi: Move to doc/install-old.texi.
	* gcc.texi: Move to doc, refer to install-old.texi.
	* Makefile.in: Reflect move of docs to doc/.
	* f/Make-lang.in: Ditto.
	* java/Make-lang.in: Ditto.
	* doc/.cvsignore: New.

2001-05-31  Jan van Male  <jan.vanmale@fenk.wau.nl>

	* invoke.texi: use two spaces between command options, eliminate
	some 'overfull hboxes'

2001-06-01  Hans-Peter Nilsson  <hp@axis.com>

	* Makefile.in (s-mlib): Make backtick-commands always succeed.
	(DRIVER_DEFINES): Ditto.

2001-05-31  Richard Henderson  <rth@redhat.com>

	* gcc.c (init_gcc_specs): When linking against libgcc_s.so,
	also link against libgcc.a.

2001-05-31  Geoff Keating  <geoffk@cygnus.com>

	* config/mips/mips.h (ASM_OUTPUT_ASCII): Convert to function.
	* config/mips/mips.c (mips_output_ascii): New function.
	* config/mips/mips-protos.h (mips_output_ascii): Prototype.

	* config/mips/mips.h (DWARF_CIE_DATA_ALIGNMENT): Force to 4.

Thu May 31 19:09:53 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* flow.c (set_block_for_new_insns): Remove bogus shortcut.
	* i386.c (ix86_expand_int_movcc): Force one of operands to be register.

2001-05-31  Rodney Brown  <rbrown64@csc.com.au>

	* install.texi (Configuration): Add html links for --with-gnu-as &
	--with-gnu-ld and refer to them from hppa & SCO triplets.
	(Specific): Link back to with-gnu-ld for all ELF platfoms.
	(Specific): Reword AVR binutils recommendation.

2001-05-30  Zack Weinberg  <zackw@stanford.edu>

	* ggc-page.c (size_lookup): Increase minimum allocation size
	to eight bytes.
	(ggc_print_statistics): Report size of each bin in bytes, not
	as its order; there is no longer a direct relationship.

2001-05-31  Jan van Male  <jan.vanmale@fenk.wau.nl>

	* extend.texi: Fix formating of examples, eliminate some
	'overfull hboxes'.
	* gcc.texi: Eliminate some 'overfull hboxes'.
	* invoke.texi: Use two spaces between command options, eliminate
	some 'overfull hboxes'.

2001-05-30  Richard Henderson  <rth@redhat.com>

	* dwarf2out.c (dwarf2out_finish): Don't emit DW_AT_stmt_list at -g1.

2001-05-30  Tom Tromey  <tromey@redhat.com>

	* gcc.c (do_spec_1): In `%O' case, if we computed saved_suffix,
	use it in the new association.

2001-05-30  Loren J. Rittle  <ljrittle@acm.org>
	    John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* gthr-posix.h (__gthread_active_ptr): Cast function pointer
	to target type to allow ISO C++ compiler to accept it.
	* gthr-dce.h (__gthread_active_ptr): Likewise.
	* gthr-solaris.h (__gthread_active_ptr): Likewise.

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

	* cpplex.c (_cpp_lex_token): Revert patch of 16 May 2001
	so that we do accept comments in preprocessed input.

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

	* cpphash.c (alloc_node): Cast allocated pointer.

2001-05-30  Gordon Sadler <gbsadler1@lcisp.com>

	* invoke.texi (Option Summary): Remove -isystem-c++ from options.

2001-05-29  Stan Shebs  <shebs@apple.com>

	* gcc.texi: Add links for information about Objective-C.

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

	* configure.in (gcc_version): Remove unrequired \ on ". (Solaris
	/bin/sed fails on [^\"]).
	(configargs.h): Likewise.

2001-05-29  Hartmut Schirmer <SchirmerH@Innovative-Systems.de>

	* config/sh/sh.h (IDENT_ASM_OP): End with TAB, not LF.

2001-05-28  Stan Shebs  <shebs@apple.com>

	* objc/objc.gperf: Remove, no longer used.

2001-05-28  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-tree.texi, contrib.texi, cpp.texi, extend.texi, gcc.texi,
	gcov.texi, install.texi, md.texi, objc.texi, rtl.texi, tm.texi:
	Remove trailing whitespace.

2001-05-28  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* doc/install.texi (Specific): http://reality.sgi.com/ariel/freeware/
	became http://freeware.sgi.com/.

2001-05-27  Geoffrey Keating  <geoffk@redhat.com>

	* local-alloc.c (update_equiv_regs): Don't eliminate constant
	expressions at -O0.

2001-05-27  Stan Shebs  <shebs@apple.com>

	* objc/objc-act.c: Add/fix various comments.
	(init_selector): Remove, no longer used.
	(build_msg_pool_reference): Ditto.
	(objc_debug): Ditto.

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

	* c-decl.c (init_decl_processing):
	 Don't call start_identifier_warnings.
	* flags.h (warn_id_clash, id_clash_len): Remove.
	* stringpool.c: Don't include flags.h.
	(scan_for_clashes, do_identifier_warnings,
	start_identifier_warnings): Remove.
	* toplev.c (warn_id_clash, id_clash_len): Remove.
	(display_help): Don't document -Wid-clash.
	(decode_W_option): Print warning on -Wid-clash.
	* tree.h (start_identifier_warnings): Remove.
	* invoke.texi: Remove documentation of -Wid-clash.

2001-05-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* fixinc/fixtests.c: Declare entries in ENV_TABLE.

2001-05-27  Bruce Korb  <bkorb@gnu.org>

	* fixinc/check.tpl(HACK) add and use a Scheme variable
	(has no test text): error out if no "test_text" is defined
	* fixinc/fixincl.tpl: likewise
	(FIXIDX): make it an enumeration so we minimize diffs
	* fixinc/inclhack.def: re-alphabetize and add sort instructions
	* fixinc/fixincl.x: regenerate
	* fixinc/tests/base/stdio.h: test output got moved due to
	the alphabetizing
	* README-fixinc: rewrite (mostly)

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

	* cpplib.c (run_directive): Set pfile->directive.

2001-05-23  Theodore Papadopoulo  <Theodore.Papadopoulo@sophia.inria.fr>

	* c-tree.texi: Reformat the manual as a single chapter now
	included by gcc.texi.
	* gcc.texi: Include c-tree.texi. Merge all indexes.
	* Makefile.in (dvi): Add generation for the cppinternals
	documentation. Added dependencies on fdl.texi and c-tree.texi
	where appropriate.  Use TEXI2DVI instead of custom tex calls.
	(info): Added dependencies on fdl.texi and c-tree.texi where
	appropriate.  Remove the target c-tree.info.

2001-05-27  Lars Brinkhoff  <lars@nocrew.org>

	* combine.c (try_combine): Fix typo in comment.
	* expr.c (expand_expr): Likewise.
	* config/i370/i370.md (untyped_call): Likewise.

2001-05-26  Bruce Korb  <bkorb@gnu.org>

	* fixinc/fixtests.c(stdc_0_in_system_headers_test): Must return "FIX"
	when fixincl is operating in test mode
	* fixinc/inclhack.def(AAB_dgux_int_varargs) : aesthetics
	(AAB_ultrix_limits): remove redundant text
	(AAB_ultrix_memory): ditto
	(AAB_ultrix_string): ditto
	(djgpp_wchar_h): fix the test text
	(irix_stdio_va_list): add test text
	(irix_limits_const): add a testing output file (limits.h is overwritten)
	(strict_ansi_not_ctd): put limits.h second in list for same reason
	(solaris27_mutex_init): test text needed selection text, too

	* fixinc/fixtests.c(stdc_0_in_system_headers_test): Must return "FIX"
	when fixincl is operating in test mode

2001-05-26  Philip Blundell  <philb@gnu.org>

	* config/c4x/c4x-protos.h: Use GCC_C_PRAGMA_H in place of _C_PRAGMA_H.
	* config/i960/i960-protos.h: Likewise.
	* config/i370/i370-protos.h: Likewise.
	* config/h8300/h8300-protos.h: Likewise,
	* config/sh/sh-protos.h: Likewise.
	* config/v850/v850-protos.h: Likewise.

2001-05-26  Philip Blundell  <philb@gnu.org>

	* config/arm/arm-protos.h: Use GCC_C_PRAGMA_H in place of _C_PRAGMA_H.

2001-05-25  Zack Weinberg  <zackw@stanford.edu>

	* toplev.c (debug_args, f_options, W_options): Mark
	descriptions for translation.
	(display_help): Translate descriptions on output.

	* cp/lang-options.h, f/lang-options.h, java/lang-options.h,
	objc/lang-options.h: Mark descriptions for translation.

	* aclocal.m4: Quote final argument of patsubst.  Use
	3-argument form of AC_DEFINE.  Restore quotes to [] while
	using AC_FD_CC.
	* configure.in: Remove unnecessary changequote calls.
	* configure, config.in: Regenerate.

2001-05-25  Sam TH  <sam@uchicago.edu>

	* basic-block.h: Fix header include guards.
	* bitmap.h c-dump.h c-lex.h c-pragma.h c-tree.h collect2.h
	cppdefault.h cpphash.h cpplib.h defaults.h diagnostic.h errors.h
	except.h flags.h gcc.h gcov-io.h graph.h gstab.h gthr-aix.h
	gthr-dce.h gthr-posix.h gthr-rtems.h gthr-single.h gthr-solaris.h
	gthr-vxworks.h gthr-win32.h gthr.h hard-reg-set.h hwint.h
	insn-addr.h libgcc2.h mbchar.h mkdeps.h params.h prefix.h real.h
	rtl.h sbitmap.h system.h timevar.h toplev.h tradcpp.h tsystem.h
	varray.h version.h: Likewise.
	* config/dbxelf.h config/fp-bit.h config/arm/arm-protos.h
	config/arm/arm.h config/c4x/c4x-protos.h
	config/h8300/h8300-protos.h config/h8300/h8300.h
	config/i370/i370-protos.h config/i370/i370.h
	config/i960/i960-protos.h config/mcore/mcore.h
	config/mips/mips-protos.h config/sh/sh-protos.h config/sh/sh.h
	config/v850/v850-protos.h config/v850/v850.h: Likewise.
	* fixinc/fixlib.h fixinc/server.h: Likewise.

2001-05-25  Stacey Sheldon  <ssheldon@Catena.com>

	* config/arc/initfini.c (.init): Fix typo.

2001-05-25  Geoffrey Keating  <geoffk@redhat.com>

	* config/rs6000/rs6000.md (fseldfsf4): Correct mode of operand 4.

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

	* i386/i386.h (CC1_CPU_SPEC): Clarify -m486 etc deprecation messages.

2001-05-25  Richard Henderson  <rth@redhat.com>

	* libgcc-std.ver: Export XFmode and TFmode versions of symbols.

2001-05-25  Richard Henderson  <rth@redhat.com>

	* config.gcc (all gnu and linux): Use t-slibgcc-elf-ver with t-linux.
	(i386-*-solaris2): Use t-slibgcc-elf-ver or t-slibgcc-sld.
	(sparc*-*-solaris2): Likewise.
	* config/t-linux: Remove shared libgcc macros.
	* config/t-slibgcc-elf-ver: Move from sparc/t-slibgcc.
	* config/t-slibgcc-sld: Move from sparc/t-slibgcc-sld.

2001-05-25  Loren J. Rittle  <ljrittle@acm.org>

	* config.gcc (*-*-freebsd*): Report bad configuration.

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

	* xcoffout.h (DBX_OUTPUT_GCC_MARKER): Do not emit any marker.

	* config/rs6000/aix.h (USER_LABEL_PREFIX): AIX symbols do not have
	any prefix.
	(ASM_OUTPUT_LABELREF): Delete.

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

	* fixinc/inclhack.def (strict_ansi_not, strict_ansi_not_ctd,
	strict_ansi_only): Don't run if stdc_0_in_system_headers.
	* fixinc/fixincl.x: Regenerate.
	* fixinc/fixtests.c (stdc_0_in_system_headers_test): New function.
	(FIX_TEST_TABLE): Declare it.
	* fixinc/fixlib.h: Include config.h.

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

	* fixinc/inclhack.def (alpha___assert): Change char * args to
	const char * on Tru64 UNIX to avoid excessive warnings from
	assert.h.
	* fixinc/fixincl.x: Regenerate.

2001-05-25  Geoff Keating  <geoffk@redhat.com>

	* dbxout.c (dbxout_symbol): Invert previous patch, which was
	outputting a tag only for variable-size records.

2001-05-25  Jeff Knaggs  <jknaggs@redhat.com>

	* config/alpha/alpha.md (movtf_internal): Use reg_overlap_mentioned_p
	instead of rtx_equal_p for early clobber test.

2001-05-26  Mark Mitchell <mark@codesourcery.com>

	* builtins.def: Encode additional information, such as names and
	types, here.
	* builtin-types.def: New file.
	* builtins.c (built_in_names): Adjust use of DEF_BUILTIN.
	(built_in_decls): Likewise.  Don't explicitly initialize global
	data to NULL.
	(expand_builtin_mathfn): Handle float and long double variants of
	math builtins.
	(expand_builtin): Likewise.
	* c-common.c (c_common_nodes_and_builtins): Make it table-driven.
	(expand_tree_builtin): Handle long, long long, float, and long
	double variants of math functions.
	* c-common.h (c_tree_index): Remove some unused nodes.
	(void_ftype): Remove.
	(void_type_ptr): Likewise.
	(int_ftype_int): Likewise.
	(ptr_ftype_sizetype): Likewise.
	* c-decl.c (init_decl_processing): Remove creation of DWARF
	builtins.
	* defaults.h (MD_INIT_BUILTINS): Provide default definition.
	* tree.h (built_in_function): Adjust definition of DEF_BUILTIN.
	* Makefile.in (c-common.o): Depend on builtin-types.def.

2001-05-25  Dale Johannesen  <dalej@apple.com>

	* config/rs6000/t-darwin: Fix dependencies for darwin.o.

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

	* c-parse.in (notype_initdcl): Remove redundant line.

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

	* aclocal.m4: Fixed typo.
	(gcc_AC_HEADER_STDBOOL): Define.
	(gcc_AC_C__BOOL): Define.
	* configure.in: Use them.
	(AC_CHECK_HEADERS): Remove stdbool.h
	* configure, config.in: Regenerate.

2001-05-25  Richard Henderson  <rth@redhat.com>

	* function.c (expand_function_start): Don't abort on PARALLEL
	returns from hard_function_value.

2001-05-25  Richard Henderson  <rth@redhat.com>

	* config/i386/i386.md: Revert previous change.  Do not apply
	the peephole if the components do not die after the sequence.

2001-05-25  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-parse.in (array_declarator): New.  Handle C99 constructs.
	Don't restrict [*] declarators to C only.
	(after_type_declarator, parm_declarator_starttypename,
	parm_declarator_nostarttypename, notype_declarator,
	direct_absdcl1): Use it.
	* c-decl.c (build_array_declarator, set_array_declarator_type):
	New functions.  Warn that [*] isn't properly implemented; pedwarn
	for [*] outside C99 mode if pedantic rather than giving a hard
	error.
	(grokdeclarator): Handle static and type qualifiers in parameter
	array declarators.
	* c-tree.h (build_array_declarator, set_array_declarator_type):
	Declare.
	* extend.texi (Attribute Syntax): Document attributes in parameter
	array declarators.

2001-05-25  Mark Mitchell  <mark@codesourcery.com>

	* config/i386/i386.md: Make sure cmpstr peepholes do not
	affect liveness information.

2001-05-24  Mark Mitchell  <mark@codesourcery.com>

	* c-typeck.c (digest_init): Issue error messages about
	invalid constants, not warnings.

2001-05-24  Mark Mitchell  <mark@codesourcery.com>

	* invoke.texi (-fno-builtin): Document that this is always on
	in C++.

2001-05-24  Philip Blundell  <philb@gnu.org>

	* doc/install.texi (arm*-*-linux-gnu): Say that binutils 2.10 is
	required.

2001-05-24  Philip Blundell  <philb@gnu.org>

	* config/arm/arm.c (output_return_instruction): Correctly handle
	interworking and interrupt functions.

2001-05-24  Philip Blundell  <philb@gnu.org>

	* config/arm/arm.h (TARGET_SWITCHES): Correct misleading help for
	-m{no-}sched-prolog.  Fix typos and improve formatting.

2001-05-24  Philip Blundell  <philb@gnu.org>

	* invoke.texi (ARM Options): Improve wording slightly.  Add
	documentation for more options, including those for Thumb mode.
	Don't mention options that don't exist or are unimplemented.
	(Thumb Options): Delete; merged into above section.

2001-05-24  Geoff Keating  <geoffk@redhat.com>

	* config/rs6000/linux.h (SIGNAL_FRAMESIZE): Define.
	(MD_FALLBACK_FRAME_STATE_FOR): Use it.

Thu May 24 19:47:19 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* simplify-rtx.c (simplify_subreg): Fix CONCAT simplification;
	fix hard register simplification.

Thu May 24 00:15:17 2001  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* sparc/sol2.h (CPLUSPLUS_CPP_SPEC): Add all of CPP_SPEC instead
	of just copying CPP_CPU_SPEC.

Thu May 24 15:56:48 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.c (incdec_operand): Accept only 1 and -1.

2001-05-23  Kelley Cook  <kelley.cook@home.com>

	* Makefile.in: Move many of the *_H definitions eariler in the
	file, so that rules in t-* files that use them for
	dependencies will work in a parallel build.
	* config/i386/t-cygwin (winnt.o): Depend on $(CONFIG_H).

2001-05-23  Richard Henderson <rth@redhat.com>

	* integrate.c (expand_inline_function): Handle CONCAT DECL_RESULT.

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

	* cpp.texi: Update for handling of charconsts.
	* cpplex.c (maybe_read_ucs): Don't accept D800-DFFF.  Update
	diagnostics.  Skip to the end if the UCS is too short.
	(cpp_interpret_charconst): Long charconsts issue a warning
	not an error.

2001-05-23  Richard Henderson  <rth@redhat.com>

	* doc/install.texi (alpha-linux): Require binutils 2.11.

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

	* c-lex.c (read_escape, read_ucs): Delete.
	(lex_string): Use cpp_parse_escape.
	* cpplex.c (read_ucs): Rename maybe_read_ucs.  Do nothing
	if not C++ or not C99.  Warn if traditional.
	(parse_escape): Rename cpp_parse_escape.  Make the bitmask
	unsigned.  Warn for out-of-range escape sequences here.
	Update to use maybe_read_ucs.
	(cpp_interpret_charconst):  Don't warn here.
	* cpplib.h (cpp_parse_escape): New exported function.

2001-05-23  Joseph S. Myers  <jsm28@cam.ac.uk>

	* extend.texi (Attribute Syntax): Clarify application of
	attributes to parameters declared as functions or arrays.

2001-05-23  Jason Merrill  <jason_merrill@redhat.com>

	* dbxout.c (dbxout_type_methods): Do still group methods by name.

2001-05-23  Zack Weinberg  <zackw@stanford.edu>

	* diagnostic.c (vnotice): Kill.
	(fnotice): Call vfprintf directly.
	(diagnostic_for_decl, output_do_verbatim, output_verbatim,
	verbatim, set_diagnostic_context): Rename string argument to
	indicate that it is run through gettext.
	(vbuild_message_string, build_message_string, output_do_printf):
	Rename string argument to indicate that it is NOT run through
	gettext.
	(output_printf, diagnostic_for_decl, fatal_io_error, sorry,
	output_do_verbatim, set_diagnostic_context, fnotice, _fatal_insn):
	Run msgid argument through gettext.
	(default_print_error_function): Run constant strings through
	gettext when nothing else will.
	(fatal_error, internal_error, error_recursion): Use fnotice.
	Present complete sentences to gettext.

2001-05-23  Mark Mitchell  <mark@codesourcery.com>

	* jump.c (mark_jump_label): Fix thinko in 2001-05-19 change.

2001-05-23  Richard Henderson  <rth@redhat.com>

	* function.c (expand_function_start): Always use a pseudo
	for the function result value.

2001-05-22  Richard Henderson  <rth@redhat.com>

	* config/mips/iris6.h (EH_FRAME_SECTION_ASM_OP): Give the
	section pointer alignment.

	* doc/install.texi (alpha-linux): Require binutils >= 2.10.

	* unwind-dw2-fde.c (__deregister_frame_info): Stringize use
	of __USER_LABEL_PREFIX__.

2001-05-22  Richard Henderson  <rth@redhat.com>

	* unwind-dw2-fde.c (__deregister_frame_info): Stubbify in favor of...
	(__deregister_frame_info_bases): New.
	* unwind-dw2-fde.h: Declare it.
	* libgcc-std.ver: Export it.
	* crtstuff.c (__do_global_dtors_aux): Call it if we would have
	called __register_frame_info_bases.

2001-05-22  Loren J. Rittle  <ljrittle@acm.org>

	* config/freebsd.h (FBSD_CPP_PREDEFINES): Use #endif/#if pair
	instead of #elif (which is OK for this case but not in general).

2001-05-22  Andrew MacLeod  <amacleod@redhat.com>

	* builtins.c (expand_builtin_longjmp): A longjmp can be a call too.
	* config/ia64/ia64.md (nonlocal_goto): Reverse label and frame pointer
	parameters to __ia64_nonlocal_goto. Flag as NO_RETURN.
	* config/ia64/ia64.c (ia64_expand_epilogue): Make sure we are issuing
	"r2" to the assembly file. Only issue allocs with nonzero parameters.

2001-05-22  Loren J. Rittle  <ljrittle@acm.org>
	    David O'Brien  <obrien@freebsd.org>

	* config/freebsd.h (LIB_SPEC): Key the exact setting to
	configure-time options and target version of FreeBSD.  Set-up
	to match architectural change in threading support.  Correctly
	report when -pthread option is not supported by configure-time
	options.
	(FBSD_CPP_PREDEFINES): Move from architecture-specific files
	and extend to encode target version number in run-time setting
	of __FreeBSD__ macro to match the system compiler.
	(CPP_PREDEFINES): Likewise.
	(PREFERRED_DEBUGGING_TYPE): Change to DWARF2_DEBUG.

	* config/alpha/freebsd.h (CPP_PREDEFINES): Moved to common freebsd.h.
	* config/i386/freebsd.h (CPP_PREDEFINES): Likewise.

2001-05-22  Loren J. Rittle  <ljrittle@acm.org>
	    David O'Brien  <obrien@freebsd.org>

	* config.gcc (the unlabeled system switch statement): Add
	generic configuration section to handle *-*-freebsd*.  Also,
	to match the system compiler, default to threading support (it
	may be disabled with the standard --disable-threads
	configuration-time switch).
	(i[34567]86-*-freebsd* in machine-specific section): Use it.
	(alpha*-*-freebsd* in machine-specific section): Likewise.

	* config/freebsd3.h: New file to expose FBSD_MAJOR macro (3).
	* config/freebsd4.h: New file to expose FBSD_MAJOR macro (4).
	* config/freebsd5.h: New file to expose FBSD_MAJOR macro (5).
	* config/freebsd6.h: New file to expose FBSD_MAJOR macro (6).
	* config/freebsd-nthr.h: New file to expose FBSD_NO_THREADS macro.

2001-05-22  Loren J. Rittle  <ljrittle@acm.org>
	    David O'Brien  <obrien@freebsd.org>

	* config/t-freebsd (TARGET_LIBGCC2_CFLAGS): Add -fPIC.
	* config/t-freebsd-thread (TARGET_LIBGCC2_CFLAGS): Add
	-pthread instead setting macro.

2001-05-22  Richard Henderson  <rth@redhat.com>

	* crtstuff.c (__register_frame_info_bases): Declare.
	(frame_dummy): Use it, if CRT_GET_RFIB_TEXT or CRT_GET_RFIB_DATA.
	(__do_global_dtors_aux, __do_global_dtors): Streamline.

	* config/i386/linux.h (ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX): New.
	(CRT_GET_RFIB_DATA): New.
	* config/i386/sysv4.h: Likewise.
	* config/i386/sco5.h: Likewise.
	(ASM_PREFERRED_EH_DATA_FORMAT): New.

2001-05-22  Richard Henderson  <rth@redhat.com>

	* rtl.c (read_string): Break out from ...
	(read_rtx): ... here.

2001-05-22  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* doc/install.texi (Specific): Remove a bogus and duplicate part
	copied from the end of the document.

2001-05-22  Bernd Schmidt  <bernds@redhat.com>

	* Makefile.in (LIBGCC_DEPS): Correct LIB1ASMSRC dependency.

2001-05-22  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* install.texi: Remove obsolete information on SunOS as well as
	i386-sun-sunos4, i860-intel-osf1, and powerpcle-*-solaris2*.
	(Installing GNU CC on the Sun): Remove section.

2001-05-22  Alexandre Oliva  <aoliva@redhat.com>

	* cppfiles.c (remove_component_p): Don't assume lstat/stat will
	keep errno unchanged on success.

2001-05-22  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-lex.c (lex_number): If pedantic and not C99, pedwarn exactly
	once for hexadecimal floats, whether or not they contain a decimal
	point.  Don't let the setting of pedantic otherwise affect the
	parsing of hexadecimal floats.

2001-05-22  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* README.ACORN: Remove obsolete file.

2001-05-22  Jan Hubicka  <jh@suse.cz>

	* combine.c (gen_binary): Use swap_commutative_operands_p
	(simplify_comparison): Likewise.
	* expmed.c (emit_store_flag): Likewise.
	* expr.c (compare_from_rtx): Likewise.
	(do_compare_rtx_and_jump): Likewise.
	* optabs.c (emit_cmp_and_jump_insn): Revert last patch; abort
	if not emitting a branch and operands want swapping.

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

	* c-lex.c (c_lex): Just cast cpp's hashnode to gcc's one.
	* stringpool.c:	(IS_FE_IDENT, make_identifier): Delete.
	(maybe_get_identifier): Update.
	* tree.h (make_identifier): Delete.

2001-05-21  Richard Henderson  <rth@redhat.com>

	* combine.c (subst): Do not substitute for a register as
	a destination subreg/strict_low_part/zero_extract.

	* combine.c (simplify_comparison): Update op1 after constant
	extension.
	* recog.c (const_int_operand): Accept only constants valid
	for the given mode.
	* genrecog.c: Update comments wrt const_int_operand.

	* emit-rtl.c (init_emit_once): Zero unused memory in a
	CONST_DOUBLE.

2001-05-21  Mark Mitchell  <mark@codesourcery.com>

	* tree.h (type_num_arguments): Declare it.
	* tree.c (type_num_arguments): New function.

2001-05-21  Richard Henderson  <rth@redhat.com>

	* dwarf2out.c (current_funcdef_number): Move outside dwarf2
	conditional ifdef.

2001-05-21  Geoff Keating  <geoffk@redhat.com>

	* config/rs6000/rs6000.md (maxsf3): Use rs6000_emit_minmax.
	(maxsf3+1): Delete.
	(minsf3): Use rs6000_emit_minmax.
	(minsf3+1): Generalize to handle both SMIN and SMAX.  Use
	rs6000_emit_minmax.
	(movsfcc): Use rs6000_emit_cmove.
	(fselsfsf4): Don't compare a CONST_INT with a floating-point value.
	Don't generate emit_fselsfsf4.
	(fseldfsf4): Likewise.
	(maxdf3): Use rs6000_emit_minmax.
	(maxdf3+1): Delete.
	(mindf3): Use rs6000_emit_minmax.
	(mindf3+1): Generalize to handle both SMIN and SMAX.  Use
	rs6000_emit_minmax.
	(movdfcc): Use rs6000_emit_cmove.
	(fseldfdf4): Don't compare a CONST_INT with a floating-point value.
	Don't generate emit_fselsfsf4.
	(fselsfdf4): Likewise.
	* config/rs6000/rs6000.c (zero_fp_constant): New predicate.
	(min_max_operator): New predicate.
	(rs6000_emit_cmove): New function.
	(rs6000_emit_minmax): New function.
	* config/rs6000/rs6000-protos.h: Prototype new functions.
	* config/rs6000/rs6000.h (PREDICATE_CODES): Add zero_fp_constant
	and min_max_operator.

	* config/rs6000/rs6000.c (output_cbranch): Handle all
	conditional types in the switch statement.

2001-05-21  Mark Mitchell  <mark@codesourcery.com>

	* c-decl.c (finish_decl): Don't set DECL_C_HARD_REGISTER for
	non-register variables.
	* extend.texi: Document that asm-specifications do not make sense
	for non-static local variables.

2001-05-21  Jason Merrill  <jason_merrill@redhat.com>

	* dbxout.c (MINIMAL_DEBUG, flag_minimal_debug): Lose.
	(dbxout_type_fields): Lose minimal_debug support.
	(dbxout_type_methods, dbxout_type): Likewise.

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

	* config/rs6000/linux.h (MD_FALLBACK_FRAME_STATE_FOR): New.

2001-05-21  Richard Henderson  <rth@redhat.com>

	* dwarf2out.c (DEBUG_FRAME_SECTION): Rename from FRAME_SECTION.
	Update all users.

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

	* dwarf2out.c (DEBUG_ABBREV_SECTION, DEBUG_ARANGES_SECTION,
	DEBUG_MACINFO_SECTION, DEBUG_LOC_SECTION, DEBUG_PUBNAMES_SECTION,
	DEBUG_STR_SECTION): Rename from s/DEBUG_//.  Update all users.
	* dwarfout.c (DEBUG_SFNAMES_SECTION, DEBUG_SRCINFO_SECTION,
	DEBUG_MACINFO_SECTION, DEBUG_PUBNAMES_SECTION, DEBUG_ARANGES_SECTION):
	Likewise.
	* config/mips/iris6.h (DEBUG_SFNAMES_SECTION, DEBUG_SRCINFO_SECTION,
	DEBUG_MACINFO_SECTION, DEBUG_PUBNAMES_SECTION, DEBUG_ARANGES_SECTION,
	DEBUG_FRAME_SECTION, DEBUG_ABBREV_SECTION): Rename as above.
	(DEBUG_LOC_SECTION, DEBUG_STR_SECTION): New.
	* config/ia64/ia64.h (DEBUG_ABBREV_SECTION, DEBUG_ARANGES_SECTION,
	DEBUG_PUBNAMES_SECTION): Rename as above.
	(DEBUG_MACINFO_SECTION, DEBUG_LOC_SECTION, DEBUG_STR_SECTION): New.

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

	* optabs.c (emit_cmp_and_jump_insns): Don't swap commutative
	operands unless the operation is commutative.

2001-05-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* fold-const.c (tree_expr_nonnegative_p): Detect more non-negative
	cases.

2001-05-21  Joseph S. Myers  <jsm28@cam.ac.uk>

	* extend.texi: Clarify documentation of extensions included in ISO
	C99.  Prefer C99 terminology and syntax to old GNU terminology and
	syntax.  Add more index entries.  Document mixed declarations and
	code as an extension in C89 mode.  Warn about future changes to
	semantics of inline functions.  Fixes PR other/930.

Sun May 20 16:39:24 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* expr.c (expand_expr, case ARRAY_REF): Don't fold constant
	access if EXPAND_CONST_ADDRESS or EXPAND_INITIALIZER.
	(expand_expr, case COMPONENT_REF): Do copy if misaligned even
	if EXPAND_CONST_ADDRESS or EXPAND_INITIALIZER.

	* stmt.c (expand_decl): Set mode, alignment, and sizes for CONST_DECL.

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

	* sched-deps.c (sched_analyze_insn): Force volatile memory reads
	to be output before a branch.

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

	* Makefile.in (dwarf2asm.o): Depend on $(TREE_H).

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

	* config/i386/att.h (ASM_SHORT, ASM_LONG): Add trailing \t.
	(ASM_DOUBLE): Remove.
	* config/i386/bsd.h, config/i386/sco5.h: Likewise.
	* config/i386/sun386.h: Likewise.

	* config/i386/i386.h (UNALIGNED_SHORT_ASM_OP): New.
	(UNALIGNED_INT_ASM_OP, INT_ASM_OP): New.

	* config/i386/cygwin.h (INT_ASM_OP): Remove.
	* config/i386/freebsd-aout.h, config/i386/i386-aout.h: Likewise.
	* config/i386/i386-coff.h, config/i386/i386-interix.h: Likewise.
	* config/i386/netbsd.h, config/i386/openbsd.h: Likewise.

	* config/i386/cygwin.h: Adjust uses of ASM_LONG for trailing \t.
	* config/i386/djgpp.h, config/i386/i386.h: Likewise.
	* config/i386/i386elf.h, config/i386/ptx4-i.h: Likewise.
	* config/i386/sco5.h, config/i386/svr3gas.h: Likewise.
	* config/i386/sysv4.h, config/i386/vsta.h: Likewise.
	* config/i386/win32.h: Likewise.

2001-05-20  Joseph S. Myers  <jsm28@cam.ac.uk>

	* invoke.texi: Add more options to summary list.

2001-05-20  Joseph S. Myers  <jsm28@cam.ac.uk>

	* invoke.texi: Document meaning of -pedantic when -std=gnu* is
	used.  Fixes PR c/2291.
	* gcc.1: Regenerate.

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

	* config/m68hc11/m68hc11.c (m68hc11_override_options): Ignore
	the -fpic and -fPIC options, clear flag_pic.

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

	* hashtable.c (calc_hash): Fix HASHSTEP definition.
	* stringpool.c (make_identifier): No statistics here anymore.
	* objc-act.c (steup_string_decl): Remove redundant check.

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

	* Makefile.in (OBJS, LIBCPP_OBJS, LIBCPP_DEPS,
	cpplib.o, cpphash.o, fix-header): Update.
	(hashtable.o): New target.
	* c-common.h: Include cpplib.h.  Define C_RID_CODE and
	struct c_common_identifier here.
	* c-lang.c (c_init_options): Update.  Call set_identifier_size.
	* c-lex.c (c_lex): Update.
	* c-pragma.h: Update.
	* c-tree.h (struct lang_identifier): Contain c_common_identifier.
	Delete rid_code.
	(C_RID_CODE): Delete.
	* cpphash.c: Rewrite to use hashtable.c.
	* cpphash.h: Update include guards.
	(struct cpp_reader): Remove hashtab.
	hash_ob and buffer_ob are no longer pointers.  Add hash_table
	and our_hashtable.
	(HASHSTEP, _cpp_init_hashtable,	_cpp_lookup_with_hash): Delete.
	(_cpp_cleanup_hashtable): Rename _cpp_destroy_hashtable.
	(_cpp_cleanup_stacks): Rename _cpp_init_directives.
	* cppinit.c (cpp_create_reader): Update.
	* cpplex.c (cpp_ideq, parse_identifier, cpp_output_token): Update.
	(cpp_interpret_charconst): Eliminate warning.
	* cpplib.c (do_pragma, do_endif, push_conditional,
	cpp_push_buffer, cpp_pop_buffer): Update.
	(_cpp_init_stacks): Rename cpp_init_directives.
	(_cpp_cleanup_stacks): Remove.
	* cpplib.h: Update include guards.  Include tree-core.h and c-rid.h.
	(cpp_hashnode, cpp_token, NODE_LEN, NODE_NAME,
	 cpp_forall_identifiers, cpp_create_reader): Update.
	(C_RID_CODE, cpp_make_node): New.
	(c_common_identifier): New identifier node for C front ends.
	* cppmain.c (main): Update.
	* fix-header.c (read_scan_file): Update.
	* flags.h (id_clash_len): Make unsigned.
	* ggc.h (ggc_mark_nonnull_tree): New.
	* hashtable.c: New.
	* hashtable.h: New.
	* stringpool.c: Update comments and copyright.  Update to use
	hashtable.c.
	* toplev.c (approx_sqrt): Move to hashtable.c.
	(id_clash_len): Make unsigned.
	* toplev.h (ident_hash): New.
	* tree.c (gcc_obstack_init): Move to hashtable.c.
	* tree.h: Include hashtable.h.
	(IDENTIFIER_POINTER, IDENTIFIER_LENGTH): Update.
	(GCC_IDENT_TO_HT_IDENT, HT_IDENT_TO_GCC_IDENT): New.
	(struct tree_identifier): Update.
	(make_identifier): New.
cp:
	* cp-tree.h (struct lang_identifier, C_RID_YYCODE): Update.
	(C_RID_CODE): Remove.
	* lex.c (cxx_init_options): Call set_identifier_size.  Update.
	(init_parse): Don't do it here.
objc:
	* objc-act.c (objc_init_options): Call set_identifier_size. Update.

Sat May 19 18:23:04 2001  Richard Henderson <rth@redhat.com>

	* except.c (dw2_build_landing_pads): Use word_mode, not Pmode,
	as ncessary.
	(expand_eh_return): Convert between word_mode and Pmode.
	* unwind-dw2.c (extract_cie_info): Do not assume words and pointers
	are the same size.
	(execute_stack_op): Likewise.
	(execute_cfa_program): Likewise.
	(uw_frame_state_for): Likewise.
	(uw_update_context_1): Likewise.
	* unwind.inc (_Unwind_Reason_Code): Likewise.
	* config/mips/mips.h (EH_RETURN_DATA_REGNO): Define.
	(EH_RETURN_STACKADJ_RTX): Likewise.
	* config/mips/mips.c (compute_frame_size): Make space for saving
	EH return registers.
	(mips_expand_epilogue): Handle EH stack adjustments.
	* config/mips/mips.md (eh_return): New pattern.
	(eh_set_lr_si): Likewise.
	(eh_set_lr_di): Likewise.
	Add splitter to perform EH return after reload.

2001-05-19  Mark Mitchell  <mark@codesourcery.com>

	* jump.c (mark_jump_label): Tidy previous change.

2001-05-19  Bruce Korb  <bkorb@gnu.org>

	* fixinc/genfixes: no need for two warnings
	* fixinc/Makefile.in: open stdin for those building with a closed one.

2001-05-19  Mark Mitchell  <mark@codesourcery.com>

	* jump.c (jump_optimize_1): Tidy.
	(mark_jump_label): When changing the label in a LABEL_REF, change
	update any REG_EQUAL notes as well.

2001-05-19  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-parse.in (parm_declarator): Split into
	parm_declarator_starttypename and parm_declarator_nostarttypename.
	(parm_declarator_starttypename, parm_declarator_nostarttypename):
	New.  Allow parenthesized sub-declarators which don't begin with a
	TYPENAME.  Fixes PR c/166.

2001-05-19  Mark Mitchell  <mark@codesourcery.com>

	* defaults.h (TARGET_ALLOWS_PROFILING_WITHOUT_FRAME_POINTER): New
	macro.
	* tm.texi (TARGET_ALLOWS_PROFILING_WITHOUT_FRAME_POINTER):
	Document it.
	* toplev.c (main): If the target does not allow profiling without
	a frame pointer, issue an error message.
	* config/i386/linux.h (TARGET_ALLOWS_PROFILING_WITHOUT_FRAME_POINTER):
	Define it to false.

Sat May 19 07:53:42 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* recog.c (general_operand): Modify last change to allow it if reload
	has completed.

Sat May 19 10:23:54 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* recog.c (general_operand): Prohibit nonzero subreg bytes on
	subregs containing mem.

Sat May 19 09:40:45 2001  Denis Chertykov  <denisc@overta.ru>

	* regrename.c (regrename_optimize): frame pointer register can
	use a few hardregs.

2001-05-18  Jason Merrill  <jason_merrill@redhat.com>

	* README.DWARF: Move into dwarfout.c.

2001-05-18  Dale Johannesen  <dalej@apple.com>

	* config/rs6000/rs6000.c (secondary_reload_class): Fix Darwin
	specific misuse of r0 as a reload address.

Fri May 18 22:42:04 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* combine.c (combine_simplify_rtx): Clear op0_mode if simplification
	succeeded.

Fri May 18 07:26:34 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* genrecog.c (enum decision_type): Add DT_elt_zero-wide_safe.
	(add_to_sequence): Make that decision type.
	(maybe_both_true_2, nodes_identical_1, factor_tests): Use it.
	(write_switch, write_cond, debug_decision_2): Likewise.

	* dbxout.c (dbxout_type): Use host_integerp and fix typo in testing
	for INTEGER_TYPE.
	(dbxout_symbol, case TYPE_DECL): Don't generate tag for records of
	variable size.

2001-05-18  Stan Shebs  <shebs@apple.com>

	* configure.in (gcc_cv_as_eh_frame): Cope with old assemblers.
	* configure: Regenerate.

2001-05-18  Per Bothner  <per@bothner.com>

	Changes needed for java/jvspec.c
	* gcc.h (n_infiles, outfiles):  Add declarations.
	* gcc.c (n_infiles, outfiles):  Mske no longer static.

Fri May 18 10:14:42 2001  Jeffrey A Law  (law@cygnus.com)

	* config/pa/som.h (EXCEPTION_SECTION): Define.

2001-05-18  Daniel Berlin  <dan@cgsoftware.com>

	* dwarf2out.c: Add dw_loc_list_ref, a reference to a location
	list.
	Add have_location_lists, a variable to determine whether we need a
	.debug_loc section or not.
	(enum dw_val_class): Add dw_val_class_loc_list.
	(dw_val_struct): Add val_loc_list.
	(dw_loc_list_struct): New structure, represents location lists.
	(new_loc_list): New function, return a new location list, given
	the range and location expression.
	(add_loc_descr_to_loc_list): New function, add a location
	expression to a location list, given the expression and range.
	(output_loc_list): New function, output a location list.
	(gen_internal_sym): Modified to take symbol prefix, so we can
	reuse it for location list symbols.
	(add_AT_loc_list): New function, add a location list to a DIE at
	the named attribute.
	(AT_loc_list): New function, return the location list reference
	for a given attribute, if it's a location list.
	(print_die): Handle dw_val_class_loc_list.
	(size_of_die): Ditto.
	(value_format): Ditto.
	(output_die): Ditto.
	(output_location_lists): New function, output all of the location
	lists for a DIE and it's children.
	(dwarf2out_finish): Call output_location_lists if we have location
	lists.


Fri May 18 15:39:16 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* gcse.c (try_replace_reg): First try global replace, later try to
	simplify the expression.

	* gcse.c (find_used_regs): Change calling convention; work via
	note_uses.
	(cprop_insn): Update call of find_used_regs; work for CALL_INSNs too.

2001-05-18  Bernd Schmidt  <bernds@redhat.com>

	Revert
	2001-02-09  Nick Clifton  <nickc@redhat.com>
	* config/arm/arm.md: Change output constraint on post inc
	load/store multiple patterns to be a read/write constraint.

2001-05-18  Mark Mitchell  <mark@codesourcery.com>

	* basic-block.h (struct basic_block_def): Add documentation about
	what a basic block is, and what the various fields are used for.
	* flow.c (calculate_globlal_regs_live): Add documentation about
	how the algorithm works, and how we know that it will terminate.
	Check that the inductive assumption that guarantees termination
	actually holds.
	(mark_used_regs): Treat conditionally set registers as used.
	(debug_regset): Add comment.
	* rtl.texi (cond_exec): Add documentation.

	* function.c (expand_function_start): Avoid creating BLKmode
	pseudos.

2001-05-17  Mark Mitchell  <mark@codesourcery.com>

	* dwarf2out.c (output_comp_unit): Always output a compilation-unit
	DIE, even if it has no children.
	(dwarf2out_finish): Always output the line-number table, even if
	it has no content.

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

	* rs6000.md (movsfcc,movdfcc): Remove NE case.

2001-05-17  Bruce Korb <bkorb@gnu.org>

	* fixinc/fixincl.tpl: rewritten as an AutoGen version 5 template
	* fixinc/genfixes: emit a warning if AutoGen is out of date

2001-05-17  Brendan Conoboy <blc@cygnus.com>
	    Bruce Korb <bkorb@gnu.org>

	* fixinc/fixincl.sh(FIXINC): accept local directory if fixincl not
	found in fixinc directory.  Facilitates binary distributions.

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

	* dbxout.c (dbxout_symbol_location): For CONCAT, skip types not
	COMPLEX_TYPE.

Thu May 17 19:42:39 2001  Mark Kettenis  <kettenis@wins.uva.nl>

	* dwarf2out.c (modified_type_die): Equate qualified type to die.

Thu May 17 23:19:46 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* integrate.c (copy_rtx_and_substitute): Use simplify_gen_subreg.
	(simplify_subreg): Handle complex types represented as CONCAT.

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

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

Thu May 17 20:43:36 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* cse.c (fold_rtx): Use simplify_subreg.

	* simplify-rtx.c (simplify_replace_rtx): Use simplify_gen_subreg.
	(simplify_gen_subreg): New.
	(simplify_rtx): Use simplify_subreg.
	* rtl.h (simplify_gen_subreg): Declare.

2001-05-17  Mark Mitchell  <mark@codesourcery.com>

	* doc/install.texi: Update Solaris information.

	* except.h (protect_cleanup_actions): Remove it.
	(lang_protect_cleanup_actions): Declare it.
	* except.c (protect_cleanup_actions): Remove it.
	(lang_protect_cleanup_actions): New variable.
	(init_eh): Don't make protect_cleanup_actions a GC root.
	(expand_eh_region_and_cleanup): Call
	lang_protect_cleanup_actions.
	(output_function_exception_table): Remove unused `align'
	variable.
	* varasm.c (assemble_external): Abort if we have not yet
	opened the assembly output file.

Thu May 17 11:54:50 2001  Jeffrey A Law  (law@cygnus.com)

	* except.c (sjlj_emit_function_enter): Call assemble_external_libcall
	for eh_personality_libfunc.

Thu May 17 19:48:00 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* recog.c (validate_replace_rtx_1): Use "TO" mode if not VOIDmode
	when calling simplify_subreg.  This is needed to allow replacing
	of expression of one mode by expression of different mode.

Thu May 17 19:40:03 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* simplify-rtx.c  (simplify_subreg): Avoid creating of incorrect subregs.

2001-05-17  Bernd Schmidt  <bernds@redhat.com>

	* expr.c (protect_from_queue): Protect against subsequent calls to
	emit_queue.
	(expand_expr, case ADDR_EXPR): Prevent protect_from_queue from being
	too clever.

Thu May 17 18:17:34 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* simplify_rtx.c (simplify_subreg): Fix simplification of nested subregs.

2001-05-17  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* gccbug.in (CATEGORIES): Add "bootstrap".

Thu May 17 16:59:41 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* simplify-rtx.c (simplify_subreg): Break out from ...
	* combine.c (combine_splify_rtx) ... here and ...
	* recog.c (validate_replace_rtx_1): ... here;
	* rtl.h (subreg_lowpart_parts_p, simplify_subreg): Declare.
	* emit-rtl.c (subreg_lowpart_parts_p): Break out from ...
	(subreg_lowpart_p): ... here.

2001-05-17  Bernd Schmidt  <bernds@redhat.com>

	* stmt.c (expand_asm_operands): For inout operands, make sure
	the substitution of '=' for '+' makes it into the rtl.

	* reload1.c (delete_output_reload): Call eliminate_regs on substed.
	(reload_as_needed): Call update_eliminable_offsets a bit later.

2001-05-17  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* gcc.texi (gccbug): Refer to the web pages for detailed information
	on GNATS.

2001-05-16  Zack Weinberg  <zackw@stanford.edu>

	* libgcc1-test.c, libgcc1.c, config/i386/perform.h: Delete file.

	* Makefile.in: Delete variables: OLDCC, CCLIBFLAGS, OLDAR,
	OLDAR_FLAGS, LIBGCC1, LIBGCC1_TEST, CROSS_LIBGCC1,
	LIB1FUNCS, and LIB1FUNCS_EXTRA.  Delete rules: libgcc1-test,
	libgcc1-test.o.  Clarify commentary now that libgcc1 no longer exists.
	* cross-make: Don't set LIBGCC1.
	* mklibgcc.in: Delete all code for building from libgcc1.c.
	Always honor LIB1ASMFUNCS if set.

	* crtstuff.c, floatlib.c, longlong.h, config/fp-bit.c,
	config/arc/lib1funcs.asm, config/arm/lib1funcs.asm,
	config/d30v/libgcc1.asm, config/fr30/lib1funcs.asm,
	config/h8300/lib1funcs.asm, config/i386/cygwin.asm,
	config/i386/uwin.asm, config/m68hc11/larith.asm,
	config/m68k/lb1sf68.asm, config/mcore/lib1.asm,
	config/mn10200/lib1funcs.asm, config/sh/lib1funcs.asm,
	config/sparc/lb1spc.asm, config/sparc/lb1spl.asm,
	config/v850/lib1funcs.asm, config/c4x/libgcc.S:
	Delete or update references to libgcc1 in commentary.

	* config/t-libc-ok, config/t-linux, config/t-linux-aout,
	config/t-netbsd, config/a29k/t-a29kbare, config/a29k/t-vx29k,
	config/alpha/t-interix, config/alpha/t-osf, config/alpha/t-vms,
	config/arc/t-arc, config/arm/t-arm-aout, config/arm/t-arm-coff,
	config/arm/t-arm-elf, config/arm/t-linux, config/arm/t-pe,
	config/arm/t-semi, config/arm/t-strongarm-coff,
	config/arm/t-strongarm-elf, config/arm/t-strongarm-pe,
	config/arm/t-xscale-coff, config/arm/t-xscale-elf, config/avr/t-avr,
	config/c4x/t-c4x, config/d30v/t-d30v, config/fr30/t-fr30,
	config/h8300/t-h8300, config/i386/t-beos, config/i386/t-cygwin,
	config/i386/t-i386elf, config/i386/t-interix, config/i386/t-netware,
	config/i386/t-next, config/i386/t-rtems-i386, config/i386/t-sol2,
	config/i960/t-960bare, config/i960/t-vxworks960, config/ia64/t-ia64,
	config/m32r/t-m32r, config/m68hc11/t-m68hc11-gas, config/m68k/t-lynx,
	config/m68k/t-m68kbare, config/m68k/t-m68kelf,
	config/m68k/t-mot3300-gald, config/m68k/t-mot3300-gas,
	config/m68k/t-next, config/m68k/t-vxworks68, config/m88k/t-bug,
	config/m88k/t-dgux, config/m88k/t-dgux-gas, config/m88k/t-dguxbcs,
	config/m88k/t-luna, config/m88k/t-luna-gas, config/m88k/t-m88k,
	config/m88k/t-m88k-gas, config/m88k/t-sysv4, config/mcore/t-mcore,
	config/mcore/t-mcore-pe, config/mips/t-bsd, config/mips/t-bsd-gas,
	config/mips/t-cross64, config/mips/t-ecoff, config/mips/t-elf,
	config/mips/t-iris6, config/mips/t-r3900, config/mips/t-svr3,
	config/mips/t-svr3-gas, config/mips/t-svr4, config/mips/t-svr4-gas,
	config/mips/t-ultrix, config/mn10200/t-mn10200,
	config/mn10300/t-mn10300, config/pa/t-linux, config/pa/t-linux64,
	config/pa/t-pa, config/pa/t-pa64, config/pa/t-pro,
	config/pdp11/t-pdp11, config/pj/t-pj, config/rs6000/t-aix43,
	config/rs6000/t-beos, config/rs6000/t-darwin, config/rs6000/t-newas,
	config/rs6000/t-ppccomm, config/rs6000/t-rs6000, config/sh/t-linux,
	config/sh/t-sh, config/sparc/t-chorus-elf, config/sparc/t-elf,
	config/sparc/t-sol2, config/sparc/t-sp86x, config/sparc/t-sparcbare,
	config/sparc/t-sparclite, config/sparc/t-splet,
	config/sparc/t-sunos41, config/sparc/t-vxsparc,
	config/sparc/t-vxsparc64, config/v850/t-v850:
	Don't set any of LIBGCC1, CROSS_LIBGCC1, or LIBGCC1_TEST.

	* config/alpha/alpha.h, config/i386/i386.h, config/i860/i860.h:
	Don't set FLOAT_VALUE_TYPE, FLOAT_ARG_TYPE, INTIFY, or FLOATIFY.
	* config/d30v/d30v.h: Don't mention LIBGCC_NEEDS_DOUBLE,
	FLOAT_VALUE_TYPE, FLOAT_ARG_TYPE, FLOATIFY, INTIFY,
	nongcc_SI_type, nongcc_word_type, or perform_*
	* config/i860/fx2800: Don't define perform_umodsi3 or perform_modsi3.

	* config/i386/386bsd.h, config/i386/beos-elf.h,
	config/i386/linux-aout.h, config/i386/linux-oldld.h,
	config/i386/linux.h, config/i386/mach.h, config/i386/netbsd.h,
	config/i386/openbsd.h, config/i386/osfrose.h, config/i386/rtemself.h:
	Don't include i386/perform.h.

	* config/a29k/t-a29k, config/arm/t-semiaof, config/i370/t-i370,
	config/i370/t-linux, config/i370/t-mvs, config/i370/t-oe,
	config/i386/t-djgpp, config/i386/t-i386bare, config/i386/t-vsta,
	config/ia64/t-hpux, config/mips/t-mips, config/mips/t-mips-gas,
	config/mips/t-osfrose, config/sparc/t-sp64, config/sparc/t-sunos40,
	config/vax/t-openbsd, config/vax/t-vax: Delete.

	* config.gcc: Remove references to deleted files.
	(arm-semi-aof): Use arm/t-semi for tmake_file.

	* gcc.texi, install.texi, invoke.texi, tm.texi:
	Delete or rewrite text which is no longer relevant now that
	libgcc1 no longer exists.

	* config/t-openbsd, config/alpha/t-interix, config/i386/t-interix:
	No need to set INSTALL_ASSERT_H.  (Missed in previous sweep.)

2001-05-16  Wolfgang Bangerth <wolfgang.bangerth@iwr.uni-heidelberg.de>
	Bruce Korb <bkorb@gnu.org>

	* fixinc/inclhack.def(solaris27_mutex_init):  Fix broken mutex
	initializer

2001-05-16  Zack Weinberg  <zackw@stanford.edu>

	* i386.md: Add two peepholes to clean up code generated by
	cmpstr* expanders.

2001-05-16  Richard Henderson  <rth@redhat.com>

	* dwarf2asm.c (eh_data_format_name): Add names for "pointer size"
	variants of non-absolute encodings.

	* config/i386/i386.h (ASM_PREFERRED_EH_DATA_FORMAT): New.

	* libgcc-std.ver (_Unwind_Find_FDE, __register_frame_info_bases,
	__register_frame_info_table_bases): Export.

2001-05-16  Richard Henderson  <rth@redhat.com>

	* except.c (eh_data_format_name): Move to ...
	* dwarf2asm.c: ... here.  Use designated initializers if available.
	(dw2_asm_output_encoded_addr_rtx): Accept varargs commentary.
	* dwarf2asm.h: Update declarations.
	* dwarf2out.c (output_cfi) [DW_CFA_set_loc]: If for_eh, mind
	ASM_PREFERRED_EH_DATA_FORMAT.
	(output_call_frame_info): Likewise.  Use 'L' augmentation for
	the LSDA encoding.

	* unwind-dw2-fde.h (struct fde_vector): New.
	(struct old_object): Rename from struct object.
	(struct object): New.
	(__register_frame_info_bases): Declare.
	(__register_frame_info_table_bases): Declare.
	(struct dwarf_fde): Remove explicit pc_begin/pc_range members.
	* unwind-dw2-fde.c (objects): Remove.
	(unseen_objects, seen_objects): New.
	(__register_frame_info_bases): New.
	(__register_frame_info): Use it.
	(__register_frame_info_table_bases): New.
	(__register_frame_info_table): Use it.
	(__deregister_frame_info): Rewrite for changed object struct.
	(base_from_object, get_cie_encoding, get_fde_encoding): New.
	(fde_unencoded_compare): Rename from fde_compare; uninline.
	(fde_single_encoding_compare, fde_mixed_encoding_compare): New.
	(start_fde_sort): Adjust for new definition of fde_vector.
	(fde_insert): Likewise.
	(end_fde_sort): Likewise.  Select comparison function based
	on properties of the object.
	(fde_split): Take object and fde_compare_t arguments.
	(frame_heapsort, fde_merge): Likewise.
	(classify_object_over_fdes): Rename from count_fdes.  Handle
	encoded pointers.  Collect encoding, mixed_encoding, and pc_begin
	for the object.
	(add_fdes): Handle encoded pointers.
	(init_object): Rename from frame_init.  Update for new struct object.
	(linear_search_fdes): Rename from search_fdes.  Handle encoded
	pointers.
	(binary_search_unencoded_fdes): Broken out from _Unwind_Find_FDE.
	(binary_search_single_encoding_fdes): New.
	(binary_search_mixed_encoding_fdes): New.
	(search_object): New.
	(_Unwind_Find_FDE): Update for new struct object.  Fill in
	the dwarf_eh_bases.
	* unwind-dw2.c: Include unwind-pe.h.  Constify all pointers
	iterating over EH data.
	(_Unwind_FrameState): Remove saw_lsda, addr_encoding.  Add
	fde_encoding, lsda_encoding.
	(read_uleb128, read_sleb128): Remove.
	(read_encoded_pointer): Remove.  All callers use read_encoded_value.
	(extract_cie_info): Set lsda_encoding from 'L' augmentation.
	(uw_frame_state_for): Don't set bases.func.  Handle encoded fde
	pointers.
	* unwind-pe.h: Add "struct" to _Unwind_Context references.

2001-05-16  Neil Booth  <neil@cat.daikokuya.demon.co.uk>

	* cppexp.c (lex): Use NODE_NAME and NODE_LEN.
	* cpphash.c (_cpp_lookup_with_hash): Similarly.
	* cpplex.c (cpp_ideq, parse_identifier, cpp_token_len,
	cpp_spell_token, cpp_output_token): Similarly.
	* cpplib.c (lex_macro_node, do_undef, do_pragma,
	do_pragma_poison, parse_assertion, do_assert): Similarly.
	* cppmacro.c (builtin_macro, parse_args, funlike_invocation_p,
	save_parameter, _cpp_create_definition, check_trad_stringification,
	cpp_macro_definition): Similarly.
	* cppmain.c (cb_define, cb_undef, dump_macro): Similarly.
	* c-lex.c (cb_undef, c_lex): Similarly.
	* fix-header.c (recognized_function): Similarly.
	* cpplib.h (NODE_LEN, NODE_NAME): New.
	(cpp_hashnode): Rename length len.

Wed May 16 13:41:10 2001  Jeffrey A Law  (law@cygnus.com)

	* pa32-regs.h (HARD_REGNO_MODE_OK): Allow TI/TFmode values in
	GPRs.

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

	* Makefile.in (toplev.o): Add dependency on dwarf2asm.h.

	* toplev.c: Include dwarf2asm.h for prototype of
	dw2_output_indirect_constants.

Wed May 16 19:53:53 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* stmt.c (expand_asm_operands): Be able to offload addressof
	expression to memory. (PR optimization/185)

Wed May 16 18:53:23 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* combine.c (combine_simplify_rtx): Set op0_mode to VOIDmode after
	applying distributive law.

2001-05-16  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* pa-hpux10.h (THREAD_MODEL_SPEC): Define.

	* gthr-dce.h (UNUSED): Attribute unused macro.
	(__gthread_key_dtor): Make arguments UNUSED.
	(__gthread_key_delete): Revise for compatibility with DRAFT4
	implementation.

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

	* doc/install.texi: Update AIX information.
	* README.RS6000: Remove obsolete file.

2001-05-16  Jakub Jelinek  <jakub@redhat.com>
	    Nathan Sidwell  <nathan@codesourcery.com>

	* gcc.c (give_switch): Don't write before start of string.
	Always append suffix.

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

	* cpplex.c (_cpp_lex_token, '/' case): Comments can't appear
	after stage3.

2001-05-16  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* README.ALTOS: Remove obsolete file.

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

	* c-lex.h (save_and_forget_protocol_qualifiers,
	forget_protocol_qualifiers, remember_protocol_qualifiers):
	Remove deleted functions' prototypes.

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

	* c-parse.in (methodtype): New production.
	(methoddef, methodproto): Collapse separate '-' and '+'
	handlers into 1.

2001-05-16  Neil Booth  <neil@cat.daikokuya.demon.co.uk>

	* c-common.h (RID_FIRST_PQ): New.
	* c-parse.in (objc_pq_context): New.
	(objc parser): Set objc_pq_context rather than calling
	remember_protocol_qualifiers and forget_protocol_qualifiers.
	Don't call save_and_forget_protocol_qualifiers.
	(yylexname): Handle objc protocol qualifiers here.
	* stringpool.c (struct str_header): Replace with sp_hashnode.
	(SP_EMPTY, SP_LEN, SP_TREE, SP_STR, SP_VALID): New.
	(alloc_string): Rename alloc_ident.  Use the SP_ accessors.
	Allocate an IDENTIFIER_NODE for each identifier.
	(FORALL_STRINGS, set_identifier): Delete.
	(FORALL_IDS, expand_string_table, stringpool_statistics): Update.
	(ggc_alloc_string): Use an obstack.
	(get_identifier, maybe_get_identifier, mark_string_hash): Update.
	* tree.h: Update comments.
	(set_identifier): Delete.
	* objc/objc-act.c (N_PQ, saved_pq, saved_not_pq,
	save_and_forget_protocol_qualifiers, forget_protocol_qualifiers,
	remember_protocol_qualifiers): Delete.

Tue May 15 22:14:09 2001  Jeffrey A Law  (law@cygnus.com)

	* flow.c (life_analysis): After life analysis is complete, do
	an optional scan over insns looking for REG_LABEL notes that
	reference a deleted label.
	(propagate_block_delete_insn): Verify INOTE is a CODE_LABEL
	before peeking at LABEL_NUSES.

2001-05-15  Richard Henderson  <rth@redhat.com>

	* unwind-sjlj.c (_Unwind_GetDataRelBase): New.
	(_Unwind_GetTextRelBase): New.

2001-05-15  Mark Mitchell  <mark@codesourcery.com>

	* config/sparc/sol2.h (CPLUSPLUS_CPP_SPEC): Define.

2001-05-15  Geoffrey Keating  <geoffk@redhat.com>

	* objc/objc-act.c (handle_class_ref): Use rest_of_decl_compilation
	so that CHOOSE_SECTION gets used.

	* config/rs6000/sysv4.h (ASM_PREFERRED_EH_DATA_FORMAT): Treat
	TARGET_RELOCATABLE like flag_pic for now.

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

	* rs6000.md (movdi splitter): Sign extend more efficiently.
	* rs6000.c (reg_or_arith_cint_operand): Redefine 64-bit constant
	to "long long" valid on 32-bit and 64-bit hosts.
	(logical_operand): Cast trunc_int_for_mode return value.
	(rs6000_emit_move): Shift macro to encapsulate variable.
	(rs6000_va_start): Use HOST_WIDE_INT_PRINT_DEC.
	(rs6000_emit_{prologue,epilogue}): EH regno is unsigned but
	plus_constant requires signed argument.

2001-05-15  Loren J. Rittle  <ljrittle@acm.org>

	* gthr-posix.h: Make additional pthread-* functions weak.

Tue May 15 13:51:32 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* recog.c (apply_change_group): Avoid unneeded validating.

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

	* rs6000.c (num_insns_constant_wide): Constants are sign-extended.
	(num_insns_constant): CONST_INT can be 64-bits.

2001-05-14  Stan Shebs  <shebs@apple.com>

	* config/darwin.h (LIB_SPEC): Just use -lSystem.
	(LIBGCC_SPEC): Don't define.

2001-05-14  Richard Henderson  <rth@redhat.com>

	* configure.in (gcc_cv_as_eh_frame): New test.
	* config.in, configure: Rebuild.
	* gcc.c (init_spec): Honor USE_AS_TRADITIONAL_FORMAT.

2001-05-14  Andrew MacLeod  <amacleod@redhat.com>

	* config/ia64/lib1funcs.asm (__divtf3): Fix incorrect bits in
	extended precision divide.

2001-05-14  Andrew MacLeod  <amacleod@redhat.com>

	* config/ia64/ia64.c (rtx_needs_barrier): Call rtx_needs_barrier
	for RETURNS as well.

Mon May 14 17:34:48 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.h (TARGET_64BIT): Define to constant if !TARGET_BI_ARCH
	(CPP_CPU??_SIZE_TYPE): New.
	(CPP_CPU??_SPEC, CPP_CPUCOMMON_SPEC): Break out from...
	(CPP_CPU_SPEC): ... here; support choosing of CPU.
	(EXTRA_SPECS): Add cpp_cpu??, cpp_cpu??sizet, cpp_cpucommon.
	(MAX_LONG_TYPE_SIZE, MAX_BITS_PER_WORD): Define to 32 for 32bit-only
	compiler.
	* i386.c (override_options): Add sorry about not suported modes.

Mon May 14 08:56:47 2001  Jeffrey A Law  (law@cygnus.com)

	* config/pa/som.h (NM_FLAGS): Remove.
	(ASM_OUTPUT_FUNCTION_PREFIX): No longer truncate subspace names.
	(ASM_OUTPUT_SECTION_NAME): Remove.
	(MAKE_DECL_ONE_ONLY, ASM_WEAKEN_LABEL): Likewise.

2001-05-14  Mark Mitchell  <mark@codesourcery.com>

	* regrename.c (regrename_optimize): Do not rename registers to
	leaf registers.

2001-05-14  Alexandre Oliva  <aoliva@redhat.com>

	* rtl.texi (CALL_INSN_FUNCTION_USAGE): Note that (and when) it may
	contain MEMs.  Remove useless distinction about clobbering
	registers.

2001-05-13  Geoff Keating  <geoffk@redhat.com>

	* config/rs6000/rs6000.h (EXCEPTION_SECTION): Move to...
	* config/rs6000/aix.h (EXCEPTION_SECTION): ... here.
	* config/rs6000/sysv4.h (CONST_SECTION_ASM_OP): Delete.
	(ASM_PREFERRED_EH_DATA_FORMAT): Define.
	(EXCEPTION_SECTION): Define.

2001-05-13  Zack Weinberg  <zackw@stanford.edu>

	* libgcc2.c, libgcc2.h: Restore __eprintf.  Label as used for
	binary backward compat only.
	* Makefile.in (LIB2FUNCS_ST): New.  Put _eprintf here, not
	in LIB2FUNCS.  Pass it to mklibgcc.
	* mklibgcc.in: Handle LIB2FUNCS_ST.

	* Makefile.in (installdirs): Don't create $(gcc_tooldir).

2001-05-13  Alexandre Oliva  <aoliva@redhat.com>

	* tm.texi (THREAD_MODEL_SPEC): Document it.
	* gcc.c (main): Use it.
	* config/rs6000/aix43.h (THREAD_MODEL_SPEC): Define it.
	* config/rs6000/aix51.h (THREAD_MODEL_SPEC): Likewise.

2001-05-13  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* rtl.h (SYMBOL_REF_WEAK): New macro.
	* rtlanal.h (rtx_addr_can_trap): Use it, a weak SYMBOL_REF can trap.
	* varasm.c (make_decl_rtl): Mark SYMBOL_REF weak if necessary.
	* rtl.texi (SYMBOL_REF_WEAK): Document it.
	* gcc.texi: Remove wrong description.

2001-05-13  Mark Mitchell  <mark@codesourcery.com>

	* Makefile.in (STAMP): New macro.
	Replace all uses of `touch' with $(STAMP).
	* fixinc/Makefile.in: Likewise.

Sun May 13 07:26:34 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* configure.in: ldopen is never in -lexc, so don't test for it.
	Add test for exc_resume in -lexc for Ada.
	* configure: Regenerated.

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

	* dwarf2asm.c (size_of_encoded_value): New function.
	* dwarf2asm.h: Declare it.
	* except.c (output_function_exception_table): Align the TType
	array only as wide as the encoding.

2001-05-12  Zack Weinberg  <zackw@stanford.edu>

	* extend.texi: Document #pragma GCC java_exceptions.

2001-05-12  Neil Booth  <neil@cat.daikokuya.demon.co.uk>

	* c-parse.in (bison parser, init_reswords): Remove uses of
	doing_objc_thang.
	* c-tree.h (doing_objc_thang): Remove.

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

	* cpplex.c (_cpp_lex_token): Ensure we warn at most once
	about files not ending in newlines.

2001-05-12  Neil Booth  <neil@cat.daikokuya.demon.co.uk>

	* dwarfout.c (dwarfout_init): Add cast.
	* sched-deps.c (sched_analyze_insn): Remove unused vars.
	* unwind-dw2-fde.c (_Unwind_Find_FDE): Flag unused parameter so.
cp:
	* method.c (build_mangled_C99_name): Remove unused prototype.

2001-05-12  Alexandre Oliva  <aoliva@redhat.com>

	* config/arm/arm.h (TARGET_PTRMEMFUNC_VBIT_LOCATION): Use delta.

2001-05-12  Alexandre Oliva  <aoliva@redhat.com>

	* defaults.h (TARGET_PTRMEMFUNC_VBIT_LOCATION): Define.
	* tm.texi (TARGET_PRTMEMFUNC_VBIT_LOCATION): Document.

2001-05-11  Richard Henderson  <rth@redhat.com>

	* defaults.h (ASM_PREFERRED_EH_DATA_FORMAT): New.
	* dwarf2asm.c (dw2_force_const_mem, dw2_output_indirect_constant_1,
	dw2_output_indirect_constants, dw2_asm_output_encoded_addr_rtx): New.
	* dwarf2asm.h (dw2_asm_output_encoded_addr_rtx): Prototype.
	(dw2_output_indirect_constants): Prototype.
	* dwarf2out.c (dwarf2out_begin_prologue): Generate
	current_function_func_begin_label if we'll need it for EH.  Exit
	early for IA64_UNWIND_INFO.
	* except.c: Get DW_EH_PE_* defines from dwarf2.h.
	(eh_data_format_name): Update for indirect references.
	(output_function_exception_table): Care for IA64_UNWIND_INFO.
	Handle ASM_PREFERRED_EH_DATA_FORMAT.
	* except.h (MUST_USE_SJLJ_EXCEPTIONS): IA64_UNWIND_INFO needn't
	define HAVE_eh_return etc.
	* final.c (final_start_function): Always call dwarf2out_begin_prologue.
	(final_end_function): Don't call output_function_exception_table.
	* toplev.c (compile_file): Call dw2_output_indirect_constants.
	(rest_of_compilation): Invoke output_function_exception_table
	for ia64 before assemble_end_function.
	* tm.texi (ASM_PREFERRED_EH_DATA_FORMAT): Document.
	(ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX): Document.

	* unwind-dw2.c (_Unwind_GetTextRelBase, _Unwind_GetDataRelBase): New.
	* unwind.h: Declare them.
	* libgcc-std.ver: Export them.
	* unwind-pe.h: New file.

	* config/alpha/elf.h (ASM_PREFERRED_EH_DATA_FORMAT): New.

	* config/ia64/fde-glibc.c: Use "struct unw_table_entry"
	instead of "fde".
	(find_fde_for_dso): Extract DT_PLTGOT.
	(_Unwind_FindTableEntry): Rename from __ia64_find_fde; return
	the segment and gp as well.
	* config/ia64/frame-ia64.c: Remove file.
	* config/ia64/frame-ia64.h: Remove file.
	* config/ia64/unwind-ia64.c: New file.
	* config/ia64/unwind-ia64.h: New file.
	* config/ia64/ia64.h (ASM_OUTPUT_EH_CHAR): Remove.
	(ASM_OUTPUT_EH_SHORT, ASM_OUTPUT_EH_INT): Remove.
	(ASM_OUTPUT_EH_DOUBLE_INT): Remove.
	(ASM_PREFERRED_EH_DATA_FORMAT): New.
	(ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX): New.
	(IA64_UNWIND_INFO): Re-enable.
	(HANDLER_SECTION): Remove.
	(EH_RETURN_DATA_REGNO): New.
	* config/ia64/ia64.md (exception_receiver): Remove.
	* config/ia64/t-glibc (LIB2ADDEH): Re-enable.
	* config/ia64/t-ia64 (LIB2ADDEH): Re-enable.

2001-05-11  Richard Henderson  <rth@redhat.com>

	* config/ia64/ia64.c (group_barrier_needed_p): Don't allow
	calls and jumps to be bundled together.
	(ia64_reorg): Emit a break after a noreturn call that ends
	a function.
	* config/ia64/ia64.md (break_f): New.

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

	* c-lex.c (lex_charconst): Convert into a simple wrapper
	around cpp_interpret_charconst, to which most of the code
	body is moved.
	* cppexp.c (MAX_CHAR_TYPE_SIZE, MAX_WCHAR_TYPE_SIZE,
	MAX_LONG_TYPE_SIZE, MAX_INT_TYPE_SIZE, MAX_CHAR_TYPE_MASK,
	MAX_WCHAR_TYPE_MASK, parse_escape, parse_charconst): Remove.
	(lex): Use cpp_interpret_charconst.
	* cpplex.c (parse_escape, read_ucs, cpp_interpret_charconst,
	hex_digit_value): New functions.
	(MAX_CHAR_TYPE_SIZE, MAX_WCHAR_TYPE_SIZE): New macros.
	* cpplib.h (cpp_interpret_charconst): New prototype.
	* Makefile.in: Update.

2001-05-12  Dean Wakerley  <dean@wakerley.com>

	* doc/install.texi: New file. Converted to texinfo from the HTML
	documentation in wwwdocs/htdocs/install.

Fri May 11 15:50:13 2001  Jeffrey A Law  (law@cygnus.com)

	* gcse.c (insert_insn_end_bb): Do not search for assignments to
	non-argumment registers that are mentioned in CALL_INSN_FUNCTION_USAGE.

	* toplev.c (compile_file): Move comment for opening output
	file to just before the code that opens the output file.

2001-05-11  Jakub Jelinek  <jakub@redhat.com>

	* regmove.c (regmove_optimize): Suppress the optimization for
	unchanging destination register.  Add comment above function.

2001-05-11  Zack Weinberg  <zackw@stanford.edu>

	* Makefile.in: Exterminate all references to assert.h.
	* cross-make: Likewise.
	* assert.h: Delete.
	* configure.in: Correct commentary.
	* configure: Regenerate.

	* libgcc-std.ver, libgcc2.c, libgcc2.h, sys-protos.h:
	Remove __eprintf.

	* config/t-freebsd, config/t-linux, config/t-linux-aout,
	config/t-netbsd, config/t-rtems, config/x-linux,
	config/i386/t-beos, config/mcore/t-mcore, config/mcore/t-mcore-pe:
	No need to override INSTALL_ASSERT_H.

	* fixinc/fixinc.dgux, fixinc/fixinc.interix, fixinc/fixinc.ptx,
	fixinc/fixinc.svr4, fixinc/fixinc.winnt, fixinc/fixinc.wrap,
	fixinc/fixincl.sh: Don't install assert.h into objdir/include.

2001-05-11  Graham Stott  <grahams@redhat.com>

	* combine.c (simplify_comparison): Fix typo.

2001-05-11  Mark Mitchell  <mark@codesourcery.com>

	* loop.h (struct movables): Remove `num'.
	* loop.c (scan_loop): Don't set it.  Use count_insns_in_loop.
	Adjust call to strength_reduce.
	(num_unmoved_movables): New function.
	(move_movables): Don't set movables->num.
	(strength_reduce): Compute the number of instructions in the loop
	here, rather than in the caller.
	(check_dbra_loop): Always clear reversible_mem_store if there
	are any memory sets.
	(loop_regs_scan): Don't count instructions here.
	(count_insn_in_loop): New function.

2001-05-11  Mark Mitchell  <mark@codesourcery.com>

	* optabs.c (emit_libcall_block): Don't mark calls as CONST_CALL_P.

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

	* c-common.c (finish_label_expr): New function, lifted from
	from cp/semantics.c.
	* c-common.h (finish_label_expr, lookup_label): New prototypes.
	* c-parse.in: Move 3 blocks of parser code into new functions.
	* c-typeck.c (simple_asm_stmt, c_cast_expr): New functions.
	* c-tree.h (simple_asm_stmt, c_cast_expr): New prototypes.
	(lookup_label): Remove.

2001-05-11  Alexandre Oliva  <aoliva@redhat.com>

	* config/mn10300/t-mn10300 (dp-bit.c, fp-bit.c): Don't define
	FLOAT_BIT_ORDER_MISMATCH.

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

	* expr.c (emit_push_insn): Convert PUSH_ROUNDING argument to
	bytes.  Reported by Kazu Hirata <kazu@hxi.com>.

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

	* expr.c (emit_group_load): extract_bit_field requires a REG or
	MEM as an argument.

Thu May 10 14:45:44 2001  Jeffrey A Law  (law@cygnus.com)

	* cse.c (cse_insn): Mostly remove first hunk of code which collapsed
	a computed jump into an unconditional jump.
	In second hunk of code for collapsing computed and conditional jumps
	into unconditional jumps, reemit the jump in additional cases.

	* jump.c (jump_optimize_1): Do not wrap the new jump target
	inside a LABEL_REF; gen_jump will do that automatically.

2001-05-10  Toon Moene  <toon@moene.indiv.nluug.nl>

	* dwarf2out.c (mem_loc_descriptor): Do not pass constant pool
	contents for a SYMBOL_REF in case of floating point constants.

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

	* c-common.c (combine_strings): Widen strings in a
	host-endian-independent way.

2001-05-10  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-parse.in: Remove many shift/reduce conflicts.  Update
	%expect values.
	(declspecs_nosc_nots_nosa_noea, declspecs_nosc_nots_nosa_ea,
	declspecs_nosc_nots_sa_noea, declspecs_nosc_nots_sa_ea,
	declspecs_nosc_ts_nosa_noea, declspecs_nosc_ts_nosa_ea,
	declspecs_nosc_ts_sa_noea, declspecs_nosc_ts_sa_ea,
	declspecs_sc_nots_nosa_noea, declspecs_sc_nots_nosa_ea,
	declspecs_sc_nots_sa_noea, declspecs_sc_nots_sa_ea,
	declspecs_sc_ts_nosa_noea, declspecs_sc_ts_nosa_ea,
	declspecs_sc_ts_sa_noea, declspecs_sc_ts_sa_ea, declspecs_ts,
	declspecs_nots, declspecs_ts_nosa, declspecs_nots_nosa,
	declspecs_nosc_ts, declspecs_nosc_nots, declspecs_nosc, declspecs,
	maybe_type_quals_setattrs, typespec_nonattr, typespec_attr,
	typespec_reserved_nonattr, typespec_reserved_attr,
	typespec_nonreserved_nonattr, maybe_setattrs, structsp_attr,
	structsp_nonattr, components_notype, component_notype_declarator,
	absdcl1_ea, absdcl1_noea, direct_absdcl1, absdcl_maybe_attribute,
	firstparm, setspecs_fp): New
	(typed_declspecs, reserved_declspecs, typed_typespecs,
	reserved_typespecquals, declmods, typespec, typespecqual_reserved,
	typed_declspecs_no_prefix_attr reserved_declspecs_no_prefix_attr
	declmods_no_prefix_attr, nonempty_type_quals, structsp,
	type_quals): Remove.  Users updated.
	(initdecls, notype_initdecls, after_type_declarator,
	parm_declarator, notype_declarator, absdcl1, components, ivars):
	Don't allow attributes at the start of a declarator; include them
	in the production containing the declarator instead.  Always
	require type specifiers before trying to redeclare a typedef name.
	(typename): Allow for attributes but warn that they are ignored.
	(parmlist, firstparm, setspecs_fp): Include attributes in
	parmlist; suck them off the parser stack in firstparm using
	setspecs_fp.

Thu May 10 09:17:42 2001  Jeffrey A Law  (law@cygnus.com)

	* ifcvt.c (merge_if_block): Use any_uncondjump_p, not simplejump_p
	to determine if a block has an unconditional jump at its end.

	* jump.c (jump_optimize_1): When converting a conditional jump
	to an unconditional jump, build the jump using gen_jump instead
	of just modify operands in-place.

2001-05-09  Zack Weinberg  <zackw@stanford.edu>

	* cppinit.c (cpp_post_options): Shut off macro expansion if
	-fpreprocessed.
	* cpplib.c (_cpp_handle_directive): If -fpreprocessed, accept
	IN_I directives only if the # is in column 1 and the directive
	name begins in column 2.
	* cppmain.c (scan_buffer): Insert a space between # and an
	identifier, when that identifier is a directive name.

	* tradcpp.c (struct file_buf): Add a pointer to the next entry
	in the header search path.
	(enum node_type): Add T_INCLUDE_NEXT.
	(directive_table): Add entry for include_next.
	(do_include_next): New function.
	(process_include): New routine, broken out of do_include.
	(finclude): Insert 'nhd' argument, to be copied into
	next_header_dir of the new buffer.
	(main): Adjust to match.
	* gsyslimits.h, limity.h: Un-indent #include_next.

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

	* objc.texi: Move from ../libobjc/objc-features.texi.  Adjust for
	inclusion as a chapter of the GCC manual.
	* gcc.texi: Include objc.texi.
	* fdl.texi: Use @unnumberedsec for the addendum.
	* Makefile.in ($(srcdir)/gcc.info, gcc.dvi): Update dependencies.

Wed May  9 16:01:41 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (DImode move splitters): Use !MMX and !SSE for the condition.

Wed May  9 10:40:25 2001  Alexandre Oliva  <aoliva@redhat.com>

	* regclass.c (scan_one_insn): Update REG_N_REFS when optimizing
	handling of two-address insns.

Wed May  9 10:36:18 2001  Alexandre Oliva  <aoliva@redhat.com>

	* Makefile.in (NM_FOR_TARGET): Look for ./nm, then
	../binutils/nm-new instead of ../binutils/nm.

Wed May  9 12:15:46 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (movdi splitter): Fix the splitting condition
	(float_extenddftf splitter): Fix mode.

Wed May  9 12:05:39 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* genrecog.c (write_switch): Avoid outputting of switch for
	types wider than int.

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

	* reload1.c (copy_eh_notes): New function.
	(emit_input_reload_insns): Call it.
	(emit_output_reload_insns): Call it.

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

	* config.gcc (i[34567]86-*-sco3.2v4*, i[34567]86-*-sco*):
	Delete stanzas.
	* config/i386/sco.h, config/i386/sco4.h, config/i386/scodbx.h,
	config/i386/sco4dbx.h, config/i386/x-sco4: Delete file.

	* optabs.c: Delete #ifdef BROKEN_LDEXP block.

2001-05-07  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* pa.md (interspace_jump): Revise comment.
	(builtin_longjmp): Block initial setup insns from delay slot of
	interspace branch.
	(builtin_setjmp_receiver): New expander to save and restore PIC
	register.

	* som.h (NM_FLAGS): Remove `-n' sort option.  Revise comment.

Mon May  7 09:30:14 2001  Jeffrey A Law  (law@cygnus.com)

	* toplev.c (compile_file): Set up the output file before we call
	the various initializers for the compiler.

	* except.c (sjlj_mark_call_sites): Do not search for assignments to
	non-argumment registers that are mentioned in CALL_INSN_FUNCTION_USAGE.

	* pa.h (MAX_LONG_TYPE_SIZE): Should be 32, not 64.
	* pa-64.h (*_TYPE_SIZE): Undefine before redefining.

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

	* Makefile.in (tradcpp0): Correct typo in dependency list.

2001-05-06  Geoff Keating  <geoffk@redhat.com>

	* config/rs6000/rs6000.c (rs6000_emit_prologue): Don't save
	the link register if we're not going to use it.

	* config/rs6000/rs6000.c (output_profile_hook): Fix a warning.
	(output_function_profiler): Likewise.

2001-05-07  Alan Modra  <amodra@one.net.au>

	* pa.c (compute_frame_size): 64-bit frame marker is 16 bytes.

2001-05-06  Alexandre Oliva  <aoliva@redhat.com>

	* unroll.c (loop_iterations): Don't sign-extend abs_diff;
	zero-extend it.  Make abs_inc unsigned.

	* optabs.c (expand_binop): Sign-extend xop0 and xop1 from the
	widest mode in narrowing and widening operations.

	* config/mips/mips.md: Sign extend CONST_INTs.

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

	* invoke.texi (Option Summary): Add -momit-leaf-frame-pointer
	(i386 Options): Document -momit-leaf-frame-pointer.

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

	* c-typeck.c (internal_build_compound_expr): Check for
	array to pointer conversion just once.

2001-05-05  Richard Henderson  <rth@redhat.com>

	* integrate.c (copy_insn_list): Substitute NOTE_EXPECTED_VALUE.

2001-05-05  Richard Henderson  <rth@redhat.com>

	* except.c (remove_fixup_regions): Adjust REG_EH_REGION notes
	to the parent of the fixup region.

2001-05-05  Jakub Jelinek  <jakub@redhat.com>

	* gcc.c (cpp_options): Define __NO_INLINE__ unless we are honoring
	"inline" keyword.
	* cpp.texi (__NO_INLINE): Document it.

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

	* cppfiles.c (struct include_file): New member err_no.
	(find_or_create_entry): Set it.
	(open_file): Don't set fds to -2.  Instead, use err_no to
	remember previous errors, if any.

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

	* config/m68hc11/m68hc11.c (m68hc11_gen_movhi): Optimize moves
	between X and Y by using sequences of xgdx and xgdy.

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

	* config/m68hc11/m68hc11.md ("*logicalsi3_silshr16"): Use '?' instead
	of '!' for the 'D' alternative ('!' is too strong).
	("*logicalsi3_silshl16"): Likewise.
	("movstricthi"): Accept 'A' when 'd' constraint, remove spurious '+'.
	("movstrictsi"): Remove spurious '+'.
	("movstrictqi"): Don't accept 'A' and remove spurious '+'.
	("tstqi_1", "*lshrqi3_const1"): Put 'm' constraint before 'd'.
	("subqi3"): Disparage with '!' the 'x' and 'y' registers to avoid
	a reload to them.

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

	* calls.c (store_one_arg): Don't divide align by BITS_PER_UNIT.

2001-05-04  Lars Brinkhoff  <lars@nocrew.org>

	* simplify-rtx.c (simplify_binary_operation): Simplify ~a + 1
	into -a.

2001-05-04  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* config/rs6000/rs6000.md (ashldi3 splits): Guard with
	TARGET_POWERPC64.

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

	* config/m68hc11/m68hc11.md (lshrhi3_const1): Fix shift of
	soft register, use ror instead of rol.

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

	* config/m68hc11/m68hc11.c (m68hc11_check_z_replacement): Take
	into account pre/post increment decrement for 68HC12.
	Fix other problems in replacement and fix call to reg_mentioned_p.

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

	* config/m68hc11/larith.asm (L_regs_frame): New for _.frame.
	Put the soft registers in bss for 68HC12.
	(L_regs_d3_4): New for _.d3 and _.d4.
	(L_regs_d5_6): Likewise.
	(L_regs_d1_2): Likewise.
	* config/m68hc11/t-m68hc11-gas (T_CPPFLAGS): Compile new parts.

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

	* config/m68hc11/m68hc11.h (CPP_SPEC): Pass -D__HAVE_SHORT_DOUBLE__
	to the pre-processor when -fshort-double is specified.
	* config/m68hc11/m68hc11.2 (CPP_SPEC): Likewise.

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

	* config/m68hc11/larith.asm (divmodhi4): Empty for 68HC12.
	(__mulsi3): Rewrite for 68HC12.
	* config/m68hc11/m68hc11.md (divmodhi4): Use idivs for 68HC12.
	Mark 'x' constraint with earlyclobber to prevent a
	RELOAD_FOR_OTHER_ADDRESS to go in it.
	(mulhi3_m68hc12): New pattern.
	(mulhi3_m68hc11): Rename of mulhi3.
	(mulhi3): New expand for 68HC12 optimisation.
	(umulhisi3, mulhisi3): New patterns for 68HC12.

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

	* config/m68hc11/m68hc11.md (*tbne, *tbeq): New patterns for 68HC12.
	(extendqisi2, extendqihi2, extendhisi2): Use sex for 68HC12.
	(uminqi3, umaxqi3, uminhi3, umaxhi3): New pattern for 68HC12.

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

	* config/m68hc11/m68hc11.h (CONST_COSTS): Make the cost of
	constants cheap after reload.
	* config/m68hc11/m68hc11.c (m68hc11_shift_cost): Shift by 16 and 32
	are cheap.
	(m68hc11_rtx_costs): Cost of multiplication by 65536 is expensive
	so that gcc prefers a shift by 16.
	(m6811_cost, m6812_cost): Make the shift cheap compared to an add.

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

	* config/arm/elf.h (ASM_OUTPUT_ALIGNED_COMMON): Define.

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

	* alpha.h: NULL_PTR -> NULL.
	* arm.c: Likewise.
	* arm.h: Likewise.
	* avr.h: Likewise.
	* c4x.c: Likewise.
	* c4x.h: Likewise.
	* i386.c: Likewise.
	* i386.md: Likewise.
	* i860.c: Likewise.
	* ia64.c: Likewise.
	* m68hc11.h: Likewise.
	* rs6000.h: Likewise.
	* sh.c: Likewise.
	* sh.h: Likewise.
	* sparc.h: Likewise.
	* v850.c: Likewise.

	* expr.c: Likewise.
	* final.c: Likewise.
	* gcc.c: Likewise.
	* recog.c: Likewise.

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

	* i386.c (ix86_emit_restore_regs_using_mov, ix86_save_reg): Change
	`bool' parameter to `int'.

	* hash.c (hash_lookup): Likewise.

	* hash.h (hash_lookup): Likewise.

	* tlink.c (symbol_hash_lookup, demangled_hash_lookup): Likewise.

Fri May  4 13:10:03 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.c (x86_initialize_trampoline): Fix mode of constant.

2001-05-03  Geoff Keating  <geoffk@redhat.com>

	* invoke.texi (i386 Options): Delete references to -malign-jumps,
	-malign-loops, -malign-functions.
	* i386.c (ix86_align_funcs): Delete.
	(ix86_align_loops): Delete.
	(ix86_align_jumps): Delete.
	(override_options): Mark -malign-* as obsolete.  Emulate their
	behavior with the -falign-* options.  Default -falign-* from
	the processor table.
	* i386.h (FUNCTION_BOUNDARY): Define to 16; revert Richard Kenner's
	patch of Wed May 2 13:09:36 2001.
	(LOOP_ALIGN): Delete.
	(LOOP_ALIGN_MAX_SKIP): Delete.
	(LABEL_ALIGN_AFTER_BARRIER): Delete.
	(LABEL_ALIGN_AFTER_BARRIER_MAX_SKIP): Delete.

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

	* except.h: Add prototype declaration for
	expand_builtin_init_dwarf_reg_sizes.

2001-05-03  Geoffrey Keating  <geoffk@redhat.com>

	* Makefile.in (site.exp): Set TESTING_IN_BUILD_TREE.

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

	* config/m68hc11/m68hc11.md ("bitcmpqi"): New pattern for bitb
	instruction.
	("bitcmpqi2"): New pattern for bit-extract and test.
	("bitcmphi"): New pattern for bitb/bita instructions.

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

	* gccbug.in: Use a temporary directory when the mktemp command is
	not available.

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

	* config/m68hc11/m68hc11.h (STATIC_CHAIN_REGNUM): Use soft z register
	instead of _.d1.
	(INITIALIZE_TRAMPOLINE): Call it.
	(TRAMPOLINE_SIZE): Define according to 68HC11/68HC12.
	(TRAMPOLINE_TEMPLATE): Remove.
	* config/m68hc11/m68hc11.c (m68hc11_initialize_trampoline): New.
	* config/m68hc11/m68hc11-protos.h (m68hc11_initialize_trampoline):
	Declare.

2001-05-03  David O'Brien  <obrien@FreeBSD.org>

	* config/t-freebsd: Don't install "assert.h" in gcc.  Compile crtbeginS.o
	and crtendS.o with PIC.

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

	* config/m68hc11/larith.asm (__mulqi3): Fix multiplication of two
	negative numbers.
	(___subdi3, ___adddi3): Use x instead of y as index register.
	(__init_bss_section, __map_data_section): Optimize for 68HC12.
	(__memset, __memcpy): Likewise.
	(regs): Put the soft registers in bss for 68HC12.
	(abort): Use trap to abort for 68hc12.
	(__mulhi3, __mulhi32): Use emul for 68hc12.
	(__mulsi3): Avoid to use the tmp soft register for 68hc12.

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

	* config/m68hc11/m68hc11.h (LIMIT_RELOAD_CLASS): Don't define.
	* config/m68hc11/m68hc11-protos.h (limit_reload_class): Remove.
	* config/m68hc11/m68hc11.c (limit_reload_class): Remove.
	(m68hc11_override_options): Remove setting of flag_no_nonansi_builtin.
	Set 68HC12 min offset to -65536.
	(print_operand): Put parenthesis arround the operand if it refers
	to a symbol having the same name as a register.
	(m68hc11_z_replacement): When z register is replaced by its
	equivalent soft register, force the insn to be re-recognized.
	(m68hc11_check_z_replacement): Fix the test when destination is
	the index register and z dies in the insn.
	(m68hc11_reorg): Remove the REG_DEAD notes beforce recomputing them.

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

	* config/m68hc11/m68hc11.c (m68hc11_override_options): Initialize
	costs according to processor variant.
	(m68hc11_shift_cost): New function to compute shift costs.
	(m68hc11_rtx_costs): Define costs according to processor variant.
	(m6811_cost): Costs for 68HC11.
	(m6812_cost): Costs for 68HC12.
	(COSTS_N_INSNS): Remove.

	* config/m68hc11/m68hc11.h (RTX_COSTS): New.
	(DEFAULT_RTX_COSTS): Remove.
	(CONST_COSTS): Define costs according to OUTER_CODE.
	(processor_costs): New struct to define costs.
	(m68hc11_cost): Pointer to current costs.

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

	* config/m68hc11/m68hc11.md (*addhi3_68hc12): Fix generation
	and use m68hc11_notice_keep_cc when using leax/leay.
	(addhi3 split): Reject split if the insn is handled by
	leax/leay above.
	* config/m68hc11/m68hc11.c (m68hc11_split_move): For 68HC12 the
	push must be handled in a special way if the source operand uses
	sp as index register.
	(m68hc11_notice_keep_cc): New function.
	(m68hc11_gen_movhi): Use it when an insn changes a register but
	not the flags.
	(m68hc11_gen_movqi): Fix move for 68HC12.
	* config/m68hc11/m68hc11-protos.h (m68hc11_notice_keep_cc): Declare.

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

	* config/m68hc11/m68hc11.c (m68hc11_emit_libcall): Use LCT_CONST
	and don't pass operands[0] to emit_library_call_value.

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

	* config/m68hc11/m68hc11.md (tsthi_1): Use cpd for 68HC12.
	(zero_extendsi split): Simplify and use (zero_extendhi).
	(*addhi3): Remove 'w' constraint since stack pointer is handled
	by (addhi3_sp).
	(*ashlhi3_2): Operand 2 is clobbered use '+' for its constraint.
	(*ashlhi3, *ashrhi3, *lshrhi3): Likewise.
	(*ashrhi3_const): Fix shift by 7.
	(*lshrsi3_const16): Fix template.
	(call, call_value): Fix constraint and predicate.

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

	* config/m68hc11/m68hc11.md (X_REGNUM, D_REGNUM): New constant.
	(Y_REGNUM, SP_REGNUM, PC_REGNUM, A_REGNUM, B_REGNUM): Likewise.
	(CC_REGNUM): Likewise.
	(*unnamed splits): Use above constants instead of hard coded numbers.
	(*adcq, *subcq, *addsi_carry, *rotlqi3_with_carry): Likewise.
	(*rotlhi3_with_carry, *rotrhi3_with_carry): Likewise.
	(*return_16bit, *unnamed peepholes): Likewise.

2001-05-03  David O'Brien  <obrien@FreeBSD.org>

	* config.gcc(rs6000-ibm-aix|powerpc-ibm-aix):  Do not include
	rs6000/rs6000.h twice.

2001-05-03  Mark Elbrecht  <snowball3@bigfoot.com>

	* config/i386/djgpp.h (CPP_PREDEFINES): Define __GO32__.
	(CPP_SPEC): Conditionally define MSDOS and GO32.
	(SUBTARGET_SWITCHES): Ignore -mbnu210 and -mno-bnu210.
	(SUBTARGET_OVERRIDE_OPTIONS): Warn that -mbnu210 and -mno-bnu210 are
	ignored.
	(SUPPORTS_WEAK, SUPPORTS_ONE_ONLY): Remove.

2001-05-03  Alexandre Oliva  <aoliva@redhat.com>

	* config/mn10300/mn10300.md: Sign-extend GEN_INT operands.

2001-05-03  Mark Mitchell  <mark@codesourcery.com>

	* integrate.h (struct inline_remap): Add leaf_reg_map table.
	* integrate.c (expand_inline_function): Use xcalloc to allocate
	memory.
	(copy_rtx_and_substitute): Use the leaf_reg_map for leaf
	registers.

2001-05-03  Mark Mitchell  <mark@codesourcery.com>

	* c-dump.c (dequeue_and_dump): Don't look at DECL_ASSEMBLER_NAME
	if it is not set.

2001-05-03  Alexandre Oliva  <aoliva@redhat.com>

	* config/mn10300/mn10300.h (LINK_SPEC): Pass --relax to the
	linker if -mrelax is given.
	(TARGET_SWITCHES): Document -mrelax.

	Re-installed 2001-01-09's patch:
	* hwint.h (HOST_BITS_PER_WIDE_INT, HOST_WIDE_INT): Use long long
	if it's wider than long and the target's long is wider than the
	host's.

2001-05-02  David O'Brien  <obrien@FreeBSD.org>

	* config.gcc, config/rs6000/aix51.h, config/rs6000/mach.h:  Do not
	directly include rs6000/rs6000.h.  Instead do it in tm.h.

2001-05-02  Stan Shebs  <shebs@apple.com>

	* objc/objc-act.c (STRING_OBJECT_CLASS_NAME): Default to
	NSConstantString for NeXT-style runtimes.
	(STRING_OBJECT_GLOBAL_NAME): New macro.
	(enum objc_tree_index): Add values OCTI_CNST_STR_GLOB_ID and
	OCTI_STRING_CLASS_DECL.
	(constant_string_global_id): New macro.
	(string_class_decl): Ditto.
	(setup_string_decl): New function.
	(build_objc_string_object): Use it to build a NeXT runtime
	compatible string initializer.

2001-05-02  Jakub Jelinek  <jakub@redhat.com>

	* tradcpp.c (do_define): Make sure we don't walk past limit.

2000-05-01  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* config/rs6000/rs6000.c (rs6000_legitimate_address): Allow any stack
	offsets if not REG_OK_STRICT.

	* config/rs6000/rs6000.h (REG_OK_STRICT_FLAG): New macro.
	(INT_REG_OK_FOR_INDEX_P): Likewise.
	(INT_REG_OK_FOR_BASE_P): Likewise.
	(REG_OK_FOR_INDEX_P): Use INT_REG_OK_FOR_INDEX_P.
	(REG_OK_FOR_BASE_P): Use INT_REG_OK_FOR_BASE_P.
	(LEGITIMATE_OFFSET_ADDRESS_P): Use INT_REG_OK_FOR_INDEX_P and
	INT_REG_OK_FOR_BASE_P instead of REG_OK_FOR_INDEX_P and
	REG_OK_FOR_BASE_P. Take an additional parameter.
	(LEGITIMATE_INDEXED_ADDRESS_P): Likeewise.
	(LEGITIMATE_INDIRECT_ADDRESS_P): Likewise.
	(LEGITIMATE_LO_SUM_ADDRESS_P): Likewise.
	(GO_IF_LEGITIMATE_ADDRESS): Move code into new function
	rs6000_legitimate_address() and use it.
	* config/rs6000/rs6000.c: Update all callers.
	(rs6000_legitimate_address): New function.

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

	* config/rs6000/rs6000.c (rs6000_emit_move): Merge
	special_constant conditional blocks together.

2001-05-02  Dale Johannesen  <dalej@apple.com>

	* config/rs6000/rs6000.h (RS6000_ARG_SIZE): Remove unused NAMED
	parameter.
	(STRICT_ARGUMENT_NAMING): Define.
	* config/rs6000/rs6000.c (function_arg_advance, function_arg,
	function_arg_partial_nregs, setup_incoming_varargs): Remove
	args logic which depends on "named" now that STRICT_ARGUMENT_NAMING
	is defined.

Wed May  2 13:09:36 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* config/i386/i386.h (FUNCTION_BOUNDARY): Result is unsigned.

	* function.c (fixup_var_regs_1, case SUBREG): Use promoted mode
	for replacement.

	* expr.c (store_field): Do nothing except elaborate side-effects if
	zero-bit field.

2001-05-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* c-lex.c: NULL_PTR -> NULL.
	* cse.c: Likewise.
	* emit-rtl.c: Likewise.
	* gcse.c: Likewise.
	* genpeep.c: Likewise.
	* jump.c: Likewise.
	* mips-tdump.c: Likewise.
	* reload1.c: Likewise.
	* rtlanal.c: Likewise.
	* stmt.c: Likewise.
	* stor-layout.c: Likewise.
	* toplev.c: Likewise.

2001-05-01  Per Bothner  <per@bothner.com>

	* expr.c (expand_expr):  When compiling LABELED_BLOCK_EXPR,
	call do_pending_stack_adjust before emiting label.

2001-05-01  Mark Mitchell  <mark@codesourcery.com>

	* extend.texi: Fix typo.

2001-05-01  Stan Shebs  <shebs@apple.com>

	* objc/objc-act.c (build_module_descriptor): Clear DECL_CONTEXT
	of UOBJC_MODULES_decl.
	(generate_strings): Clear DECL_CONTEXT of new decl nodes.
	(generate_descriptor_table): Ditto.
	(generate_protocols): Ditto.
	(generate_protocol_list): Ditto.
	(generate_classref_translation_entry): Ditto.

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

	* invoke.texi (Optimize Options): Add documentation for `--param
	max-delay-slot-insn-search' and `--param
	max-delay-slot-live-search' and reorder --param section.
	* params.def: Modify initial comment.
	* params.h (param_info): Add `help' member.
	* toplev.c (lang_independent_params): Include `help' description.
	(display_help): Print --param parameters.

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

	* config.gcc: Don't default xmake_file to ${cpu_type}/x-${cpu_type}.
	Remove references to deleted files.
	(*-*-openbsd): No need to override xmake_file.
	(*-*-sysv4): Treat like *-*-sysv.

	* configure.in: Probe for ldopen in various places, and set up
	collect2 to be linked with them if found.
	Don't dink with Windows registry stuff unless $host_os is a
	Win32 os name.  Check to see if we need -ladvapi32.
	* configure: Regenerate.

	* Makefile: Get rid of CLIB and HOST_CLIB.
	Substitute in COLLECT2_LIBS and link collect2 against its contents.
	* build-make: Get rid of HOST_CLIB.

	* config/a29k/x-unix, config/alpha/x-osf, config/i386/x-aix,
	config/i386/x-osfrose, config/m68k/x-dpx2, config/mips/x-iris3,
	config/mips/x-mips, config/mips/x-osfrose, config/mips/x-sony,
	config/mips/x-sysv, config/rs6000/x-aix31, config/rs6000/x-aix41,
	config/rs6000/x-rs6000: Delete.

	* config/i386/x-cygwin, config/m68k/t-aux, config/mips/x-iris:
	Don't set CLIB.

	24 x-host fragments remain, 0 x-cpu, 3 top level.

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

	* aclocal.m4 (gcc_AC_C_CHAR_BIT): Correct test program.
	* configure: Regenerate.

2001-05-01  Angela Marie Thomas <angela@cygnus.com>

	* Makefile.in (install-headers): Remove redundant dependency.

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

	* c-tree.texi (USING_STMT): Document.

2001-05-01  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* bitmap.c: Change NULL_PTR to NULL or "(rtx*)0".
	* c-common.c: Likewise.
	* c-decl.c: Likewise.
	* combine.c: Likewise.
	* rs6000.c: Likewise.
	* except.c: Likewise.
	* explow.c: Likewise.
	* expr.c: Likewise.
	* fold-const.c: Likewise.
	* function.c: Likewise.
	* gcc.c: Likewise.
	* gcse.c: Likewise.
	* integrate.c: Likewise.
	* loop.c: Likewise.
	* objc/objc-act.c: Likewise.
	* recog.c: Likewise.
	* reg-stack.c: Likewise.
	* reload.c: Likewise.
	* reload1.c: Likewise.
	* simplify-rtx.c: Likewise.
	* stmt.c: Likewise.
	* varasm.c: Likewise.

2001-05-01  Gabriel Dos Reis  <gdr@codesourcery.com>

	* diagnostic.def: New file.
	* diagnostic.h (diagnostic_t): New enum.
	* Makefile.in (diagnostic.o): Depend on diagnostic.def

2001-04-30  Zack Weinberg  <zackw@stanford.edu>

	* tsystem.h: Test only POSIX for availability of string.h
	and time.h.
	* config.gcc (all systems): If USG appeared in xm_defines,
	change it to POSIX.  If both USG and POSIX appeared, just
	delete USG. Remove unnecessary quotes around xm_defines
	settings.
	(m68k-crds-unos*): Don't #define unos - tested nowhere.
	(m68k-apple-aux*): Don't #define AUX - tested nowhere.
	(alpha*-*-linux*ecoff*, powerpc-*-linux*libc1,
	powerpc-*-linux*): No need to set xm_defines - handled by
	global settings for *-*-linux*.

2001-04-30  Zack Weinberg  <zackw@stanford.edu>

	* dbxout.c, mips-tfile.c, config/mips/mips.c, xcoffout.c:
	Always include gstab.h, not system stab.h.  Don't provide
	default definitions of N_CATCH or N_OPT.  Always use the
	gstab.h variant of STAB_CODE_TYPE.
	* final.c: Don't include stab.h/gstab.h at all, or provide
	defaults for N_SLINE and N_SOL.

	* xcoffout.c: Can assume N_MAIN, N_DSLINE, N_BSLINE, N_BINCL,
	N_EINCL, N_EXCL, N_M2C, N_SCOPE, N_CATCH, and N_OPT are
	available.
	* sdbout.c: Always include gsyms.h instead of system syms.h.

	* configure.in: No need to check for stab.h.
	* configure, config.in: Regenerate.
	* Makefile.in (final.o): Don't depend on gstab.h.

2001-04-30  Mark Mitchell  <mark@codesourcery.com>
	    Richard Henderson  <rth@redhat.com>

	* extend.texi: Improve documentation of volatile asms.

2001-04-30  Mark Mitchell  <mark@codesourcery.com>

	* c-tree.texi: Fix thinko.
	* gcc.texi: Likewise.

2001-04-30  Richard Henderson  <rth@redhat.com>

	* c-common.c (c_promoting_integer_type_p): New function, from the
	corpse of old macro.  Properly promote too-small enumerations and
	booleans.  Adjust all callers.
	* c-common.h (C_PROMOTING_INTEGER_TYPE_P): Remove.
	(c_promoting_integer_type_p): Declare.
	* c-decl.c: Adjust C_PROMOTING_INTEGER_TYPE_P invocations.
	* c-typeck.c: Likewise.
	(default_conversion): Remove now redundant boolean check.

2001-04-30  Jan Hubicka  <jh@suse.cz>
	    Richard Henderson  <rth@redhat.com>

	* regmove.c (try_apply_stack_adjustment): Remove now redundant
	sanity checks.
	(combine_stack_adjustments_for_block): Don't combine stack
	allocation followed by deallocations.  Handle grow-up stacks.

2001-04-30  Mark Mitchell  <mark@codesourcery.com>

	* fdl.texi: New file.
	* c-tree.texi: Use the GFDL.
	* gcc.texi: Likewise.

2001-04-30  Stan Shebs  <shebs@apple.com>

	* invoke.texi: Add a section documenting Objective-C options.

2001-04-27  Andrew Haley  <aph@cambridge.redhat.com>

	* emit-rtl.c (try_split):  Copy EH notes to sequence.

2001-04-30  Mark Mitchell  <mark@codesourcery.com>

	* regmove.c (record_stack_memrefs): Catch all references to the
	stack pointer.

2001-04-29  Toomas Rosin <toomas at ns dot tklabor dot ee>

	* Makefile.in (stmp-fixinc): quote shell assignment values

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

	* c-aux-info.c: NULL_PTR->NULL in calls to `concat'.

	* gcc.c: Likewise.

	* prefix.c: Likewise.

2001-04-28  Stan Shebs  <shebs@apple.com>

	* objc/objc-act.c (handle_class_ref): Rewrite to flush target
	specific code and use new macro ASM_DECLARE_UNRESOLVED_REFERENCE.
	* config/darwin.h (ASM_DECLARE_UNRESOLVED_REFERENCE): Define.
	* tm.texi (ASM_DECLARE_UNRESOLVED_REFERENCE): Document.

	* config/darwin.h (STANDARD_EXEC_PREFIX): Don't define.
	(NEXT_OBJC_RUNTIME): Define.

Sat Apr 28 21:02:58 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* rtl.h (simplify_gen_relational): Add cmp_mode parameter.
	* simplify-rtx.c (simplify_gen_relational): Likewise.

	* simplify-rtx.c (simplify_replace_rtx): Handle relationals and MEMs.

	* i386.h (VALID_SSE_REG_MODE): Accept MMX modes if SSE2
	* i386.md (movsi_1, movdi2, movdi_1_rex64): Handle SSE2 moves.

	* i386.md (negsf2, negdf2, abssf2, absdf2): Force operands to
	registers in SSE case; fix handling of the immediates.
	(negsf2_ifs, abssf2_ifs): Tweak constraints; require
	operands to be in regsiters before reload.
	(negdf2_ifs, absdf2_ifs): Likewise; disable for 64bit
	(negdf2_ifs_rex64, absdf2_ifs_rtx64): New.
	(abstf,absxf,negtf,negxf splitters): Compute
	properly the regnum for x86_64.
	(avsdf2_if_rex64): New.

Sat Apr 28 10:36:23 2001  Jeffrey A Law  (law@cygnus.com)

	* flow.c (propagate_block_delete_insn): Handle deletion of ADDR_VEC
	and ADDR_DIFF_VEC insns when the proceeding CODE_LABEL was put
	into the constant pool.
	* jump.c (jump_optimize_1): Remove barrier successors after all
	the LABEL_NUSES counds have been computed.
	(delete_barrier_successors): When deleting a tablejump insn, also
	delete the jump table it uses.
	* varasm.c (force_const_mem): Set LABEL_PRESERVE_P when forcing a
	label into memory.

2001-04-28  Martin Kalen  <martin.kalen@todaysystems.com.au>

	* pa.c (FRP): Remove erroneous white space in macro definition.

2001-04-28  Andreas Jaeger  <aj@suse.de>

	* invoke.texi: Use XX-bit instead of XXbit or XX bit where
	appropriate.
	* extend.texi: Likewise.
	* tm.texi: Likewise.

2001-04-28  Andreas Jaeger  <aj@suse.de>

	* md.texi: Use XX-bit instead of XXbit or XX bit where
	appropriate.

2001-04-28  Jens Schweikhardt <schweikh@schweikhardt.net>

	* gcc.c (process_command): Allow -l lib in addition to -llib
	for POSIX compliance. This fixes PR c/2347.

	* invoke.texi: Update section on Link Options accordingly.

2001-04-27  Zack Weinberg  <zackw@stanford.edu>

	* function.c (purge_addressof_1): Remove the duplicate
	if (code == SET) block.  Fold the two if (code == ADDRESSOF)
	blocks together.

2001-04-28  Jason Merrill  <jason_merrill@redhat.com>

	* except.c (expand_eh_region_start): Don't start a new block.
	(expand_eh_region_end): Don't end a block.
	* stmt.c (expand_end_bindings): Don't end EH blocks.
	(expand_decl_cleanup): Starting an EH region won't change the block.
	(mark_block_as_eh_region, mark_block_as_not_eh_region): Lose.
	(is_eh_region): Lose.
	* tree.h: Adjust.

2001-04-27  Jeffrey Oldham  <oldham@codesourcery.com>

	* except.c (expand_eh_region_end_cleanup): word_mode, not Pmode.

	* collect2.c (main): Add `-L' case to remove duplicate entries.
	(is_in_args): New function to check for a duplicate argument.
	* defaults.h (LINK_ELIMINATE_DUPLICATE_LDIRECTORIES): New macro.
	* tm.texi (LINK_ELIMINATE_DUPLICATE_LDIRECTORIES): New documentation.
	* config/mips/iris6.h (LINK_ELIMINATE_DUPLICATE_LDIRECTORIES):
	Define to be nonzero.

2001-04-27  Andreas Jaeger  <aj@suse.de>
	    Richard Henderson  <rth@redhat.com>

	* md.texi (Machine Constraints): Document additional i386
	constraints and fix description of "A".

Fri Apr 27 10:43:49 2001  Jeffrey A Law  (law@cygnus.com)

	* tm.texi (TARGET_MEM_FUNCTIONS): Update text.

2001-04-27  Jason Merrill  <jason_merrill@redhat.com>

	* except.c (get_exception_filter): word_mode, not Pmode.

2001-04-26  Geoffrey Keating  <geoffk@redhat.com>

	* config/sparc/sparc.md (movsf_no_f_insn): Add more alternatives
	common to other movsf patterns.  Move up so that in future
	people who change the other patterns will change it too.
	(movsf_lo_sum): Allow even for soft-float; add appropriate
	constraints.
	(movsf_high): Likewise.
	(movsf_high+1): Allow even for soft-float.

	* function.c (expand_function_end): Always clobber the
	return registers, even if there is no return label.

Thu Apr 26 20:28:21 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* (ix86_expand_fp_movcc): Re-enable SSE conditional move generation.

Thu Apr 26 19:20:28 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (abs/neg splitter): Fix calculation of sign bit for TFmodes
	(pushqi2_rex64, pushhi2_rex64): Add.

2001-04-26  Andrew Haley  <aph@cambridge.redhat.com>

	* except.c (expand_eh_region_end_cleanup): Force pending stack
	adjust before emitting label that branches around cleanup code.

2001-04-26  H.J. Lu  (hjl@gnu.org)

	* config.gcc (mips*-*-linux*): Add elfos.h to tm_file.

	* config/mips/ecoff.h (STARTFILE_SPEC): Undefine before
	define.
	* config/mips/elf64.h (MAX_OFILE_ALIGNMENT): Likewise.
	(ASM_OUTPUT_SECTION_NAME): Likewise.
	(ASM_WEAKEN_LABEL): Likewise.
	(UNIQUE_SECTION): Likewise.
	(ASM_OUTPUT_CONSTRUCTOR): Likewise.
	(ASM_OUTPUT_DESTRUCTOR): Likewise.
	* config/mips/elf.h (MAX_OFILE_ALIGNMENT): Likewise.
	(ASM_OUTPUT_SECTION_NAME): Likewise.
	(ASM_WEAKEN_LABEL): Likewise.
	(UNIQUE_SECTION): Likewise.
	(ASM_OUTPUT_CONSTRUCTOR): Likewise.
	(ASM_OUTPUT_DESTRUCTOR): Likewise.
	* config/mips/linux.h (HANDLE_SYSV_PRAGMA): Likewise.
	* config/mips/mips.h (DBX_CONTIN_LENGTH): Likewise.
	(ASM_FILE_START): Likewise.
	(ASM_OUTPUT_SOURCE_LINE): Likewise.
	(ASM_DECLARE_OBJECT_NAME): Likewise.
	(ASM_FILE_END): Likewise.
	(ASM_DECLARE_FUNCTION_NAME): Likewise.
	(ASM_OUTPUT_INTERNAL_LABEL): Likewise.
	(ASM_GENERATE_INTERNAL_LABEL): Likewise.
	(ASM_OUTPUT_CASE_LABEL): Likewise.
	(ASM_OUTPUT_SKIP): Likewise.
	(ASM_OUTPUT_ASCII): Likewise.
	(ASM_OUTPUT_IDENT): Likewise.
	(READONLY_DATA_SECTION): Likewise.
	(EXTRA_SECTIONS): Likewise.
	(EXTRA_SECTION_FUNCTIONS): Likewise.
	(SELECT_RTX_SECTION): Likewise.
	(SELECT_SECTION): Likewise.

	* config/mips/linux.h (INVOKE__main): Undefine.
	(CTOR_LIST_BEGIN): Likewise.
	(CTOR_LIST_END): Likewise.
	(DTOR_LIST_BEGIN): Likewise.
	(DTOR_LIST_END): Likewise.
	(SET_ASM_OP): Defined it to ".dummy".
	(ASM_OUTPUT_DEF): Defined.
	(ASM_OUTPUT_DEFINE_LABEL_DIFFERENCE_SYMBOL): Defined.

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

	* config/arm/arm.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Define, if the
	assembler supports .p2align.

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

	* c-lex.c (c_lex): Remove # from %o diagnostic formatting.

2001-04-26  Jakub Jelinek  <jakub@redhat.com>

	* integrate.c (expand_inline_function): Check for error_mark_node
	in actual argument.

2001-04-26  Jakub Jelinek  <jakub@redhat.com>

	* config/i386/i386.h (CC1_CPU_SPEC): Fix deprecation warnings for
	-m386 and -m486.

2001-04-26  Alexandre Oliva  <aoliva@redhat.com>

	* configure.in (configargs.h): Define thread_model.
	* configure: Rebuilt.
	* gcc.c (main): Print it with -v.

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

	* invoke.texi: Document -Wmissing-braces, -dumpspecs,
	-dumpmachine, -dumpversion, -fmem-report and -ftime-report.
	* gcc.1: Regenerate.

2001-04-25  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* dwarfout.c (is_pseudo_reg, type_main_variant, is_tagged_type,
	is_redundant_typedef): Use static inline instead of inline static.

Wed Apr 25 18:21:01 2001  Christopher Faylor <cgf@cygnus.com>

	* config/i386/cygwin.h: Move W32API search to LINK_SPEC to ensure that
	this directory is always searched.

2001-04-25  Richard Henderson  <rth@redhat.com>

	* config/i386/i386.c (ix86_expand_epilogue): Properly compute size
	of registers to restore along non eh_return path.

2001-04-25  Jakub Jelinek  <jakub@redhat.com>

	* c-format.c (check_format_info_recurse): Handle
	PLUS_EXPR for format string.

2001-04-25  Jakub Jelinek  <jakub@redhat.com>

	* config/ia64/ia64.h (CC1_SPEC): Define.
	* config/ia64/linux.h (CC1_SPEC): Define.

Wed Apr 25 17:09:50 2001  J"orn Rennecke <amylaar@redhat.com>

	* emit-rtl.c (constant_subword): Also do sign extension in
	BITS_PER_WORD == 16 case.

2001-04-25  Jason Merrill  <jason_merrill@redhat.com>

	* loop.c (try_swap_copy_prop): Go back to checking insn.

2001-04-25  Jakub Jelinek  <jakub@redhat.com>

	* emit-rtl.c (subreg_hard_regno): Only do HARD_REGNO_MODE_OK check
	if check_mode is nonzero.

2001-04-25  Jakub Jelinek  <jakub@redhat.com>

	* config/i386/i386.c (ix86_expand_int_movcc): If overlap between
	out and comparison sequence has been detected, put result into
	proper temporary pseudo.

2001-04-24  Zack Weinberg  <zackw@stanford.edu>

	* Makefile.in (LIB2FUNCS): Remove _varargs and __dummy.
	* libgcc-std.ver: Remove __builtin_saveregs, __dummy, and __empty.
	* libgcc2.c: Remove __dummy and __builtin_saveregs.
	* libgcc2.h: Don't prototype __builtin_saveregs or __dummy.
	* config/i860/varargs.asm: New file - preserve i860 __builtin_saveregs
	for future reference.

2001-04-24  Jason Merrill  <jason_merrill@redhat.com>

	* except.c (reachable_handlers): Step out one level from a RESX.

	* except.c (struct eh_region): Rename 'last' to 'resume'.
	(mark_eh_region, duplicate_eh_region_1): Adjust.
	(expand_eh_region_end_cleanup): Remember the jump, not the barrier.
	(build_post_landing_pads): Likewise.
	(expand_end_catch, expand_eh_region_end_allowed): Don't set it.
	(expand_eh_region_end_must_not_throw): Likewise.
	(connect_post_landing_pads): Thread (only) regions with non-deleted
	resume insns.

	* except.c (expand_eh_region_end_cleanup): Save the EH return data
	registers around the cleanup.
	(get_exception_filter): New fn.
	(finish_eh_generation): Use it.

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

	* c-semantics.c (add_scope_stmt): Don't call
	current_scope_stmt_stack multiple times.

2001-04-24  Zack Weinberg  <zackw@stanford.edu>
	    Nathan Sidwell <nathan@codesourcery.com>

	Lazy __FUNCTION__ generation.
	* c-common.h (RID_FUNCTION_NAME, RID_PRETTY_FUNCTION_NAME,
	RID_C99_FUNCTION_NAME): New _RIDs.
	(CTI_FUNCTION_ID, CTI_PRETTY_FUNCTION_ID, CTI_FUNC_ID): Remove.
	(CTI_FUNCTION_NAME_DECL, CTI_PRETTY_FUNCTION_NAME_DECL,
	CTI_C99_FUNCTION_NAME_DECL, CTI_SAVED_FUNCTION_NAME_DECLS): New
	global tree slots.
	(function_id_node, pretty_function_id_node, func_id_node): Remove.
	(c99_function_name_decl_node, function_name_decl_node,
	pretty_function_name_decl_node, saved_function_name_decls):
	Declare.
	(struct language_function): Remove x_function_name_declared_p.
	(make_fname_decl): Remove a parameter.
	(declare_function_names): Remove prototype.
	(start_fname_decls, finish_fname_decls): Prototype.
	(fname_as_string): Likewise.
	(fname_string, fname_decl): Likewise.
	* c-common.c (make_fname_decl): Adjust.
	(struct fname_var_t): New struct.
	(fname_vars): New static array.
	(declare_function_name): Remove.
	(start_fname_decls, finish_fname_decls): New functions.
	(fname_as_string): New function from remnants of
	declare_function_name.
	(fname_string, fname_decl): New functions.

	* c-decl.c (c_function_name_declared_p): Remove.
	(init_decl_processing): Don't generate __FUNCTION__ et al ids,
	don't call declare_function_name. Call start_fname_decls.
	(c_make_fname_decl): Adjust parameters. Generate the name. Don't
	clobber the line number. Call finish_decl.
	(start_function): Call start_fname_decls.
	(finish_function): Call finish_fname_decls.
	Remove c_function_name_declared_p.
	(push_c_function_context): Don't push c_function_name_declared_p.
	(pop_c_function_context): Don't pop c_function_name_declared_p.
	(c_begin_compound_stmt): Don't check c_function_name_declared_p.
	* c-parse.in (STRING_FUNC_NAME, VAR_FUNC_NAME): New tokens.
	(program): Call finish_fname_decls for C.
	(primary): Add VAR_FUNC_NAME.
	(reswords): Add slots for __FUNCTION__ et al.
	(rid_to_yy): Add mappings for __FUNCTION__ et al.
	(yylexname): If it's a STRING_FUNC_NAME generate the function name
	now. Don't look for VAR_DECLs containing __FUNCTION__ et al.
	* c-semantics.c (prune_unused_decls): Remove.
	(finish_stmt_tree): Don't call prune_unused_decls.
	(genrtl_decl_stmt): Don't prune unused decls here.

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

	* dwarf2out.c (mem_loc_descriptor): If a SYMBOL_REF is in the
	constant pool, use the pool's SYMBOL_REF instead.

	* config/v850/v850.h (STRICT_ALIGNMENT): Always set, even for the
	v850e.

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

	* c-convert.c (convert): When converting to a BOOLEAN_TYPE, avoid
	passing nested NOP_EXPRs to fold.

Mon Apr 23 14:32:12 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* reg-stack.c (emit_swap_insn): Do not get pass CALL_INSNs.

2001-04-22  Mark Mitchell  <mark@codesourcery.com>

	* loop.c (loop_delete_insns): Add prototype.

2001-04-23  Phil Edwards  <pme@sources.redhat.com>

	* configure.in:  Remove ENABLE_STD_NAMESPACE.
	* config.in:  Regenerated.
	* configure:  Regenerated.

2001-04-22  Stan Shebs  <shebs@apple.com>

	* config.gcc (powerpc-*-darwin*): Move the flag in xm-darwin.h
	into xm_defines.
	* config/rs6000/xm-darwin.h: Remove file.

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

	* collect2.c (main): Use concat in lieu of xmalloc/sprintf.
	(write_c_file_stat): Likewise.

	* dbxout.c (dbxout_init): Likewise.

	* profile.c (output_func_start_profiler): Likewise.

2001-04-22  Philipp Thomas  <pthomas@suse.de>

	* ABOUT-GCC-NLS: Now that gettext 0.10.37 is out,
	require it instead of the CVS version.
	* cpperror.c (v_message): Put a blank before the macro
	body to not confuse exgettext.

2001-04-21  Mark Mitchell  <mark@codesourcery.com>

	* flow.c (proagate_one_insn): Remove useless assignment.
	* jump.c (delete_insn): Tidy.
	* loop.c (try_copy_prop): When deleting an instruction with a
	REG_RETVAL note, delete the entire libcall sequence.
	(loop_delete_insns): New function.
	* unroll.c (initial_reg_note_copy): Copy INSN_LIST notes, even if
	we're not substituting into them yet.

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

	* config/h8300/h8300.c (general_operand_src): Fix a comment typo.

	* config/sparc/sparc.c (sparc_flat_eligible_for_epilogue_delay):
	Fix a comment typo.
	* config/i960/i960.c (signed_arith_operand): Likewise.

	* calls.c (expand_call): Fix a comment typo.

2001-04-20  Zack Weinberg  <zackw@stanford.edu>

	* configure.in: Probe for times, clock, struct tms, and clock_t.
	* configure, config.in: Regenerate.
	* timevar.c: Replace ifdef forest in get_time with (relatively)
	straightforward series of checks based on autoconf's probes.

Fri Apr 20 12:24:50 2001  Jeffrey A Law  (law@cygnus.com)

	* config/pa/som.h (NM_FLAGS): Define.

2001-04-20  Bernd Schmidt  <bernds@redhat.com>

	* ia64.h (MD_SCHED_REORDER, MD_SCHED_REORDER2): Pass CLOCK to called
	function.
	* ia64-protos.h (ia64_sched_reorder): Additional arg for clock.
	* ia64.c (nop_cycles_until): New function.
	(prev_cycle, prev_first, last_issued): New static variables.
	(ia64_sched_reorder): Additional arg for clock.
	On final scheduling pass, emit extra NOPs as needed.
	Set prev_first and prev_cycle.
	(ia64_sched_reorder2): Pass clock arg down to ia64_sched_reorder.
	(ia64_variable_issue): Set last_issued.

2001-04-20  Alexandre Oliva  <aoliva@redhat.com>

	* config/i386/i386.c (ix86_expand_int_movcc,
	ix86_expand_strlensi_unroll_1): Sign-extend CONST_INTs.

2001-04-20  Geoff Keating  <geoffk@redhat.com>

	* config/rs6000/rs6000.md (ctrsi_internal1, ctrsi_internal2,
	ctrsi_internal3, ctrsi_internal4, ctrsi_internal5,
	ctrsi_internal6, ctrdi_internal1, ctrdi_internal2,
	ctrdi_internal3, ctrdi_internal4, ctrdi_internal5,
	ctrdi_internal6): In the short-branch case, this insn is only 4
	bytes long.  Reported by Reza Yazdani <reza@apple.com>.

2001-04-20  Jakub Jelinek  <jakub@redhat.com>

	* reg-stack.c (check_asm_stack_operands): Issue error if "=t" resp.
	"=u" is used together with "st" resp. "st(1)" clobber.

2001-04-20  Jakub Jelinek  <jakub@redhat.com>

	* gcse.c (gcse_main): Fix comment typo.
	(delete_null_pointer_check): Likewise.
	(hash_scan_set): Don't consider sets with REG_EQUIV MEM notes.
	* cse.c (cse_insn): Likewise.
	* function.c (fixup_var_refs_insns_with_hash): The sequence is
	toplevel.

2001-04-19  Zack Weinberg  <zackw@stanford.edu>

	* toplev.c: Excise all code for the undocumented -dm option.
	(float_signal): Call signal just once, unconditionally.

2001-04-19  Geoff Keating  <geoffk@redhat.com>

	* fold-const.c (fold): Use first_rtl_op rather than
	TREE_CODE_LENGTH when looping over parameters of a tree.
	Correct strange grouping in test for evaluated SAVE_EXPR.

Thu Apr 19 19:15:26 2001  Jeffrey A Law  (law@cygnus.com)

	* config/pa/pa-linux.h (CPLUSPLUS_CPP_SPEC): Undefine.
	* config/pa/pa.h (CPLUSPLuS_CPP_SPEC): Define.

	* config/pa/som.h (ASM_OUTPUT_FUNCTION_PREFIX): Truncate subspace
	name at 32 total characters.
	(ASM_OUTPUT_SECTION_NAME): Similarly.  Also, only support placing
	functions in named sections -- data items can still go into unique
	sections, but they have normal names (ie $LIT$ and $DATA$).

	* config/pa/som.h (SUPPORTS_INIT_PRIORITY): SOM does not support
	INIT_PRIORITY.

2001-04-19 DJ Delorie  <dj@redhat.com>

	* config/alpha/vms.h: Change OBJECT_SUFFIX and EXECUTABLE_SUFFIX
	to TARGET_OBJECT_SUFFIX and TARGET_EXECUTABLE_SUFFIX.
	* config/i386/cygwin.h: Likewise.
	* config/i386/mingw32.h: Likewise.
	* config/vax/vms.h: Likewise.
	* config/i386/djgpp.h: Remove NO_AUTO_EXE_SUFFIX.

	* config/alpha/xm-vms.h: Change OBJECT_SUFFIX and EXECUTABLE_SUFFIX
	to HOST_OBJECT_SUFFIX and HOST_EXECUTABLE_SUFFIX.
	* config/i386/xm-cygwin.h: Likewise.
	* config/i386/xm-djgpp.h: Likewise.
	* config/i386/xm-mingw32.h: Likewise.
	* config/vax/xm-vms.h: Likewise.

	* mkdeps.c (deps_add_default_target): Use TARGET_OBJECT_SUFFIX
	instead of OBJECT_SUFFIX.
	* collect2.c (find_a_file): Look for files matching the extension
	HOST_EXECUTABLE_SUFFIX instead of EXECUTABLE_SUFFIX.
	* gcc.c (DEFAULT_SWITCH_CURTAILS_COMPILATION): Depend on
	TARGET_EXECUTABLE_SUFFIX.
	(find_a_file): Use HOST_EXECUTABLE_SUFFIX.
	(make_relative_prefix): Likewise.
	(convert_filename): Use TARGET_ suffixes throughout.  Remove
	NO_AUTO_EXE_SUFFIX.
	(process_command): Likewise.
	(do_spec_1): Likewise.
	* java/lang.c (init_parse): Likewise.

	* gcc.texi : Document four new options matching the pattern
	(HOST|TARGET)_(OBJECT|EXECUTABLE)_SUFFIX.  Remove documentation
	for deleted macros OBJECT_SUFFIX and EXECUTABLE_SUFFIX.  Remove
	documentation for NO_AUTO_EXE_SUFFIX.

2001-04-19  Mark Mitchell  <mark@codesourcery.com>

	* toplev.h (struct lang_hooks): Allow decode_option to indicate
	that language-independent processing should not be done.
	* toplev.c (main): Adjust accordingly.

	* rtl.texi (jump_insn): Expand on JUMP_LABEL documentation.
	* loop.c (load_mems): Handle a NULL JUMP_LABEL for a JUMP_INSN.

	* mips.md (reload_outputdi): Require that operand0 be a
	general_operand.

2001-04-19  Jakub Jelinek  <jakub@redhat.com>

	* invoke.texi (-Wshadow): Clarify.

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

	* loop.c (load_mems): Examine all the instructions in the loop
	before concluding that all jumps branch to the first instruction
	after the loop.

Wed Apr 18 20:32:03 2001  Christopher Faylor <cgf@cygnus.com>

	* config/i386/xm-cygwin.h (CPP_SPEC): Fix typo.

2001-04-18  Jakub Jelinek  <jakub@redhat.com>

	* cpp.texi (-Wwhite-space): Remove.
	(-Wall): -Wall does not imply -Wwhite-space.

2001-04-17  Zack Weinberg  <zackw@stanford.edu>

	* dbxout.c (dbxout_init): If DBX_OUTPUT_GCC_MARKER is defined,
	use it instead of blindly generating a .stabs.
	* xcoffout.h: Define DBX_OUTPUT_GCC_MARKER so we put the type
	in the right place.
	* xcoffout.c: Don't bother defining default for N_CATCH.
	(UNKNOWN_STAB): Use internal_error.
	(stab_to_sclass): Remove now-unnecessary aborts.
	Remove #if 0'ed case N_BROWS.  Add #ifdef N_OPT block.

Tue Apr 17 21:41:11 2001  Jeffrey A Law  (law@cygnus.com)

	* jump.c (mark_all_labels): Canonicalize the tail recursion
	label attached to CALL_PLACEHOLDER insns.

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

	* output.h (dump_flow_info, free_basic_block_vars,
	which_alternative): Delete redundant prototypes.

	* rtl.h (bss_section): Likewise.

2001-04-17  Loren J. Rittle  <ljrittle@acm.org>

	* dbxout.c (N_OPT): Define if not available from <stab.h>

2001-04-17  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* vax.h (PROMOTE_PROTOTYPES): Define for compatibility with system
	libraries and native K&R compilers.

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

	* c-typeck.c (convert_arguments): Don't check for width changes
	with -Wtraditional.

	* invoke.texi (-Wtraditional): Update documentation.

2001-04-16  Zack Weinberg  <zackw@stanford.edu>

	* toplev.c (output_lang_identify): Delete.
	(compile_file): Don't call ASM_IDENTIFY_GCC or ASM_IDENTIFY_LANGUAGE.
	Don't generate gcc2_compiled. label.  Don't emit a nop if profiling.
	If IDENT_ASM_OP is defined, emit an .ident "GCC (GNU) <version>"
	after calling ASM_FILE_END.

	* dbxout.c (dbxout_init): Don't call ASM_IDENTIFY_GCC_AFTER_SOURCE.
	Instead, unconditionally emit an N_OPT stab with string equal
	to STABS_GCC_MARKER, which defaults to "gcc2_compiled."

	* defaults.h: Don't provide default for ASM_IDENTIFY_LANGUAGE.

	* config/dbxelf.h, config/freebsd.h, config/nextstep.h,
	config/psos.h, config/ptx4.h, config/1750a/1750a.h,
	config/alpha/alpha.h, config/alpha/elf.h, config/arc/arc.h,
	config/arm/aof.h, config/arm/coff.h, config/arm/elf.h,
	config/arm/linux-elf.h, config/avr/avr.h, config/d30v/d30v.h,
	config/dsp16xx/dsp16xx.h, config/h8300/h8300.h,
	config/i370/i370.h, config/i386/beos-elf.h,
	config/i386/osf1elf.h, config/i386/osfrose.h,
	config/ia64/sysv4.h, config/m68k/3b1.h, config/m68k/auxgas.h,
	config/m68k/crds.h, config/m68k/hp320.h, config/m68k/m68kv4.h,
	config/m68k/mot3300.h, config/m68k/news.h, config/m68k/sgs.h,
	config/m68k/tower-as.h, config/mcore/mcore-elf.h,
	config/mips/iris6.h, config/mips/osfrose.h,
	config/mips/sni-svr4.h, config/pa/som.h, config/pdp11/pdp11.h,
	config/sparc/sp64-elf.h:
	Delete definitions of any or all of: ASM_IDENTIFY_GCC,
	ASM_IDENTIFY_GCC_AFTER_SOURCE, and ASM_IDENTIFY_LANGUAGE.

	* config/elfos.h, config/freebsd.h, config/linux.h,
	config/alpha/elf.h, config/arm/linux-elf.h, config/i386/i386elf.h,
	config/i386/ptx4-i.h, config/mips/gnu.h, config/mips/linux.h,
	config/sparc/linux.h, config/sparc/linux64.h: Delete definitions
	of ASM_FILE_START which merely emit a .version directive.  Delete
	definitions of ASM_FILE_END which merely emit an .ident directive.

	* config/avr/avr.h, config/vax/vax.h: Delete definition of
	ASM_IDENTIFY_GCC and move part of its logic into
	ASM_FILE_START.

	* config/i386/att.h, config/i386/gas.h, config/i386/linux.h,
	config/sparc/linux-aout.h: Don't emit .version directive in
	ASM_FILE_START.

	* config/i386/dgux.c, config/m88k/m88k.c, config/sh/sh.c
	(output_file_start): Correct comment.

	* config/i386/osfrose.h: Don't emit trailing .ident directive.
	* config/m68k/mot3300.h: Override STABS_GCC_MARKER to "gcc2_compiled%"
	to match gdb.
	* config/pa/lib2funcs.asm: Delete gcc_compiled. label.
	* config/rs6000/aix.h: Correct comment.

	* config/i386/i386afe.h: Delete.
	* config.gcc: Remove references to i386afe.h.

	* tm.texi: Delete documentation of ASM_IDENTIFY_GCC.  The
	other macros deleted by this patch were undocumented.

Mon Apr 16 08:03:48 2001  Jeffrey A Law  (law@cygnus.com)

	* pa.md (reload_outdi): Operand 0 must be a non hard register.

	* pa.c (secondary_reload_class): SAR<->FP copies require a
	secondary register.

	* install.texi (mips-mips-bsd): Update list of functions
	required to include memmove.
	* tm.texi (TARGET_MEM_FUNCTIONS): Update list of implicitly
	used functions to include memmove.

2001-04-15  Toon Moene  <toon@moene.indiv.nluug.nl>

	* i386.md (sqrtdf2): SFmode should be DFmode.

2001-04-15  Alexandre Oliva  <aoliva@redhat.com>

	* gcse.c (compute_ld_motion_mems): ASM outputs aren't moveable.
	(find_moveable_store): Likewise.

2001-04-15  Jim Wilson  <wilson@redhat.com>

	* function.c (expand_function_end): Handle PARALLEL real_decl_rtl.

Sat Apr 14 16:24:19 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (ashldi3_1_rex64): Add 'J' to the constraints
	(ashrdi3_1_rex64): Change 'n' constraint to 'J'.

2001-04-14  Alexandre Oliva  <aoliva@redhat.com>

	* config/mn10300/mn10300.md (cmpsi): Tell reload to disregard the
	first alternative.

2001-04-14  Alan Modra  <amodra@one.net.au>

	* pa.c (force_mode): New function.
	(emit_move_sequence): Use it instead of generating new rtx_REGs.

2001-04-13  Jim Wilson  <wilson@redhat.com>

	* config/ia64/ia64.c (ia64_expand_epilogue): Emit alloc if sibcall_p.
	(first_instruction): New static variable.
	(rtx_needs_barrier): Return 1 for alloc.
	(init_insn_group_barriers): Set first_instruction.
	(rws_sum): Delete duplicate definition.
	(group_barrier_needed_p): Return 0 when first_instruction true.
	(safe_group_barrier_needed_p): Save and restore first_instruction
	around group_barrier_needed_p call.

Fri Apr 13 21:40:28 2001  Loren J. Rittle  <ljrittle@acm.org>

	* expr.h (enum libfunc_index): Add LTI_memmove.
	(memmove_libfunc): Define macro.
	* optabs.c (init_optabs): Initialize memmove_libfunc.
	* expr.c (expand_assignment): Use memmove_libfunc instead of
	memcpy_libfunc.

2001-04-13  Alan Modra  <alan@linuxcare.com.au>

	* pa.h (GO_IF_LEGITIMATE_ADDRESS): Disallow PIC LO_SUM
	fp mode addresses.

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

	* Makefile.in (reg-stack.o): Depend on reload.h.
	(insn-attrtab.o): Depend on flags.h.

	* genattrtab (main): Include flags.h in insn-attrtab.c.

	* reg-stack.c: Include reload.h.

	* sparc.h (flag_pic): Delete redundant declaration.

	* output.h (flag_pic): Likewise.

	* tree.h (pedantic): Likewise.

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

	* Makefile.in (toplev.o, jump.o, regmove.o): Depend on reload.h

	* jump.c, regmove.c, toplev.c: Include reload.h.

	* reload.h (reload_cse_regs): Declare.

	* rtl.h (find_equiv_reg, operands_match_p, safe_from_earlyclobber,
	reload_cse_regs, init_reload, mark_home_live, reload,
	init_caller_save): Delete redundant prototypes.

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

	* Makefile.in (ssa.o, regclass.o): Depend on $(EXPR_H).

	* regclass.c, ssa.c: Include expr.h.

	* rtl.h (memory_address, force_reg, emit_queue, emit_move_insn,
	gen_move_insn): Delete redundant declarations.

2001-04-13  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* Makefile.in (CFLAGS, BOOT_CFLAGS): Partly revert 2000-10-27 patch.
	(stage1_build): Instead pass down STAGE1_CFLAGS here. Pass down
	MAKEINFO and MAKEINFOFLAGS too.
	(stage4_build): Correctly order -B flags.

2001-04-13  Alan Modra  <amodra@one.net.au>

	* pa.c (hppa_init_pic_save): Set rtx_unchanging for
	PIC_OFFSET_TABLE_SAVE_RTX.
	(zdepi_cint_p): Describe zdepi insn.
	Formatting and white space fixes throughout file.

	* pa.c (uint32_operand): Don't use long constant >= 2^32.
	(emit_move_sequence): Use HOST_WIDE_INT constants.  Don't worry
	about 32->64 bit sign extension if 32 bit HOST_WIDE_INTs.
	(compute_movstrsi_length): Make `align' unsigned to avoid warning.
	(output_64bit_and): Use plain `int's for shift counts.
	(output_64bit_ior): Likewise.
	(function_arg_partial_nregs): Use unsigned vars to avoid warnings.
	* pa.h (CONST_OK_FOR_LETTER_P): Use HOST_WIDE_INT constants for case
	`N', and simplify.

	* pa-hpux10.h (NEW_HP_ASSEMBLER): Define to 1.
	* pa-hpux11.h (NEW_HP_ASSEMBLER): Likewise.
	* pa.h (LEGITIMATE_CONSTANT_P) Collapse two defines depending on
	NEW_HP_ASSEMBLER into one.  Kill warnings.

	* pa-gas.h: Delete file.
	* config.gcc: Match `parisc' as well as `hppa' for cpu_type=pa.
	Add new targets hppa*64*-*-linux* and parisc*64*-*-linux*.  Update
	hppa*-*-linux*.  For all pa targets, remove pa/gas.h from tm_file,
	instead setting MASK_GAS | MASK_JUMP_IN_DELAY in target_cpu_default2.

	* config/pa/mill32.S: New file.
	* config/pa/mill64.S: New file.
	* config/pa/t-linux (LIBGCC1, CROSS_LIBGCC1, LIB1ASMFUNCS,
	LIB1ASMSRC, CRTSTUFF_T_CFLAGS_S, TARGET_LIBGCC2_CFLAGS): Define.
	* config/pa/t-linux64: New file.
	* config/pa/t-pa64 (CROSS_LIBGCC1): Change to libgcc1-asm.a
	(LIB1ASMFUNCS, LIB1ASMSRC): Define.
	(TARGET_LIBGCC2_CFLAGS): Add -Dpa64=1 -DELF=1.

	* elfos.h (SELECT_SECTION): Undef before defining.
	* pa-linux.h (LINUX_DEFAULT_ELF, PTRDIFF_TYPE, CPP_SPEC): Remove.
	(LIB_SPEC): Remove -lmilli.
	(DBX_REGISTER_NUMBER): Remove.
	(PREFERRED_DEBUGGING_TYPE, DWARF2_ASM_LINE_DEBUG_INFO,
	(DWARF2_UNWIND_INFO, ASM_SPEC, LINK_SPEC, FUNCTION_OK_FOR_SIBCALL,
	NO_PROFILE_COUNTERS, SELECT_RTX_SECTION, INCOMING_RETURN_ADDR_RTX,
	DWARF_FRAME_RETURN_COLUMN, STRING_ASM_OP, TEXT_SECTION_ASM_OP,
	DATA_SECTION_ASM_OP, BSS_SECTION_ASM_OP, ASM_FILE_START,
	ASM_OUTPUT_DEF, ASM_OUTPUT_ADDR_VEC_ELT, ASM_OUTPUT_ADDR_DIFF_ELT,
	ASM_OUTPUT_LABEL, ASM_GLOBALIZE_LABEL, ASM_DECLARE_FUNCTION_NAME,
	TARGET_GAS): Define.
	* pa.c (output_arg_descriptor): Disable for TARGET_ELF32.
	(function_arg): If TARGET_ELF32, pass fp args in both general and fp
	regs if we don't have a prototype.
	* pa.md (canonicalize_funcptr_for_compare): Not for TARGET_ELF32.
	* pa.h (TARGET_ELF32): Default to 0 if undefined.
	(EH_RETURN_DATA_REGNO, EH_RETURN_STACKADJ_RTX,
	EH_RETURN_HANDLER_RTX): Define.
	* pa32-regs.h (DBX_REGISTER_NUMBER): Remove unnecessary test.
	(DWARF_FRAME_REGNUM): Define.
	* pa64-regs.h (DWARF_FRAME_REGNUM): Define.
	* pa32-linux.h: New file.
	* pa64-linux.h: New file.

	* pa-64.h (WCHAR_TYPE, WCHAR_TYPE_SIZE): Define.
	(ASM_OUTPUT_DOUBLE_INT): Format, protect macro with do..while.
	(LINK_SPEC, LIB_SPEC, MD_EXEC_PREFIX, MD_STARTFILE_PREFIX,
	NEW_HP_ASSEMBLER, ASM_FILE_START, OBJECT_FORMAT_ELF,
	DWARF2_DEBUGGING_INFO, PREFERRED_DEBUGGING_FORMAT,
	DWARF2_ASM_LINE_DEBUG_INFO, USE_CONST_SECTION, CONST_SECTION_ASM_OP,
	CTORS_SECTION_ASM_OP, DTORS_SECTION_ASM_OP, INIT_SECTION_ASM_OP,
	FINI_SECTION_ASM_OP, EXTRA_SECTIONS, EXTRA_SECTION_FUNCTIONS,
	READONLY_DATA_SECTION, CONST_SECTION_FUNCTION, CTORS_SECTION_FUNCTION,
	DTORS_SECTION_FUNCTION, ASM_OUTPUT_SECTION_NAME, MAKE_DECL_ONE_ONLY,
	UNIQUE_SECTION_P, UNIQUE_SECTION, INT_ASM_OP, ASM_OUTPUT_CONSTRUCTOR,
	ASM_OUTPUT_DESTRUCTOR, TYPE_ASM_OP, SIZE_ASM_OP, ASM_WEAKEN_LABEL,
	TYPE_OPERAND_FMT, ASM_DECLARE_RESULT): Move to..
	* pa64-hpux.h: New file.
	(ASM_FILE_START): Correct typo.
	(PREFERRED_DEBUGGING_FORMAT): Rename to PREFERRED_DEBUGGING_TYPE.
	* config.gcc: Modify for above.

Fri Apr 13 00:09:22 EDT 2001  John Wehle  (john@feith.com)

	* jump.c (jump_optimize_1): Don't delete dead stores here.
	* toplev.c (rest_of_compilation): Call delete_trivially_dead_insns
	prior to running jump optimize before cse2.

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

	* Makefile.in (regmove.o): Depend on except.h.
	* regmove.c: Include it.

2001-04-12  Stan Shebs  <shebs@apple.com>

	* objc/objc-act.c: Remove all code ifdefed with the never-used
	macro OBJC_INT_SELECTORS.
	* config/d30v/d30v.h: Remove commented-out ref to OBJC_INT_SELECTORS.
	* tm.texi: Remove doc for OBJC_INT_SELECTORS.

Thu Apr 12 18:13:37 2001  Rodney Brown  <RodneyBrown@mynd.com>

	* config/pa/quadlib.c: Add prototypes.

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

	* bitmap.h (debug_bitmap): Delete redundant prototype.

	* rtl.h (get_frame_size): Likewise.

2001-04-12  Jim Wilson  <wilson@redhat.com>

	* config/ia64/ia64.md (extendsfdf2, extendsftf2, extenddftf2): Simplify
	to just emit an fnorm.

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

	* c-common.h (truthvalue_conversion, type_for_mode,
	type_for_size): Delete redundant declarations.

	* c-lex.h (is_class_name): Likewise.

	* c-tree.h (pedantic, convert, getdecls, gettags,
	global_bindings_p, init_decl_processing, insert_block,
	maybe_build_cleanup, poplevel, print_lang_decl,
	print_lang_identifier, print_lang_type, pushdecl, pushlevel,
	set_block, incomplete_type_error, build_function_call,
	lvalue_or_else, mark_addressable): Likewise.

	* expr.h (expand_tree_builtin): Likewise.

2001-04-12  Mark Mitchell  <mark@codesourcery.com>

	* invoke.texi: Document --param max-gcse-memory.

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

	* configure.in (errno): Check for declaration.
	* configure, config.in: Regenerated.

	* system.h (errno): Only declare if not already done.

2001-04-12  Alexandre Oliva  <aoliva@redhat.com>

	* recog.c (general_operand, immediate_operand,
	nonmemory_operand): Require CONST_INTs to be sign-extended
	values for their modes.

2001-04-12  Alexandre Oliva  <aoliva@redhat.com>

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

2001-04-12  kaz Kojima  <kkojima@rr.iij4u.or.jp>

	* sh.md (builtin_setjmp_receiver): New expander.

2001-04-12  David Edelsohn  <dje@watson.ibm.com>

	* config/rs6000/rs6000.c (rs6000_emit_move): Do not
	special-case HOST_BITS_PER_WIDE_INT != 32.  Use same criteria
	for generating CONST_INT and CONST_DOUBLE.

2001-04-12  Alexandre Oliva  <aoliva@redhat.com>

	* config/rs6000/rs6000.c (logical_operand): CONST_INTs are
	already sign-extended.
	(rs6000_emit_prologue): Make register iterator signed.
	(rs6000_emit_epilogue): Likewise.
	* config/rs6000/rs6000.md (addsi3, adddi3): Sign-extend high
	and low.
	(movsf split, movdf split): Sign-extend CONST_INTs.
	(movdi splits): Likewise.

2001-04-12  Kelley Cook <kelley.cook@home.com>

	* config-lang.in (lang_dirs): Add in zlib.

2001-04-11  Alexandre Oliva  <aoliva@redhat.com>

	* config/i386/i386.md: Apply trunc_int_for_mode() to GEN_INT
	operands that make it to RTL.

2001-04-11  Stan Shebs  <shebs@apple.com>

	Add Darwin (Mac OS X kernel) native support.
	* config.gcc (powerpc-*-darwin*): Add native bits.
	* config/darwin.c: New file, generic Darwin support functions.
	* config/darwin.h: New file, generic Darwin definitions.
	* config/darwin-protos.h: New file, generic Darwin prototypes.
	* rs6000/darwin.h: New file, Darwin for PowerPC.
	* rs6000/t-darwin: New file, Darwin makefile fragment.
	* rs6000/rs6000.h (OBJECT_MACHO): New macro.
	(TARGET_MACHO): Ditto.
	(rs6000_abi): Add ABI_DARWIN.
	(RS6000_REG_SAVE): Add ABI_DARWIN case.
	(RS6000_SAVE_AREA): Ditto.
	(FP_ARG_MAX_REG): Ditto.
	(RETURN_ADDRESS_OFFSET): Ditto.
	* rs6000/rs6000.c (rs6000_legitimize_address): Add TARGET_MACHO
	cases.
	(rs6000_emit_move): Add ABI_DARWIN cases.
	(print_operand): Ditto.
	(first_reg_to_save): Ditto.
	(rs6000_stack_info): Ditto, also align stack by 16 instead of 8.
	(debug_stack_info): Ditto.
	(rs6000_emit_prologue): Ditto.
	(rs6000_emit_epilogue): Ditto.
	(output_profiler_hook): Ditto.
	(output_function_profiler): Ditto.
	(rs6000_add_gc_roots): Call machopic_add_gc_roots if TARGET_MACHO.
	(output_mi_thunk): Add TARGET_MACHO case.
	(add_compiler_stub): Ditto.
	(output_compiler_stub): Ditto.
	(no_previous_def): Ditto.
	(output_call): Ditto.
	(machopic_output_stub): Ditto.
	(rs6000_machopic_legitimize_pic_address): Ditto.
	(toc_section): Ditto.
	* rs6000/rs6000.md (addsi3_high): New TARGET_MACHO pattern.
	(macho_high): Ditto.
	(macho_low): Ditto.
	(movsi_low): Ditto.
	(load_macho_picbase): Ditto.
	(call): Add TARGET_MACHO case to modify function.
	(call_value): Ditto.
	(call_nonlocal_sysv): Add ABI_DARWIN case.
	(call_value_nonlocal_sysv): Ditto.
	* rs6000/rs6000-protos.h (rs6000_machopic_legitimize_pic_address):
	Add prototype.
	(machopic_output_stub): Ditto.
	* ginclude/stddef.h: Test _BSD_WCHAR_T_DEFINED_.

2001-04-11  Mark Mitchell  <mark@codesourcery.com>

	* dwarf2out.c (modified_type_die): Don't create new types here.
	* tree.h (get_qualified_type): New function.
	(build_qualified_type): Adjust comment.
	* tree.c (get_qualified_type): New function.
	(build_qualified_type): Use it.

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

	* cpp.texi (-Wtraditional): Update description.

	* invoke.texi (-Wtraditional): Likewise.

2001-04-11  Jim Wilson  <wilson@redhat.com>

	* config/ia64/ia64.h (FUNCTION_ARG_BOUNDARY): Return 128 if argument
	requires more than 64 bits of alignment.

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

	* cpplib.c (do_line): Sanity check iff enable checking.

2001-04-11  Richard Henderson  <rth@redhat.com>

	* Makefile.in (insn-recog.o): Depend on toplev.h.
	(insn-emit.o, doloop.o): Likewise.
	* genrecog.c, genemit.c: Include toplev.h in generated file.
	* doloop.c: Include toplev.h.

2001-04-11  Mark Mitchell  <mark@codesourcery.com>

	* Makefile.in (gcse.o): Depend on params.h.
	* gcse.c: Include params.h.
	(gcse_main): Don't do GCSE if doing so will take inordinate
	amounts of memory.
	* params.def (PARAM_MAX_GCSE_MEMORY): New  parameter.
	* params.h (MAX_GCSE_MEMORY): New macro.

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

	* Makefile.in (insn-output.o): Depend on $(EXPR_H).

	* genoutput.c (output_prologue): Include expr.h in insn-output.c.

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

	* output.h (assemble_real): Declare if REAL_VALUE_TYPE is defined.

	* real.h (ereal_atof, real_value_truncate, target_isnan,
	target_isinf, target_negative, assemble_real, debug_real): Delete
	redundant prototypes.

	* Makefile.in (ifcvt.o): Depend on toplev.h.

	* c-semantics.c: Include expr.h.

	* ifcvt.c: Include toplev.h.

	* expr.h (rtx_equal_p): Delete prototype.

	* rtl.h (exact_log2_wide, floor_log2_wide, permalloc,
	protect_from_queue, gen_jump, gen_beq, gen_bge, gen_ble,
	eliminate_constant_term, expand_complex_abs, find_single_use,
	make_tree, init_expr_once, init_optabs, supports_one_only):
	Likewise.

	* tree.h (exact_log2_wide, floor_log2_wide, expand_null_return,
	rest_of_type_compilation, emit_queue, do_pending_stack_adjust,
	expand_assignment, store_expr, emit_line_note_after,
	emit_line_note_force, split_specs_attrs, label_rtx): Likewise.

	* toplev.h (exact_log2_wide, floor_log2_wide): Add prototype.

	* sparc-protos.h: Delete redundant prototypes.

2001-04-11  Vladimir Makarov  <vmakarov@toke.toronto.redhat.com>

	* reload.c (push_reload): Add condition missed in SUBREG byte
	offset patch.

Wed Apr  4 00:28:23 2001  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* sparc/sol2-sld-64.h (STARTFILE_SPEC): Added missing blank.

Wed Apr 11 14:06:10 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (floatsisf_sse): Fix output template
	* i386.c (ix86_expand_fp_movcc)

	* reg-stack.c (emit_pop_insn): Handle complex modes.
	(move_for_stack_reg): Emit proper move mode.
	(subst_stack_regs_pat): Handle complex modes.

2001-04-11  Jakub Jelinek  <jakub@redhat.com>

	* cpplex.c (_cpp_lex_token): Only warn if -Wcomment.

2001-04-10  Richard Henderson  <rth@redhat.com>

	* libgcc2.h (__terminate_func_ptr): Remove typedef.
	(__pure_virtual, __terminate, __terminate_set_func,
	__default_terminate, __throw_type_match, __empty,
	__get_eh_context, __get_eh_info, __get_dynamic_handler_chain,
	__eh_rtime_match, __unwinding_cleanup, __rethrow,
	__sjthrow, __sjpopnthrow, __eh_alloc, __eh_free):
	Remove prototypes of deleted functions.

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

	* c-typeck.c (convert_arguments): -Wtraditional now activates
	-Wconversion warnings, except for changes in signed-ness.
	Detect complex<->int & int<->complex conversions as well.

	* invoke.texi (-Wtraditional): Document it.

Tue Apr 10 17:45:50 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* gcse.c (update_ld_motion_stores): Don't use variable I for an insn.
	* flow.c (set_block_for_new_insns): Remove needless cast and
	properly check for unset block number.

2001-04-10  Andrew MacLeod  <amacleod@redhat.com>

	* function.c (purge_single_hard_subreg_set): Only check REGNO if
	the subreg was a hard register. Pseudos are left as subregs.

2001-04-09  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* Makefile.in (LIB2FUNCS_STATIC_EXTRA): New macro.
	(LIB2ADD_ST): New macro, pass it to mklibgcc.
	* mklibgcc.in (libgcc2_st_objs): New variable, set it from LIB2ADD_ST.
	(libgcc_st_objs): New, set from libgcc2_st_objs. Use it for libgcc.a.
	* config/rs6000/t-ppccomm (LIB2FUNCS_STATIC_EXTRA): New macro.

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

	* config/i386/i386.md: "TARGET_64BIT && TARGET_64BIT": Removed one.

2001-04-09  Andrew MacLeod  <amacleod@redhat.com>

	* output.h (set_block_num): Missed it earlier, remove deprecated
	prototype.

2001-04-09  Andrew MacLeod  <amacleod@redhat.com>

	* gcse.c (oprs_unchanged_p): Pass basic_block to load_killed_in_block_p.
	(load_killed_in_block_p): Change bb parameter from int to basic_block.
	(oprs_not_set_p): Pass basic_blocks instead of ints as parameters.
	(handle_rd_kill_set): Change bb parameter from int to basic_block.
	(compute_kill_rd): Pass basic_blocks instead of ints as parameters.
	(expr_killed_p): Change bb parameter from int to basic_block, pass
	basic_blocks instead of ints as parameters.
	(compute_ae_kill): Pass basic_blocks instead of ints as parameters.
	(expr_reaches_here_p_work, expr_reaches_here_p): Change bb parameter
	from int to basic_block, pass basic_blocks instead of ints as parms.
	(pre_expr_reaches_here_p_work, pre_expr_reaches_here_p): Change bb
	parameter from int to basic_block, pass basic_blocks instead of ints.
	(process_insert_insn): Pass basic_blocks instead of ints as parameters.
	(insert_insn_end_bb): Change bb parameter from int to basic_block,
	pass basic_blocks instead of ints.
	(pre_edge_insert, pre_insert_copy_insn, pre_insert_copies): Pass
	basic_blocks instead of ints as parameters.
	(pre_delete): Pass basic_blocks instead of ints as parameters.
	(hoist_expr_reaches_here_p): Change bb parameter from int to
	basic_block, pass basic_blocks instead of ints.
	(hoist_code): Pass basic_blocks instead of ints as parameters.
	(reg_set_info, store_ops_ok, store_killed_after, store_killed_before):
	Change bb parameter from int to basic_block.
	(build_store_vectors): Pass basic_blocks instead of ints as parameters.
	(insert_insn_start_bb): Change bb parameter from int to basic_block,
	pass basic_blocks instead of ints.
	(insert_store): Pass basic_blocks instead of ints as parameters.
	(replace_store_insn, delete_store): Change bb parameter from int to
	basic_block, pass basic_blocks instead of ints.
	(store_motion): Pass basic_blocks instead of ints as parameters.

2001-04-09  Andrew MacLeod  <amacleod@redhat.com>

	* basic-block.h (set_new_block_for_insns): New Prototype.
	(set_block_num): Delete prototype.
	* flow.c (set_block_num): Remove obsolete function.
	(set_block_for_new_insns): Set BB for single or multiple insns.
	* gcse.c (handle_avail_expr): Use set_block_for_new_insns.
	(process_insn_end_bb): Use set_block_for_new_insns or
	set_block_for_insn instead of set_block_num.
	(pre_insert_copy_insn): Use set_block_for_new_insns.
	(update_ld_motion_stores): Use set_block_for_new_insns.
	(insert_insn_start_bb): Use set_block_for_new_insns.
	(replace_store_insn): Use set_block_for_new_insns.

2001-04-09  Andrew MacLeod  <amacleod@redhat.com>
	    Jeff Law  <law@redhat.com>

	* alias.c (get_addr): Externalize.
	(canon_true_dependence): New function. Behaves like true_dependance
	except it already assumes a MEM has been canonicalized.
	* flags.h (flag_gcse_lm, flag_gcse_sm): New optimization flags.
	* gcse.c (struct ls_expr): Add load/store expressions structure.
	(modify_mem_list, canon_modify_mem_list): New variable.
	(gcse_main): Initialize & finalize alias analysis. Use enhanced
	load motion and store motion if requested.
	(alloc_gcse_mem): Allocate space for modify_mem_list array.
	(free_gcse_mem): Free the modify_mem_list array.
	(oprs_unchanged_p): Use load_killed_in_block_p.
	(gcse_mems_conflict_p, gcse_mem_operand): New variables.
	(mems_conflict_for_gcse_p): New function.  Don't kill loads
	with stores to themselves if its in the load/store expression list.
	(load_killed_in_block_p): New function.
	(canon_list_insert): New Function.
	(record_last_mem_set_info): Keep a list of all instructions which
	can modify memory for each basic block.
	(compute_hash_table, reset_opr_set_tables): Clear modify_mem_list.
	(oprs_not_set_p): Use load_killed_in_block_p.
	(mark_call, mark_set, mark_clobber): Use record_last_mem_set_info.
	(expr_killed_p): Use load_killed_in_block_p.
	(compute_transp): Do not pessimize memory references.
	(pre_edge_insert): Update stores for a load motion expression.
	(one_pre_gcse_pass): Check loads/stores for extra load motion.
	(ldst_entry): Find or create a ldst_expr structure.
	(free_ldst_entry): Free memory for an individual item.
	(free_ldst_mems): Free entire load/store expression list.
	(print_ldst_list): Print debug info.
	(find_rtx_in_ldst): Try to find an rtx expression in the ldst list.
	(enumerate_ldsts): Assign integer values to each entry in list.
	(first_ls_expr): First expression in the list.
	(next_ls_expr): Next expression in the list.
	(simple_mem): Check if expression qualifies for ld/st expression list.
	(invalidate_any_buried_refs): Remove from expression list if its
	used in some other way we don't understand.
	(compute_ld_motion_mems): Find all potential enhanced load motion
	expression.
	(trim_ld_motion_mems): Remove any expressions which are invalid.
	(update_ld_motion_stores): Copy store values to registers for loads
	which have been moved.
	(regvec, st_antloc, num_store): New global statics.
	(reg_set_info): Marks registers as set.
	(store_ops_ok): Verfies registers expressions are valid in a block.
	(find_moveable_store): Look for moveable stores in a pattern.
	(compute_store_table): Find stores in a function worth moving, maybe.
	(load_kills_store): Check dependence of a load and store.
	(find_loads): Find any loads in a pattern.
	(store_killed_in_insn): Check if a store is killed in an insn.
	(store_killed_after): Check is store killed after an insn in a block.
	(store_killed_before): Check is store killed before an insn in a block.
	(build_store_vectors): Generate the antic and avail vectors.
	(insert_insn_start_bb): Insert at the start of a BB, update BLOCK_HEAD.
	(insert_store): Add a store to an edge.
	(replace_store_insn): Replace a store with a SET insn.
	(delete_store): Delete a store insn.
	(free_store_memory): Free memory.
	(store_motion): Perform store motion.
	* invoke.texi: Add documentation for -fcse-lm and -fgcse-sm.
	* rtl.h (get_addr, canon_true_dependence): Add prototypes.
	* toplev.c (flag_gcse_lm, flag_gcse_sm): New Variables.
	(f_options): Add gcse-lm and gcse-sm.

Mon Apr  9 16:18:03 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.c (expand_fp_movcc): Fix condition reversal code.

	* i386.c (ix86_register_move_cost): Fix handling of reformating penalty
	* i386.h (INTEGER_CLASS_P, MAYBE_INTEGER_CLASS_P): New.
	(CLASS_MAX_NREGS): Use it.

	* i386.h (HARD_REGNO_NREGS): Handle properly TF and TCmodes on 64bit;
	handle properly complex values.
	(CLASS_MAX_NREGS): Likewise; update comment.

2001-04-05  Bernd Schmidt  <bernds@redhat.com>

	* ia64.c (ia64_flag_schedule_insns2): New variable.
	(ia64_override_options): Initialize it.  Clear
	flag_schedule_insns_after_reload.
	(ia64_reorg): Only do scheduling if ia64_flag_schedule_insns2.

Mon Apr  9 15:09:13 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (truncdfsf2_*): Add i387->int/sse reg alternatives;
	Do not require source to match destination anymore;
	Add abort to the nontrivial cases that should be handled by split.
	(fix_trunc?fdi): Add SSE case for x86_64.
	(floatdi?f): Likewise.
	(floatdi?f_sse): New.
	(fix_trunc?fdi_sse): New.

2001-04-09  Richard Sandiford   <rsandifo@redhat.com>

	* dwarfout.c (DEBUG_ARANGES_BEGIN_LABEL): New label.
	(DEBUG_ARANGES_END_LABEL): Ditto.
	(dwarfout_init): Generate length and version fields at the start
	of the .debug_aranges info.  Insert DEBUG_ARANGES_BEGIN_LABEL
	after the length field.
	(dwarfout_finish): Insert DEBUG_ARANGED_END_LABEL at the end of
	the .debug_aranges info.

Sun Apr  8 00:43:27 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.c (call, call_value): Make sure that resulting call_insn
	does have proper second operand.

Sun Apr  8 22:50:49 2001  Christopher Faylor <cgf@cygnus.com>

	* config/i386/xm-cygwin.h (GET_ENV_PATH_LIST): Eliminate obsolete
	function.  Remove include of sys/cygwin.h.

Sun Apr  8 22:20:27 2001  Christopher Faylor <cgf@cygnus.com>

	* config/i386/cygwin.h (STARTFILE_SPEC): search */lib/w32api by default.
	(CPP_SPEC): Always search */include/w32api for header files.
	(ASM_OUTPUT_SECTION_NAME): Avoid testing NULL DECL.
	(LINK_SPEC): Add "cyg" to the library search prefixes.

2001-04-08  Philip Blundell  <philb@gnu.org>

	* config/arm/arm.h (ASM_OUTPUT_LABELREF): Use asm_fprintf.

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

	* cpperror.c (print_location): Don't special case <stdin>.
	(_cpp_begin_message): Handle WARNING_SYSHDR the same as
	WARNING, but we don't check if we're in system headers.
	* cpplib.h (enum error_type): WARNING_SYSHDR: New.
	* cpplib.c (do_warning): Warn in system headers.

2001-04-07  Mumit Khan <khan@NanoTech.Wisc.EDU>

	* mbchar.c: Include config.h first.

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

	* config.gcc: Set default for xmake_file at top, not bottom.
	Change places that set xmake_file to "none" to set to the
	empty string instead, or remove them entirely if there is no
	default xmake_file for this cpu_type.  Remove references to
	deleted files.

	* config/x-lynx, config/convex/x-convex, config/elxsi/x-elxsi,
	config/i386/x-isc, config/i386/x-isc3, config/i386/x-ncr3000,
	config/i386/x-next, config/i386/x-sco, config/i386/x-sysv3,
	config/i386/x-vsta, config/i860/x-sysv4, config/m68k/x-amix,
	config/m68k/x-apollo68, config/m68k/x-ccur, config/m68k/x-crds,
	config/m68k/x-hp2bsd, config/m68k/x-mot3300, config/m68k/x-mot3300-gas,
	config/m68k/x-tower, config/m88k/x-sysv4, config/mips/x-dec-osf1,
	config/mips/x-sni-svr4, config/mips/x-ultrix, config/romp/x-mach,
	config/romp/x-romp, config/rs6000/x-beos, config/rs6000/x-lynx,
	config/rs6000/x-mach, config/rs6000/x-sysv4, config/sparc/x-sysv4:
	Delete.

	* config/a29k/x-unix, config/i386/x-aix, config/i386/x-osf1elf,
	config/i386/x-osfrose, config/m68k/x-dpx2, config/mips/x-iris3,
	config/mips/x-mips, config/mips/x-osfrose, config/mips/x-sony,
	config/mips/x-sysv, config/rs6000/x-aix31:
	Just set CLIB to -lld or -lmld, as appropriate.

	* config/arm/x-riscix, config/i370/x-oe, config/i386/x-dgux,
	config/i386/x-sco4, config/i386/x-sco5, config/m68k/x-hp320,
	config/m68k/x-hp320g, config/m68k/x-next, config/m88k/x-dgux,
	config/mips/x-iris, config/pa/x-pa:
	Just set (some of) FIXPROTO_DEFINES, STMP_FIXPROTO,
	OTHER_FIXINCLUDES_DIRS.

	* config/i386/x-djgpp: Don't set LN or LN_S.
	* config/m88k/x-dolph: Don't define __m88k__.
	* config/m88k/x-tekXD88: Don't set AR_FLAGS.
	* config/pa/x-pa-mpeix: Just set up quadlib.asm.
	* config/i860/fx2800.h: No need to #undef SVR4.

	38 x-host fragments remain, 2 x-cpu.

2001-04-07  Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>

	* c4x.h (HARD_REGNO_NREGS): HCmode mode uses 2 regs not 4.

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

	* cpplib.c (cpp_push_buffer): Give stdin buffers the name <stdin>.

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

	* configure.in: Add check for lstat.
	* configure, config.in: Regenerate.
	* cppinit.c (append_include_chain): Make empty path ".".
	* cpplib.c (do_line): Don't simplify #line paths.
	* cppfiles.c (remove_component_p): New function.
	(find_or_create_entry): Acknowledge stat () errors during
	path simplification.
	(handle_missing_header): Don't simplify paths.
	(_cpp_simplify_pathname): Don't simplify VMS paths.  Return
	the empty path untouched.  Don't leave a trailing '/'.

2001-04-06  Benjamin Kosnik  <bkoz@redhat.com>

	* cppdefault.c (GPLUSPLUS_BACKWARD_INCLUDE_DIR): Add.
	* Makefile.in (-DGPLUSPLUS_BACKWARD_INCLUDE_DIR): Add.

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

	* cppfiles.c (open_file): Fail directories silently, but
	with an errno of NOENT set.
	(read_include_file): Move the common exit code to the sole
	caller.  Return an int indicating success or failure.  Let
	open_file handle directories.
	(stack_include_file): If read_include_file fails,
	push a "null" buffer.

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

	* function.h (virtuals_instantiated): Declare.
	* function.c: (virtuals_instantiated): Make global.
	* calls.c (emit_library_call_value_1): Use
	virtual_outgoing_args_rtx only if it hasn't been instantiated.
	Otherwise, use the stack pointer directly.

Thu Apr  5 19:13:33 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.c (x86_initialize_trampoline): New global function.
	* i386.h (TRAMPOLINE_SIZE): Size is 23 for x86_64.
	(INITIALIZE_TRAMPOLINE): Move offline.
	* i386-protos.h (x86_initialize_trampoline): Declare.

Thu Apr  5 19:02:15 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (movdi_1_rex64): Allow SSE->SSE reg move.
	(lea_0): Rename to lea_1.
	(lea_1_zext, lea_1_rex64, lea_2_rex64): New patterns.
	(lea_general_?): Allow SImodes on TARGET_64BIT
	(lea_general_?_zext): New patterns.
	(call_1, call_1_rex64): Fix.

Thu Apr  5 19:00:15 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.c (ix86_split_long_move): Use PUT_MODE instead of change_address.

Thu Apr  5 18:25:56 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.c (function_arg): Return constm1_rtx for last argument.
	(ix86_expand_prologue): Update gen_call calls.
	* i386.h (FUNCTION_BLOCK_PROFILER_EXIT): Likewise.
	* i386.md (call_pop): Likewise.
	(call): Second operand is VOIDmode.
	(call_0): Likewise; Support 64bits.
	(call_exp): New expander.
	(call_1): Get to the sync.
	(call_1_exp): New pattern.
	(call_value): Support 64bit.
	(call_value_exp): New pattern.
	(untyped_call): Update gen_call call.
	(call_value_pop): Disable for 64bit.
	(call_value_0_rex64): New pattern.
	(call_value_1_rex64): Likewise.

2001-04-05  Bo Thorsen  <bo@suse.de>

	* i386.md: Don't allow "builtin_setjmp_receiver" for TARGET_64BIT.

Thu Apr  5 13:44:17 2001  J"orn Rennecke <amylaar@redhat.com>

	* i386.md (*andsi_1+3): If used after reload, make sure the operand
	satisfies ANY_QI_REG_P.

2001-04-05  Bernd Schmidt  <bernds@redhat.com>

	* config/ia64/ia64.c (rtx_needs_barrier): A PARALLEL can contain
	ASM_OPERAND.

	* sched-deps.c (sched_analyze_insn): Revert more of the March 27
	change.

2001-04-04  Zack Weinberg  <zackw@stanford.edu>

	* config.gcc: Remove default for xm_file.  Clean up local
	machine type handling.  Remove settings of xm_file to
	something that doesn't exist.  In the big switch, set xm_file,
	don't append to it (the value before the big switch is always
	null).  Don't force build_xm_file or host_xm_file to have a value.
	* configure.in: Remove default for xm_file.  Do not special
	case $cpu/xm-$cpu.h not existing.
	* configure: Regenerate.

2001-04-04  Diego Novillo  <dnovillo@redhat.com>

	* simplify-rtx.c (simplify_binary_operation): Check for overflow
	when folding integer division and modulo operations.

2001-04-04  Andrew MacLeod  <amacleod@redhat.com>

	* dwarf2out.c (output_cfi): Add 'for_eh' parameter, use PTR_SIZE
	instead of DWARF2_ADDR_SIZE for EH addresses.
	(output_call_frame_info): Use PTR_SIZE instead of DWARF2_ADDR_SIZE for
	EH addresses.

2001-04-04  Richard Henderson  <rth@redhat.com>

	* config/ia64/ia64.h (IA64_UNWIND_INFO): Disable.
	* config/ia64/t-glibc (LIB2ADDEH): Disable.
	* config/ia64/t-ia64 (LIB2ADDEH): Disable.

2001-04-04  Richard Henderson  <rth@redhat.com>

	* configure.in (gcc_cv_as_leb128): Escape "." in regexp.
	* configure: Rebuilt.

2001-04-04  Jakub Jelinek  <jakub@redhat.com>

	* gcse.c (delete_null_pointer_checks_1): Add delete_list argument,
	push insns to delete to it instead of deleting them.
	(delete_null_pointer_checks): Delete insns from delete_list after
	all delete_null_pointer_checks_1 passes are done.

2001-04-04  Richard Henderson  <rth@redhat.com>

	* configure.in (gcc_cv_as_leb128): Tweek minor number extraction.
	* configure: Rebuilt.

2001-04-04  Zack Weinberg  <zackw@stanford.edu>

	* expr.h: Remove #ifdef FUNCTION_CONVERSION_BUG logic.
	* config/romp/xm-romp.h: Delete.

2001-04-04  Bernd Schmidt  <bernds@redhat.com>

	* sched-deps.c (sched_analyze_insn): Partially revert March 27
	change.

2001-04-04 Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>

	* emit-rtl.c (mark_label_nuses) Increment the label uses for
	all labels present in rtx.
	(try_split) Call new function for all split insns.

2001-04-04  Jakub Jelinek  <jakub@redhat.com>

	* recog.c (validate_replace_rtx_1): Instead of aborting just make
	sure the change won't be validated.

Wed Apr  4 00:45:38 EDT 2001  John Wehle  (john@feith.com)

	* rtl.h (set_noop_p): Declare.
	* flow.c (set_noop_p): Move from here ...
	* rtlanal.c (set_noop_p): ... to here and enhance.
	* cse.c (delete_trivially_dead_insns): Use it.
	* gcse.c (hash_scan_set): Likewise.
	* jump.c (delete_noop_moves): Likewise.
	* recog.c (split_all_insns): Likewise.

2001-04-04  Alan Modra  <alan@linuxcare.com.au>

	* dwarf2out.c (dwarf2out_frame_debug_expr): Support adjusting
	stack pointer via a LO_SUM.  Ditto for setting a temp register
	used to save to the stack.  Set cfa_temp when setting fp, and
	allow matches to cfa_temp in addition to cfa_store when saving
	regs.  Handle POST_INC and LO_SUM register stores.  Document the
	changes and errors in rule 12 doco.

	* pa.c (set_reg_plus_d, store_reg, load_reg): Return last insn.
	(actual_fsize, local_fsize, save_fregs): Move for store_reg to see.
	(load_reg): Move closer to epilogue code.
	(DO_FRAME_NOTES): Define to control the following..
	(FRP): Define to set RTX_FRAME_RELATED_P on insns.
	(hppa_expand_prologue): Use FRP and REG_FRAME_RELATED_EXPR
	notes as necessary.
	(hppa_expand_epilogue): Likewise.

2001-04-03  Richard Henderson  <rth@redhat.com>

	* configure.in (gcc_cv_as_leb128): Reject gas before 2.11.
	* configure: Rebuild.

2001-04-03  Richard Henderson  <rth@redhat.com>

	* rtl.h (LCT_THROW): New.
	* calls.c (emit_library_call_value_1): Handle it.
	* except.c (connect_post_landing_pads): Use it.

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

	* gansidecl.h: Delete file.
	* configure.in: Change all refs to gansidecl.h to use
	ansidecl.h.  Adjust *_file_list so they know where ansidecl.h
	lives.
	* configure: Regenerate.

	* Makefile.in (intl.o): Don't depend on gansidecl.h.
	* defaults.h: s/gansidecl.h/ansidecl.h/ in comment.
	* ggc.h, config/fr30/fr30.h, config/mcore/mcore.c:
	Don't include gansidecl.h.
	* intl.c, main.c, version.c, fixinc/fixlib.h,
	fixinc/procopen.c, fixinc/server.c: Include ansidecl.h not
	gansidecl.h.

Tue Apr  3 19:41:21 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.c (ix86_force_to_memory, ix86_free_from_memory):
	Update for 64bit.

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

	* config/i386/xm-beos.h, config/i386/xm-isc.h,
	config/i386/xm-next.h, config/i386/xm-sco.h,
	config/i386/xm-sco5.h, config/m68k/xm-plexus.h,
	config/m88k/xm-m88k.h: Delete.

	* config/i386/xm-djgpp.h: Don't define __MSDOS__.
	* config/romp/xm-romp.h: Don't define bcopy.
	* config/rs6000/xm-beos.h: Don't define bcopy, HAVE_VPRINTF,
	HAVE_PUTENV, HAVE_RENAME, or USE_C_ALLOCA.

	* config.gcc: Remove references to deleted files.

	14 xm-host.h remain, 1 xm-cpu.h.

2001-04-03  Jakub Jelinek  <jakub@redhat.com>
	    David S. Miller  <davem@pierdol.cobaltmicro.com>
	    Andrew MacLeod  <amacleod@redhat.com>

	Use byte offsets in SUBREGs instead of words.

	* alias.c (nonlocal_mentioned_p): Use subreg_regno function.
	* caller-save.c (mark_set_regs): Change callers of subreg_hard_regno
	to pass new argument.
	(add_stored_regs): Use subreg_regno_offset function.
	* calls.c (expand_call): For non-paradoxical SUBREG take endianess
	into account.
	(precompute_arguments): Use gen_lowpart_SUBREG.
	* combine.c (try_combine): Replace explicit XEXP with SUBREG_REG.
	(combine_simplify_rtx): Rework to use SUBREG_BYTE.
	(simplify_set): Rework to use SUBREG_BYTE.
	(expand_field_assignment): Use SUBREG_BYTE.
	(make_extraction): Use SUBREG_BYTE.
	(if_then_else_cond): Use SUBREG_BYTE.
	(apply_distributive_law): Use SUBREG_BYTE and fixup subreg comments.
	(gen_lowpart_for_combine): Compute full byte offset.
	* cse.c (mention_regs): Use SUBREG_BYTE.
	(remove_invalid_subreg_refs): Rework to use SUBREG_BYTE.
	(canon_hash): Use SUBREG_BYTE.
	(fold_rtx): Pass SUBREG_BYTE div UNITS_PER_WORD to operand_subword.
	(gen_lowpart_if_possible): Formatting.
	* dbxout.c (dbxout_symbol_location): Compute SUBREG hard regnos
	correctly.
	* dwarf2out.c (is_pseudo_reg): Fixup explicit XEXP into SUBREG_REG
	(mem_loc_descriptor): Fixup explicit XEXP into SUBREG_REG
	(loc_descriptor): Fixup explicit XEXP into SUBREG_REG
	* dwarfout.c (is_pseudo_reg): Fixup explicit XEXP into SUBREG_REG
	(output_mem_loc_descriptor): Fixup explicit XEXP into SUBREG_REG
	(output_loc_descriptor): Fixup explicit XEXP into SUBREG_REG
	* emit-rtl.c (gen_rtx_SUBREG): New function, used to verify
	certain invariants about SUBREGs the compiler creates.
	(gen_lowpart_SUBREG): New function.
	(subreg_hard_regno): New function to get the final register number.
	(gen_lowpart_common): Use SUBREG_BYTE.
	(gen_imagpart): Spacing nits.
	(subreg_realpart_p): Use SUBREG_BYTE.
	(gen_highpart): Use SUBREG_BYTE.
	(subreg_lowpart_p): Always compute endian corrected goal offset,
	even at the byte level, then compare against that.
	(constant_subword): New function, pulled out all constant cases
	from operand_subword and changed second argument name to offset.
	(operand_subword): Detect non REG/SUBREG/CONCAT/MEM cases early
	and call constant_subword to do the work.  Return const0_rtx if
	looking for a word outside of OP.
	(operand_subword_force): Change second arg name to offset.
	* expmed.c (store_bit_field): Use SUBREG_BYTE.
	(store_split_bit_field): Use SUBREG_BYTE.
	(extract_bit_field): Use SUBREG_BYTE.
	(extract_split_bit_field): Use SUBREG_BYTE.
	(expand_shift): Use SUBREG_BYTE.
	* expr.c (store_expr, expand_expr): Use gen_lowpart_SUBREG.
	* final.c (alter_subreg) Use subreg_hard_regno and SUBREG_BYTE.
	* flow.c (set_noop_p): Use SUBREG_BYTE.
	(mark_set_1): Remove ALTER_HARD_SUBREG. Use subreg_regno_offset instead.
	* function.c (fixup_var_refs_1): Fixup explicit XEXP into a SUBREG_REG.
	(fixup_memory_subreg): Use SUBREG_BYTE and remove byte endian
	correction code.
	(optimize_bit_field): Use SUBREG_BYTE.
	(purge_addressof_1): Use SUBREG_BYTE.
	(purge_single_hard_subreg_set): Use subreg_regno_offset function.
	(assign_params): Mark arguments SUBREG_PROMOTED_VAR_P if they are
	actually promoted by the caller and PROMOTE_FOR_CALLS_ONLY is true.
	* gengenrtl.c (special_rtx): Add SUBREG.
	* global.c (mark_reg_store): Use SUBREG_BYTE.
	(set_preference): Rework to use subreg_regno_offset and SUBREG_BYTE.
	* ifcvt (noce_emit_move_insn): Use SUBREG_BYTE.
	* integrate.c (copy_rtx_and_substitute): Use SUBREG_BYTE and make sure
	final byte offset is congruent to subreg's mode size.
	(subst_constants): Use SUBREG_BYTE.
	(mark_stores): Use subreg_regno_offset function.
	* jump.c (rtx_renumbered_equal_p, true_regnum): Use subreg_regno_offset
	function and SUBREG_BYTE.
	* local-alloc.c (combine_regs): Use subreg_regno_offset function.
	(reg_is_born): Use subreg_hard_regno.
	* recog.c (valid_replace_rtx_1): Use SUBREG_BYTE and remove byte
	endian correction code.  Don't combine subregs unless resulting
	offset aligns with type.  Fix subreg constant extraction for DImode.
	Simplify SUBREG of VOIDmode CONST_DOUBLE.
	(general_operand): Remove dead mode_altering_drug code.
	(indirect_operand): Use SUBREG_BYTE.
	(constrain_operands): Use subreg_regno_offset function.
	* reg-stack.c (get_true_reg): Use subreg_regno_offset function.
	* regmove.c (regmove_optimize): Use SUBREG_BYTE.
	(optimize_reg_copy_3): Use gen_lowpart_SUBREG.
	* regs.h (REG_SIZE): Allow target to override.
	(REGMODE_NATURAL_SIZE): New macro which target can override.
	* reload.c (reload_inner_reg_of_subreg): subreg_regno should be used
	on the entire subreg rtx.
	(push_reload): Use SUBREG_BYTE in comments and code.
	(find_dummy_reload): Use subreg_regno_offset.  Only adjust offsets
	for hard registers inside subregs.
	(operands_match_p): Use subreg_regno_offset.
	(find_reloads): Use SUBREG_BYTE and only advance offset for subregs
	containing hard regs.
	(find_reload_toplev): Use SUBREG_BYTE.  Remove byte endian
	corrections when fixing up MEM subregs.
	(find_reloads_address_1): Use SUBREG_BYTE, subreg_regno, and
	subreg_regno_offset where appropriate.
	(find_reloads_subreg_address): Use SUBREG_BYTE.  Remove
	byte endian corrections when fixing up MEM subregs.
	(subst_reloads): When combining two subregs, make sure final
	offset is congruent to subreg's mode size.
	(find_replacement): Use SUBREG_BYTE and subreg_regno_offset.
	(refers_to_regno_for_reload_p): Use subreg_regno.
	(reg_overlap_mentioned_for_reload_p): Use subreg_regno_offset.
	* reload1.c (eliminate_regs) Use SUBREG_BYTE. Remove byte endian
	correction code for memory subreg fixups.
	(forget_old_reload_1): Use subreg_regno_offset.
	(choose_reload_regs): Use subreg_regno.
	(emit_input_reload_insns): Use SUBREG_BYTE.
	(reload_combine_note_store): Use subreg_regno_offset.
	(move2add_note_store): Use subreg_regno_offset.
	* resource.c (update_live_status, mark_referenced_resources): Use
	subreg_regno function.
	(mark_set_resources): Use subreg_regno function.
	* rtl.h (SUBREG_WORD): Rename to SUBREG_BYTE.
	(subreg_regno_offset, subreg_regno): Define prototypes.
	(subreg_hard_regno, constant_subword, gen_rtx_SUBREG): Newi functions.
	(gen_lowpart_SUBREG): Add prototype.
	* rtl.texi (subreg): Update to reflect new byte offset representation.
	Add mentioning of the effect that BYTES_BIG_ENDIAN has on subregs now.
	* rtlanal.c (refers_to_regno_p): Use subreg_regno.
	(reg_overlap_mentioned_p): Use subreg_regno.
	(replace_regs); Make sure final offset of combined subreg is
	congruent to size of subreg's mode.
	(subreg_regno_offset): New function.
	(subreg_regno): New function.
	* sched-vis.c (print_value): Change SUBREG_WORD to SUBREG_BYTE.
	* sdbout.c (sdbout_symbol): Compute offset using alter_subreg.
	* stmt.c (expand_anon_union_decl): Use gen_lowpart_SUBREG.
	* tm.texi (ALTER_HARD_SUBREG): Remove, it is now dead.
	(SUBREG_REGNO_OFFSET): Describe SUBREG_REGNO_OFFSET overrides.
	* config/a29k/a29k.c (gpc_reg_operand): Use subreg_regno.
	(a29k_get_reloaded_address): Use SUBREG_BYTE.
	(print_operand): Use SUBREG_BYTE.
	* config/alpha/alpha.c (print_operand_address): Use SUBREG_BYTE.
	* config/arm/arm.c (arm_reload_in_hi): Use SUBREG_BYTE.
	(arm_reload_out_hi): Use SUBREG_BYTE.
	* config/d30v/d30v.c (d30v_split_double): Use subreg_regno_offset
	instead of SUBREG_WORD.
	(d30v_print_operand_memory_reference): Use subreg_regno_offset.
	* config/dsp16xx/dsp16xx.md (extendqihi2, zero_extendqihi2): Fix
	SUBREG creation to use byte offset.
	* config/h8300/h8300.md (Unnamed HImode zero extraction and 16bit
	inverted load insns): Fix explicit rtl subregs to use byte
	offsets.
	* config/i370/i370.md (cmpstrsi, movstrsi, mulsi3, divsi3,
	udivsi3, umodsi3): Generate SUBREGs with byte offsets.
	* config/i860/i860.c (single_insn_src_p): Use SUBREG_BYTE.
	* config/i860/i860.md (mulsi3_big): Fixup explicit SUBREGs in rtl
	to use byte offsets.
	(unnamed fmlow.dd insn): Fixup SUBREGS to use byte offsets.
	* config/i960/i960.md (extendhisi2): Generate SUBREGs with byte
	offsets, also make sure it is congruent to SUBREG's mode size.
	(extendqisi2, extendqihi2, zero_extendhisi2, zero_extendqisi2,
	unnamed ldob insn): Generate SUBREGs with byte offset.
	(zero_extendqihi2): SUBREG's are byte offsets.
	* config/m68hc11/m68hc11.c (m68hc11_gen_lowpart): Use SUBREG_BYTE.
	(m68hc11_gen_highpart): Use SUBREG_BYTE.
	* config/m68k/m68k.md (zero_extendhisi2, zero_extendqihi2,
	zero-extendqisi2): Generate SUBREGs with byte offset.
	(umulsidi3, mulsidi3, subreghi1ashrdi_const32,
	subregsi1ashrdi_const32, subreg1lshrdi_const32): Fixup explicit
	subregs in rtl to use byte offsets.
	* config/m88k/m88k.md (extendsidi2): fixup subregs to use byte offset.
	* config/mips/mips.c (mips_move_1word): Use subreg_regno_offset.
	(mips_move_2words): Use subreg_regno_offset.
	(mips_secondary_reload_class): Use subreg_regno_offset.
	* config/mips/mips.md (DImode plus, minus, move, and logical op
	splits): Fixup explicit subregs in rtl to use byte offsets.
	* config/mn10200/mn10200.c (print_operand): Use subreg_regno function.
	* config/mn10300/mn10300.c (print_operand): Use subreg_regno function.
	* config/ns32k/ns32k.md (udivmoddisi4): Fix explicit subregs in
	rtl to use byte offsets.
	* config/pa/pa.c (emit_move_sequence): Use SUBREG_BYTE.
	* config/pa/pa.md (floatunssisf2, floatunssidf2, mulsi3): fix explicit
	subregs to use byte offsets.
	* config/pdp11/pdp11.md (zero_extendhisi2, modhi3, modhi3+1):
	Fixup explicit subregs in rtl to use byte offsets.
	* config/romp/romp.c (memory_offset_in_range_p): Use SUBREG_BYTE
	and remove byte endian correction code.
	* config/sh/sh.c (output_movedouble): Use subreg_regno.
	(gen_ashift_hi): Use SUBREG_BYTE.
	(regs_used): Use subreg_regno_offset.
	(machine_dependent_reorg): Use subreg_regno_offset.
	* config/sh/sh.h (INDEX_REGISTER_RTX_P): Use SUBREG_BYTE.
	* config/sh/sh.md (DImode and DFmode move splits): Use subreg_regno.
	(movdf_i4): Subregs are byte offsets now.
	* config/sparc/sparc.c (ultra_find_type): Use SUBREG_BYTE.
	* config/sparc/sparc.h (ALTER_HARD_SUBREG): Removed.
	(REGMODE_NATURAL_SIZE): Override.
	(REG_SIZE): For SUBREG check float mode on SUBREG_REG's mode.
	* config/sparc/sparc.md (TFmode move splits): Generate SUBREGs
	with byte offsets.
	(zero_extendhisi2, zero_extendqidi2_insn, extendhisi2,
	extendqihi2, sign_extendqihi2_insn, sign_extendqisi2_insn,
	extendqidi2): Generate SUBREGs with byte offsets, also make sure
	it is congruent to SUBREG's mode size.
	(smulsi3_highpart_v8plus): Fix explicit subregs in rtl to use byte
	offsets.
	(cmp_siqi_trunc, cmp_siqi_trunc_set, cmp_diqi_trunc,
	cmp_diqi_trunc_set, lshrdi3_v8plus+1, lshrdi3_v8plus+2,
	lshrdi3_v8plus+3, lshrdi3_v8plus+4): Use proper
	SUBREG_BYTE offset for non-paradoxical subregs in patterns.
	* config/v850/v850.c (print_operand, output_move_double): Use
	subreg_regno function.

2001-04-03  Alexandre Oliva  <aoliva@redhat.com>

	* configure.in (target_subdir): Use target_alias, not target.
	* configure: Rebuilt.

	* config/sh/crtn.asm (init, fini): Restore r15 from r14, not the
	other way round.
	* config/sh/crti.asm: Fix typos in comments.

2001-04-03  Alan Modra  <alan@linuxcare.com.au>

	* pa.h: Revise comments for TARGET_NO_SPACE_REGS and
	TARGET_FAST_INDIRECT_CALLS.
	* pa.c (override_options): TARGET_NO_SPACE_REGS is now OK with
	-fPIC.  Don't warn.
	(return_addr_rtx): Short circuit export stub matching when
	TARGET_NO_SPACE_REGS.
	(output_millicode_call): For out of range calls, make -fPIC
	take precedence, then TARGET_PORTABLE_RUNTIME, then ble.  Don't
	return before delay slot checks when TARGET_PORTABLE_RUNTIME.
	* pa.md: Modify length attr calculation of all millicode insns to
	match above.

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

	* configure.in (gcc_cv_as_leb128): Correct name of cache variable.
	Require at least 2.11 in the version test.  Specifically check
	for and reject GAS version 2.10.90.
	* configure: regenerate.

2001-04-03  Alan Modra  <alan@linuxcare.com.au>

	* pa.c (override_options): Remove PIC profiling warning.
	(hp_profile_labelno): Delete.
	(hp_profile_label_rtx): Delete.
	(hp_profile_label_name): Delete.
	(pa_add_gc_roots): Remove reference to hp_profile_label_rtx.
	(output_function_prologue): Remove profiling code and all tests on
	profile_flag.  Move store of PIC_OFFSET_TABLE_REGNUM now that
	merge_sp_adjust_with_store can work for PIC and profiling.
	(hppa_expand_epilogue): Remove profile_flag test.
	(hppa_can_use_return_insn_p): Likewise.
	(hppa_init_pic_save): Emit before tail_recursion_reentry, and
	cater for PROFILE_HOOK.
	(hppa_profile_hook): New function.
	* pa.h (FUNCTION_PROFILER): Now does nothing.
	(PROFILE_HOOK): Define.
	(hppa_profile_hook): Declare.
	(PROFILE_BEFORE_PROLOGUE): Delete.
	(ASM_OUTPUT_REG_PUSH): Delete.
	(ASM_OUTPUT_REG_POP): Delete.
	* pa.md (call_profiler): Turn it into a call insn, and don't `use'
	r24.  Accept function name operand, and use this and a locally
	generated label to calculate pc-rel offset to func start.

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

	* $(HOST_PREFIX_1)errors.o, $(HOST_PREFIX_1)ggc-none.o,
	ggc-common.o, ggc-simple.o, ggc-page.o, ggc-none.o: Depend on
	$(SYSTEM_H).

2001-04-03  Alan Modra  <alan@linuxcare.com.au>

	* dwarf2out.c (dwarf2out_frame_debug_expr): Move errant HIGH and
	LO_SUM cases to where they belong.

2001-04-02  Richard Henderson  <rth@redhat.com>

	* except.h (lang_eh_type_covers): Mark extern.
	(lang_eh_runtime_type): Likewise.

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

	* genattr.c, gencheck.c, gencodes.c, genconfig.c, genflags.c,
	gengenrtl.c:  Wrap generated header in multiple-include guard.
	Improve error checking.

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

	* configure.in: Don't check for putenv.
	* configure: Regenerate.
	* gcc.c (putenv): Don't define.
	* vax/xm-vms.h: Handle putenv.

2001-04-02  Jakub Jelinek  <jakub@redhat.com>

	* ifcvt.c (noce_emit_move_insn): New.
	(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): Use it.
	(noce_process_if_block): Likewise.
	For STRICT_LOW_PART, take mode from its SUBREG.

2001-04-02  Jakub Jelinek  <jakub@redhat.com>

	* fold-const.c (fold): Before optimizing unsigned comparison with
	0x7fffffffU, make sure arg0 is integral type.

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

	* c-tree.texi: Document representation of wide strings.

2001-04-01  Richard Henderson  <rth@redhat.com>

	* except.h (expand_builtin_dwarf_fp_regnum): Declare.

Sun Apr  1 11:49:05 CEST 2001  Jan Hubicka  <jH@suse.cz>

	* i386.md: remove obsoleted comments.
	(adddi_?): Rename to adddi_?_rex64; disable for 32bit.
	(x86_movsicc_0_m1_rex64): Rename to x86_movdicc_0_m1_rex64;
	fix output template.

2001-03-31  Marek Michalkiewicz  <marekm@linux.org.pl>

	* config/avr/libgcc.S (__mulhi3): Optimize previous change.

2001-03-30  Bernd Schmidt  <bernds@redhat.com>

	* loop.c (load_mems): When generating a load from a pseudo, update
	REGNO_LAST_UID.

Fri Mar 30 17:36:43 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.c (ix86_split_long_move): Use change address to compensate
	stack pointer change in push instruction.

Fri Mar 30 00:31:00 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (sse_movdfcc_eq): Fix constraint (sse_mov?fcc splitter): Use operands_match_p
	instead of rtx_equal_p; fix the output template.

Fri Mar 30 00:21:41 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.c (ix86_expand_setcc): Support 64bit.
	(ix86_expand_int_movcc): Likewise.
	* i386.md (movdicc_rex64, x86_movsicc_0_m1_rex64, movdicc_c_rex64):
	New patterns.

	* i386.md (allocate_stack_worker): Turn to expander.
	(allocate_stack_worker_1, allocate_stack_worker_rex64): New insns.

	* i386.c (print_reg): Do not print x86_64 style regs on IA-32

2001-03-29  Richard Henderson  <rth@redhat.com>

	* libgcc2.c [L__main]: Include unwind-dw2-fde.h instead of frame.h.

2001-03-28  Matthew Hiller  <hiller@redhat.com>

	* config/mn10300/mn10300.md (cmpsi): Fix first alternative's
	output template.

	* MAINTAINERS: Added self.

2001-03-28  Richard Henderson  <rth@redhat.com>

	* Makefile.in (cs-tconfig.h): Depend on CONFIG_H, not GCONFIG_H.
	Use ALL_CFLAGS not HOST_CFLAGS for sjlj detection.

2001-03-28  Jim Wilson  <wilson@redhat.com>

	* config/ia64/ia64.md (movtf): Change DImode to TFmode in calls to
	operand_subword.

2001-03-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* toplev.h (fatal_error): Add ATTRIBUTE_NORETURN.

	* tradcif.y (yyerror): Likewise.  Add format specifier in call to
	`error'.

	* tradcpp.c (macroexpand): Likewise for call to `error_with_line'.

2001-03-28  DJ Delorie  <dj@redhat.com>

	* Makefile.in (stage1_build): Revert CFLAGS patch.

2001-03-28  Marek Michalkiewicz  <marekm@linux.org.pl>

	* config/avr/libgcc.S (__mulhi3): Correct tests to exit the loop
	when multiplier or multiplicand is zero.

2001-03-28  Bernd Schmidt  <bernds@redhat.com>

	* cselib.c (hash_rtx): Don't do tail recursion elimination by hand.

	* config/ia64/ia64.c (update_set_flags): New function, broken out of
	rtx_needs_barrier.
	(set_src_needs_barrier): Likewise.
	(rtx_needs_barrier): For SET case, use these two functions.  Rework
	PARALLEL case to handle all inputs before all outputs.
	(emit_insn_group_barriers): Call init_insn_group_barriers only if we
	saw a label and no stop bit since then.
	(maybe_rotate, process_epilogue): Add prototypes.

2001-03-28  Richard Henderson  <rth@redhat.com>

	* config/rs6000/rs6000.h (EPILOGUE_USES): Use TARGET_AIX,
	not TARGET_TOC for special toc restore handling.
	* config/rs6000/rs6000.md (eh_return): Likewise.

2001-03-28  Richard Henderson  <rth@redhat.com>

	* config/sparc/sparc.c (eligible_for_epilogue_delay): False if
	current_function_calls_eh_return.
	(output_function_epilogue): Handle eh_return.
	* config/sparc/sparc.h (DOESNT_NEED_UNWINDER): Remove.
	(EH_RETURN_DATA_REGNO): New.
	(EH_RETURN_STACKADJ_RTX): New.
	(EH_RETURN_HANDLER_RTX): New.
	* config/sparc/sparc.md (call/short branch peepholes): Check
	can_throw_internal instead of in_same_eh_region.

	* config/rs6000/rs6000.c (rs6000_stack_info): Allocate space
	for eh_return data registers.
	(rs6000_emit_prologue): Save eh_return data registers.
	(rs6000_emit_epilogue): Force inline restores if eh_return.
	Restore eh_return data registers.  Mind EH_RETURN_STACKADJ_RTX.
	* config/rs6000/rs6000.h (rs6000_stack_t): Add ehrd_offset.
	(EH_RETURN_DATA_REGNO, EH_RETURN_STACKADJ_RTX): New.
	(EPILOGUE_USES): True for TOC_REGISTER if calls_eh_return and
	the target uses one.
	* config/rs6000/rs6000.md (eh_epilogue, eh_reg_restore): Remove.
	(return_eh_si, return_eh_di): Remove.
	(eh_return): New, from corpse of eh_epilogue.
	(eh_set_lr_si, eh_set_lr_di): New.

	* config/i386/i386.c (general_no_elim_operand): Disallow virtual regs.
	(ix86_save_reg): If maybe_eh_return, true for EH_RETURN_DATA_REGNOs.
	True for pic register if current_function_calls_eh_return.
	(ix86_expand_epilogue): Change "emit_return" argument into "style".
	Handle eh_return requirements.
	* config/i386/i386.h (EH_RETURN_DATA_REGNO): New.
	(EH_RETURN_STACKADJ_RTX): New.
	* config/i386/i386.md (exception_receiver): Remove.
	(eh_return, eh_return_1): New.
	* config/i386/linux.h (MD_FALLBACK_FRAME_STATE_FOR): New.

	* config/alpha/alpha.c (alpha_sa_mask): Add EH_RETURN_DATA_REGNOs.
	(alpha_mark_machine_status): No eh_epilogue_sp_ofs ...
	(alpha_expand_epilogue): ... use EH_RETURN_STACKADJ_RTX instead.
	* config/alpha/alpha.h (machine_function): Remove eh_epilogue_sp_ofs.
	(EH_RETURN_DATA_REGNO): New.
	(EH_RETURN_STACKADJ_RTX, EH_RETURN_HANDLER_RTX): New.
	* config/alpha/alpha.md (eh_epilogue): Remove.
	(exception_receiver): Use $26 for ldgp input.
	* config/alpha/linux.h (MD_FALLBACK_FRAME_STATE_FOR): New.

2001-03-28  Richard Henderson  <rth@redhat.com>

	* except.c: Rewrite entirely for IA-64 ABI exception handling.
	* except.h: Likewise.

	* Makefile.in (LIB2ADDEH): Mention unwind-dw2*.c
	(LIB2ADDEHDEP): New.
	(LIB2FUNCS_EH): Remove.
	(LIB2ADD): Remove LIB2ADDEH.
	(libgcc.mk): Pass LIB2ADDEHDEP, don't pass LIB2FUNCS_EH.
	(LIBGCC_DEPS): Use LIB2ADDEHDEP.
	(crt{begin,end}[S].o): Likewise.
	(except.o): Update includes.
	* mklibgcc.in: Remove LIB2FUNCS_EH, add LIB2ADDEH, LIB2ADDEHDEP.
	(libgcc2_c_dep): Use LIB2ADDEHDEP.

	* basic-block.h (struct basic_block_def): Remove eh_beg, eh_end.
	* bb-reorder.c (reorder_basic_blocks): Don't disable for EH.
	* builtins.def (BUILT_IN_EH_RETURN_DATA_REGNO): New.
	* builtins.c (expand_builtin): Implement it.
	[BUILT_IN_EH_RETURN]: Update for nr arguments change.
	* c-common.c (c_common_nodes_and_builtins): Declare it.
	* c-decl.c (init_decl_processing): Update __builtin_eh_return.
	* calls.c (libfunc_nothrow): Remove.
	(emit_library_call_value_1): Don't call it.
	* crtstuff.c: Include unwind-dw2-fde.h instead of frame.h.
	* dwarf2.h (dwarf_call_frame_info): Add dwarf2.1 elements.
	(DW_EH_PE_*): New defines for pointer encoding in .eh_frame.
	* dwarf2out.c (struct dw_fde_struct): Add uses_eh_lsda, funcdef_number.
	(current_funcdef_number): Globalize.
	(output_call_frame_info): Emit frame data if an lsda is needed.
	Generate augmentation for personality routine.  Don't play with
	difference symbols.
	(dwarf2out_begin_prologue): Record funcdef_number.
	* dwarf2out.h (current_funcdef_number): Declare.
	* expr.c (expand_expr): Update for except.h name changes.
	Remove POPDCC_EXPR, POPDHC_EXPR.  Add EXC_PTR_EXPR.
	* expr.h (LTI_throw, LTI_rethrow): Remove.
	(LTI_sjthrow, LTI_sjpopnthrow, LTI_terminate): Remove.
	(LTI_eh_rtime_match): Remove.
	(LTI_unwind_resume, LTI_eh_personality): Add.
	(LTI_unwind_sjlj_register, LTI_unwind_sjlj_unregister): Add.
	* final.c (final): Don't call check_exception_handler_labels,
	init_insn_eh_region, or free_insn_eh_region.
	(final_scan_insn): Always emit debug labels for
	NOTE_INSN_EH_REGION notes.
	* flags.h (flag_new_exceptions): Remove.
	* flow.c (entry_exit_blocks): Remove eh_beg, eh_end.
	(record_active_eh_regions): Remove.
	(count_basic_blocks): Check all instructions for REG_EH_REGION.
	Use can_throw_internal.
	(find_basic_blocks_1): Likewise.
	(move_stray_eh_region_notes): Remove.
	(find_label_refs): No eh_return_stub_label.
	(make_edges): Likewise.  No init/free_eh_nesting_info.  Handle RESX.
	(make_eh_edge): No eh_nest_info.  Update for reachable_handlers
	changes.
	(delete_unreachable_blocks): Don't track deleted handlers.
	(flow_delete_block): Use maybe_remove_eh_handler.
	(delete_eh_regions): Remove.
	(merge_blocks): Don't check for eh region match.
	(mark_regs_live_at_end): Handle EH_RETURN_DATA_REGNO,
	EH_RETURN_STACKADJ_RTX, EH_RETURN_HANDLER_RTX.
	(init_propagate_block_info): Disable dead frame store optimization
	when current_function_calls_eh_return.
	(dump_bb): Don't print eh_beg, eh_end.
	* function.c (fixup_var_refs): No catch_clauses.
	(expand_function_end): Likewise.  Call expand_eh_return before
	the return register use.  Call sjlj_emit_function_exit_after.
	(expand_function_start): Force pseudo DECL_RESULT if sjlj exceptions.
	* function.h (struct function): Add calls_eh_return, uses_eh_lsda.
	* ifcvt.c (dead_or_predicable): Remove eh region check.
	* integrate.c (function_cannot_inline_p): Disallow __builtin_eh_return.
	Don't check for EH vs parameters.
	(expand_inline_function_eh_labelmap, eif_eh_map): Remove.
	(expand_inline_function): Call duplicate_eh_regions.
	(copy_insn_list): Don't handle NOTE_INSN_EH_REGION_BEG/END.
	(copy_insn_notes): Remap REG_EH_REGION notes.
	(copy_rtx_and_substitute): Remove SYMBOL_REF_NEED_ADJUST check.
	* integrate.h (struct inline_remap): Add local_return_label.
	* jump.c (jump_optimize_1): Don't init/free_insn_eh_region, nor
	check_exception_handler_labels, nor exception_optimize.
	(find_cross_jump): No EH region check.
	* optabs.c (init_optabs): Update for changed eh libfuncs.
	* rtl.def (RESX): New.
	* rtl.h (SYMBOL_REF_NEED_ADJUST): Remove.
	* stmt.c (expand_decl_cleanup): Simplify using_eh_for_cleanups_p
	checks.  Update for except.h name changes.
	(expand_cleanups): Likewise.
	(expand_dcc_cleanup, expand_dhc_cleanup): Remove.
	* toplev.c (dump_file_index, dump_file): Add .02.eh dump.
	(compile_file): Call init_eh before init_optabs.  Don't
	output_exception_table here.
	(rest_of_compilation): Call convert_from_eh_region_ranges,
	convert_to_eh_region_ranges, output_function_exception_table.
	Don't emit_eh_context.
	* tree.def (POPDHC_EXPR, POPDCC_EXPR): Remove.
	(EXC_PTR_EXPR): New.

	* md.texi (eh_epilogue): Remove.
	(eh_return): Document.
	* tm.texi (EH_RETURN_DATA_REGNO): Document.
	(EH_RETURN_STACKADJ_RTX, EH_RETURN_HANDLER_RTX): Document.

	* eh-common.h: Remove file.
	* frame-dwarf2.c, frame.c, frame.h: Remove files.
	* libgcc2.c (L_eh): Remove.

	* unwind-dw2-fde.c: New file, largely copied from frame.c.
	* unwind-dw2-fde.h: New file.
	* unwind-dw2.c: New file, largely cribbed from frame-dwarf2.c.
	* unwind-sjlj.c, unwind.h, unwind.inc: New files.
	* libgcc-std.ver: Update for eh symbols.

2001-03-27  Richard Henderson  <rth@redhat.com>

	* regmove.c (perhaps_ends_bb_p): Use can_throw_internal to
	reduce false positives.
	(regmove_optimize): Disable if flag_non_call_exceptions.

	* stmt.c (expand_return): Remove always true predicate.
	(expand_decl_cleanup_no_eh): Remove dead code.

	* sched-deps.c (sched_analyze_insn): Consolidate scheduling
	barrier code.  Add a scheduling barrier if a non-call insn
	can throw internally.

	* rtlanal.c (rtx_addr_can_trap_p): Virtual registers cannot trap.
	Auto-inc addresses trap only if their base register does.

	* except.c (can_throw_internal): Rename from can_throw.
	* except.h, resource.c: Update references.

	* integrate.c (copy_insn_list): Use returnjump_p.
	(copy_insn_notes): Recurse for CALL_PLACEHOLDER.

	* function.h (struct function): Move all boolean valued fields
	to single bit fields at the end of the struct.

	* bb-reorder.c, dwarf2out.c, except.c, except.h, flow.c,
	jump.c, toplev.c:
	Rename asynchronous_exceptions to flag_non_call_exceptions.

	* gthr-single.h (UNUSED): New.  Distinguish between how C
	and C++ mark unused function arguments.  Use throughout.

	* Makefile.in (cs-tconfig.h): Copy USING_SJLJ_EXCEPTIONS
	value to target configuration header.
	* configure.in (CONFIG_SJLJ_EXCEPTIONS): New.
	* config.in, configure: Rebuild.
	* except.h (USING_SJLJ_EXCEPTIONS): New.  Define based on
	configuration and target defines.
	(exceptions_via_longjmp): Remove.
	* dwarf2out.c, except.c, final.c, toplev.c, config/ia64/ia64.c:
	Use USING_SJLJ_EXCEPTIONS instead of exceptions_via_longjmp.

	* except.h (flag_non_call_exceptions): Move ...
	* flags.h: ... here.

	* combine.c (distribute_notes) [REG_EH_REGION]: If non-call
	exceptions, put the note on the trapping instruction.

	* flags.h (flag_new_exceptions): Remove.
	* toplev.c: Don't set it.
	* final.c: Don't check it.
	* except.c: Provide stub definition.

	* flow.c (tidy_fallthru_edges): Don't combine complex edges.
	(calculate_global_regs_live): Kill call-clobbered registers
	across exception edges.
	* reg-stack.c (convert_regs_1): Kill the entire target stack
	across non-call exception edges.

	* flow.c (cleanup_cfg): Take no argument.
	* output.h, sibcall.c, toplev.c: Update all calls.

2001-03-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* configure.in: Don't check for bcopy.
	* configure, config.in: Regenerate.

	* system.h: Don't define or prototype bcopy, instead poison it.

2001-03-27  Richard Henderson  <rth@redhat.com>

	* function.c (expand_function_start): Set DECL_REGISTER on
	a pseudo used for DECL_RESULT.

	* rtl.h (LCT_NORETURN): New.
	* calls.c (emit_library_call_value_1): Handle it.

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

	* objc/objc-act.c (objc_init): Use dump_base_name.
	(gen_declaration): Clear the buffer arg.
	(gen_declaration_1): New function, body of gen_declaration.
	(adorn_decl): Call gen_declaration_1 instead of gen_declaration.
	(gen_method_decl): Ditto, plus always clear buffer arg.
	(error_with_ivar): Simplify.
	(warn_with_method): Ditto.
	(build_message_expr): Don't clear buffers.
	(dump_interface): Ditto.
	(objc_debug): Ditto.
	(build_keyword_selector): Clear the buffer by only zeroing
	the first element.
	(objc_implementation_context): Declare.
	(start_class): Warn about missing @end.
	(finish_objc): Ditto.

2001-03-28  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* reload1.c (eliminate_regs): Don't abort on MEM USEs.

2001-03-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (SYSTEM_H): Define.
	Depend on $(SYSTEM_H), not system.h.

	* objc/Make-lang.in: Depend on $(SYSTEM_H), not system.h.

2001-03-27  Jim Wilson  <wilson@redhat.com>

	* final.c (final_scan_insn, case NOTE_INSN_BASIC_BLOCK): Call
	IA64_UNWIND_EMIT.
	* config/ia64/ia64.c (block_num, need_copy_state): New static vars.
	(process_epilogue): New static function.
	(process_set): Call process_epilogue instead of emitting .restore
	directly.
	(process_for_unwind_directive): Handle NOTE_INSN_BASIC_BLOCK.

	* flow.c (struct reg_cond_life_info): New fields orig_condition
	and stores.
	(init_propagate_block_info): Set new fields.
	(mark_regno_cond_dead): Set and use new fields.
	(flush_reg_cond_reg_1): Likewise.
	(and_reg_cond, case AND): Check for redundant AND conditions.
	(mark_used_reg): Delete unnecessary clears before freeing splay trees.
	Set new fields.

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

	* cppmacro.c (stringify_arg): Null terminate strings.

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

	* config.gcc (m68hc11-*-*, m68hc12-*-*): Convert to new tm.h
	inclusion style.  xm-m68hc11.h no longer exists.
	* config/m68hc11/xm-m68hc11.h: Delete file.
	* config/m68hc11/m68hc12.h: Convert to new tm.h inclusion style.

	* config/m68hc11/m68hc11.h: Convert to new tm.h inclusion style.
	Don't define GCC_VERSION, N_, or PARAMS; don't include
	gansidecl.h or stdio.h.  Define inhibit_libc here.
	Make code conditioned on #if GCC_VERSION > 2095 unconditional.
	Delete code conditioned on #if GCC_VERSION == 2095.

	* config/m68hc11/m68hc11-protos.h, config/m68hc11/m68hc11.c:
	Make code conditioned on #if GCC_VERSION > 2095 unconditional.
	Delete code conditioned on #if GCC_VERSION == 2095.

2001-03-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* system.h: Include symcat.h.
	(STRINGIFY): Don't define.

	* configure.in: Adjust comment.

	* builtins.c: Use STRINGX, not STRINGIFY.
	* gencheck.c: Likewise.
	* gengenrtl.c: Likewise.
	* protoize.c: Likewise.

	* cpplex.c: Don't include symcat.h.
	* cpplib.c: Likewise.

	* gansidecl.h (HAVE_STRINGIZE): Don't define.

2001-03-27  Alan Modra  <alan@linuxcare.com.au>

	* c-typeck.c (digest_init): Fold init expression.

2001-03-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* sbitmap.c (sbitmap_copy): Call memcpy, not bcopy.

2001-03-27  Alan Modra  <alan@linuxcare.com.au>

	* except.c (eh_regs): Save results of build_pointer_type to a temp
	as FUNCTION_VALUE macro may evaluate its args multiple times.

2001-03-26  Mark Mitchell  <mark@codesourcery.com>

	* c-common.h (DECL_NUM_STMTS): New macro.
	* c-decl.c (duplicate_decls): Copy DECL_NUM_STMTS, not
	DECL_FRAME_SIZE.
	(pushdecl): Likewise.
	* c-semantics.c (add_stmt): Update DECL_NUM_STMTS.
	* integrate.c (expand_inline_function): Don't check
	DECL_FRAME_SIZE.
	* print-tree.c (print_node): Don't print it.
	* toplev.c (rest_of_compilation): Don't try to inline when
	flag_no_inline is on.
	* tree.h (DECL_FRAME_SIZE): Remove.
	(tree_decl): Adjust accordingly.

2001-03-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* combine.c (try_combine): Use memcpy, not bcopy.

	* genattrtab.c (expand_units): Likewise.

Mon Mar 26 15:55:08 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (push mem DI peep2): New.
	(mov 0, mov -1 peep2): Handle 64bit.
	(lea to arithmetics peep2): Handle 64bit leas.
	(rsp arithmetics to push/pop peep2s): New.

	* i386.md (truncdfsf2_3, trunctfsf2_2): Change predicate to memory_operand.

Mon Mar 26 14:35:18 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.c (struct machine_function): Add save_varrargs_registers.
	(ix86_save_varrargs_registers): New macro.
	(ix86_frame_layout): Support 64bit; support red zones and varrargs area.
	(ix86_expand_prologue): Likewise.
	(ix86_emit_epilogue_esp_adjustement): Likewise.
	(ix86_expand_epilogue): Likewise.
	* i386.md (pro_epilogue_adjust_stack): Turn to expander; support 64bit.
	(pro_epilogue_adjust_stack_1): New insn.
	(pro_epilogue_adjust_stack_rex64): Likewise.
	* i386.h (MASK_NO_RED_ZONE): New constant.
	(TARGET_RED_ZONE): New macro.
	(TARGET_OPTIONS): Add "red-zone" and "no-red-zone"
	(RED_ZONE_SIZE): New constant.
	(RED_ZONE_RESERVE): New constant.

2001-03-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* toplev.c (set_float_handler): Use memcpy, not bcopy.

2001-03-25  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.md (umodqi3): Output a tab instead of a
	space.
	(modqi3): Likewise.
	(umodhi3): Likewise.
	(modhi3): Likewise.

2001-03-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* mkconfig.sh (DEFINES): Handle entries with '='.

	* config.gcc: Don't use i370/xm-mvs.h or ns32k/xm-pc532-min.h.
	Set xm_defines to MACRO=value instead.

	* i370/xm-mvs.h: Delete.

	* ns32k/xm-pc532-min.h: Likewise.

Sun Mar 25 15:01:40 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (ashldi3, ashrdi3, lshrdi3): Change predicates to
	shiftdi_operand;
	use ix86_expand_binary_operator
	(?sh??i_?): Disable for 64bit.
	* i386.h (PREDICATE_CODES): Add shiftdi_operand.
	* i386.c (shiftdi_operand): New predicate.

	* (ashldi3_1_rex64, ashldi3_cmp_rex64, ashlsi3_1_zext, ashlsi3_cmp_zext,
	ashrdi3_63_rex64, ashrdi3_1_one_bit_rex64, ashrdi3_1_rex64,
	ashrdi3_one_bit_cmp_rex64, ashrdi3_cmp_rex64, ashrsi3_31_zext,
	ashrsi3_1_one_bit_zext, ashrsi3_1_zext, ashrsi3_one_bit_cmp_zext,
	ashrsi3_cmp_zext, lshrdi3_1_one_bit_rex64, lshrdi3_1_rex64,
	lshrdi3_cmp_one_bit_rex64, lshrdi3_cmp_rex64, lshrsi3_1_one_bit_zext,
	lshrsi3_1_zext, lshrsi3_cmp_one_bit_zext, lshrsi3_cmp_zext,
	rotlsi3_1_one_bit_rex64, rotldi3_1_rex64,
	rotlsi3_1_one_bit_zext, rotlsi3_1_zext, rotrdi3_1_one_bit_rex64,
	rotrdi3_1_rex64, rotrsi3_1_one_bit_zext, rotrsi3_1_zext): New patterns.
	(rotldi3, rotrdi3): New expanders.

Sun Mar 25 14:25:33 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (movstrsi): Move offline.
	(movstrdi): New.
	(strmovdi_rex64): New.
	(strmov?i): Accept 64bit.
	(strmov?i_rex64): New.
	(strmov?i_rex_1): New.
	(strmov?i_1): Disable for 64bit.
	(rep_mov?i_rex64): New.
	(rep_mov?i): Disable for 64bit.
	(clrstrsi): Move offline.
	(strset?i_rex64): New.
	(strset?i: Accept 64bit.
	(rep_stos?i): Disable for 64bit.
	(rep_stos?i_rex64): New.
	(strset?i_rex_1): New.
	(strset?i_1): Disable for 64bit.
	(cmpstrsi): Accept 64bit.
	(cmpstrsi_nz_1): Rename to cmpstrqi_nz_1; Disable for 64bit.
	(cmpstrqi_nz_rex_1): New.
	(cmpstrsi_1): Rename to cmpstrqi_1; Disable for 64bit.
	(strlensi): Move offline.
	(strlendi): New.
	(strlenqi_1): Disable for 64bit; fix constraints.
	(strlenqi_rex_1): New.
	* i386.c (ix86_adjust_counter): New static function.
	(ix86_zero_extend_to_Pmode): Likewise.
	(ix86_expand_aligntest): Likweise.
	(ix86_expand_strlensi_unroll_1): Make static; update for 64bit.
	(ix86_expand_movstr): New global function.
	(ix86_expand_clrstr): New global function.
	(ix86_expand_strlen): New global function.
	* i386-protos.h (ix86_expand_movstr, ix86_expand_clrstr,
	ix86_expand_strlen): Declare.
	(ix86_expand_strlensi_unroll_1): Delete.

Sat Mar 24 23:15:19 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (cmpdi): Fix operand predicates.
	(cmpdi_ccno_1_rex64, cmpdi_minus_1_rex64, cmpdi_1_rex64,
	 cmpdi_1_insn_rex64): New patterns.
	(adddi3): Turn to expander.
	(adddi3_1, adddi3_carry_rex64, adddi3_cc_rex64): New patterns.
	(addsi3_carry_zext): New pattern.
	(adddi_?_rex64): New patterns and splitters.
	(addsi_?_zext): New patterns.
	(subsi3_carry_zext): New pattern.
	(subdi_?_rex64): New patterns and splitters.
	(iorsi_?_zext): New patterns.
	(iordi_?_rex64): New patterns and splitters.
	(iorsi_?_zext): New patterns.
	(iorsi_?_zext_imm): New patterns.
	(xorsi_?_zext): New patterns.
	(xordi_?_rex64): New patterns and splitters.
	(xorsi_?_zext): New patterns.
	(negdi*): New patterns.
	(one_cmpldi*): Likewise.
	(one_cmplsi*_zext, negsi*_zext): Likewise.
	(testqi_ext_3_rex64): New pattern.

Sat Mar 24 21:13:28 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386-protos.h (ix86_split_long_move): Return void.
	* i386.c (ix86_split_to_parts): Handle 64bit target.
	(ix86_split_long_move): Likewise.
	* i386.md (all calls to ix86_split_long_move): Update.

2001-03-23  Richard Henderson  <rth@redhat.com>

	* config/mips/iris4.h (ASM_OUTPUT_ASCII): Rename local variables
	to avoid shadowing arguments.

2001-03-23  Jakub Jelinek  <jakub@redhat.com>

	* varasm.c (make_decl_rtl): Don't append var_labelno discriminator
	to variable names where DECL_NAME is different from
	DECL_ASSEMBLER_NAME.

2001-03-23  Jim Wilson  <wilson@redhat.com>

	* varasm.c (make_decl_rtl): Add TREE_PUBLIC check to abort test.
	(assemble_alias): Call make_decl_rtl.

Fri Mar 23 16:59:08 2001  J"orn Rennecke <amylaar@redhat.com>

	* stor-layout.c (layout_type): Give OFFSET_TYPE a MODE_INT type.

2001-03-23  Bryce McKinlay  <bryce@albatross.co.nz>

	* extend.texi: Document the "java_interface" attribute.

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

	* mkconfig.sh: Use a subshell with redirected stdout,
	instead of closing stdout and confusing commands that run
	afterward.  Throw away output of cmp.

2001-03-22  Gordon Sadler  <gbsadler1@lcisp.com>

	* Makefile.in (stage1_build): Pass CFLAGS to stage1_build.

Thu Mar 22 22:15:59 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (zero_extendsidi2_32): Break out from ...
	(zero_extendsidi2): ... here ; turn to expander.
	(zero_extendsidi2_rex64): New.
	(extendsidi2_32): Break out from ...
	(extendsidi2): ... here ; turn to expander.
	(extendsidi2_rex64): New.
	(zero_extendhidi2, zero_extendqidi2, extendhidi2, extendqidi2): New.
	(trunc?f?f splitters): Add 64bit versions.

Thu Mar 22 21:41:16 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (pushsi, pushsi2_prologue): Disable.
	(pushsi2_rex64): New.
	(movabs?i_1_rex64, movabs?i_2_rex64): New.
	(movqi_ext_1): Disable for 64bit.
	(movqi_ext_1_rex64): New.
	(pushdi2_rex64): New pattern, peep2s and splitter.
	(pushdi2_prologue_rex64): New pattern.
	(popdi1_epilogue_rex64, popdi1, movdi_xor_rex64, movdi_or_rex64):
	Likewise.
	(movdi splitters): Disable for 64bit.
	(movdi_1_rex64): New pattern, peep2s and splitters.
	(swapdi): New pattern.
	(pushsf): Disable for 64bit.
	(pushsf_rex64): New pattern and splitter.
	(pushdf_nointeger): Disable for 64bit.
	(pushdf_integer): Handle the 64bit case.
	(pushtf): Likewise; update splitters.

2001-03-22  Richard Henderson  <rth@redhat.com>

	* mkconfig.sh: Include insn-flags.h.
	* Makefile.in (CONFIG_H): Include insn-flags.h.
	(lots of objects): Remove insn-codes.h and insn-flags.h.

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

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

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

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

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

	* invoke.texi (-ffast-math): Remove duplicate line about
	__FAST_MATH__.

	* gcc.texi: Remove more obsolete documentation of bugs and
	installation problems.

2001-03-21  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.md (movsi_h8300hs): Split the 2nd alternative
	into two parts.

2001-03-20  Jason Merrill  <jason@redhat.com>

	* collect2.c (is_ctor_dtor): Always use '_' in the file fn names,
	not '.' or '$'.
	* tree.c (FILE_FUNCTION_FORMAT): Likewise.
	* varasm.c (CHKR_PREFIX): Likewise.

Wed Mar 21 14:27:11 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* gcse.c (hash_scan_set): An expression is not anticipatible if it
	is part of a multi-SET insn.

	* cse.c (find_comparison_args): Remove previous change.
	* ifcvt.c (noce_process_if_block): When moving an insn, remove any
	REG_EQUAL notes.

	* config/i386/i386.md (conditional_trap): Remove warning.

	* recog.c (push_operand): Fix error in last change that caused
	undefined symbol on many targets.

	* sdbout.c: #include ggc.h.
	(sdbout_init): Move to end of file.
	Call ggc_add_tree_root for anonymous_types.
	(sdbout_symbol): Use DECL_NAME for local, not DECL_ASSEMBLER_NAME.
	(sdbout_one_type): Use DECL_NAME for field name.
	* Makefile.in (sdbout.o): Show includes ggc.h.

Wed Mar 21 20:33:26 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.c (override_options): Default ix86_regparm to REGPARM_MAX.
	(override_options): Use properlimits for preferred_stack_boundary.
	(ix86_valid_type_attribute_p): Disable stdcall and cdecl attributes
	on x86_64.
	(ext_register_operand): Accept DImode.
	(load_pic_register): Abort on 64bit.
	(gen_push): Use Pmode instead of SImode.
	(ix86_save_reg): Pic reg is never used on 64bit.
	(ix86_expand_prologue): Likewise.
	(ix86_emit_save_regs): Use Pmode instead of SImode.
	(legitimate_address_p): Check displacement for 64bit.
	(print_operand): Avoid outputting of (%rip) on 64bit.
	(print_operand_address): Output (%rip) where possible.
	(split_di): Abort on 64bit registers.
	(ix86_expand_branch): DImode comparison is simple for x86_64.
	(memory_address_length): Recognize memory addresses formed using
	PRE/POST modify.
	(ix86_data_alignment, ix86_local_alignment): Align arrays to 16 bytes
	for x86_64.
	* i386.h (TARGET_USE_SAHF): Disable for 64bit.

Wed Mar 21 18:51:19 CET 2001  Jan Hubicka  <jh@suse.cz>

	* recog.c (push_operand): Recognize new format of push instructions.

Wed Mar 21 10:53:57 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (pushqi1): New.
	* i386-protos.h (x86_64_general_operand, x86_64_szext_general_operand,
	x86_64_nonmemory_operand, x86_64_szext_nonmemory_operand,
	x86_64_immediate_operand, x86_64_immediate_operand,
	x86_64_zext_immediate_operand): Declare.
	* i386.c (x86_64_general_operand, x86_64_szext_general_operand,
	x86_64_nonmemory_operand, x86_64_szext_nonmemory_operand,
	x86_64_immediate_operand, x86_64_immediate_operand,
	x86_64_zext_immediate_operand): define.
	* i386.h (PREDICATE_CODES): Add new predicates.

Wed Mar 21 10:25:13 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (pophi1, popqi1, pushqi1): Remove.

	* expr.c (emit_single_push_insn): New function.
	(move_by_pieces): Accept NULL as destination for push instructions.
	(gen_push_operand): Kill.
	(emit_push_insn): Pass NULL when pushing; avoid updating of
	stack_pointer_delta.
	* expr.h (gen_push_operand): Kill.

Tue Mar 20 20:15:06 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* rtl.texi (COMPARE): Clarify documentation and reference section
	on comparisons.

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

	* objc/objc-act.c (get_static_reference): Use NULL_TREE.
	(get_object_reference): Ditto.
	(error_with_ivar): Use error_with_file_and_line.
	(warn_with_method): Use warning_with_file_and_line.

2001-03-20  Tom Tromey  <tromey@redhat.com>

	* libgcc-std.ver: Added __fixunssfsi and __fixunsdfsi.

2001-03-20  Mark Mitchell  <mark@codesourcery.com>

	* tree.c (set_decl_assembler_name): Set DECL_ASSEMBLER_NAME for
	variables that are TREE_PUBLIC, even if not TREE_STATIC.

2001-03-20  DJ Delorie  <dj@redhat.com>

	* Makefile.in (install-libgcc): Pass complete list of variables.
	(install-multilib): Ditto.

2001-03-20  David Billinghurst  <David.Billinghurst@riotinto.com>

	* config/i386/cygwin.h: Declare ctor_section, dtor_section
	drectve_section, switch_to_section.

	* winnt.c: Declare functions associated_type, gen_stdcall_suffix,
	i386_pe_dllexport_p, i386_pe_dllimport_p, i386_pe_mark_dllexport,
	i386_pe_mark_dllimport.

2001-03-20  David Billinghurst <David.Billinghurst@riotinto.com>

	* config/i386/cygwin.h: Include <stdio.h> Declare and constify
	functions i386_pe_*.

	* config/i386/winnt.c: Include "tm_p.h" and "toplev.h" Constify
	i386_pe_* functions with char * arguments.

2001-03-20  Alexandre Oliva  <aoliva@redhat.com>

	* config/sh/sh.md (movsf_ie): Fix output patterns for fpul load
	and store.
	(movsi_ie): Introduce fpul store.

2001-03-20  Alan Modra  <alan@linuxcare.com.au>

	* Makefile.in (OBJS): Remove hashtab.o.

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

	* objc/objc-act.c (maybe_objc_method_name): Remove, never called.
	* c-lang.c (maybe_objc_method_name): Ditto.
	* c-tree.h (maybe_objc_method_name): Remove decl.

2001-03-19  Tom Tromey  <tromey@redhat.com>

	* gcc.c (init_gcc_specs): Fix comment.

2001-03-19  Mark Mitchell  <mark@codesourcery.com>

	Compute DECL_ASSEMBLER_NAME lazily.
	* tree.h (DECL_ASSEMBLER_NAME): Compute it lazily.
	(DECL_ASSEMBLER_NAME_SET_P): New macro.
	(SET_DECL_ASSEMBLER_NAME): Likewise.
	(COPY_DECL_ASSEMBLER_NAME): Likewise.
	(set_decl_assembler_name): Declare.
	(lang_set_decl_assembler_name): Likewise.
	* tree.c (lang_set_decl_assembler_name): New variab.e
	(set_decl_assembler_name): New function.
	(init_obstacks): Set lang_set_decl_assembler_name.
	(build_decl): Don't set DECL_ASSEMBLER_NAME.
	* c-decl.c (duplicate_decls): Use SET_DECL_ASSEMBLER_NAME,
	COPY_DECL_ASSEMBLER_NAME, etc.  Don't set DECL_ASSEMBLER_NAME
	where it's not necessary.
	(builtin_function): Likewise.
	(finish_decl): Likewise.
	* dbxout.c (dbxout_type_methods): Likewise.
	* ggc-common.c (ggc_mark_trees): Likewise.
	* profile.c (output_func_start_profiler): Likewise.
	* varasm.c (make_decl_rtl): Likewise.

	* cse.c (find_comparison_args): Update documentation.  Fix
	mishandling of COMPARE operations.

	* tree.def (ABS_EXPR): Add documentation.
	* fold-const.c (fold): Improve folding of ABS_EXPRs.

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

	* Makefile.in (hash.o): Depend on $(GCONFIG_H), not $(CONFIG_H).

2001-03-19  Jakub Jelinek  <jakub@redhat.com>

	* crtstuff.c (init_dummy): Use CRT_END_INIT_DUMMY if defined.
	Remove ia32 linux PIC kludge and move it...
	* config/i386/linux.h (CRT_END_INIT_DUMMY): ...here.

Mon Mar 19 18:53:54 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (absdf2 expander): Fix 64bit case.

2001-03-19  Brad Lucier  <lucier@math.purdue.edu>

	* Makefile.in: Have splay-tree.o depend on $(GCONFIG_H).

2001-03-16  Andrew Haley  <aph@cambridge.redhat.com>

	* config/ia64/libgcc-ia64.ver: Add __ia64_backtrace.

2001-03-19  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* README.X11: Remove obsolete file.

2001-03-18  Anthony Green  <green@redhat.com>

	* config/pj/pj.h: Remove some trailing commas.
	(ASM_SPEC): Use -EB and -EL, not -mb and -ml.

2001-03-18  Richard Henderson  <rth@redhat.com>

	* defaults.h (ACCUMULATE_OUTGOING_ARGS, PUSH_ARGS): Move from ...
	* calls.c: ... here.
	* combine.c, expr.c, final.c, function.c toplev.c: Don't provide
	defaults for them here.

2001-03-17  Anthony Green  <green@redhat.com>

	* config/pj/lib1funcs.S: Fix broken comment.
	* config/pj/pj.h (LOCAL_LABEL_PREFIX): Prefix internal
	labels with '.'.

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

	* gcc.texi: Remove obsolete information relating to build and
	installation problems with enquire or the Pyramid C compiler.

2001-03-17  Richard Henderson  <rth@redhat.com>

	* dwarf2out.c (queue_reg_save): New.
	(flush_queued_reg_saves, clobbers_queued_reg_save): New.
	(dwarf2out_frame_debug_expr): Call queue_reg_save instead of
	dwarf2out_reg_save.
	(dwarf2out_frame_debug): Call flush_queued_reg_saves when needed.
	(cfa, cfa_store, cfa_temp): Make static.
	* final.c (final_scan_insn): Always call dwarf2out_frame_debug.

2001-03-17  Richard Henderson  <rth@redhat.com>

	* integrate.h (struct inline_remap): Add local_return_label.
	* integrate.c (expand_inline_function): Initialize it and emit
	it after copy_insn_notes.
	(copy_insn_list): Don't store local_return_label here.
	(copy_insn_notes): New function split out from copy_insn_list.

2001-03-17  Richard Henderson  <rth@redhat.com>

	* dwarf2out.c (lookup_filename): Emit .file if the assembler
	is generating .debug_line.
	(dwarf2out_init): Add main_input_filename to the file table first.
	* configure.in (as_dwarf2_debug_line): Test with file number 1
	instead of file number 0.

Sat Mar 17 11:52:34 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* combine.c (undobuf): Remove field previous_undos; all refs deleted.
	(gen_rtx_combine): Deleted; all references changed as appropriate.
	(gen_unary): Deleted; all refs changed to call simplify_gen_unary.

	* print-tree.c (print_node): Print DECL_NONADDRESSABLE_P.

2001-03-17  David Billinghurst  <David.Billinghurst@riotinto.com>

	* config/i386/xm-cygwin.h: Include <sys/cygwin.h.  Remove unused
	variable.

2001-03-16  Jim Wilson  <wilson@redhat.com>

	* config/ia64/ia64.c (ia64_compute_frame_size): If reg_fp is zero,
	then set it to LOC_REG (79) instead of aborting.

2001-03-16  Phil Edwards  <pme@sources.redhat.com>

	* gccbug.in:  Remove high priority.

2001-03-16  Richard Henerson  <rth@redhat.com>

	* aclocal.m4 (gcc_AC_EXAMINE_OBJECT): Substitute leading od
	output with a space instead of deleting it.
	* configure: Regenerate.

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

	* aclocal.m4 (gcc_AC_EXAMINE_OBJECT): New utility macro which
	handles the gory details of converting an object file into
	something that's safe to grep.
	(gcc_AC_C_COMPILE_BIGENDIAN): Rename to
	gcc_AC_C_COMPILE_ENDIAN.  Use gcc_AC_EXAMINE_OBJECT.  Put
	newlines at either end of the string we're looking for.
	Make 'checking ...' message less stilted.
	(gcc_AC_C_FLOAT_FORMAT): Use gcc_AC_EXAMINE_OBJECT.  Handle
	ARM in-memory layout and its hypothetical converse.  Don't
	define HOST_FLOAT_WORDS_BIG_ENDIAN unless it's different from
	HOST_WORDS_BIG_ENDIAN.

	* configure.in: Adjust for renamed macro.  Move
	gcc_AC_C_FLOAT_FORMAT below gcc_AC_C_COMPILE_ENDIAN.
	* configure, config.in: Regenerate.

2001-03-16  Laurynas Biveinis  <lauras@softhome.net>

	* fixinc/Makefile.in: Set SHELL.

2001-03-16  Laurynas Biveinis  <lauras@softhome.net>

	* fixinc/fixincl.c (fix_with_system): Quote file names before
	passing them to shell.

2001-03-16  Laurynas Biveinis  <lauras@softhome.net>

	* Makefile.in: Use fix-header$(build_exeext) instead
	of fix-header.

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

	* dwarf2out.c: Revert most of 2000-11-25 and 2001-01-24 changes.
	(LN_PROLOG_AS_LABEL, LN_PROLOG_END_LABEL): New.
	(size_of_line_prolog): Remove.
	(output_line_info): Compute prologue size via label difference.
	(lookup_filename): Return "unspecified" for <internal> and <built-in>.

	* configure.in (HAVE_AS_DWARF2_DEBUG_LINE): Require that the
	assembler error when redefining file numbers.
	* config.in, configure: Rebuild.

	* dwarf2asm.c (dw2_asm_output_data): Mask data to the output size.
	(dw2_asm_output_data_uleb128): Use space not tab after .uleb128.
	(dw2_asm_output_delta_uleb128): Likewise.
	(dw2_asm_output_delta_sleb128): Similarly.
	(dw2_asm_output_data_sleb128): Similarly.  Print number in decimal.

2001-03-16  Michael Meissner  <meissner@redhat.com>

	* mips.h (BITMASK_HIGH): Replacement for 0x80000000 that avoids
	warnings.
	(BITMASK_UPPER16): Replacement for 0xffff0000 that avoids
	warnings.
	(BITMASK_LOWER16): Replacement for 0x0000ffff.

	* mips.c (save_restore_insns): Use BITMASK_UPPER16/BITMASK_LOWER16
	instead of 0xffff0000/0x0000ffff to avoid warnings about constants
	being unsigned in ISO C and signed in traditional.
	(expand_prologue): Ditto.
	(RA_MASK): Use BITMASK_HIGH to avoid warnings.

	* mips.md (divmodsi4,divmodsi4): Use BITMASK_HIGH to avoid
	warnings.
	(divsi3,divdi3): Ditto.
	(modsi3,moddi3): Ditto.
	(fix_truncdfsi2,fix_truncdfdi2): Ditto.
	(fix_truncsfsi2,fix_truncsfdi2): Ditto.
	(movsi split): Use BITMASK_UPPER16/BITMASK_LOWER16 to avoid
	warnings.

Fri Mar 16 14:47:57 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.c (ix86_expand_fp_movcc): Do not attempt to construct
	SSE based conditional moves on LTGT/UNEQ conditions;
	Canonicalize EQ to NE.
	* i386.md (sse_mov?fcc): Disallow EQ and NE in IEEE mode.
	(sse_mov?fcc_ne): New.

	* i386-protos.h (sign_extended_value, zero_extended_value): Declare.

2001-03-16  Alexandre Oliva  <aoliva@redhat.com>

	* config/sh/sh.c (sh_expand_prologue): Insns that set up the PIC
	register may be dead.

2001-03-16  Brad Lucier  <lucier@math.purdue.edu>

	* Makefile.in (hash.o): Depend on CONFIG_H.

2001-03-15  Mark Mitchell  <mark@codesourcery.com>

	* dwarf2out.c (rtl_for_decl_location): Use DECL_RTL_IF_SET.

2001-03-15  Richard Henderson  <rth@redhat.com>

	* config/ia64/ia64.h (ASM_OUTPUT_DWARF_OFFSET): New.
	(ASM_OUTPUT_DWARF_PCREL): New.
	* config/ia64/hpux.h (ASM_OUTPUT_DWARF_OFFSET): Remove.

2001-03-16  Alexandre Oliva  <aoliva@redhat.com>

	* cppfiles.c (stack_include_file): Use MAX of sysp.

2001-03-15  Steve Ellcey  <sje@cup.hp.com>

	* config.gcc (ia64*-*-hpux*): New case.
	* config/ia64/hpux.h: New file for HP-UX support.
	* config/ia64/t-hpux: New file for HP-UX support.

2001-03-16  Bruce Korb  <bkorb@gnu.org>, Alexandre Oliva  <aoliva@redhat.com>

	* fixinc/inclhack.def (irix_stdio_va_list): New.
	* fixinc/fixincl.x: Rebuilt.

2001-03-15  Richard Henderson  <rth@redhat.com>

	* dwarf2asm.c (dw2_asm_output_offset): Use ASM_OUTPUT_DWARF_OFFSET
	if provided by the target.
	(dw2_asm_output_pcrel): Likewise with ASM_OUTPUT_DWARF_PCREL.
	(dw2_asm_output_addr): New.
	* dwarf2asm.h (dw2_asm_output_addr): Declare.
	* dwarf2out.c (output_cfi): Use it for program addresses.
	(output_call_frame_info, output_die): Likewise.
	(output_aranges, output_line_info): Likewise.

2001-03-15  Bruce Korb  <bkorb@gnu.org>

	* gcc.c(main): make more rigorous
	* collect2.c(main): guard against ignoring SIGCHLD
	* protoize.c(main): ditto
	* gcc/fixinc/fixincl.c(initialize): ditto

2001-03-15  Mark Mitchell  <mark@codesourcery.com>

	* sdbout.c (sdbout_symbol): Use DECL_RTL_SET_P, SET_DECL_RTL.
	(sdbout_parms): Likewise.

Thu Mar 15 12:57:14 2001  Jeffrey A Law  (law@cygnus.com)

	* reload1.c (reload_cse_simplify_set): For LOAD_EXTEND_OP, do not
	"widen" a destination that is already wider than a word.  Also do
	not widen if LOAD_EXTEND_OP is NIL for the given mode.

2001-03-15  Bernd Schmidt  <bernds@redhat.com>

	* config/ia64/ia64.c (ia64_sched_reorder): Remove debugging aids.

Thu Mar 15 11:30:31 EST 2001  John Wehle  (john@feith.com)

	* i960.h (ROUND_TYPE_SIZE_UNIT): Fix typo.

Thu Mar 15 11:24:29 EST 2001  John Wehle  (john@feith.com)

	* i960.h (i960_maxbitalignment,
	i960_last_maxbitalignment): Declare.
	* i960.c (i960_maxbitalignment,
	i960_last_maxbitalignment): Make global.
	(process_pragma): Delete.
	(i960_pr_align, i960_pr_noalign): Move from here ...
	* i960-c.c: ... to this new file.
	* t-960bare (i960-c.o): New rule.
	* t-vxworks960 (i960-c.o): Likewise.
	* config.gcc (i960-*-*): Define c_target_objs and
	cxx_target_objs.

2001-03-15  Bernd Schmidt  <bernds@redhat.com>

	* cselib.c (hash_rtx): For REG and MEM, just use value of expression
	without adding in rtx code and mode.

	* alias.c (init_alias_analysis): Don't use any rtx whose value
	varies as a known value.
	Delete a superfluous test.

	* config/ia64/ia64.c (maybe_rotate): New function, broken out of
	ia64_sched_reorder.
	(ia64_sched_reorder): Call maybe_rotate; also rotate after
	scheduling a stop bit.
	(ia64_emit_nops): Correctly handle ASMs.

2001-03-15  Mark Mitchell  <mark@codesourcery.com>

	* varasm.c (assemble_variable): Use DECL_RTL_SET_P.

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

	* cpp.texi: Update documentation for -include and -imacros.
	* cppfiles.c (struct include_file): Remove "defined" memeber.
	(find_or_create_entry): Make a copy of the file name, and
	simplify it.
	(open_file): Update to ensure we use the simplified filename.
	(stack_include_file): Don't set search_from.
	(cpp_included): Don't simplify the path name here.
	(find_include_file): New prototype.  Call search_from to
	get the start of the "" include chain.  Don't simplify the
	filenames here.
	(_cpp_execute_include): New prototype.  Move diagnostics to
	do_include_common.  Update.
	(_cpp_pop_file_buffer): Don't set defined.
	(search_from): New prototype.  Use the preprocessor's cwd
	for files included from the command line.
	(read_name_map): Don't simplify the pathname here.
	* cpphash.h (enum include_type): New.
	(struct buffer): Delete search from.  New search_cached.
	(_cpp_execute_include): Update prototype.
	* cppinit.c (do_includes): Use _cpp_execute_include.
	* cpplib.c (do_include_common): New function.
	(do_include, do_include_next, do_import): Use it.

2001-03-14  Mark Mitchell  <mark@codesourcery.com>

	* varasm.c (assemble_alias): Use DECL_ASSEMBLER_NAME, not the
	contents of the RTL, to determine the name of the object.

2001-03-14  Mark Mitchell  <mark@codesourcery.com>

	* tree.h (DECL_RTL): Allocate RTL lazily.
	(SET_DECL_RTL): New macro.
	(DECL_RTL_SET_P): Likewise.
	(COPY_DECL_RTL): Likewise.
	(DECL_RTL_IF_SET): Likewise.
	* varasm.c (make_decl_rtl): Add assertions about the kind of
	declaration we are processing.
	* c-decl.c (duplicate_decls): Use COPY_DECL_RTL, DECL_RTL_SET_P, etc.
	(start_decl): Likewise.
	(finish_decl): Likewise.
	* c-semantics.c (emit_local_var): Likewise.
	* calls.c (expand_call): Likewise.
	* dbxout.c (dbxout_symbol): Likewise.
	* emit-rtl.c (unshare_all_rtl): Likewise.
	(unshare_all_decls): Likewise.
	(reset_used_decls): Likewise.
	* expr.c (store_constructor): Likewise.
	(safe_from_p): Likewise.
	(expand_expr): Likewise.
	* function.c (put_var_into_stack): Likewise.
	(instantiate_decls_1): Likewise.
	(assign_parms): Likewise.
	(expand_function_start): Likewise.
	(expand_function_end): Likewise.
	* ggc-common.c (gcc_mark_trees): Likewise.
	* integrate.c (function_cannot_inline_p): Likewise.
	(copy_decl_for_inlining): Likewise.
	(expand_inline_function): Likewise.
	(integrate_parm_decls): Likewise.
	(integrate_decl_tree): Likewise.
	* print-tree.c (print_node): Likewise.
	* reg-stack.c (stack_result): Likewise.
	* stmt.c (label_rtx): Likewise.
	(expand_return): Likewise.
	(expand_decl): Likewise.
	(expand_decl_cleanup): Likewise.
	(expand_anon_union_decl): Likewise.
	* toplev.c (check_global_declarations): Likewise.
	(rest_of_decl_compilation): Likewise.
	* tree.c (simple_cst_equal): Likewise.
	* objc/objc-act.c (generate_static_references): Likewise.

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

	* aclocal.m4 (gcc_AC_C_CHARSET, gcc_AC_C_COMPILE_BIGENDIAN,
	gcc_AC_C_FLOAT_FORMAT): New macros.
	* configure.in: Add AC_PROG_CPP after CC tests;
	gcc_AC_C_CHARSET and gcc_AC_C_FLOAT_FORMAT after the sizeof
	tests; and gcc_AC_C_COMPILE_BIGENDIAN after gcc_AC_C_CHAR_BIT.
	* configure, config.in: Regenerate.

	* config/a29k/xm-a29k.h, config/arc/xm-arc.h,
	config/arm/xm-arm.h, config/c4x/xm-c4x.h,
	config/convex/xm-convex.h, config/d30v/xm-d30v.h,
	config/i370/xm-linux.h, config/i370/xm-oe.h,
	config/ia64/xm-ia64.h, config/m32r/xm-m32r.h,
	config/m68k/xm-m68k.h, config/mips/xm-mips.h,
	config/pa/xm-linux.h, config/pa/xm-pa.h,
	config/rs6000/xm-lynx.h, config/rs6000/xm-mach.h,
	config/rs6000/xm-rs6000.h, config/rs6000/xm-sysv4.h,
	config/sparc/xm-sparc.h, config/vax/xm-vax.h,
	config/we32k/xm-we32k.h: Delete.

	* config/i370/xm-mvs.h, config/m88k/m88k.h,
	config/romp/xm-romp.h, config/rs6000/xm-beos.h,
	config/vax/xm-vms.h: Don't define any of:
	HOST_FLOAT_FORMAT, HOST_EBCDIC, HOST_WORDS_BIG_ENDIAN

	* config/rs6000/aix.h: Define COLLECT_EXPORT_LIST here.

	* config.gcc: Remove references to deleted files.
	(i370-*-opened*): Use i370/xm-mvs.h (which now defines only
	FATAL_EXIT_CODE, which is the same between oe and mvs).

2001-03-14  DJ Delorie  <dj@redhat.com>
	    Vladimir Makarov  <vmakarov@redhat.com>

	* config/i960/i960.c (i960_function_prologue): Compute size of
	frame according to number of registers actually saved there.

2001-03-14  Richard Henderson  <rth@redhat.com>

	* expr.c (emit_move_insn_1): Fix else if around #endif.

Wed Mar 14 22:39:12 CET 2001  Jan Hubicka  <jh@suse.cz>
			      Vojtech Pavlik

	* md.texi (machine constraints): Document 'Q', 'R', 'e' and 'Z'
	constraints.

Wed Mar 14 22:26:10 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.c (ix86_cmodel_string, ix86_cmodel): Define.
	(override_options): Parse cmodel string.
	(x86_64_sign_extended_value, x86_64_zero_extended_value): New.
	* i386.h (TARGET_OPTIONS): Add "cmodel".
	(EXTRA_CONSTRAINT): Recognize 'e' and 'Z'.
	(enum cmodel): New.
	(ix86_cmodel_string, ix86_cmodel): Declare.

Wed Mar 14 22:26:54 CET 2001  Jan Hubicka  <jh@suse.cz>

	Spot by Matt Kraai:
	* i386.h (GENERAL_REG_P): Add missing REG_P.

2001-03-14  Laurynas Biveinis  <lauras@softhome.net>

	* configure.in: Use $gcc_cv_as instead of $as.
	* configure: Regenerated.

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

	* cppfiles.c (stack_include_file): Only increase the include
	count if we actually process the file properly, as opposed
	to treating it as length zero.  Only call read_include_file
	if not DO_NOT_REREAD.  Handle the -H include file output
	here.
	(read_include_file): Remove now redundant DO_NOT_REREAD check.
	(cpp_included, find_include_file): Simplify pathnames after
	remapping them.  If remapping, don't use the remapped file
	name's buffer as our scratch buffer.
	(cpp_pop_file_buffer): Replace the multiple include macro
	only if it isn't yet set.
	(read_name_map): Simplify remapped names when reading in.
	(remap_filename): Move code to code path that uses it.
	(_cpp_simplify_pathname): Return the input pointer.
	* cpphash.h (_cpp_simplify_pathname): Update prototype.

2001-03-14  Mark Mitchell  <mark@codesourcery.com>

	* expr.c (expand_expr): Revove bogus conditional.

Wed Mar 14 19:29:50 CET 2001  Jan Hubicka  <jh@suse.cz>

	* expr.c (emit_move_insn_1): Guard PUSH_ROUNDING use by ifdef.

2001-03-14  Jakub Jelinek  <jakub@redhat.com>

	* reg-stack.c (stack_result): Unconditionally use
	FUNCTION_OUTGOING_VALUE resp. FUNCTION_VALUE.

Wed Mar 14 16:36:25 CET 2001  Jan Hubicka  <jh@suse.cz>

	* expr.c (emit_move_insn_1):  Split push of complex value when
	no suitable push instruction exist.

	* i386.md (QImode move/add/shift patterns): Use ANY_QI_REG_P
	instead of QI_REG_P.

Tue Mar 13 22:22:04 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* alias.c (handled_component_p, can_address_p): New functions.
	(get_alias_set): Use them.

2001-03-13  Jim Wilson  <wilson@redhat.com>

	* config/ia64/ia64.c (find_gr_spill): Subtract frame_pointer_needed
	from 80 in try_locals code.
	(ia64_expand_prologue): Add comment pointing to find_gr_spill change.

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

	* aclocal.m4 (gcc_AC_COMPILE_CHECK_SIZEOF, gcc_AC_C_CHAR_BIT,
	gcc_AC_C_LONG_LONG): New.
	* configure.in: Use them.  Probe the size of short, int, long,
	and long long/__int64 if we have them.  Move all the AC_C_*
	checks together, except gcc_AC_C_CHAR_BIT which has to go
	after AC_CHECK_HEADERS(limits.h).
	Take hwint.h out of host_xm_file and build_xm_file.

	* hwint.h: Unconditionally define HOST_BITS_PER_CHAR,
	HOST_BITS_PER_SHORT, HOST_BITS_PER_INT, HOST_BITS_PER_LONG,
	and HOST_BITS_PER_LONGLONG in terms of SIZEOF_* and CHAR_BIT.
	Move the HOST_WIDEST_INT setup logic here from system.h.
	Provide HOST_WIDEST_INT even if HOST_BITS_PER_LONGLONG is not
	defined.
	* system.h: Include hwint.h after limits.h.  HOST_WIDEST_INT
	is now handled by hwint.h.

	* config/alpha/xm-alpha-interix.h, config/alpha/xm-vms.h,
	config/c4x/xm-c4x.h, config/i370/xm-oe.h,
	config/ia64/xm-ia64.h: Don't define any of:
	HOST_BITS_PER_LONG, HOST_BITS_PER_CHAR, HOST_BITS_PER_SHORT,
	HOST_BITS_PER_LONGLONG.

	* config/alpha/xm-alpha.h, config/dsp16xx/xm-dsp16xx.h,
	config/h8300/xm-h8300.h, config/mips/iris6.h,
	config/mn10200/xm-mn10200.h, config/pa/xm-pa64hpux.h,
	config/sparc/xm-sp64.h: Delete.
	* config.gcc: Remove references to deleted files.

	* config/arm/xm-arm.h, config/mips/xm-mips.h: Don't define
	HOST_FLOAT_FORMAT to IEEE_FLOAT_FORMAT.
	* config/i370/xm-linux.h: Clarify floating-point situation in
	a comment.

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

	* cppfiles.c (NO_INCLUDE_PATH): New macro.
	(find_include_file): Decide here which part of the include
	chain to start the search.  Complain about an empty include
	chain in all cases apart from an abolsute file name.
	(_cpp_execute_include): Don't choose the search chain here.
	Don't call handle_missing_include in the case of an empty
	include chain.
	(_cpp_compare_file_date): Don't choose the search chain here.
	* cpplib.c (do_include_next): Move the in-main-file diagnostic
	here from _cpp_execute_include.  Behave like #include if
	we're in the main file.

2001-03-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* system.h (malloc, realloc, calloc, strdup): Only poison these
	tokens when IN_GCC is defined.

Tue Mar 13 14:38:44 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (abs?f expander): Support SSE case.
	(abd?f_if): Add new "USE"; add splitters.

2001-03-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* cpp.texi (poison): Explain the macro expansion exception.

2001-03-13  Jakub Jelinek  <jakub@redhat.com>

	* expr.c (store_expr): Add dont_store_target.  If temp is already in
	target before copying to reg, don't store it into target again.

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

	* cppinternals.texi: Update for file handling.

2001-03-12  Jeffrey Oldham  <oldham@codesourcery.com>

	* emit-rtl.c (remove_unnecessary_notes): Reverse Richard Kenner's
	2001-02-24 which broke building the Java library.
	* function.c (identify_blocks): Likewise.
	(all_blocks): Likewise.
	* integrate.c (integrate_decl_tree): Likewise.
	* print-tree.c (print_node): Likewise.
	* tree.h (BLOCK_NUMBER): Likewise.
	(struct tree_block): Likewise.

2001-03-12  David Edelsohn  <edelsohn@gnu.org>

	* rs6000/aix51.h (CPP_SPEC, CPLUSPLUS_CPP_SPEC): Fix typo in
	__WCHAR_TYPE__ definition.
	(WCHAR_TYPE_SIZE): #undef before #define.

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

	* cppfiles.c: Update comments.
	(destroy_include_file_node): Rename destroy_node.
	(find_or_create_entry): New function.
	(open_file, _cpp_fake_include): Use it.
	(handle_missing_header): New function, broken out of
	_cpp_execute include.  Don't segfault if there is no
	system or quoted path.
	(_cpp_execute_include): Use handle_missing_header.

2001-03-12  Jeffrey Oldham  <oldham@codesourcery.com>

	* jump.c (reversed_comparison_code_parts): Reverse Jan Hubricka's
	2001-02-28 patch because it breaks arm-linux and mips-sgi-irix6.5.

Mon Mar 12 14:05:32 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* flow.c (insn_dead_p): Don't consider two memrefs equivalent
	unless anti_dependence says they are.
	* alias.c (objects_must_conflict): If neither has a type specified,
	they must conflict.

2001-03-12  Neil Booth  <neil@daikokuya.demon.co.uk>
	    David Billinghurst <David.Billinghurst@riotinto.com>

	* config/mips/iris5.h:  Change WCHAR_TYPE to int.

Mon Mar 12 16:32:21 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (trunctfdf2_2): Rename missnamed pattern.
	(*_one_bit): Remove type on the match_operand in attributes.

Mon Mar 12 16:27:56 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.c: Commit forgotten hunk in previous patch.
	(regclass_map): Add extended registers.
	(dbx_register_map): Add missing frame register.

Mon Mar 12 15:41:08 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (all XFmode patterns except swapxf): Disable for 64bit.

	* i386.md (x86_sahf_1): Disable for 64bit.
	(popsi*, pophi*): Likewise.
	(pushqi, pushhi): Likewise.
	(movdi, pushdi): Likewise.
	(zero extend DImode splitter): Likewise.
	(adddi, minusdi splitter): Likewise.
	(umulsidi): Likewise.
	(umulsi): New.
	(mulsidi): Disable for 64bit
	(lshift:DI/ashift:DI): Disable for 64bit.
	(loop patterns): Likewise.
	(call_pop, call_value_pop expanders and patterns): Likewise.
	(prologue_get_pc): Likewise.
	(leave): Likewise.
	(fcmovDI pattern and splitter): Likewise.
	(movdfcc_1_rex64): New.

Mon Mar 12 15:16:36 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.h (VALID_FP_MODE_P): XFmode is invalid on x86_64.
	(MODES_TIEABLE_P): QImodes and DImodes are tiable on x86_64.
	(HARD_REGNO_CALLER_SAVE_MODE): Save QImodes as QImodes for x86_64.
	(STATIC_CHAIN_REGNUM): Set to r10 for x86_64.
	(PIC_OFFSET_TABLE_REGNUM): Set to INVALID_REGNUM for x86_64.
	(LIMIT_RELOAD_CLASS): Avoid limiting of QImodes on x86_64.
	(SECONDARY_OUTPUT_RELOAD_CLASS): No need to QImodes.
	(PUSH_ROUNDING): x86_64 rounds to 64bits.
	(CONSTANT_ADDRESS_P): Accept CONST_DOUBLE.
	(REGPARM_MAX): Set to 6 for x86_64.
	(SSE_REGPARM_MAX): Set to 16 for x86_64.
	* i386.c (hard_regno_mode_ok): QImodes can be in all general purpose
	registers.

	* (patterns that does use upper halves): Update constraints
	'q' to 'Q' and 'r' to 'R'.
	(cmpqi_ext_1): Disable for 64bit.
	(cmpqi_ext_3_insn): Likewise.
	(movqi_extzv_1): Likewsie.
	(addqi_ext_1): Liekwsie
	(testqi_ext_1): Liekwsie
	(andqi_ext_1): Liekwsie
	(xorqi_ext_1): Liekwsie
	(cmpqi_ext_1_rex64): New.
	(cmpqi_ext_3_insn_rex64): Likewise.
	(movqi_extzv_1_rex64): Likewsie.
	(addqi_ext_1_rex64): Liekwsie
	(testqi_ext_1_rex64): Liekwsie
	(andqi_ext_1_rex64): Liekwsie
	(xorqi_ext_1_rex64): Liekwsie

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

	* configure.in: Move check for unsigned enumerated bitfields
	to macro in aclocal.m4.  Disable it for now.
	* configure, config.in: Regenerate.
	* system.h: Don't do anything with ONLY_INT_FIELDS.  Use the
	unsigned-int form of ENUM_BITFIELD() unless being compiled by GCC.
	* varasm.c (struct rtx_const): Use ENUM_BITFIELD().  Move enum
	kind above its first use.

	* config/xm-interix.h, config/alpha/xm-alpha.h,
	config/i370/xm-linux.h, config/i386/xm-beos.h,
	config/i386/xm-mingw32.h, config/mips/xm-mips.h,
	config/pa/xm-pa.h, config/pa/xm-pa64hpux.h,
	config/rs6000/xm-beos.h, config/rs6000/xm-sysv4.h,
	Don't define ONLY_INT_FIELDS under any circumstances.

	* config/pa/xm-pa.h: Don't define __BSD_NET2__.

	* config/pa/xm-pahpux.h, config/pa/xm-papro.h,
	config/sparc/xm-sysv4.h: Delete - now identical with some
	other xm header.
	* config.gcc (hppa targets): Replace xm-pahpux.h and
	xm-papro.h with implicit xm-pa.h.
	(sparc targets): Replace xm-sysv4.h with implicit or explicit
	xm-sparc.h.

2001-03-12  Aldy Hernandez  <aldyh@redhat.com>

	* reload1.c (reload_cse_simplify): Call reload_cse_simplify_set
	before reload_cse_noop_set_p.

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

	* config.gcc: Where xm-host.h used to include another
	xm-host.h, list the nested header directly in xm_file.  Remove
	references to deleted files.  Can now use sparc/xm-sp64.h for
	sparcv9-*-solaris*.

	* config/xm-linux.h, config/arm/xm-linux.h,
	config/i386/xm-dos.h, config/i386/xm-gnu.h,
	config/i386/xm-linux.h, config/i386/xm-openbsd.h,
	config/i860/xm-fx2800.h, config/m68k/xm-atari.h,
	config/m68k/xm-linux.h, config/m68k/xm-sun3.h,
	config/sparc/xm-linux.h, config/sparc/xm-sysv4-64.h:
	Delete.

	* config/alpha/xm-alpha-interix.h: Don't include alpha/xm-alpha.h.
	* config/mips/xm-iris5.h: Don't include mips/xm-mips.h.  Don't
	bother to wrap #undef in #ifdef.
	* config/pa/xm-linux.h, config/rs6000/xm-sysv4.h:
	Don't include xm-linux.h.
	* config/sparc/xm-sp64.h: Don't include sparc/xm-sparc.h.

	* configure.in: Wrap regexps using [] in changequote block.
	Use expr : not echo | grep.  Simplify regexps.
	* configure: Regenerate.

	56 xm-files remain, 22 xm-arch.

2001-03-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* mips-tfile.c: Cast arg to PTR when specifier is HOST_PTR_PRINTF.
	(__proto, PTR_T, CPTR_T): Delete, use PARAMS/PTR instead.
	(local_index, local_rindex): Delete, use strchr/strrchr instead.
	(copy_object): Fix format specifier vs argument mismatch.

	* mips-tdump.c: Make local functions static.
	(rindex): Don't #undef.
	(__proto, PTR_T, CPTR_T): Delete, use PARAMS/PTR instead.
	(fatal, fancy_abort): Delete.
	(read_seek): Avoid signed/unsigned compare.

Sun Mar 11 17:01:41 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* combine.c (try_combine): Fix error in change to try original
	register.
	(gen_rtx_combine): Do same as gen_rtx for now.

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

	* configure.in: AC_SUBST xm_defines.
	* configure: Regenerate.
	* Makefile.in: Set DEFINES=$(xm_defines) when building
	tconfig.h.

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

	* cppfiles.c (INCLUDE_LEN_FUDGE, ENOMEM): Delete.
	(cpp_included, find_include_file): Update.
	(_cpp_compare_file_date): Make else unconditional.

2001-03-10  kaz Kojima <kkojima@rr.iij4u.or.jp>

	* config/sh/sh.h (LEGITIMATE_PIC_OPERAND_P): Defined.

2001-03-10  Toshiyasu Morita  <toshiyasu.morita@hsa.hitachi.com>

	* config/sh/sh.md (umulhisi3_i, mulhisi3_i): Fix mnemonics.
	* config/sh/lib1funcs.asm (mulsi3): Convert mulu to mulu.w.

Sat Mar 10 22:42:05 2001  Alexandre Oliva  <aoliva@redhat.com>

	* tree.c (build_common_tree_nodes_2): Don't copy va_list_type_node
	if it's a record type.

Sat Mar 10 17:52:54 2001  Christopher Faylor <cgf@cygnus.com>

	* config/i386/cygwin.h: Make ../w32api a system directory.  Reorganize
	mingw includes slightly.

2001-03-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* system.h (malloc, realloc, calloc, strdup, bzero, bcmp, rindex):
	#undef token before poisoning it.

2001-03-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* alpha.c (check_float_value): Use memcpy, not bcopy.

	* m32r.c (m32r_sched_reorder): Likewise.

	* vax.c (check_float_value): Likewise.

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

	* toplev.c (file_name_nondirectory): Remove.
	* toplev.h: Similarly.
	* dwarf2out.c (compute_section_prefix): Use lbasename instead
	of file_name_nondirectory.

Sat Mar 10 10:36:45 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* mips-tdump.c (read_seek): Call xmalloc, not malloc.
	* mips-tfile.c: Don't #undef rindex; not used.

Sat Mar 10 14:34:59 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.h (DBX_REGISTER_NUMBER): Return proper values for 64bits.
	(dbx64_register_map): Declare.
	(RETURN_ADDR_RTX): Fix for 64bit.
	(DWARF_FRAME_RETURN_COLUMN): Set to 16 for 64bit.
	(INCOMING_FRAME_SP_OFFSET): Set to 8.
	* i386.c (dbx64_register_map): New global array.
	* beos-elf.h, freebsd.h, i386-interix.h, i386elf.h,
	linux.h (DBX_REGISTER_REGNUMBER): Use dbx64_register_map
	for 64bits.

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

	* cppfiles.c (search_from): Use lbasename.
	* mkdeps.c (deps_add_default_target): Use lbasename.

2001-03-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* fixinc/server.c (load_data, run_shell): Use xmalloc, xrealloc &
	xcalloc in lieu of malloc, realloc & calloc.

	* gencheck.c (xmalloc): Use really_call_malloc, not malloc.

	* gengenrtl.c (xmalloc): Likewise.

	* gensupport.c (xcalloc, xrealloc, xmalloc): Use the
	really_call_* memory allocation routines.

	* stmt.c (check_for_full_enumeration_handling): Use
	really_call_calloc, not calloc.

	* system.h (really_call_malloc, really_call_calloc,
	really_call_realloc): Define.
	(malloc, realloc, calloc, strdup, bzero, bcmp, rindex): Poison.

Fri Mar  9 18:39:19 2001  Jeffrey A Law  (law@cygnus.com)

	* pa.md (builtin_longjmp): Rework slightly to work for PA64 too.

2001-03-09  Nicola Pero <n.pero@mi.flashnet.it>

	* configure: Rebuilt.
	* configure.in: Only use `lang_requires' for languages athat are
	actually enabled.

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

	* invoke.texi: Fix typo.
	* gcc.1: Regenerate.

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

	* configure.in: Prune nonexistent files from build_xm_file,
	xm_file, and host_xm_file lists.  Warn unless they're
	$cpu/xm-$cpu.h.
	Don't generate *config.h here.
	AC_SUBST all variables needed to generate *config.h.
	* configure: Regenerate.
	* mkconfig.sh: New helper script, from code removed from
	configure.in.
	* Makefile.in: Zap all MALLOC variables - no longer used
	anywhere, and malloc.c doesn't exist.
	Substitute in variables needed to generate *config.h.
	Stop lying about the dependencies contained in CONFIG_H and
	GCONFIG_H.
	(HCONFIG_H, TCONFIG_H, TM_P_H): New variables.
	(config.h, hconfig.h, tconfig.h, tm_p.h, cs-config.h,
	cs-hconfig.h, cs-tconfig.h, cs-tm_p.h): New rules.
	(all .o): Add dependencies on $(HCONFIG_H), $(TCONFIG_H),
	$(TM_P_H), etc. as appropriate.

	* config.gcc: Zap references to deleted files.
	* ggc-none.c: Don't include rtl.h or tm_p.h.

	* config/i386/xm-beos.h, config/i386/xm-dgux.h,
	config/i386/xm-djgpp.h, config/i386/xm-dos.h,
	config/i386/xm-gnu.h, config/i386/xm-i386-interix.h,
	config/i386/xm-linux.h, config/i386/xm-linux.h,
	config/i386/xm-next.h, config/i386/xm-openbsd.h,
	config/i386/xm-sun.h, config/i386/xm-sysv3.h:
	Don't include i386/xm-i386.h.

	* config/elxsi/xm-elxsi.h, config/i386/xm-bsd386.h,
	config/i386/xm-i386.h, config/i860/xm-i860.h,
	config/i960/xm-i960.h, config/mcore/xm-mcore.h,
	config/mn10300/xm-mn10300.h, config/ns32k/xm-ns32k.h,
	config/pj/xm-pj.h, config/sh/xm-sh.h, config/v850/xm-v850.h:
	Delete (empty except comments, #includes of other deleted
	files, and macros used nowhere).

Fri Mar  9 20:05:27 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.h (MAX_WCHAR_TYPE_SIZE): New constant to keep tradcpp
	independent on TARGET_FLAGS.

Fri Mar  9 19:52:52 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.h (FIRST_PSEUDO_REGISTER): Set to 53.

	(FIXED_REGISTERS, CALL_USED_REGISTERS, REG_ALLOC_ONES): Add
	extended ones.
	(CONDITIONAL_REGISTER_USAGE): Set proper values according to
	TARGET_64BIT.
	(FIRST_REX_INT_REG, LAST_REX_INT_REG, FIRST_REX_SSE_REG,
	LAST_REX_SSE_REG): define.
	(enum reg_class): Add 'LEGACY_REGS'
	(REG_CLASS_CONTENTS): Likewise; add extended registers.
	(SSE_REGNO_P): Recognize extended registers.
	(ANY_QI_REG_P, REX_INT_REGNO_P, REX_INT_REG_P): New.
	(REG_CLASS_FROM_LETTER): Add 'R' and 'Q'.
	(REGNO_OK_FOR_INDEX_P, REGNO_OK_FOR_BASE_P,
	REG_OK_FOR_BASE_NONSTRICT_P): Recognize REX registers.
	(REG_OK_FOR_STRREG_NONSTRICT_P, REG_OK_FOR_STRREG_STRICT_P,
	 REG_OK_FOR_STRREG_P): Remove.
	(HI_REGISTER_NAMES): Add extended registers.
	(ADDITIONAL_REGISTER_NAMES): Likewise.
	(QI_REGISTER_NAMES): Add 8bit extended registers.
	(DEBUG_REG): Support extended registers.
	* i386.c (regclass_map): Add extended registers.
	(dbx_register-map): Likewise.
	(svr4_dbx_register_map): Likewise.
	(print_reg): Support extended registers.
	(print_operand): Support 64bit operands.

Fri Mar  9 19:37:46 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Set to 128bit for x86_64
	(BOOL_TYPE_SIZE, SHORT_TYPE_SIZE, INT_TYPE_SIZE,
	 FLOAT_TYPE_SIZE, LONG_TYPE_SIZE, MAX_LONG_TYPE_SIZE,
	 DOUBLE_TYPE_SIZE, LONG_LONG_TYPE_SIZE): New constants.
	(BITS_PER_WORD, UNITS_PER_WORD, POINTER_SIZE, PARM_BOUNDARY,
	 STACK_BOUNDARY): Set properly for 64bits.
	(MAX_BITS_PER_WORD, MIN_UNITS_PER_WORD): New constants.
	(EMPTY_FIELD_BOUNDARY): Define using BITS_PER_WORD.
	(BIGGEST_FIELD_ALIGNMENT): Set to 128 for 64bits.
	(MOVE_MAX): Set to 16.
	(MOVE_MAX_PIECES): 8 for 64bit.
	(Pmode): Set to SImode.

Fri Mar  9 09:00:36 2001  Mike Stump  <mrs@wrs.com>

	* cselib.c (hash_rtx): Ensure that hash isn't zero upon return.

Fri Mar  9 17:38:08 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.h (mask_64bit): New constant.
	(target_64bit): New macro.
	(target_options): Add '64'/'32'
	(target_default): Define.
	* cygwin.h freebsd-aout.h i386-interix.h i386.h i386elf.h isc.h
	isccoff.h netbsd.h next.h openbsd.h p sco.h sco5.h scodbx.h sequent.h
	unix.h win32.h (TARGET_DEFAULT): Rename to TARGET_SUBTARGET_DEFAULT.

Thu Mar  8 23:36:56 2001  Jeffrey A Law  (law@cygnus.com)

	* config/pa/som.h (MAKE_DECL_ONE_ONLY, ASM_WEAKEN_LABEL): Disable.

Thu Mar  8 23:29:37 2001  John Wehle  (john@feith.com)

	* rtlanal.c (rtx_varies_p): Check operand 0 of a
	LO_SUM unless for_alias is set.

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

	* objc/objc-act.c: Fix old typos in comments, add comments for
	various functions.
	(hash_init): Fix file name in error message.
	(hash_enter): Ditto.
	(hash_add_attr): Ditto.
	(continue_class): Ditto.

2001-03-08  Bruce Korb  <bkorb@gnu.org>

	gcc.c(main): ensure SIGCHLD handling is set to SIG_DFL so that
	wait4() can receive the signal.

Thu Mar  8 21:09:10 2001  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* fixinc/inclhack.def (AAB_dgux_int_varargs): Don't use HTML
	entities.
	* fixinc/fixincl.x: Regenerate.

Thu Mar  8 21:09:10 2001  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* fixinc/inclhack.def (AAA_standards): Undo <standards.h> breakage
	on Tru64 UNIX.
	* fixinc/fixincl.x: Regenerate.

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

	* configure.in (HAVE_AS_LEB128): New assembler check.
	* configure, config.in: Rebuilt.

Thu Mar  8 19:54:04 CET 2001  Jan Hubicka  <jh@suse.cz>

	* reg-stack.c (move_for_stack_reg): Avoid non-poping fst for
	TFmode too.

2001-03-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* config/ns32k/xm-pc532-min.h, config/we32k/xm-we32k.h: Delete
	references to the MAXPATHLEN macro.

	* config/alpha/xm-alpha.h, config/arm/xm-arm.h,
	config/i386/xm-cygwin.h, config/xm-linux.h: Delete references to
	the POSIX macro.

	* config/i386/xm-gnu.h, config/xm-gnu.h,
	config/alpha/xm-openbsd.h, config/i386/xm-openbsd.h,
	config/m68k/xm-openbsd.h, config/mips/xm-openbsd.h,
	config/sparc/xm-openbsd.h, config/xm-openbsd.h: Delete empty
	and/or unused files.

	* config.gcc: Define POSIX in xm_defines as appropriate in lieu of
	doing so in various xm-*.h files.

Thu Mar  8 06:32:50 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* config/i386/i386.md (clrstrsi): Call ix86_set_move_mem_attrs.

2001-03-08  Alexandre Oliva  <aoliva@redhat.com>

	* configure.in (enable_shared): Support per-package shared-library
	enabling.
	* configure: Rebuilt.

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

	* rs6000.md (cr logic): Add original POWER mnemonic alternative
	for crnot.  Set operands[5] in splitter.

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

	* config/i370/xm-mvs.h, config/i370/xm-oe.h,
	config/i386/xm-beos.h, config/i386/xm-mingw32.h,
	config/m88k/xm-m88k.h, config/mips/xm-iris6.h,
	config/mips/xm-openbsd.h, config/pa/xm-pa64hpux.h,
	config/pa/xm-pahpux.h, config/rs6000/xm-beos.h,
	config/rs6000/xm-darwin.h, config/rs6000/xm-mach.h,
	config/rs6000/xm-rs6000.h, config/xm-interix.h: Delete references
	to the USG macro.

	* config/vax/xm-vaxv.h, config/a29k/xm-unix.h,
	config/i370/xm-i370.h, config/i386/xm-dgux.h,
	config/i386/xm-sun.h, config/i386/xm-sysv3.h,
	config/m68k/xm-tower.h, config/m68k/xm-aux.h,
	config/m68k/xm-hp320.h, config/m68k/xm-amix.h,
	config/m68k/xm-altos3068.h, config/m68k/xm-mot3300.h,
	config/m68k/xm-m68kv.h, config/m88k/xm-openbsd.h,
	config/mips/xm-nws3250v4.h, config/mips/xm-sysv.h,
	config/mips/xm-iris3.h, config/mips/xm-iris4.h, config/xm-svr3.h,
	config/xm-svr4.h, config/sparc/xm-pbd.h, config/clipper/xm-clix.h:
	Delete unused and/or empty files.

	* config.gcc: Define USG in xm_defines as appropriate.  Define
	POSIX in lieu of xm-svr4.h.  Delete all references to the SVR3
	macro.  Remove deleted xm-* files from $xm_files variable.

2001-03-07  Tom Tromey  <tromey@redhat.com>

	* configure: Rebuilt.
	* configure.in: Allow config-lang.in to set `lang_requires' to list
	of other required languages.

2001-03-07  Andrew MacLeod  <amacleod@redhat.com>

	* config/a29k/a29k.c (print_operand): Free a29k_last_prologue_insn
	after its emitted.
	(output_prologue): Use xmalloc not oballoc.
	(output_epilog): Free a29k_first_epilogue_insn when finished.
	* confif/a29k/a29k.h (PREDICATE_CODES): Remove shift_constant_operand.

2001-03-07  Brad Lucier  <lucier@math.purdue.edu>

	* builtins.c (expand_builtin_mathfn): Check
	flag_unsafe_math_optimizations, not flag_fast_math.
	(expand_builtin): Likewise
	* combine.c (combine_simplify_rtx): Likewise.
	(simplify_if_then_else): Likewise.
	* cse.c (fold_rtx): Likewise.
	* flags.h: Remove flag_fast_math.  Add
	flag_unsafe_math_optimizations and flag_trapping_math.
	* fold-const.c (negate_expr): Check
	flag_unsafe_math_optimizations, not flag_fast_math.
	(invert_truthvalue): Likewise.
	(fold): Likewise.  Before associating operands, check that
	code == MULT_EXPR, not code != MULT_EXPR.
	* ifcvt.c (noce_try_minmax): Check
	flag_unsafe_math_optimizations, not flag_fast_math.
	(noce_operand_ok): Check flag_trapping_math, not flag_fast_math.
	* invoke.texi: Document -funsafe-math-optimizations and
	-fno-trapping-math.  Change documentation for -ffast-math.
	* jump.c (reversed_comparison_code_parts): Likewise.
	(rtx_equal_for_thread_p): Likewise.
	* optabs.c (emit_conditional_move): Likewise.
	* simplify-rtx.c (simplify_binary_operation): Likewise.
	(simplify_relational_operation): Likewise.
	(simplify_ternary_operation): Likewise.
	* toplev.c: Remove flag_fast_math.  Add flag_trapping_math and
	flag_unsafe_math_optimizations.  Remove fast-math entry from f_options.
	Add trapping-math and unsafe-math-optimizations entries to f_options.
	(set_fast_math_flags): New, sets flags for -ffast-math.
	(set_no_fast_math_flags): New, sets flags for -fno-fast-math.
	(decode_f_option): Add code to handle -ffast-math and -fno-fast-math.
	* toplev.h: Declare set_fast_math_flags and set_no_fast_math_flags.

	* config/alpha/alpha.c (alpha_emit_conditional_branch): Likewise.
	(alpha_emit_conditional_move): Initialize local_fast_math to
	flag_unsafe_math_optimizations, not flat_fast_math.
	* config/c4x/c4x.c (c4x_override_options): Call set_fast_math_flags
	instead of setting flag_fast_math to 1.
	* config/convex/convex.md: Check flag_unsafe_math_optimizations,
	not flag_fast_math.
	* config/i386/i386.c (override_options): Likewise
	* config/i386/i386.md: Likewise.
	* config/m68k/m68k.md: Likewise.
	* config/mips/mips.md: Likewise.
	* config/rs6000/rs6000.c (validate_condition_mode): Likewise.
	(rs6000_generate_compare): Likewise.

2001-03-07  Laurynas Biveinis  <lauras@softhome.net>

	* Makefile.in: Set RANLIB to @RANLIB@.
	Remove RANLIB_TEST.

2001-03-07  Laurynas Biveinis  <lauras@softhome.net>

	* fixinc/inclhack.def (djgpp_wchar_h): New test.
	* fixinc/fixincl.x: Regenerated.

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

	* config/alpha/alpha.md (call_osf_1_noreturn): New pattern.

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

	* emit-rtl.c (remove_unnecessary_notes): Verify proper nesting
	of block notes and exception handling notes.

	* lists.c (init_EXPR_INSN_LIST_cache): Don't check initialized.
	* toplev.c (rest_of_compilation): Call init_EXPR_INSN_LIST_cache ...
	(compile_file): ... here.

2001-03-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* fixinc/Makefile.in (FIXINC_DEFS): Add -DHAVE_CONFIG_H.

	* fixinc/gnu-regex.c: Don't include auto-host.h since we get
	config.h now.  Include libiberty.h to handle alloca.

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

	* c-parse.in (yylexname): New function, split out of _yylex.
	(objc_rid_sans_at): New table.
	(init_reswords): Initialize it.
	(_yylex): Give labels clearer names.  Handle CPP_ATSIGN by
	retrieving the next token and checking it for significance as
	an ObjC keyword or string constant.

	* cpplex.c (_cpp_lex_token): Just return CPP_ATSIGN for '@'.
	* cpplib.h (TTYPE_TABLE): Add CPP_ATSIGN, drop CPP_OSTRING.

	* c-lex.c, c-parse.in, cppmacro.c, cpplex.c: Remove references
	to CPP_OSTRING.

2001-03-06  Stephen L Moshier  <moshier@mediaone.net>

	* config/m68k/m68k.c (const_uint32_operand): Accept any
	const_int on a 32-bit host.

2001-03-06  Nicola Pero  <n.pero@mi.flashnet.it>

	* objc/objc-act.c (init_objc): Set save_lang_status,
	restore_lang_status, and mark_lang_status.

2001-03-06  Krister Walfridsson  <cato@df.lth.se>

	* dwarf2asm.c (dw2_asm_output_delta): Fix smallest_mode_for_size call.

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

	* cppinternals.texi: Update.

2001-03-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* config/a29k/xm-a29k.h, config/a29k/xm-unix.h,
	config/alpha/xm-alpha.h, config/arc/xm-arc.h, config/arm/xm-arm.h,
	config/c4x/xm-c4x.h, config/clipper/xm-clix.h,
	config/convex/xm-convex.h, config/d30v/xm-d30v.h,
	config/dsp16xx/xm-dsp16xx.h, config/elxsi/xm-elxsi.h,
	config/h8300/xm-h8300.h, config/i370/xm-i370.h,
	config/i370/xm-linux.h, config/i370/xm-mvs.h, config/i370/xm-oe.h,
	config/i386/xm-i386.h, config/i860/xm-i860.h,
	config/i960/xm-i960.h, config/ia64/xm-ia64.h,
	config/m32r/xm-m32r.h, config/m68k/xm-m68k.h,
	config/m88k/xm-m88k.h, config/mcore/xm-mcore.h,
	config/mips/xm-mips.h, config/mn10200/xm-mn10200.h,
	config/mn10300/xm-mn10300.h, config/ns32k/xm-ns32k.h,
	config/pa/xm-linux.h, config/pa/xm-pa.h, config/pa/xm-pa64hpux.h,
	config/pa/xm-pahpux.h, config/pa/xm-papro.h, config/pj/xm-pj.h,
	config/romp/xm-romp.h, config/rs6000/xm-beos.h,
	config/rs6000/xm-lynx.h, config/rs6000/xm-rs6000.h,
	config/rs6000/xm-sysv4.h, config/sh/xm-sh.h,
	config/sparc/xm-sparc.h, config/sparc/xm-sysv4.h,
	config/v850/xm-v850.h, config/vax/xm-vax.h, config/vax/xm-vms.h,
	config/we32k/xm-we32k.h: Delete HOST_BITS_PER_* definitions which
	match the defaults provided in hwint.h.

	* config/i386/xm-lynx.h, config/m68k/xm-lynx.h,
	config/sparc/xm-lynx.h, config/xm-std32.h: Delete files.

	* config.gcc (xm_file): Don't set to files which are deleted.

	* hwint.h: Provide default values for HOST_BITS_PER_*.  No longer
	guard this file against these macros being undefined.

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

	* objc/objc-act.c (objc_add_static_instance): Set DECL_INITIAL
	and DECL_DEFER_OUTPUT on the decl we create, before calling
	rest_of_decl_compilation.

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

	* aclocal.m4 (AM_GNU_GETTEXT): Don't AC_REQUIRE
	AC_FUNC_ALLOCA.
	* configure, config.in: Regenerate.
	* config.gcc: Remove references to deleted files.

	* genattr.c, genattrtab.c, genextract.c, genoutput.c,
	genrecog.c, rtl.c: Do not use alloca anywhere.

	* Makefile.in, build-make, system.h, config/x-interix,
	config/x-svr4, config/xm-interix.h, config/xm-openbsd.h,
	config/alpha/xm-alpha.h, config/alpha/xm-vms.h,
	config/arc/xm-arc.h, config/arm/xm-arm.h,
	config/d30v/xm-d30v.h, config/dsp16xx/xm-dsp16xx.h,
	config/h8300/xm-h8300.h, config/i370/x-oe,
	config/i370/xm-linux.h, config/i386/x-aix, config/i386/x-beos,
	config/i386/x-ncr3000, config/i386/x-sco5,
	config/i386/xm-dgux.h, config/i860/x-sysv4,
	config/i960/xm-i960.h, config/m32r/xm-m32r.h,
	config/m68k/x-crds, config/m68k/x-dpx2, config/m68k/x-hp320,
	config/m68k/x-hp320g, config/m69k/x-mot3300,
	config/m68k/x-mot3300-gas, config/m68k/xm-amix.h,
	config/m68k/xm-hp320.h, config/m68k/xm-m68kv.h,
	config/m68k/xm-mot3300.h, config/m88k/x-dolph,
	config/m88k/x-sysv4, config/m88k/x-tekXD88,
	config/m88k/xm-m88k.h, config/mcore/xm-mcore.h,
	config/mips/x-iris, config/mips/x-iris3,
	config/mips/x-sni-svr4, config/mips/x-sysv,
	config/mips/xm-iris6.h, config/mips/xm-mips.h,
	config/mips/xm-nws3250v4.h, config/pa/x-hpux,
	config/pa/x-pa-mpeix, config/pa/xm-pa.h,
	config/pa/xm-pa64hpux.h, config/pa/xm-pahpux.h,
	config/pa/xm-papro.h, config/romp/xm-romp.h,
	config/rs6000/x-aix31, config/rs6000/x-aix41,
	config/rs6000/x-beos, config/rs6000/x-lynx,
	config/rs6000/x-mach, config/rs6000/x-rs6000,
	config/rs6000/x-sysv4, config/rs6000/xm-rs6000.h,
	config/rs6000/xm-sysv4.h, config/sh/xm-sh.h,
	config/sparc/x-sysv4, config/sparc/xm-linux.h,
	config/sparc/xm-pbd.h, config/sparc/xm-sparc.h,
	config/vax/xm-vms.h: Eradicate all references to alloca and
	related stuff.

	* config/xm-alloca.h, config/clipper/x-clix,
	config/i386/xm-sysv4.h, config/i860/x-fx2800,
	config/i860/x-sysv3, config/m88k/x-sysv3,
	config/sparc/xm-sol2.h, config/we32k/x-we32k: Delete
	(contained only alloca related hacks).

	* config/i386/xm-beos.h, config/rs6000/xm-beos.h: Just define
	USE_C_ALLOCA.

2001-03-05  Brad Lucier  <lucier@math.purdue.edu>

	* invoke.texi: Document __FAST_MATH__.

2001-03-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* crtstuff.c: Restore include of auto-host.h.

2001-03-05  Fergus Henderson  <fjh@cs.mu.oz.au>

	Put main() in a separate file, so that the language
	front-end can use a different main().

	* main.c: New.
	* toplev.c: (main): Rename as toplev_main.
	* toplev.h: Declare toplev_main.
	* Makefile.in (OBJS): add toplev.o.
	  (BACKEND): remove toplev.o, add main.o.

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

	* cppfiles.c (search_from): Special case the empty string.

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

	* cppfiles.c (_cpp_execute_include): Don't make a null-terminated
	copy of the filename.  Don't use CPP_PREV_BUFFER.  Don't call
	strlen or strcpy; we already know the length.
	(_cpp_compare_file_date): Similarly.
	* cpphash.h (struct cpp_reader): Delete done_initialising.
	(CPP_PREV_BUFFER): Delete.
	* cppinit.c (cpp_start_read): Don't set done_initialising.
	* cpplex.c (parse_string): Guarantee null-termination.
	(_cpp_equiv_toklists): Remove.
	* cpplib.c (glue_header_name): Null-terminate.
	(do_line): Don't leak memory.
	* cpplib.h (BT_WEAK): Delete.
	* cppmain.c (cb_ident): Strings are now null-terminated.

2001-03-04  Laurynas Biveinis  <lauras@softhome.net>

	* gcc.c (convert_filename): Append executable suffix
	if NO_AUTO_EXE_SUFFIX is not defined.
	* gcc.texi: Document NO_AUTO_EXE_SUFFIX.
	* config/i386/djgpp.h: Define NO_AUTO_EXE_SUFFIX.

2001-03-03  David O'Brien  <obrien@FreeBSD.org>

	from 2000-09-06  Zack Weinberg  <zack@wolery.cumb.org>
	* c-parse.gperf, c-gperf.h: Delete.
	(c-gperf.h was accidently re-added to the CVS repo in the rev
	1.16 commit by tromey)

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

	* cpplex.c (_cpp_lex_token): Don't warn about directives in
	macro arguments when looking for the '('.
	* cppmacro.c (funlike_invocation_p): Set parsing_args to
	2 when really parsing arguments; 1 when looking for '('.
	Always restore the lexer position.

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

	* longlong.h (umul_ppmm): Don't use a multiline string.

2001-03-03  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* fixinc/fixlib.h (t_bool): Add identifier `t_bool' in typedef.
	* fixinc/server.c (read_pipe_timeout): Use enum t_bool instead of
	t_bool in declaration because pcc can't combine volatile with typedef
	types.

Sat Mar  3 19:47:13 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.c (ix86_expand_fp_compare): Delay creating of scratch register
	until when it is really needed.
	(ix86_expand_compare): Update call of ix86_expand_fp_compare.
	* i386.h (PREDICATE_CODES): Add all codes for sse_comparison_operator
	* i386.md (float?i?f splitter): Don't force source operand to memory
	for SSE.
	(sse_movdfcc): Fix constraint.
	(sse_movdfcc splitter): Handle properly the second alternative.

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

	* cpplex.c (parse_string): Unconditionally pedwarn.

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

	* cpp.texi: Update.
	* cppexp.c (parse_number): Update.
	* cpplex.c (parse_string): Pedwarn if multiline string does not
	result from a system header's macro.
	* cpplib.h (sys_objmacro_p): Rename sys_macro_p.
	* cppmacro.c (sys_objmacro_p): Rename sys_macro_p.  Return true
	for function-like macros too.
	* c-lex.c (lex_number): Update.

2001-03-03  Richard Henderson  <rth@redhat.com>

	* dwarf2out.c (output_call_frame_info): Fix augmentation length.

Sat Mar  3 04:17:17 2001  J"orn Rennecke <amylaar@redhat.com>

	* combine.c (try_combine): If split with mode-changed scratch
	register didn't work, try the original mode.

Sat Mar  3 03:46:47 2001  J"orn Rennecke <amylaar@redhat.com>

	* tm.texi: Change STRUCT_FORCE_BLK to MEMBER_TYPE_FORCES_BLK.
	* config/c4x/c4x.h: Likewise.
	* stor-layout.c (compute_record_mode): Likewise.
	(layout_type, case ARRAY_TYPE): Use MEMBER_TYPE_FORCES_BLK.

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

	* configure.in: Kill tm.h.  Include the files in the $tm_file
	list in all three of config.h, hconfig.h, tconfig.h, after the
	relevant set of xm_files.  Put TARGET_CPU_DEFAULT in all
	three, include insn-codes.h in all three (#ifndef GENERATOR_FILE).
	* configure: Regenerate.
	* Makefile.in (clean): Don't delete tm.h.

	* system.h: If SUCCESS_EXIT_CODE and FATAL_EXIT_CODE are not
	defined, set them from EXIT_SUCCESS and EXIT_FAILURE.  If
	those are not defined, set SEC and FEC to 0 and 1.
	* gcc.texi: Update to match.

	* crtstuff.c: Include tconfig.h, not auto-host.h and tm.h.
	* config/fp-bit.c, config/m68k/aux-crt2.asm,
	config/m68k/aux-crtn.asm, config/m68k/aux-mcount.c:
	Include tconfig.h, not tm.h.

	* config/xm-lynx.h, config/xm-std32.h,
	config/a29k/xm-a29k.h, config/a29k/xm-unix.h,
	config/alpha/xm-alpha.h, config/arc/xm-arc.h,
	config/avr/xm-avr.h, config/c4x/xm-c4x.h,
	config/clipper/xm-clix.h, config/convex/xm-convex.h,
	config/d30v/xm-d30v.h, config/dsp16xx/xm-dsp16xx.h,
	config/elxsi/xm-elxsi.h, config/fr30/xm-fr30.h,
	config/h8300/xm-h8300.h, config/i370/xm-linux.h,
	config/i386/xm-i386.h, config/i860/xm-i860.h,
	config/i960/xm-i960.h, config/ia64/xm-ia64.h,
	config/m32r/xm-m32r.h, config/m68hc11/xm-m68hc11.h,
	config/m88k/xm-m88k.h, config/mcore/xm-mcore.h,
	config/mips/xm-mips.h, config/mn10200/xm-mn10200.h,
	config/mn10300/xm-mn10300.h, config/ns32k/xm-ns32k.h,
	config/pa/xm-linux.h, config/pa/xm-pa.h,
	config/pa/xm-pa64hpux.h, config/pa/xm-pahpux.h,
	config/pa/xm-papro.h, config/pdp11/xm-pdp11.h,
	config/pj/xm-pj.h, config/romp/xm-romp.h,
	config/rs6000/xm-beos.h, config/rs6000/xm-rs6000.h,
	config/rs6000/xm-sysv4.h, config/sh/xm-sh.h,
	config/sparc/xm-sparc.h, config/sparc/xm-sysv4.h,
	config/v850/xm-v850.h, config/vax/xm-vax.h,
	config/we32k/xm-we32k.h:
	Don't include tm.h.
	Don't define SUCCESS_EXIT_CODE or FATAL_EXIT_CODE.

	* config/i370/xm-i370.h, config/i370/xm-mvs.h,
	config/i370/xm-oe.h: Don't include tm.h.  Don't define
	SUCCESS_EXIT_CODE.
	* config/vax/xm-vms.h: Don't include tm.h.

	* config/xm-lynx.h, config/avr/xm-avr.h,
	config/fr30/xm-fr30.h, config/pdp11/xm-pdp11.h,
	Delete; made empty by above changes.
	* config/i386/xm-lynx.h, config/m68k/xm-lynx.h,
	config/rs6000/xm-lynx.h, config/sparc/xm-lynx.h:
	Don't include config/xm-lynx.h or tm.h.

	* config/xm-gnu.h: Don't include fcntl.h.
	* config/sparc/xm-lynx.h: Don't include sys/types.h and
	sys/wait.h.
	* config/clipper/xm-clix.h, config/vax/xm-vax.h: Don't define isinf.

2001-03-02  Richard Henderson  <rth@redhat.com>

	* tm.texi (File Framework): Document UNALIGNED_SHORT_ASM_OP,
	UNALIGNED_INT_ASM_OP, and UNALIGNED_DOUBLE_INT_ASM_OP.

2001-03-02  Richard Henderson  <rth@redhat.com>

	* Makefile.in (OBJS): Add dwarf2asm.o.
	* dwarf2asm.c, dwarf2asm.h: New files.
	* dwarf2out.c (*): Use them.
	(size_of_uleb128, size_of_sleb128): Remove.
	(output_uleb128, output_sleb128): Remove.
	(UNALIGNED_SHORT_ASM_OP, UNALIGNED_INT_ASM_OP): Remove.
	(UNALIGNED_DOUBLE_INT_ASM_OP, ASM_BYTE_OP): Remove.
	(UNALIGNED_OFFSET_ASM_OP, UNALIGNED_WORD_ASM_OP): Remove.
	(FDE_LABEL, LINE_NUMBER_BEGIN_LABEL, LINE_NUMBER_END_LABEL): New.
	(ASM_OUTPUT_DWARF_DATA1, ASM_OUTPUT_DWARF_DELTA1): Remove.
	(ASM_OUTPUT_DWARF_DATA2, ASM_OUTPUT_DWARF_DELTA2): Remove.
	(ASM_OUTPUT_DWARF_DATA4, ASM_OUTPUT_DWARF_DELTA4): Remove.
	(ASM_OUTPUT_DWARF_DATA, ASM_OUTPUT_DWARF_DELTA): Remove.
	(ASM_OUTPUT_DWARF_ADDR, ASM_OUTPUT_DWARF_ADDR_DATA): Remove.
	(ASM_OUTPUT_DWARF_ADDR_DELTA, ASM_OUTPUT_DWARF_ADDR_CONST): Remove.
	(ASM_OUTPUT_DWARF_OFFSET4, ASM_OUTPUT_DWARF_OFFSET): Remove.
	(ASM_OUTPUT_DWARF_CONST_DOUBLE): Remove.
	(ASM_OUTPUT_DWARF_NSTRING, ASM_OUTPUT_DWARF_STRING): Remove.
	(dwarf2out_frame_debug): Remove unused variables.
	(output_loc_operands): Don't abort on 8 byte constants if
	host integers are wide enough.
	(output_symbolic_ref): Remove.
	(size_of_die): Don't assume 4 byte host integers.
	(output_line_info): Use ASM_GENERATE_INTERNAL_LABEL for begin
	and end labels.
	(add_const_value_attribute) [CONST_INT]: Verify we're not doing
	something stupid with HOST_WIDE_INT to long truncation.
	[CONST_DOUBLE]: Likewise.

	* config/arm/conix-elf.h (UNALIGNED_WORD_ASM_OP): Remove.
	(ASM_OUTPUT_DWARF2_ADDR_CONST, ASM_OUTPUT_DWARF_ADDR_CONST): Remove.
	* config/arm/unknown-elf.h: Likewise.
	* config/rs6000/aix.h (UNALIGNED_SHORT_ASM_OP): New.
	(UNALIGNED_INT_ASM_OP, UNALIGNED_DOUBLE_INT_ASM_OP): New.
	(ASM_OUTPUT_DWARF_ADDR_VAR, ASM_OUTPUT_DWARF_DELTA_VAR): Remove.
	(ASM_OUTPUT_DWARF_DELTA2, ASM_OUTPUT_DWARF_DELTA4): Remove.
	(ASM_OUTPUT_DWARF_DELTA, ASM_OUTPUT_DWARF_ADDR_DELTA): Remove.
	(ASM_OUTPUT_DWARF_ADDR, ASM_OUTPUT_DWARF_DATA4): Remove.
	(ASM_OUTPUT_DWARF_DATA2, ASM_OUTPUT_DWARF_OFFSET4): Remove.
	(ASM_OUTPUT_DWARF_OFFSET): Remove.
	* config/rs6000/sysv4.h (ASM_OUTPUT_DWARF_ADDR): Remove.
	* config/sparc/sp64-elf.h (UNALIGNED_DOUBLE_INT_ASM_OP): New.
	(UNALIGNED_LONGLONG_ASM_OP, ASM_OUTPUT_DWARF_ADDR): Remove.
	(ASM_OUTPUT_DWARF_ADDR_CONST, ASM_OUTPUT_DWARF_REF): Remove.

2001-03-02  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* cselib.c (hash_rtx): Cast enums to unsigned int.

2001-03-02  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* print-rtl.c (print_rtx): Cast enums to int for comparison.
	* c-decl.c (grokdeclarator): Cast enums to int for comparison and
	shifts.
	* c-format.c (C_STD_VER): Cast to int for comparisons.
	(check_function_format): Cast various enums to int for &.
	(maybe_read_dollar_number): Likewise.
	(check_format_info): Likewise.
	(check_format_info_main): Likewise.
	* expr.c (emit_move_insn_1): Cast enums to unsigned int for comparison.
	(safe_from_p): Likewise.
	* varasm.c (const_hash): Cast enum to int for %.
	* emit-rtl.c (init_emit_once): Use int loop variable to work around
	pcc enum problems with < and ++ operators.
	* regclass.c (init_reg_sets_1): Cast enums for comparison.
	(choose_hard_reg_mode): Use unsigned int to iterate over CCmodes.
	(regclass_init): Change enum class to int to iterate over reg_classes.
	* genrecog.c (merge_trees): Cast enums for comparison.
	* rtl.h (GET_CODE): Cast to enum rtx_code.
	(PUT_CODE): Cast to ENUM_BITFIELD(rtx_code).
	(GET_MODE): Cast to enum machine_mode.
	(PUT_MODE): Cast to ENUM_BITFIELD(machine_mode).
	(GET_NOTE_INSN_NAME): Cast enum to int.
	* tree.h (TREE_CODE): Cast to enum tree_code.
	(TREE_SET_CODE): Cast VALUE to ENUM_BITFIELD(tree_code).
	* timevar.c (timevar_print): Change loop variable id from enum to
	unsigned int.
	* fixinc/fixincl.c (VLEVEL): Cast enums in comparison to unsigned int.
	* config/i386/i386.md: Use PUT_MODE for mode assignment.
	* toplev.c (compile_file): Cast enum DFI to int.
	(decode_d_option): Likewise.

Fri Mar  2 12:18:13 2001  Christopher Faylor <cgf@cygnus.com>

	* cppinit.c (append_include_chain): Mark "after" include file name list
	as a system directory.
	* cpp.texi: Document new behavior.

Fri Mar  2 11:59:43 CET 2001  Jan Hubicka  <jh@suse.cz>

	* ifcvt.c (noce_operand_ok): Handle properly unarry operations.

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

	* cppfiles.c (struct include_file): Update.
	(stack_include_file): Use search_from.
	(cpp_included, find_include_file): Update.
	(cpp_execute_include): Update.  ptr->name may not be
	null terminated.  Use the new search_from member variable
	of cpp_buffer.
	(_cpp_compare_file_date): Similarly.
	(search_from): New function, similar to actual_directory.
	(actual_directory): Delete.
	(remap_filename): Update.  loc->name may not be null terminated.
	(struct file_name_list): Rename search_path.  Update.
	* cpphash.h (struct cpp_buffer): Delete actual_dir.  New members
	search_from and dir.
	(struct cpp_reader): Remove actual_dirs.
	* cppinit.c (struct cpp_pending): Update for renamed objects.
	(append_include_chain, remove_dup_dir, remove_dup_dirs,
	merge_include_chains, cpp_destroy, cpp_start_read): Similarly.
	* cpplib.h (struct cpp_options): Similarly.

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

	* config/xm-lynx.h, config/xm-std32.h, config/a29k/xm-a29k.h,
	config/a29k/xm-unix.h, config/alpha/xm-alpha.h,
	config/arc/xm-arc.h, config/arm/xm-arm.h, config/c4x/xm-c4x.h,
	config/clipper/xm-clix.h, config/convex/xm-convex.h,
	config/d30v/xm-d30v.h, config/dsp16xx/xm-dsp16xx.h,
	config/elxsi/xm-elxsi.h, config/fr30/xm-fr30.h,
	config/h8300/xm-h8300.h, config/i370/xm-i370.h,
	config/i370/xm-linux.h, config/i370/xm-mvs.h,
	config/i370/xm-oe.h, config/i386/xm-aix.h,
	config/i386/xm-i386.h, config/i386/xm-osf.h,
	config/i860/xm-i860.h, config/i960/xm-i960.h,
	config/ia64/xm-ia64.h, config/m32r/xm-m32r.h,
	config/m68k/xm-m68k.h, config/m88k/xm-m88k.h,
	config/mcore/xm-mcore.h, config/mips/xm-mips.h,
	config/mn10200/xm-mn10200.h, config/mn10300/xm-mn10300.h,
	config/ns32k/xm-ns32k.h, config/pa/xm-linux.h,
	config/pa/xm-pa.h, config/pa/xm-pa64hpux.h,
	config/pa/xm-pahpux.h, config/pa/xm-papro.h,
	config/pj/xm-pj.h, config/romp/xm-romp.h,
	config/rs6000/xm-beos.h, config/rs6000/xm-rs6000.h,
	config/rs6000/xm-sysv4.h, config/sh/xm-sh.h,
	config/sparc/xm-sparc.h, config/sparc/xm-sysv4.h,
	config/v850/xm-v850.h, config/vax/xm-vax.h,
	config/vax/xm-vms.h, config/we32k/xm-we32k.h:
	Do not define TRUE or FALSE.

	* config/i386/xm-aix.h, config/i386/xm-osf.h: Delete; made
	empty by above change.
	* config.gcc: Remove references to these files.

	* configure.in: Detect stdbool.h.
	* configure, config.in: Regenerate.
	* system.h: Include stddef.h here if available.
	Set HAVE__BOOL based on GCC_VERSION and __STDC_VERSION__.
	Then set up a sensible boolean type at the very end.

	* combine.c, cse.c, expr.c, fold-const.c, gensupport.c,
	config/mcore/mcore.c: Rename variables named 'true' and/or 'false'.

	* hash.h: Delete 'boolean' typedef and related #undefs.

	* function.c, ggc-common.c, hash.h, hash.c, tlink.c: Replace
	all uses of 'boolean' with 'bool'.

2001-03-01  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* cpplib.c (_cpp_init_stacks): Cast enum for comparison.
	* cppexp.c (lex): Cast enums for comparison.
	* cppinit.c (parse_option): Cast enum for comparison.
	* cpplex.c (cpp_spell_token): Cast enums to int for minus.
	(cpp_output_token): Likewise.
	(cpp_can_paste): Cast enums for comparsion and plus/minus.
	(cpp_avoid_paste): Cast enums for minus and comparison.

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

	* gcc.c, objc/lang-specs.h: Add zero initializer for cpp_spec
	field to all array elements.

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

	* cpphash.h (struct cpp_reader): Add print_version field.
	* cppinit.c (cpp_handle_option): For -v, -version, and --version,
	just set print_version and other flags as appropriate.
	(cpp_post_options): Print version here if print_version is set.

	* toplev.c (exit_after_options): New flag.
	(independent_decode_option): Don't exit here; just set
	exit_after_options.
	(main): Exit after calling lang_hooks.post_options if
	exit_after_options is true.

	* cppinit.c (append_include_chain): Drop never-used case QUOTE.
	(merge_include_chains): Adjust comment to match code.

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

	* stringpool.c (set_identifier): New function.
	* tree.h: Prototype it.

	* c-parse.in: Kill D_YES. If compiled for objc, call
	save_and_forget_protocol_qualifiers from init_reswords.
	* objc/objc-act.c (remember_protocol_qualifiers,
	forget_protocol_qualifiers): Don't diddle C_IS_RESERVED_WORD.
	Swap out the non-keyword IDENTIFIER_NODEs for keyword ones, or
	vice versa.
	(save_and_forget_protocol_qualifiers): New function.
	* c-lex.h: Prototype save_and_forget_protocol_qualifiers.

2001-03-01  Diego Novillo  <dnovillo@redhat.com>

	* c-semantics.c (prune_unused_decls): Return error_mark_node
	instead of (tree) 1 to stop traversing the tree chain.

2001-03-01  Bernd Schmidt  <bernds@redhat.com>

	Fix a problem introduced by Kenner's Feb 18 change.
	* toplev.c (rest_of_compilation): Disable flag_cse_follow_jumps and
	flag_cse_skip_blocks only temporarily, not for ever.

Thu Mar  1 09:49:58 2001  Jeffrey A Law  (law@cygnus.com)

	* config/pa/som.h  (ASM_IDENTIFY_GCC): Define.
	(ASM_IDENTIFY_GCC_AFTER_SOURCE): Likewise.

	* pa.c (emit_move_sequence): Verify operand0 is a hard register
	before determining its register class.

2001-03-01  Bernd Schmidt  <bernds@redhat.com>

	* config/ia64/ia64.c (ia64_hard_regno_rename_ok): Disallow renaming
	from reg 4 if current_function_calls_setjmp.
	(gen_nop_type): New function.
	(ia64_emit_nops): New function.
	(ia64_reorg): Call it.
	(ia64_sched_reorder): Move code that rotates bundles up a bit.

	* reload1.c (eliminate_regs_in_insn): Restrict the special case
	code not to try to optimize adds with anything but a REG destination.

	* sched-int.h (struct haifa_insn_data): Add new member priority_known.
	(INSN_PRIORITY_KNOWN): New accessor macro.
	* haifa-sched.c (priority): Use it instead of testing priority against
	zero.

2001-02-28  DJ Delorie  <dj@redhat.com>

	* config/m68k/m68k.h (MOVE_BY_PIECES_P): Avoid pushing bytes,
	since that doesn't work the way gcc wants on a generic m68k.

2001-02-28  Richard Henderson  <rth@redhat.com>

	* caller-save.c (save_call_clobbered_regs): Fix typo in
	comparison last change.

Wed Feb 28 19:31:42 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.c (pentium4_cost): New.
	(m_PENT4): New macro.
	(x86_push_memory, x86_movx,x86_cmove, x86_deep_branch, x86_use_sahf
	x86_sub_esp_4, x86_sub_esp_8, x86_add_esp_4, x86_add_esp_8
	x86_integer_DFmode_moves, x86_partial_reg_dependency,
	x86_memory_mismatch_stall): Add Pentium4
	(x86_use_q_reg, x86_use_any_reg): Kill.
	(override_options): Add pentium4.
	(incdec_operand): Return 0 for pentium4.
	(ix86_issue_rate): Add PROCESSOR_PENTIUM4 and PROCESSOR_ATHLON.
	* i386.h (x86_use_q_reg, x86_use_any_reg): Kill.
	(TARGET_PENTIUM4): Define.
	(enum processor_type): Add PROCESSOR_PENTIUM4.
	(CPP_CPU_DEFAULT_SPEC): Add pentium4 support.
	* i386.md (attribute "cpu"): Add pentium4.
	* invoke.texi (march): Add pentium4.

Wed Feb 28 19:28:06 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (sse_mov?fcc*): New patterns and splitters.
	* i386.c (ix86_expand_movcc): Work post-reload; recognize
	the SSE based conditional moves.

Wed Feb 28 19:18:23 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (attribute mode): Add "TI".
	(movsf_1): Add pxor support; remove constant propagation splitter.
	(movdf_integer): Likewise.
	(movdf_nointeger): Likewise.
	(movxf constant prop splitter): Handle all modes; update for SSE.
	* i386.h (CONST_DOUBLE_OK_FOR_LETTER): Add 'H' for SSE constants.
	* i386.c (standard_80387_constant_p): Rewrite.
	(standard_sse_constant_p): New.
	* i386-protos.h (standard_sse_constant_p): New.

Wed Feb 28 19:05:37 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (sse_setccsf, sse_setccdf): New.
	(sse_cmp* patterns): Use '%D' instead of outputtting condition
	flag directly.
	* i386.c (sse_comparison_operator): Accept the supported unordered
	comparses; be ready for fast_math.
	(print_operand): Support 'D'.

Wed Feb 28 18:54:51 CET 2001  Jan Hubicka  <jh@suse.cz>

	* jump.c (reversed_comparison_code): Kill.

Wed Feb 28 18:50:15 CET 2001  Jan Hubicka  <jh@suse.cz>

	* toplev.c (rest_of_compilation): Do post-reload splitting unconditionally
	for STACK_REGS

Wed Feb 28 18:47:37 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (sse_andti3, sse_nandti_3, sse_xorti3): Add SSE2 versions;
	add missing '%' in constraints.

Wed Feb 28 17:24:24 CET 2001  Jan Hubicka  <jh@suse.cz>

	* c-common.c (build_common_tree_nodes): Build intTI_type_nodes
	for HOST_BITS_PER_WIDE_INT == 32 too.

Wed Feb 28 17:22:35 CET 2001  Jan Hubicka  <jh@suse.cz>

	* caller-save.c (reg_save_code, reg_restore_code):  Index by mode, not
	NREGS.
	(insert_save, insert_restore): New parameter save_mode.
	(init_caller_save): Update initialization of reg_save_code
	and reg_restore_code.
	(save_call_clobbered_regs):  Compute save_modes and update calls to
	reg_save_code and reg_restore_code.
	(insert_restore):  Unsignetize numbers; use save_modes to choose mode
	of spill; update use of reg_restore_code.
	(insert_save):  Likewise.
	* i386.h (HARD_REGNO_CALLER_SAVE_MODE): Update.
	* c4x.h (HARD_REGNO_CALLER_SAVE_MODE): Update.
	* regs.h (HARD_REGNO_CALLER_SAVE_MODE): Likewise.

Wed Feb 28 17:19:28 CET 2001  Jan Hubicka  <jh@suse.cz>

	* ifcvt.c (noce_emit_store_flag, noce_try_store_flag_constants,
	noce_try_store_flag_inc, noce_try_store_flag_mask,
	noce_try_cmove_arith):
	Use reversed_comparison_code instead of reverse_comparison and
	can_reverse_comparison_p.

Wed Feb 28 17:17:29 CET 2001  Jan Hubicka  <jh@suse.cz>

	* jump.c (reversed_comparison_code_parts): Allow reversal of
	unordered compares in -ffast-math mode; reverse ordered compares
	for FP even w/o -ffast-math.

2001-02-27  Richard Henderson  <rth@redhat.com>

	* print-rtl.c (print_rtx) [i]: Don't print field five on
	NOTEs other than NOTE_INSN_DELETED_LABEL.

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

	* mips/xm-iris4.h: Delete #if 0 block (there since before 1997).
	* pa/xm-linux.h, pa/xm-pa.h, pa/xm-papro.h: Don't declare errno.

2001-02-27  Diego Novillo  <dnovillo@redhat.com>

	* c-common.c (walk_stmt_tree): Visit the chain of the current tree
	even if walk_subtrees is 0.
	* c-semantics.c (prune_unused_decls): Return a non-null value to
	stop traversing the tree chain.

2001-02-27  DJ Delorie  <dj@redhat.com>

	* config/m68k/m68k.c (output_function_prologue): Save the new CFA
	register, *then* define it as the new CFA.

Tue Feb 27 16:49:13 2001  Jeffrey A Law  (law@cygnus.com)

	* pa.c (override_options): Promote -fpic to -fPIC.
	(legitimize_pic_address): Simplify due to removal of
	small PIC as a code generation option.
	(secondary_reload_class): Similarly.
	* pa.h (GO_IF_LEGITIMATE_ADDRESS): Similarly.
	(PRINT_OPERAND_ADDRESS): Similarly.
	* pa.md (various patterns): Similarly.
	(small pic lo_sum pattern): Remove.

Tue Feb 27 16:01:13 CET 2001  Jan Hubicka  <jh@suse.cz>
			      Fergus Henderson

	* md.texi (min, max): Document

Tue Feb 27 15:51:35 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (movsf, movdf): Use movaps for reg-reg moves if
	TARGET_PARTIAL_REG_DEPENDENCY.
	(truncdfsf2_1_sse, truncdfsf2_2): Penalize the fpreg->mem case.

Tue Feb 27 15:36:48 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (mins*, maxs*): New patterns, expanders and splitters.

2001-02-26  Jeffrey Oldham  <oldham@codesourcery.com>

	* mips.c (mips_make_temp_file): Fix thinko in last change.

2001-02-26  Jason Eckhardt  <jle@redhat.com>

	* combine.c (known_cond): Do not reverse the condition when
	SMAX/UMAX is being considered and the condition is for equality
	or inequality.

	* testsuite/gcc.c-torture/execute/20010221-1.c: New test.

2001-02-26  Philip Blundell  <philb@gnu.org>

	* config.gcc: Remove obsolete targets "arm*-*-linuxoldld" and
	"armv2-*-linux".
	* config/arm/linux-elf.h: Remove historical relics related to
	above configurations.
	* config/arm/linux-oldld.h: Delete.
	* config/arm/linux-elf26.h: Delete.

2001-02-26  Jason Merrill  <jason@redhat.com>

	* c-decl.c (finish_decl): Set DECL_DEFER_OUTPUT on tentative file-scope
	definitions.
	* toplev.c (rest_of_decl_compilation): Check DECL_DEFER_OUTPUT to
	recognize a tentative definition.  Lose obsolete code.

	* toplev.c (wrapup_global_declarations): Don't emit DECL_COMDAT
	variables unless necessary, either.

2001-02-25  Richard Henderson  <rth@redhat.com>

	* ifcvt.c (struct noce_if_info): Add test_bb.
	(noce_get_alt_condition): New.
	(noce_try_minmax, noce_try_abs): New.
	(noce_operand_ok): New.
	(noce_process_if_block): Use them.
	* rtlanal.c (may_trap_p): NEG and ABS can never trap.

Sun Feb 25 14:26:17 2001  Christopher Faylor <cgf@cygnus.com>

	* config/i386/cygwin.h (CPP_SPEC): Add missing space before w32api
	include.

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

	* config.gcc: Put back pa/t-openbsd and rs6000/t-openbsd.
	* config/mips/mips.c (mips_make_temp_file): Set temp_filename
	properly.
	(mips_asm_file_end): Free temp_filename here.

Sun Feb 25 08:34:23 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* config/i386/i386-protos.h (ix86_set_move_mem_attrs): Move decl.
	* config/i386/i386.c (ix86_set_move_mem_attrs_1): Fix typo.

	* config/i386/i386.md (movstrsi): Handle FAIL case.

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

	* cppinit.c (builtin_array): Update.
	(init_builtins): Flag builtins to warn if redefined or
	undefined.  Define __GXX_WEAK as a normal macro.
	* cpplib.c (do_undef): Warn if flagged NODE_WARN.
	* cpplib.h (NODE_WARN): New flag.
	* cppmacro.c (builtin_macro): Remove handling of __GXX_WEAK__.
	Handle __STDC__ as a builtin only on Solaris.
	(warn_of_redefinition): Renamed from check_macro_definition.
	Reverse sense of test.  Always warn if NODE_WARN.
	(_cpp_create_definition): Use warn_of_redefinition.  Flag
	any macro beginning with "__STDC_" to require a mandatory
	warning if redefined or undefined.

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

	* xm-interix.h, xm-lynx.h, alpha/xm-vms.h, convex/xm-convex.h,
	i370/xm-i370.h, i370/xm-linux.h, i370/xm-mvs.h, i370/xm-oe.h,
	i386/xm-beos.h, i386/xm-dos.h, i386/xm-mingw32.h,
	i860/xm-i860.h, m68k/xm-3b1.h, m68k/xm-amix.h, m68k/xm-aux.h,
	m68k/xm-crds.h, m68k/xm-mot3300.h, m88k/xm-sysv3.h,
	mips/xm-mips.h, rs6000/xm-beos.h, vax/xm-vms.h:
	Don't define any of:
	USE_PROTOTYPES, vfork, mktemp, SVR3, NO_SYS_PARAMS_H,
	P_tmpdir, MVS, NO_DBX_FORMAT, USE_STDARGS, STDC_HEADERS,
	NO_PRECOMPILES, i860, __PTR_TO_INT, __INT_TO_PTR, rindex,
	index, FULL_PROTOTYPES, AUX, R_OK, W_OK, X_OK, F_OK,
	STACK_DIRECTION, MIPS, MAX_READ_LEN, MAX_WRITE_LEN.

	* alpha/xm-alpha.h, clipper/xm-clix.h, d30v/xm-d30v.h,
	fr30/xm-fr30.h, i370/xm-linux.h: Remove commented-out macro
	definitions.

	* m68k/xm-3b1.h, m68k/xm-crds.h, m88k/xm-sysv3.h:
	Delete now-empty file.

	* alpha/vms.h: Define NEED_ATEXIT here...
	* alpha/xm-vms.h: ...not here.

	* i386/cygwin.h: Don't define PARAMS.
	* mips/mips.c: Don't prototype mktemp.  Don't define
	P_tmpdir.  Use make_temp_file to create temporary files.
	Don't be clever and delete temporary files early.
	* config.gcc: Drop references to deleted files.  Don't define
	FULL_PROTOTYPES.
	* gcc.texi: Don't mention USE_PROTOTYPES.

Sat Feb 24 20:25:29 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* config/i386/i386.c (ix86_set_move_mem_attrs): New function.
	(ix86_set_move_mem_attrs_1): Likewise.
	* config/i386/i386-protos.h (ix86_set_move_mem_attrs): New declaration.
	* config/i386/i386.md (movstrsi): Call it.

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

	* config.gcc: Expunge references to alpha/t-pe, pa/t-openbsd,
	x-linux-aout, i386/t-go32, t-osf, m68k/x-m68kv,
	ns32k/xm-netbsd.h, rs6000/t-openbsd, rs6000/t-xnewas,
	rs6000/x-aix41-gld.  These are nonexistent, empty, or obsolete.

	(i750a-*-*): Error here if hosting on i750a.
	(alpha*-*-winnt*, ix86-*-winnt3*): Remove stanzas entirely.

	* x-linux-aout, xm-freebsd.h, i386/beos-pe.h, ns32k/xm-netbsd.h:
	Remove (empty modulo comments).

	* 1750a/xm-1750a.h, alpha/config-nt.sed, alpha/win-nt.h,
	alpha/xm-winnt.h, i386/config-nt.sed, i386/os2.h,
	i386/t-winnt, i386/win-nt.h, i386/xm-freebsd.h, i386/xm-os2.h,
	i386/xm-winnt.h, m68k/x-alloca-c, m88k/x-dguxbcs,
	mips/x-netbsd, mips/x-nws3250v4, rs6000/t-xnewas,
	rs6000/t-xrs6000, rs6000/xm-cygwin.h: Remove (obsolete)

	* i386/crtdll.h, i386/cygwin.h, i386/mingw32.h:
	Remove reference to winnt.h in comment.
	* rs6000/t-newas, rs6000/t-rs6000: Override LIBGCC1_TEST to null.

2001-02-24  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* loop.c (check_dbra_loop): A biv has uses besides counting if it is
	used to set another biv.

Sat Feb 24 06:45:21 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* tree.h (BLOCK_DEAD): New macro.
	(struct tree_block): New flag, dead_flag.
	* print-tree.c (print_node, case 'b'): Print missing fields.
	* emit-rtl.c (remove_unnecessary_notes): Set BLOCK_DEAD.
	* function.c (identify_blocks): Enable test for misplaced notes.
	(all_blocks): Skip BLOCK_DEAD blocks.
	* integrate.c (integrate_decl_tree): Likewise.

	* errors.c (internal_error, trim_filename): New functions.
	(fancy_abort): Call internal_error.
	* errors.h (internal_error, trim_filename): New declarations.

2001-02-24  Alexandre Oliva  <aoliva@redhat.com>

	* config/mn10300/mn10300.h (DBX_REGISTER_NUMBER): Reverted
	2000-08-26's patch.
	(EXTRA_CONSTRAINT): Formatting changes.

2001-02-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* rtl.c (rtl_check_failed_code2): Fix typo in last change.

2001-02-23  Per Bothner  <per@bothner.com>

	* gcc.c (record_temp_file, pfatal_with_name, error):  Make non-static,
	so they can be called from java/jvspec.c.
	* gcc.h (record_temp_file, pfatal_with_name, error):  Declare.

Sat Feb 24 03:32:50 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.c (ix86_frame): New structure.
	(ix86_compute_frame_size): Kill.
	(ix86_compute_frame_layout): New.
	(ix86_save_reg): New.
	(ix86_can_use_return_insn_p): Use frame layout stuff.
	(ix86_expand_prologue): Likewise.
	(ix86_expand_epilogue): Likewise.
	(ix86_initial_elimination_offset): Likewise.
	(ix86_nsaved_regs): Use ix86_save_reg.
	(ix86_emit_save_regs): Likewise.

Sat Feb 24 03:30:38 CET 2001  Jan Hubicka  <jh@suse.cz>

	* flow.c (find_sub_basic_blocks): New function.
	(split_block): Be ready for basic block introduced by CODE_LABEL.
	(commit_one_edge_insertion): Call find_sub_basic_block.

	* flow.c (make_edges): Add edge from entry for blocks starting with
	label having ALTERNATE_NAME

Sat Feb 24 03:19:42 CET 2001  Jan Hubicka  <jh@suse.cz>

	* function.c (epilogue_done): Be ready for first basic block not
	containing PROLOGUE_END note.
	(reposition_prologue_and_epilogue_notes): Avoid placing
	PROLOGUE_END note between BASIC_BLOCK.

Sat Feb 24 03:17:09 CET 2001  Jan Hubicka  <jh@suse.cz>

	* loop.c (canonicalize_condition): Move to reversed_comparison_code.

2001-02-21  DJ Delorie  <dj@redhat.com>

	* config/i960/i960.h (FRAME_POINTER_REQUIRED): Revert removal of
	check for current_function_has_nonlocal_goto from 1999-11-12.

Fri Feb 23 15:28:39 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* diagnostic.c (trim_filename): No longer static.
	* toplev.h (trim_filename): Declare.
	* rtl.c (rtl_check_failed_bounds): Call internal_error.
	(rtl_check_failed_type1, rtl_check_failed_type2): Likewise.
	(rtl_check_failed_code1, rtl_check_failed_code2): Likewise.
	(rtvec_check_failed_bounds): Likewise.
	* tree.c (tree_check_failed, tree_class_check_failed): Likewise.

	* convert.c (convert_to_integer): Don't do unsigned unless result or
	both inputs are unsigned.

	* fold-const.c (fold_convert): Don't call size_int_type_wide if
	input overflows.

	* c-decl.c (set_block): Set NAMES and BLOCKS from BLOCK.

	* varasm.c (output_constant): Recompute CODE after lang-specific fn.

2001-02-23  Jeffrey Oldham  <oldham@codesourcery.com>

	* Makefile.in (resource.o): Add params.h dependence.
	* params.def (MAX_DELAY_SLOT_LIVE_SEARCH): New parameter.
	* params.h (MAX_DELAY_SLOT_LIVE_SEARCH): Likewise.
	* resource.c: Add dependence on params.h.
	(current_live_regs): Fix explanatory comment.
	(find_basic_block): Add new parameter to permit limiting search
	for a BARRIER.
	(mark_target_live_regs): Add new argument to find_basic_block call.
	(incr_ticks_for_insn): Likewise.

2001-02-23  Gabriel Dos Reis  <gdr@merlin.codesourcery.com>

	* diagnostic.c (output_to_stream): Rename to
	output_buffer_to_stream. Loses the stream parameter.
	(init_output_buffer): Set diagnosic_buffer's stream.
	(flush_diagnostic_buffer): Adjust.
	(default_print_error_function): Likewise.
	(finish_diagnostic): Likewise.
	(verbatim): Likewise.

	* diagnostic.h (struct output_buffer): Add `stream' field.
	(output_buffer_attached_stream): New macro.

2001-02-23  Jakub Jelinek  <jakub@redhat.com>

	* fold-const.c (extract_muldiv) [case PLUS_EXPR]: If not MULT_EXPR,
	check if either operand is divisible by C.
	(multiple_of_p): Handle LSHIFT_EXPR with small constant shift.
	If type is signed, consider negative numbers as well.

2001-02-22  Richard Henderson  <rth@redhat.com>

	* config/ia64/crtbegin.asm (.fini): Use pc-relative relocs to
	reach .text instead of gp-relative relocs.
	* config/ia64/crtend.asm (.init): Likewise.

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

	* extend.texi (C++ Attributes): Fix typo.

2001-02-21  David Mosberger  <davidm@hpl.hp.com>

	* config/ia64/ia64.c (ia64_epilogue_uses): For syscall_linkage
	functions, drop current_function_args_info.words test.
	(ia64_compute_frame_size): Mark syscall_linkage functions as
	using eight input registers.

2001-02-21  Loren J. Rittle  <ljrittle@acm.org>
	Bruce Korb  <bkorb@gnu.org>

	* fixinc/inclhack.def (freebsd_gcc3_breakage): new fix
	* fixinc/README: Document how to convert sed substitutions
	to format style c_fix-es.
	* fixinc/fixincl.x: regen

2001-02-21  Jeffrey D. Oldham  <oldham@codesourcery.com>

	* gcc.c: Add comment explaining how to add a command-line option.
	Add title to specs language comment.

2001-02-21  Jeffrey Oldham  <oldham@codesourcery.com>

	* gcc.c (cc1_options): Add "-param".
	(DEFAULT_WORD_SWITCH_TAKES_ARG): Likewise.
	(option_map): Likewise.
	* toplev.c (display_help): Add entry for "--param".
	(independent_decode_option): Fix typographical error.

Wed Feb 21 18:57:28 CET 2001  Catherine Moore  <clm@redhat.com>
			      Bernd Schmidt  <bernds@redhat.com>
			      Jan Hubicka  <jh@suse.cz>

	* i386.c (function_arg_advance):  Pass SSE arguments in registers.
	(function_arg): Likewise.

Wed Feb 21 18:12:41 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (mmx_lshrdi3, mmx_ashldi3): Guard by unspec.

2001-02-21  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.md (iorsi3): Do not output an extra newline
	character.
	(xorsi3): Likewise.

Wed Feb 21 17:35:24 CET 2001  Jan Hubicka  <jh@suse.cz>

	* flow.c (init_propagate_block_info): Canon address and use single_set
	for killing dead memory stores.

2001-02-21  Jeffrey Oldham  <oldham@codesourcery.com>

	* Makefile.in (reorg.o): Add params.h dependence.
	* params.def: Fix typographical error in comment.
	(MAX_DELAY_SLOT_INSN_SEARCH): New parameter.
	* params.h: Modify introductory comment.
	(MAX_DELAY_SLOT_INSN_SEARCH): New parameter.
	* reorg.c: Add dependence on params.h.
	(redundant_insn): Add parameterized throttle for search.
	(fill_simple_delay_slots): Add a comment explaining a variable.
	Move conditional out of loop, simplifying code.
	(fill_eager_delay_slots): Fix typographical error in comment.

2001-02-20  Aldy Hernandez  <aldyh@redhat.com>

	* tm.texi (REVERSE_CONDEXEC_PREDICATES_P): New macro documentation.

	* flow.c (ior_reg_cond): Use REVERSE_CONDEXEC_PREDICATES_P macro.
	(REVERSE_CONDEXEC_PREDICATES_P): Define macro.

2001-02-21  Jason Merrill  <jason@redhat.com>

	* tree.h (DECL_UNINLINABLE): Move from C++ frontend.
	(struct tree_decl): Add uninlinable bitfield.
	* c-decl.c (duplicate_decls): Set it.
	* integrate.c (function_cannot_inline_p): Check it.

	* dwarf2out.c (add_name_and_src_coords_attributes): Don't add
	DW_AT_MIPS_linkage_name to abstract methods.
	(dwarf2out_abstract_function): Emit class context before calling
	set_decl_abstract_flags.  Don't clear DECL_ABSTRACT.
	(gen_subprogram_die): Remove obsolete code.
	(gen_member_die): Don't include clones in the member list.
	(gen_decl_die): Emit abstract info for clone origin.
	* dwarfout.c (output_type): Don't include clones in the member list.
	* dbxout.c (dbxout_type_methods): Ignore abstract methods.
	* toplev.c (note_deferral_of_defined_inline_function): Don't clear
	DECL_ABSTRACT on a function that already has it set.

	* dwarf2out.c (gen_formal_types_die): Also accept a FUNCTION_DECL.
	(get_subprogram_die): Pass it in.

2001-02-21  Richard Earnshaw  <rearnsha@arm.com>

	* flow.c (mark_set_1): Make not_dead unsigned long.  For
	non-pseudos, use it as a bitmask of the hard regs that
	don't die.

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

	* cppfiles.c: Update comments.
	(_cpp_read_file): Don't check for NULL filenames any more.
	* cppinit.c (cpp_start_read): Don't do canonicalization of
	in_fname and out_fname.  Use the passed file name exclusively.
	(_cpp_handle_options): Don't treat "-" as a command line option,
	but as a normal filename.
	(_cpp_post_options): Canonicalize in_fname and out_fname.
	* cppmain.c (printer_init): Don't check out_fname for NULL.
	* c-lex.c (orig_filename): Rename cpp_filename for clarity.
	(init_c_lex): Update, and use "" to represent stdin to CPP.
	(yyparse): Update.

2001-02-20  Will Cohen  <wcohen@redhat.com>

	* config/pa/quadlib.c (_U_Qfcnvfxt_quad_to_usgl): New function.
	* config/pa/long_double.h (FIXUNS_TRUNCTFSI2_LIBCALL): Added.
	(INIT_TARGET_OPTABS): Use FIXUNS_TRUNCTFSI2_LIBCALL for
	fixunstfsi_libfunc.

2001-02-20  Stan Shebs  <shebs@apple.com>

	* config/rs6000/rs6000.c (output_cbranch): Output branches
	on separate lines instead of using ';' to separate.

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

	* cppinit.c (set_lang):  Move builtin handling to...
	(init_builtins): ...here.
	(_cpp_create_reader): Move call to set_lang.

2001-02-20  Mark Mitchell  <mark@codesourcery.com>

	* stmt.c (expand_return): If an attempt is made to return the
	error_mar_node, treat the return like a return without a value.

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

	* sibcall.c (skip_copy_to_return_value): Call
	identify_call_return_value here, and return orig_insn if it
	returns zero.  Hardret and softret arguments now unnecessary.
	(call_ends_block_p): Don't call identify_call_return_value here.

	* ggc-common.c (ggc_mark_rtx_children): No need to mark 'S' or
	's' slots in RTXen.
	* ggc-page.c, ggc-simple.c (ggc_mark_if_gcable): Delete	function.
	* ggc.h (ggc_mark_if_gcable): Delete prototype.

Mon Feb 19 20:30:16 2001  Jeffrey A Law  (law@cygnus.com)

	* pa.c (move_operand): Accept code to load the address of a
	symbol out of the DLT as a valid move operand.
	(print_operand, case 'A'): New to handle generating a DLT
	reference for a LO_SUM expression.
	* pa.h (EXTRA_CONSTRAINT): Handle 'A' for DLT LO_SUM references.
	* pa.md (movsi, movdi patterns): Allow DLT LO_SUM references.

2001-02-19  Joseph S. Myers  <jsm28@cam.ac.uk>

	* README, cpp.texi, gcc.texi, version.c: Update version number to
	3.1.
	* cpp.1, gcov.1, gcc.1: Regenerate.

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

	* cppfiles.c (stack_include_file): Generate dependencies
	here, and manage include_count here too.
	(PRINT_THIS_DEP): Delete.
	(_cpp_execute_include): Do not generate dependencies here,
	apart from the case of a missing header.  Do not manage
	include_count.
	(_cpp_read_file): Leave dependency generation to
	stack_include_file.

Mon Feb 19 10:17:47 2001  Jeffrey A Law  (law@cygnus.com)

	* config.gcc (hppa*64*-*-hpux11*): Add MASK_GAS to
	target_cpu_default.  Remove dead assignment to
	target_cpu_default.

Mon Feb 19 16:47:39 CET 2001  Jan Hubicka  <jh@suse.cz>

	* regclass.c (contains_reg_of_mode): Make global.
	(init_reg_sets): Remove contains_reg_of_mode; take into account
	CLASS_MAX_NREGS when looking for the proper mode.
	(dump_regclass): Dump only classes considered for the pseudo.
	(regclass): Use contains_reg_of_mode.

Mon Feb 19 16:45:42 CET 2001  Jan Hubicka  <jh@suse.cz>

	* gcc.c (do_spec_1): 'n' for printing notices.
	* i386.h (CC1_CPU_SPEC): Notice deprecated options as deprecated.

Mon Feb 19 15:51:30 CET 2001  Jan Hubicka  <jh@suse.cz>

	* reg-stack.c (next_flags_user): Use current_block->end
	(swap_rtx_condition): Look for next user if flags don't die;
	give up on CALL_INSNs; use current_block->end.

Mon Feb 19 08:27:21 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* sibcall.c (call_ends_block_p): New function.
	(optimize_sibling_and_tail_recursive_call): Use it.

2001-02-18  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.md: Update copyright.
	(andsi3): Do not output an extra newline character.

Sun Feb 18 15:45:17 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* toplev.c (note_deferral_of_defined_inlined_function): Argument
	FNDECL may be unused.

	* toplev.c (rest_of_compilation): Don't have CSE skip blocks or
	follow jumps after first run.
	If -fexpensive-optimizations rerun CSE after GCSE and iterate until
	it doesn't change any jumps.

Sun Feb 18 17:05:50 2001  Jeffrey A Law  (law@cygnus.com)

	* Makefile.in (rtlanal.o): Depend on hard-reg-set.h.
	($HOST_PREFIX_1)rtlanal.o: Remove rules for building
	(mostlyclean): Corresponding changes.
	* rtlanal.c (hard-reg-set.h): Include.
	(rtx_unstable_p): Do not treat the argument pointer specially
	if it is not a fixed register.
	(rtx_varies_p, rtx_addr_can_trap_p): Similarly.

Sun Feb 18 15:45:17 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* sibcall.c (optimize_sibling_and_tail_recursive_call): Compare
	against last real insn in basic block.
	Rework to avoid gotos.

	* Makefile.in (gcse.o): Now includes ggc.h.
	* gcse.c: Include ggc.h.
	(want_to_gcse_p): Verify expression can be in SET as valid insn.
	(try_replace_reg): Remove warning of uninitialize variable.
	(process_insert_insn): Call invalid_insn_p to validate insn.
	* recog.c (insn_invalid_p): Now global.
	See if can make valid by adding CLOBBERs of SCRATCH only and do if so.
	* recog.h (insn_invalid_p): New declaration.

	* jump.c (jump_optimize_1): Only define reversed_code #ifdef HAVE_trap.

	* config/sparc/sparc.c (eligible_for_epilogue_delay): Don't put
	assignments from FP constants since 'Y' output code can't handle it.
	(eligible_for_sibcall_delay): Likewise.

	* flow.c (print_rtl_and_abort_fcn): Renamed from print_rtl_and_abort.
	Call fancy_abort directly, passing args.
	(print_rtl_and_abort): Now a macro, like fancy_abort.

	* final.c (output_operand_lossage): Use internal_error, not error.

2001-02-18  Shane Nay  <shane@agendacomputing.com>

	* mips.c (mips_expand_prologue) Add REG_MAYBE_DEAD to
	structure shift insns.

2001-02-18  Mark Mitchell  <mark@codesourcery.com>

	* invoke.texi (-fsquangle): Remove documentation.
	(-fname-mangling-version): Likewise.

2001-02-18  Lars Brinkhoff  <lars@nocrew.org>

	* optabs.c (expand_abs): Remove reference to
	HAVE_contitional_arithmetic.
	* combine.c (simplify_set): Likewise.

2001-02-18  Richard Henderson  <rth@redhat.com>

	* ifcvt.c (dead_or_predicable): Don't move code if eh regions
	would be disrupted.

2001-02-18  Richard Henderson  <rth@redhat.com>

	* config/ns32k/ns32k.h (ADJSP): Upcase arguments.

	* config/alpha/alpha.md (movsi_fix): Fix typo in pattern name.

	* reload1.c (reload_cse_simplify_set): Fix typo.

Sun Feb 18 09:30:09 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* diagnostic.c (_fatal_insn): Decrement errorcount.

	* invoke.texi (-I): Add note avoiding use for system header files.

	* rtl.h (add_clobbers): Remove duplicate declaration.
	* recog.h (added_clobbers_hard_reg_p): New declaration.
	* genemit.c (struct clobber_pat): New field has_hard_reg.
	(gen_insn): Record if added clobbers clobber hard reg.
	(gen_split): Avoid unused warning if number of operands is 0.
	(output_added_clobbers_hard_reg_p): New function.
	(main): Call it.

2001-02-18  Alan Modra <alan@linuxcare.com.au>

	* pa.c (hppa_expand_prologue): Simplify code storing return
	pointer.  For large (>=8k) frames with a post_store, adjust stack
	pointer by 8k-64 first rather than by 64.  When testing with
	VAL_14_BITS_P, always use the actual value rather than the value
	negated.  Add blockage to prevent scheduling of spills before
	stack frame has been created.
	(hppa_expand_epilogue): Simplify code loading return pointer.
	Allow a slightly larger range for merge_sp_adjust_with_load case.
	When testing with VAL_14_BITS_P, always use the actual value.

	* pa.c (pa_adjust_insn_length): Check that block move
	pattern is a set before looking at operands.

2001-02-17  Mark Mitchell  <mark@codesourcery.com>

	* fold-const.c (fold_binary_op_with_conditional_arg): New
	function, split out from ...
	(fold): ... here.
	* tree.def (COND_EXPR): Document the use of VOID_TYPE for
	conditional arms that throw exceptions.

	* print-tree.c (print_node): Do not use BLOCK_CHAIN when we're not
	looking at a BLOCK.

2001-02-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* aclocal.m4 (gcc_AC_CHECK_DECL): Before attempting the test,
	define HAVE_DECL_* to 1 to mask potential backup declarations.
	* configure: Regenerated.

2001-02-17  Mark Mitchell  <mark@codesourcery.com>

	* invoke.texi (-Woverloaded-virtual): Clarify documentation.

2001-02-17  Richard Henderson  <rth@redhat.com>

	* reload1.c (reload_cse_simplify_set): Respect LOAD_EXTEND_OP
	when replacing a memory load with a register.

Sat Feb 17 14:48:30 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
			  Jan Hubicka  <jh@suse.cz>

	* recog.c (validate_replace_src_1): New.
	(validate_replace_src_data): Likewise.
	(validate_replace_src): Use note_uses.
	* rtl.h (note_uses): Declare.
	* rtlanal.c (note_uses): New.

Sat Feb 17 10:52:34 CET 2001  Jan Hubicka  <jh@suse.cz>

	* reg-stack.c (stack_def): Make field reg unsigned.
	(remove_regno_note): Unsignetize parameter.

2001-02-16  Jes Sorensen  <jes@linuxcare.com>

	* ia64.c (errata_emit_nops): Add VOIDmode as second argument to
	shladd_operand() call.

2001-02-16  Bruce Korb  <bkorb@gnu.org>
	    Rodney Brown  <RodneyBrown@mynd.com>

	* fixinc/mkfixinc.sh: Use C fixincludes for UnixWare 7.
	* fixinc/inclhack.def: Add fixinc.svr4 patterns with matching
	machine restrictions
	* fixinc/fixincl.x: regen

Fri Feb 16 12:41:30 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* gcse.c (hash_scan_set): If cprop, see if REG_EQUAL or REG_EQUIV.
	Don't CSE a nop.
	(hash_scan_insn): Clean up calls to hash_scan_set.
	(compute_kill_rd): REGNO now unsigned.
	(try_replace_reg): Rework to use simplify_replace_rtx.
	(cprop_jump, cprop_cc0_jump): Likewise.
	(cprop_insn): Call find_reg_equal_equiv_note.
	Reflect changes to cprop_jump and cprop_cc0_jump.

	* recog.c (validate_replace_src): Replace in operands of
	ZERO_EXTRACT in SET_DEST.

	* cse.c (new_label_ref): New variable.
	(insert): Set it instead of recorded_label_ref.
	(cse_basic_block): Set recorded_label_ref if new_label_ref use, has
	CODE_LABEL for this function, and not already in REG_LABEL note.

2001-02-16  Jeffrey Oldham  <oldham@codesourcery.com>

	* resource.c (mark_referenced_resources): Fix typo in introductory
	comment.
	* config/mips/abi64.h (SUBTARGET_TARGET_OPTIONS): Fix typo in
	string constant.

2001-02-16  Jason Merrill  <jason@redhat.com>

	* dwarf2out.c (add_bound_info): Don't crash if SAVE_EXPR_RTL is
	NULL.
	(gen_subprogram_die): Don't abort on seeing a second definition if
	the previous one was abstract.  Don't replace an abstract instance
	in the lookup table.

	* dwarf2out.c (dwarf2out_abstract_function): Rename from
	gen_abstract_function.
	* dwarf2out.h: Declare it.
	* toplev.c (note_outlining_of_inline_function): New fn.
	* toplev.h: Declare it.
	* integrate.c (output_inline_function): Call it.
	* c-decl.c (duplicate_decls): Call it when redefining an extern
	inline.  Don't inline the new defn.

	* tree.h (BLOCK_CHAIN): Use BLOCK_CHECK.

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

	* .gdbinit: Rename to gdbinit.in.
	* gdbinit.in: New file,
	* configure.in: Generate .gdbinit from gdbinit.in.
	* configure: Regenerated.
	* Makefile.in (distclean): Always remove .gdbinit.

2001-02-16  Jakub Jelinek  <jakub@redhat.com>

	* objc/objc-act.c (start_class): Register implemented_classes with
	GC.

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

	* cppfiles.c (_cpp_make_system_header): Generate a file
	change callback.

2001-02-15  Jim Meyering  <meyering@lucent.com>

	* Makefile.in (install-common): Don't depend on installdirs here.
	Instead, make each of the lang.install-common targets (e.g.,
	c++.install-common in cp/Make-lang.in) depend on it.
	(install-driver): Depend on installdirs.

Thu Feb 15 21:30:26 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* flow.c (tidy_fallthru_edge): Never end block on line number NOTE.

	* function.c (assign_parms): Set RTX_UNCHANGING_P in pseudo when we
	do in memory.

2001-02-15  Mark Mitchell  <mark@codesourcery.com>

	* invoke.texi (--param): Document.

Thu Feb 15 15:16:38 2001  Alexandre Oliva  <aoliva@redhat.com>

	* config/sh/sh.h (BOOL_TYPE_SIZE): Don't define.

Thu Feb 15 10:52:31 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (extendsfdf2_2): Fix constraints.

Thu Feb 15 09:46:21 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (fop_df_3 splitter): Fix operand number.

Wed Feb 14 12:37:37 CET 2001  Jan Hubicka  <jh@suse.cz>

	* invoke.texi (-mreg-alloc): Nuke.
	* i386.c (ix86_reg_alloc_order, regs_allocated,
	order_regs_for_local_alloc): Nuke.
	(override_options): Kill reg_alloc code.
	* i386.h (TARGET_OPTIONS): Kill reg-alloc.
	(REG_ALLOC_ORDER): SSE goes before I387.
	(ORDER_REGS_FOR_LOCAL_ALLOC): Kill.
	(ix86_reg_alloc_order): Likewise.
	* i386-protos.h (ix86_reg_alloc_order): Kill.

2001-02-14  Richard Henderson  <rth@redhat.com>

	* toplev.c (f_options): Clarify -fschedule-insns2 documentation.

Wed Feb 14 11:59:58 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.h (RETURN_IN_MEMORY): Fix formating; reject TFmodes

Wed Feb 14 11:12:38 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386-protos.h (ix86_memory_move_cost): Move offline.
	* i386.c (ix86_register_move_cost): Compute properly cost of
	SSE, MMX and i387 instructions.
	(*_cost): Add costs of SSE/MMX moves.
	(ix86_memory_move_cost): Move offline from ....; Likewise.
	* i386.h (MEMORY_MOVE_COST): .... here;
	(struct processor costs): Add new fields to represent costs
	of SSE/MMX moves.

Wed Feb 14 10:08:26 CET 2001  Jan Hubicka  <jh@suse.cz>

	* regclass.c (init_reg_sets_1): Reinstall the optimization of
	move_cost together with Matt Kraai's fix.

2001-02-14  Jeffrey Oldham  <oldham@codesourcery.com>

	* Makefile.in (OBJS): Add params.o.

2001-02-14  Richard Henderson  <rth@redhat.com>
	    DJ Delorie  <dj@redhat.com>

	* jump.c (jump_optimize_1): When we delete a conditional jump
	preceding a non-conditional jump to effectively the same place,
	make sure that the combined jump skips any clobber insns between
	the two labels.

2001-02-14  Jeffrey Oldham  <oldham@codesourcery.com>

	* gcc.c (do_spec_1): Fix off-by-one error for '%M' case.

2001-02-14  Mark Mitchell  <mark@codesourcery.com>

	* Makefile.in (toplev.o): Depend on params.h.
	(intergate.o): Likewise.
	(params.o): New target.
	* flags.h (inline_max_insns): Remove.
	* integrate.c: Include params.h.
	Use MAX_INLINE_INSNS instead of inline_max_insns.
	* params.c: New file.
	* params.h: Likewise.
	* params.def: Likewise.
	* toplev.c: Include params.h.
	(lang_independent_params): New variable.
	(decode_f_option): Use the param machinery instead of setting
	max_inline_insns.
	(independent_decode_option): Handle "--param name=value".
	(main): Register language-independent parameters.

Wed Feb 14 11:13:45 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (pushsf, pushdf_nointeger): Fix constraint.

2001-02-14  Richard Henderson  <rth@redhat.com>

	* regclass.c (init_reg_sets_1): Revert last two changes.

2001-02-14  Jakub Jelinek  <jakub@redhat.com>

	* stor-layout.c (is_pending_size, put_pending_size): New functions.
	(variable_size): Call put_pending_size.
	* tree.h (is_pending_size, put_pending_size): Add prototypes.
	* fold-const.c (extract_muldiv): If SAVE_EXPR is on the pending
	sizes list, put newly created SAVE_EXPR there as well.

2001-02-14  Jakub Jelinek  <jakub@redhat.com>

	* config/ia64/ia64.c (last_group): Only 2 entries are needed.
	(errata_find_address_regs): load_group has only 2 entries.
	(errata_emit_nops): Likewise.  shladd is not problematic.
	Clear last_group if nop was emitted.
	(fixup_errata): load_group has only 2 entries.
	Optimize.

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

	* c-lex.c (lex_number): Only warn traditionally for U suffix
	outside system macros.
	* cppexp.c (parse_number): Similarly.
	* cpplib.h (NODE_SYSHDR, cpp_sys_objmacro_p): New.
	* cppmacro.c (struct cpp_macro): New member node.
	(parse_args): Only warn about missing rest args if not
	a system macro.
	(funlike_invocation_p): Similarly for uninvoked funlike macros.
	(cpp_sys_objmacro_p): New.
	(_cpp_create_definition): Store the node with the macro defn.
	Remember if the macro is defined in a system header.

2001-02-13  DJ Delorie  <dj@redhat.com>

	* configure.in (check_languages): determine languages to check
	* Makefile.in (check-c++): alias for check-g++
	(check-f77): alias for check-g77
	(CHECK_TARGETS): depend on configured languages

Wed Feb 14 01:13:59 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (fixsfsi2, fixdfdi2): Fix previous patch again.
	(sqrtsf2): Use TARGET_SSE instead of TARGET_SSE2)
	(sqrtsf2 patterns): Use 'x' instead of 'Y'.
	(sqrtextendsfdf2): Disable for SSE2.

Wed Feb 14 00:19:28 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (fixsfsi2, fixdfdi2): Fix previous patch again.
	(sqrtsf2): Use TARGET_SSE instead of TARGET_SSE2)
	(sqrtsf2 patterns): Use 'x' instead of 'Y'.
	(sqrtextendsfdf2): Disable for SSE2.

Wed Feb 14 00:11:20 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (movsfcc_1): Support integer cmove instruction.
	(movdfcc_1): Likewise; new splitter.

Tue Feb 13 23:19:27 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.c (output_fp_compare): Support SSE.
	(prepare_fp_compare_args): SSE comparisons always support memory.
	* i386.h (TARGET_CMOVE): SSE imply cmove.
	* i386.md (cmp?f2): Enable for SSE too.
	(cmpfp_i*): Support SSE.
	(cmpfp_i_sse): New.
	(cmpfp_i_sse_only): New.
	(s*, b* fp expanters): Enable for SSE too.
	(fp_jcc_1_sse, fp_jcc_1_sse_only, fp_jcc_2_sse, fp_jcc_2_sse_only):
	New patterns.

Tue Feb 13 23:05:42 CET 2001  Jan Hubicka  <jh@suse.cz>

	* regclass.c (init_reg_sets_1): Silence warning.

Tue Feb 13 22:03:07 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (sqrt?f2): Change to expander.
	(sqrt?f2_1, sqrt?f2_sse_only, sqrt?f2_i387): New.

Tue Feb 13 15:42:05 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* rtlanal.c (find_reg_equal_equiv_note): New function.
	* simplify-rtx.c (simplify_gen_unary, simplify_gen_ternary): New fns.
	(simplify_gen_relational, simplify_replace_rtx): Likewise.
	* rtl.h: Add declarations for above functions.

Tue Feb 13 21:09:11 CET 2001  Jan Hubicka  <jh@suse.cz>

	* cse.c (cse_main): Converts ifdefs on PIC_OFFSET_TABLE_REGNUM to
	conditionals.
	* defaults.h (PIC_OFFSET_TABLE_REGNUM): Default to INVALID_REGNUM.
	* emit-rtl.c (init_emit_once): Convert ifdefs to conditionals.
	* flow.c (mark_regs_live_at_end): Likewise.
	(calculate_global_regs_live): Likewise.
	* gcse.c (compute_hash_table): Likewise.
	(compute_kill_rd): Likewise.
	* resource.c (mark_target_live_regs): Likewise.
	* rtl.h (INVALID_REGNUM): New macro.

Tue Feb 13 20:59:22 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (fixsfsi2, fixdfdi2): Fix previous patch.

Tue Feb 13 16:32:20 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (fixsfsi2, fixdfdi2): Force operand to register
	for SSE.

Tue Feb 13 14:53:16 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (add?f3, sub?f3, mul?f3, dif?f3): Enable for TARGET_SSE(2)
	too.
	(fop_sf_comm, fop_df_comm, fop_sf_1, fop_df_1): Support SSE.
	(fop_sf_comm_sse, fop_df_comm_sse): New patterns.
	(fop_sf_1_sse, fop_df_1_sse): New patterns
	(fop_*): Disable float_extend and float patterns for SSE compilation.
	* i386.c (output_387_binary_op): Support SSE.

Tue Feb 13 14:16:34 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (dummy_extendsfdf2): Support SSE2
	(extendsfdf2): Enable if 80387 or SSE2.
	(extendsfdf2_1): Support SSE2. Disable if SSE2 is avialble
	and no MIX_I387_SSE2
	(extendsfdf2_1_sse_only): New pattern.
	(truncdfsf2): Enable if SSE2 or 80387; Always use SSE only version
	of SSE.
	(truncdfsf2_1): Support SSE.
	(truncdfsf2_2): Support SSE.
	(truncdfsf2_2_1_sse): New pattern.
	(fixtruncsfsi2): Always use SSE if available.
	(fix_truncsfsi_sse): New pattern.
	(fix_truncdfsi_sse): New pattern.
	(floatsis?f2): Support SSE.
	(floatsidf2_i387): New pattern.
	(floatsidf2_sse): Likewise.

Tue Feb 13 07:52:04 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* configure.in: Use "have_gnat" variable, not "gnat".
	* configure: Regenerated.

	* config/sparc/sparc.c (function_value): Treat all non-record
	aggregate types like used to treat UNION_TYPE.

Tue Feb 13 13:31:33 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.c (print_reg): Use ANY_FP_REG instead of FP_REG
	* i386.h (MASK_128BIT_LONG_DOUBLE): Renumber
	(MASK_SSE2): New.
	(MASK_MIX_SSE_I387): New.
	(TARGET_SSE): SSE2 imply SSE.
	(TARGET_SSE2, TARGET_MIX_SSE_I387): New.
	(TARGET_SWITCHES): Add "sse2", "mix-sse-i387".
	(enum reg_class): Add new classes.
	(REG_CLASS_NAMES): Likewise.
	(REG_CLASS_CONTENTS): Likewise.
	(ANY_FP_REG_P, ANY_FP_REGNO_P, SSE_REG_P, SSE_FLOAT_MODE): New macros.
	(REG_CLASS_FROM_LETTER): 'x' and 'y' is SSE_REGS only when SSE is
	supported. Add 'Y' to be SSE_REGS when SSE2 is supported.
	(CLASS_MAX_NREGS): Use new macros.
	(REGISTER_MOVE_COST): Rewrite using SECONDARY_MEMORY_MAYBE_NEEDED.
	* i386.md (pushsf, movsf): Support SSE.
	(pushdf_nointeger, pushdf_integer, pushdf): Support SSE, update
	splitters to use ANY_FP_REGNO_P.
	(movdf_nointeger, movdf_integer): Likewise.

2001-02-13  Alexandre Oliva  <aoliva@redhat.com>

	* combine.c (UWIDE_SHIFT_LEFT_BY_BITS_PER_WORD): New macro.
	(try_combine): Use it.

Tue Feb 13 11:37:06 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.h (SSE_CLASS_P, MMX_CLASS_P, MAYBE_FLOAT_CLASS_P,
	MAYBE_SSE_CLASS_P, MAYBE_MMX_CLASS_P): New macros.
	(PREFERRED_RELOAD_CLASS, SECONDARY_MEMORY_NEEDED): Move offline.
	(REGISTER_MOVE_COST): Likewise.
	* i386-protos.h (ix86_secondary_memory_needed,
	ix86_preferred_reload_class, ix86_register_move_cost): Declare.
	* i386.c (ix86_secondary_memory_needed,
	ix86_preferred_reload_class, ix86_register_move_cost): New function.

Die Feb 13 11:04:25 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.h (VALID_FP_MODE_P, VALID_INT_MODE_P): New.
	(HARD_REGNO_MODE_OK): Move offline to ....
	* i386.c (ix86_hard_regno_mode_ok) ... here;
	refuse all incorrect modes.
	* i386-protos.h (ix86_hard_regno_mode_ok): Declare.

2001-02-13  Richard Henderson  <rth@redhat.com>

	* sparc.md (cmp_cc_arith_op_set): Don't use match_dup on the
	entire operator; replicate that and match_dup the operands.
	(cmp_ccx_arith_op_set): Likewise.
	(cmp_cc_arith_op_not_set): Likewise.
	(cmp_ccx_arith_op_not_set): Likewise.

2001-02-13  Alexandre Oliva  <aoliva@redhat.com>

	* explow.c (trunc_int_for_mode): Sign-extend value to mode.

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

	* config/rs6000/sysv4.h (MASK_NO_BITFIELD_WORD): New macro.
	(TARGET_NO_BITFIELD_WORD): New macro.
	(SUBTARGET_SWITCHES): Add -mbit-word, -mno-bit-word options.
	(BITFIELD_NBYTES_LIMITED): Define based on TARGET_NO_BITFIELD_WORD.

Mon Feb 12 18:13:26 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* cselib.c: New file, from simplify-rtx.c.
	* simplify-rtx.c: Remove cselib parts.
	* Makefile.in: Add cselib.o.

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

	* config/rs6000/rs6000.c (rs6000_float_const): Remove warning.
	(setup_incoming_varargs): Remove warning.

	* config/rs6000/rs6000.c (validate_condition_mode): When
	flag_fast_math, allow floating-point conditionals to be reversed.
	(rs6000_generate_compare): When flag_fast_math, don't generate
	cror operations for FP conditionals.

	* config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Handle
	-mcall-i960.
	(ASM_SPEC): Likewise.
	(CC1_ENDIAN_LITTLE_SPEC): Likewise.
	(CC1_SPEC): Likewise.
	(LINK_TARGET_SPEC): Likewise.
	(CPP_ENDIAN_SPEC): Likewise.
	* Makefile.in (check-consistency): New target.

2001-02-12  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-decl.c (grokdeclarator): In C99 mode, give the more specific
	"return type defaults" warning for functions with return type
	defaulting to int.
	* c-lang.c (c_init): In C99 mode, enable warnings for implicit
	function declarations by default rather than only when pedantic.

Mon Feb 12 17:28:48 CET 2001  Jan Hubicka  <jh@suse.cz>

	* regclass.c (init_reg_sets_1): Optimize calculation of move_cost
	arrays.

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

	* extend.texi (Deprecated): Deprecate new initializer lists.

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

	* mkdeps.c (deps_add_default_target): Robustify. Add
	basename component only.
	* cpp.texi (-M): Describe how default target is generated.
	* invoke.texi (-M): Likewise.

2001-02-12  Kazu Hirata  <kazu@hxi.com>

	* toplev.c (push_float_handler): Remove.
	(pop_float_handler): Remove.
	* toplev.h: Remove prototypes for the above functions.

2001-02-12  Jakub Jelinek  <jakub@redhat.com>

	* c-common.c (constant_fits_type_p): New function.
	(convert_and_check): Use it.

2001-02-11  Mark Mitchell  <mark@codesourcery.com>

	* Makefile.in (GXX_ABI_FLAG): Don't define.
	* configure.in (--enable-new-gxx-abi): Remove option.
	* config.in: Regenerated.
	* configure: Likewise.

2001-02-12  Alexandre Oliva  <aoliva@redhat.com>

	* lcm.c (compute_earliest): Let EXIT_BLOCK be handled as a regular
	basic block.
	(optimize_mode_switching) [NORMAL_MODE]: Set up EXIT_BLOCK as a
	regular basic block, and arrange for all edges into it to switch
	to normal mode.

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

	* Makefile.in (distclean): Do not remove .gdbinit.

2001-02-11  Mark Mitchell  <mark@codesourcery.com>

	* Makefile.in (gcc.o): Fix typos.
	(protize.o): Likewise.
	(unprotoize.o): Likewise.

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

	* tree.c (build1): Check for null operand in last change.

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

	* fold-const.c (split_tree): Don't assume a constant isn't splittable.
	(fold): Don't assume a constant isn't foldable.
	* tree.c (build): Set TREE_CONSTANT for an expression with no
	side-effects and constant operands.
	(build1): Likewise.

2001-02-10  Richard Henderson  <rth@redhat.com>

	* jump.c (squeeze_notes): Revert 2000-05-12 change.

2001-02-10  Anthony Green  <green@redhat.com>

	* cpp.texi (Standard Predefined): Add documentation for
	__OPTIMIZE_SIZE__.

	* c-common.c (combine_strings): Improve warning message.

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

	* config/rs6000/sysv4.h (LINK_TARGET_SPEC): Use two dashes for
	--oformat.
	* config/rs6000/sysv4le.h (LINK_TARGET_SPEC): Likewise.

Fri Feb  9 15:05:27 2001  Christopher Faylor <cgf@cygnus.com>

	* config/i386/t-cygwin (T_CPPFLAGS): Use correct location for
	CYGWIN_CROSS_DIR.

2001-02-09  Alexandre Oliva  <aoliva@redhat.com>

	* config/sh/sh.md (sibcalli, sibcalli_pcrel, sibcalli): Set
	fp_mode attribute.

2001-02-09  Nick Clifton  <nickc@redhat.com>

	* config/arm/arm.md: Change output contraint on post inc
	load/store multiple patterns to be a read/write contraint.

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

	* gcc.c (cpp_options): Delete .d files on error.  Don't delete
	.o files when using the -M options.

2001-02-08  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>
	    David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.c (output_toc): Allow 32-bit targets to
	handle DImode constants.  Use one TOC entry for SImode and smaller
	constants, aligned properly.

2001-02-08  Jason Merrill  <jason@redhat.com>

	* config/arm/arm.c (arm_expand_prologue): Do tell the dwarf2 backend
	about the SP adjustment for saving the static chain pointer.
	* dwarf2out.c (dwarf2out_frame_debug_expr): Use the specified
	offset when setting a temporary CFA register.

2001-02-08  Chandrakala Chavva  <cchavva@redhat.com>

	* config.gcc : New targets, i386-*-chorusos*, sparc-*-chorusos*,
	powerpc-*-chorusos* .
	* config/rs6000/chorus.h : New file.
	* config/i386/chorus.h : New file.
	* config/sparc/chorus.h : New file.
	* config/sparc/t-chorus-elf : New file.

2001-02-08  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.h (ASM_OUTPUT_SYMBOL_REF): Move from here ...
	* config/rs6000/aix.h (ASM_OUTPUT_SYMBOL_REF): ... to here.
	* config/rs6000/aix51.h (CPLUSCPLUS_CPP_SPEC): Define it.
	(__WCHAR_TYPE__): Correct macro name.

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

	* config/i386/i386.c (ix86_frame_pointer_required): New.
	(ix86_setup_frame_addresses): New.
	(struct machine_function): Add accesses_prev_frame.
	* config/i386/i386.h (FRAME_POINTER_REQUIRED): Call
	ix86_frame_pointer_required.
	(SUBTARGET_FRAME_POINTER_REQUIRED): New.
	(SETUP_FRAME_ADDRESSES): New.
	* config/i386/i386-protos.h: Update.
	* config/i386/sco5.h (SUBTARGET_FRAME_POINTER_REQUIRED): Rename
	from FRAME_POINTER_REQUIRED.
	* config/i386/svr3gas.h: Likewise.
	* config/i386/sysv3.h: Likewise.
	* config/i386/v3gas.h: Likewise.

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

	* config/sparc/sparc.c (function_arg_record_value_3): Fix
	calculation of the number of integer registers required.
	(function_arg_record_value): Likewise.

2001-02-08  Jason Merrill  <jason@redhat.com>

	* diagnostic.c (internal_error): Say "confused" after 1 error, not
	two.  Print file and line with "confused" message.

	* dwarf2out.c (dwarf2out_line): Include filename in -dA output.

Thu Feb  8 11:21:28 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* rtlanal.c (remove_node_from_expr_list): Correctly update PREV.

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

	* final.c (cleanup_subreg_operands): The address of a MEM can
	contain SUBREGs.

	* config/ia64/ia64.c (ia64_variable_issue): Call group_barrier_needed_p
	for asms, too.

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

	* gcc.texi (Incompatibilities): Update documentation of
	preprocessing numbers.

2001-02-07  Jakub Jelinek  <jakub@redhat.com>

	* c-decl.c (finish_enum): Revert part of 2000-01-05 change.

2001-02-07  Mark Mitchell  <mark@codesourcery.com>

	* config/rs6000/aix43.h (CPLUSCPLUS_CPP_SPEC): Define it.

	* defaults.h (CPLUSPLUS_CPP_SPEC): New macro.
	* gcc.c (struct compiler): Add cpp_spec field.
	(input_file_compiler): New variable.
	(do_spec_1): Allow a particular compiler to handle `%C'
	specially.
	(main): Store the current compiler in input_file_compiler.
	* tm.texi (CPLUSPLUS_CPP_SPEC): Document.

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

	* cpphash.h (struct spec_nodes): Add n_true and n_false.
	* cppinit.c (cpp_create_reader): Initialize them.
	(append_include_chain): cxx_aware arg might be unused.
	* cppexp.c (lex): In C++ mode, recognize 'true' and 'false'
	keywords and give them their phase 7 meaning.  Pedwarn about
	this unless '__bool_true_false_are_defined' is defined.

2001-02-07  Alexandre Oliva  <aoliva@redhat.com>

	* lcm.c (optimize_mode_switching): Emit mode_set before the
	JUMP_INSN of an abnormal edge.

2001-02-07  Bernd Schmidt  <bernds@redhat.com>

	* builtins.c (expand_builtin_setjmp_receiver): Emit an ASM_INPUT as
	a scheduling barrier at the end.

	* tm.texi (MD_INIT_BUILTINS, MD_EXPAND_BUILTIN): Document.

2001-02-07  Alexandre Oliva  <aoliva@redhat.com>

	* config/sh/sh.md (reload_outsf): Removed.
	(movsf_ie): Introduce constraints for FPUL loads and stores.
	(reload_insf): Broaden the output constraint.

	* config/elfos.h (INT_ASM_OP): Don't define it if it's already
	defined.
	* config/sh/sh.h (INT_ASM_OP, ASM_OUTPUT_CONSTRUCTOR,
	ASM_OUTPUT_DESTRUCTOR): Copy definitions from config/elfos.h.

2001-02-06  Chandrakala Chavva  <cchavva@redhat.com>

	* final.c: Revert my previous changes.
	* output.h: Make profile_label_no extern.
	* config/rs6000/rs6000.c (output_profile_hook): Use standard functions
	for generating label.

2001-02-06  Laurynas Biveinis  <lauras@softhome.net>

	* config/i386/djgpp.h: Add comments about standard paths.
	(MD_EXEC_PREFIX): Undefine before defining.
	(MD_STARTFILE_PREFIX): New.

2001-01-30  Bruce Korb  <bkorb@gnu.org>

	fixinc/fixincl.c(process):  Emit error message only if appropriate :)
	(load_file): do not rely on load_file_data() to close file pointer
	fixinc/fixlib.c(load_file_data): do not close passed in file pointer
	fixinc/inclhack.def(irix_limits_const): add test_text

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

	* cppexp.c (parse_defined): Improve diagnostics for invalid
	syntax.

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

	* cppmacro.c (cpp_get_token): Avoid pasting after a builtin.

2001-02-06  Mark Mitchell  <mark@codesourcery.com>

	* config/rs6000/rs6000.h (ASM_OUTPUT_SYMBOL_REF): Define.
	* config/rs6000/rs6000-protos.h (rs6000_output_symbol_ref): Declare.
	* config/rs6000/rs6000.c (VTABLE_NAME_P): New macro.
	(rs6000_output_symbol_ref): New function.
	(output_toc): Use VTABLE_NAME_P.

Tue Feb  6 07:54:51 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* print-tree.c (print_node, case PARM_DECL):
	Print DECL_ARG_TYPE and DECL_ARG_TYPE_AS_WRITTEN.

	* stor-layout.c (reference_types_internal): New variable.
	(internal_reference_types): New function.
	(layout_type, case REFERENCE_TYPE): Make Pmode if internal.
	* tree.h (internal_reference_types): New declaration.

	* cse.c (find_best_addr): Fix typo in computing cost.

Mon Feb  5 21:56:16 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* combine.c (nonzero_bits, case PLUS): If pointers extend unsigned
	and this is the sum of a pointer and a constant, we know the result
	did not overflow.
	(num_sign_bit_copies, case PLUS): Likewise.
	* explow.c (convert_memory_address): Remove opposite SUBREG.
	* function.c (instantiate_new_reg): New function (from common code).
	(instantiate_virtual_regs_1): Call it.
	For PLUS, handle if (plus (subreg (virt-reg) (const_int))
	if pointers sign- or zero-extend.
	* simplify-rtx.c (simplify_unary_operation, case ZERO_EXTEND):
	If pointers extend unsigned, use inside of SUBREG.
	(simplify_unary_operation, case SIGN_EXTEND): Likewise, if sign extend.

2001-02-05  Benjamin Kosnik  <bkoz@redhat.com>

	* Makefile.in (-DGPLUSPLUS_TOOL_INCLUDE_DIR): Change to target
	subdir of gcc_gxx_include_dir.
	(gcc_gxx_target_include_dir): Remove.

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

	* dwarf2out.c: Revise DWARF2 Abbreviation Glossary comments.
	(dwarf2out_frame_debug_expr): Revise introductory comments to add
	a high-level description.

2001-02-05  Chandrakala Chavva  <cchavva@redhat.com>

	* final.c: Move the declaration of profile_label_no to ...
	* output.h: ... here.
	* function.c (expand_function_start): Call PROFILE_HOOK.
	* config/rs6000/aix.h: Define PROFILE_HOOK.
	* config/rs6000/rs6000-protos.h: output_profile_hook new.
	* config/rs6000/rs6000.c (output_profile_hook): Define.
	(output_prolog): Do nothing for ABI_AIX as it is taken care by
	output_profile_hook.
	tm.texi : Explain new macro PROFILE_HOOK.

2001-02-06  Hans-Peter Nilsson  <hp@axis.com>

	* extend.texi (Extended Asm): Do not say that semicolon is always
	a valid line-breaking character for GNU assemblers.  Use
	newline-tab as the most commonly supported syntax.  Use
	newline-tab rather than semicolon in multi-insn examples.

2001-02-05  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* Makefile.in (gcc_gxx_target_include_dir): Use $(target_alias).

2001-02-05  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>
	    David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.c (rs6000_return_addr): Use PIC
	code for AIX, even without flag_pic.

2001-02-05  Jakub Jelinek  <jakub@redhat.com>

	* c-typeck.c (common_type): push and pop binding level around
	calling common_type on function parameters.

Mon Feb  5 14:30:37 2001  Christopher Faylor <cgf@cygnus.com>

	* config/i386/cygwin.h (CPP_SPEC): Add missing space after -idirafter.

Mon Feb  5 11:23:16 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* config/mips/mips.c (override_options): Fix typo in last change.
	(mips_make_temp_file): Call fatal_io_error, not pfatal_with_name.
	(mips_asm_file_end): Likewise; also pass more args to fatal_io_error.

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

	* invoke.texi (-fdump-class-layout): Document.
	(-fdump-translation-unit): Use `=' as filename separator.

2001-02-05  Mark Mitchell  <mark@codesourcery.com>

	* Makefile.in (s-mlib): Don't build multilibs if
	--disable-multilib.
	(DRIVER_DEFINES): Adjust accordingly.
	(gcc.o): Likewise.
	(protoize.o): Likewise.
	(unprotoize.o): Likewise.
	* configure.in: Recognize --enable-multilib.

2001-02-04  Mark Mitchell  <mark@codesourcery.com>

	* Makefile.in (DRIVER_DEFINES): Fix quoting.

	* Makefile.in (site.exp): Always set HAVE_LIBSTDCXX_V3.
	* configure.in: Remove --enable-libstdcxx_v3 support.
	* configure: Regenerated.

Sun Feb  4 15:52:44 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* config/avr/avr.h (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP):
	Call abort instead of fatal.
	(TRAMPOLINE_TEMPLATE): Call internal_error instead of fatal.
	* config/dsp16xx/dsp16xx.h (FUNCTION_PROFILER): Likewise.
	(FUNCTION_BLOCK_PROFILER, BLOCK_PROFILER): Likewise.
	(TRAMPOLINE_TEMPLATE, INITIALIZE_TRAMPOLINE): Likewise.
	(ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Likewise.
	* config/rs6000/rs6000.h (RETURN_ADDRESS_OFFSET): Likewise.

	* diagnostic.h (set_internal_error_function): Renamed.
	* toplev.h (internal_error): Renamed from fatal.
	(pfatal_with_name): Deleted.
	(fatal_io_error): Now has printf-style arguments.
	* diagnostic.c (pfatal_with_name): Deleted.
	(fatal_io_error): Rework to have args in printf-style.
	(set_internal_error_function): Renamed from set_fatal_function.
	(internal_error): Renamed from fatal.
	(error_recursion, fancy_abort): Call internal_error instead of fatal.
	* dwarf2out.c (get_cfa_from_loc_descr): Likewise.
	* emit-rtl.c (gen_realpart, gen_imagpart): Likewise.
	* expr.c (check_max_integer_computation_mode, expand_expr): Likewise.
	* flow.c (verify_flow_info): Likewise.
	* config/arm/arm.c (thumb_unexpanded_epilogue): Likewise.
	* config/mips/mips.c (save_restore_insns): Likewise.

	* except.c (duplicate_eh_handlers): Call abort instead of fatal.
	* flow.c (verify_flow_info): Likewise.
	* config/arm/arm.c (thumb_load_double_from_address): Likewise.
	* config/avr/avr.c (pttreg_to_str, unique_section): Likewise.
	(avr_normalize_condition): Likewise.
	* config/c4x/c4x.c (c4x_emit_libcall, c4x_valid_operands): Likewise.
	* config/dsp16xx/dsp16xx.c (dsp16xx_reg_class_from_letter): Likewise.
	(limit_reload_class, double_reg_to_memory): Likewise.
	(print_operand_address, emit_1600_code_shift): Likewise.
	(gen_tst_reg, gen_compare_reg): Likewise.
	* config/m68hc11/m68hc11.c (m68hc11_emit_libcall): Likewise.
	* config/dsp16xx/dsp16xx.c (dsp16xx_invalid_register_for_compare):
	Deleted.
	* config/dsp16xx/dsp16xx.md (unnamed cmphi): Call abort instead of it.

	* c-parse.in (methoddef): Call fatal_error instead of fatal.
	* objc/objc-act.c (build_ivar_chain): Likewise.
	* dwarfout.c (dwarfout_init): Call fatal_io_error instead of
	pfatal_with_name.
	* graph.c (clean_graph_dump_file): Likewise.
	* profile.c (init_branch_prob): Likewise.
	* objc/objc-act.c (objc_init): Likewise.

	* config/arm/arm.c (arm_override_options): Make errors non-fatal.
	* config/avr/avr.c (avr_override_options): Likewise.
	* config/c4x/c4x.c (c4x_expand_prologue): Likewise.
	* config/dsp16xx/dsp16xx.c (function_prologue): Likewise.
	* config/h8300/h8300.c (h8300_init_once): Likewise.
	* config/mips/mips.c (override_options): Likewise.
	* config/i386/i386.c (override_options): Likewise, rework.
	* config/m68k/m68k.c (override_options): Likewise.

	* config/dsp16xx/dsp16xx.c (print_operand): Call output_operand_lossage
	instead of fatal.
	* config/mips/mips.c (print_operand): Likewise.
	* hash.c (hash_allocate): Don't check for failure returns from
	obstack functions that can't fail.
	(hash_table_init_n, hash_table_init): Likewise; also now return void.
	* hash.h (hash_table_init_n, hash_table_init): Now return void.
	* objc/objc_act.c (objc_check_decl): Remove unneeded fatal call.
	(get_object_reference): Likewise.

2001-02-04  Nick Clifton  <nickc@redhat.com>

	* config/arm/arm.c (all_cores): Add 710T, 720T, 740T, 940T, 9e,
	StrongARM1110, 10TDMI, and 1020T.

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

	* mips.h (MULTILIB_ISA_DEFAULT): Don't use #elif.

2001-02-04  Alexandre Oliva  <aoliva@redhat.com>

	* config/sh/sh.md (movdf load split): Pass register number to
	FP_OR_XD_REGISTER_P.

2001-02-04  Mark Mitchell  <mark@codesourcery.com>

	* cppinit.c (BC): New macro.
	(builtin_array): Add __GXX_WEAK__.
	* cpplib.h (builtin_type): Add BT_WEAK.
	* cppmacro.c (builtin_macro): Handle BT_WEAK.
	* defaults.h (SUPPORTS_ONE_ONLY): Define.
	* varasm.c (SUPPORTS_ONE_ONLY): Do not define.

2001-02-03  Jakub Jelinek  <jakub@redhat.com>

	* cppinit.c (append_include_chain): Honor NO_IMPLICIT_EXTERN_C.

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

	* cpphash.h: Rename _ALIGN POOL_ALIGN.
	* cpplex.c (new_chunk, _cpp_pool_reserve): Update.

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

	* cpphash.h: Rename ALIGN _ALIGN.
	* cpplex.c (new_chunk, _cpp_pool_reserve): Update.

Fri Feb  2 23:15:29 2001  Christopher Faylor <cgf@cygnus.com>

	* config/i386/cygwin.h (CPP_SPEC): Reorganize YA to better handle cross
	compilation environment.
	* config/i386/t-cygwin (T_CPPFLAGS): Define CYGWIN_CROSS_DIR to allow
	control over location of cygwin includes and libs.

2001-02-03  Michael Hayes  <m.hayes@elec.canterbury.ac.nz)

	* c4x.h	(HARD_REGNO_CALL_PART_CLOBBERED): Fix typo.

2001-02-02  lars brinkhoff  <lars@nocrew.org>

	* md.texi (Standard Names): remove reference to spur.md.

2001-02-03  Michael Hayes  <m.hayes@elec.canterbury.ac.nz)

	* c4x.h (IS_INT_CALL_SAVED_REG, IS_FLOAT_CALL_SAVED_REG): Define.
	(HARD_REGNO_CALL_PART_CLOBBERED): Use IS_FLOAT_CALL_SAVED_REG.
	(INITIAL_FRAME_POINTER_OFFSET, INITIAL_ELIMINATION_OFFSET): Likewise.
	* c4x.c (c4x_hard_regno_rename_ok): Use IS_XXX_CALL_SAVED_REG.
	(c4x_expand_prologue, c4x_expand_epilogue): Likewise.

2001-02-03  Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>

	* c4x.c (group1_reg_operand, group1_mem_operand, arx_reg_operand,
	c4x_arn_reg_operand, c4x_arn_mem_operand): Do not check register
	number before reload.
	(c4x_adjust_cost): Return zero before reload.
	* c4x.md (load_immed_address+1, load_immed_address+2): Do not
	split before reload.

2001-02-03  Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>

	* c4x.c (c4x_hard_regno_rename_ok): New.
	* c4x-protos.h (c4x_hard_regno_rename_ok): New.
	* c4x.h (HARD_REGNO_RENAME_OK): Define.

Fri Feb  2 20:03:50 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* diagnostic.h: Add missing "extern" in all declarations.

2001-02-02  Alex Samuel  <samuel@codesourcery.com>

	* Makefile.in (gcc_gxx_target_include_dir): Generate dynamically
	as for gcc_gxx_include_dir.

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

	* cpp.texi, invoke.texi: Update -Wtraditional documentation.

2001-02-02  Alexandre Oliva  <aoliva@redhat.com>

	* config/sh/sh.c (output_far_jump): Don't use braf on SH1.  Emit
	label before alignment to be used as the braf base address.
	* config/sh/sh.md (length): Use longer lengths for SH1 PIC far
	branches.
	(casesi_jump_2): Require at least TARGET_SH2.

	* config/float-sh.h (LDBL_EPSILON, LDBL_MIN, LDBL_MAX): Prevent
	truncation to 32-bit doubles on -m3e and -m4-single-only.

2001-02-02  Mark Mitchell  <mark@codesourcery.com>

	* gcc.c (init_gcc_specs): New function.  Make -shared-libgcc
	the default when building a shared object.
	(init_spec): Use it.
	* testsuite/lib/g++.exp: Include the directory where libgcc
	is located to the LD_LIBRARY_PATH list.
	* invoke.texi (-shared-libgcc): Document the cases in which
	GCC defaults to using the shared libgcc.

2001-02-02  Alexandre Oliva  <aoliva@redhat.com>

	* config/fp-bit.h (MAX_USI_INT, MAX_SI_INT): Don't assume
	unsigned is wide enough.
	(BITS_PER_SI): New.
	* config/fp-bit.c (_fpmul_parts): Don't assume 32-bits SI.
	(si_to_float): Likewise.
	(float_to_si, float_to_usi): Use BITS_PER_SI.

2001-02-01  Jeffrey Oldham  <oldham@codesourcery.com>

	* dwarf2out.c: Added explanation of abbreviations.
	(def_cfa_1): Added comments listing DWARF2 instructions.
	(cfa_temp_reg): Removed in favor of cfa_temp.
	(cfa_temp_value): Removed in favor of cfa_temp.
	(cfa_temp): New global variable.
	(dwarf2out_frame_debug_expr): Added extensive introductory
	comments explaining the function's transformations.  Revised to
	use cfa_temp.  Added some rtx checking.  Generalize IOR case.
	(dwarf2out_frame_debug): Revised to use cfa_temp.
	(output_aranges): Cast as "unsigned" to avoid warning.
	* rtl.texi (RTX_FRAME_RELATED_P): Revise entry to emphasize better
	explain which instructions must be marked.

2001-02-01  Richard Henderson  <rth@redhat.com>

	* local-alloc.c (update_equiv_regs): Copy INSN_CODE to the
	new instruction.

2001-02-01  Alexandre Oliva  <aoliva@redhat.com>

	* config/sh/crt1.asm (main_k): Modified so that start calls
	___setup_argv_and_call_main.

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

	* cpphash.h (struct cpp_buffer): Move saved_flags from cpp_reader.
	* cpplex.c (_cpp_lex_token): New token picks up the saved flags,
	and AVOID_LPASTE is cleared on meeting an unescaped newline.
	* cppmacro.c (builtin_macro): Set builtin flags here.
	(paste_all_tokens): Preserve AVOID_LPASTE on pasted token.
	(replace_args): Clarify intent.
	(cpp_get_token): Macro expansion tokens get the saved flags.
	Update.
	* cppmain.c (scan_buffer): Remove now-redundant print.printed
	check.

2001-02-01  Jeffrey Oldham  <oldham@codesourcery.com>

	* config/mips/iris6.h (SUPPORTS_INIT_PRIORITY): Reverse change of
	2001-Jan-29.

Thu Feb  1 07:22:41 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* builtins.c (expand_builtin_alloca): allocate_dynamic_stack_space
	returns Pmode pseudo, but we need ptr_mode.
	* explow.c (allocate_dynamic_stack_space): Use plus_constant.
	Remove bogus conversions; use HOST_WIDE_INT for size.
	Don't use TARGET if wrong mode.

	* config/i386/i386.c (ix86_compute_frame_size): Allow
	stack_alignment_needed to be non-default even if size is zero.

2001-01-31  Alan Modra <alan@linuxcare.com.au>

	* pa.c (hppa_init_pic_save): New function.
	* pa.h (hppa_init_pic_save): Declare.
	* pa.md (call, call_value, sibcall, sibcall_value): Use
	the above instead of duplicated code.

	* pa.c (hppa_encode_label): Correct size of alloca buffer
	so we don't overrun it.  Correct leading `*' case.
	* pa.h (STRIP_NAME_ENCODING): Simplify now that we don't
	need to handle `*@'.
	(FUNCTION_NAME_P): Likewise.

2001-01-31  Richard Henderson  <rth@redhat.com>

	* config.gcc (alpha-osf5): Use float-i128.h.

	* config/float-i128.h (FLT_EVAL_METHOD, DECIMAL_DIG): Define.
	* config/float-i32.h: Likewise.
	* config/float-i64.h: Likewise.
	* config/float-sh.h: Likewise.
	* config/float-sparc.h: Likewise.

2001-01-31  DJ Delorie  <dj@redhat.com>

	* expmed.c (extract_bit_field): allow non-integral modes if we
	want to extract a whole register from itself.

2001-01-31  Jakub Jelinek  <jakub@redhat.com>

	* c-typeck.c (set_init_index): If first is equal to last, assume as
	if it was not a range at all.

2001-01-31  Alexandre Oliva  <aoliva@redhat.com>

	* config/fp-bit.c: Include tm.h.
	(float_to_si): Don't assume SImode is 32-bits wide.
	(float_to_usi): Likewise.

2001-01-31  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-parse.in (structsp): Pedwarn when "enum foo" refers to an
	incomplete type.
	(typename): Call pending_xref_error after parsing typed_typespecs.
	* c-decl.c (lookup_tag): Give error immediately rather than
	leaving it pending if the tag of the wrong type is in the same
	binding level.
	(xref_tag): Don't pedwarn for forward declarations of enum types
	here.
	* gcc.texi (Actual Bugs): Remove entry for misuse of struct, union
	and enum tags.

2001-01-31  Alexandre Oliva  <aoliva@redhat.com>

	* config/float-sparc.h (LDBL_MAX) [sparc32]: Fix typo.

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

	* cpplib.c (T_ELIF): Move to STDC89, not that it matters.
	(_cpp_handle_directive): Suggest not using #elif with -Wtraditional.

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

	* cpphash.h (struct cpp_reader): New saved_flags.
	* cppmacro.c (cpp_get_token): Use saved_flags to remember
	to avoid a paste after a pasted token.

2001-01-31  Alexandre Oliva  <aoliva@redhat.com>

	* libgcc2.h (Wtype_MAX, Wtype_MIN): Define.
	* libgcc2.c (__fixunssfSI, __fixunsdfSI, __fixunsxfSI): Use
	Wtype_MIN instead of LONG_MIN.

2001-01-30  Jeffrey Oldham  <oldham@codesourcery.com>

	* fixinc/fixincl.tpl: Add 2001 to copyright.  Change name of
	README file.
	* fixinc/fixincl.x: Regenerated.
	* fixinc/inclhack.def (irix_limits_const): New definition to
	convert "const" to "__const" in limits.h.

2001-01-30  Jeffrey Oldham  <oldham@codesourcery.com>

	* fixinc/genfixes (AG): Fix "autogen4" thinko.

2001-01-30  Herman A.J. ten Brugge  <Haj.Ten.Brugge@net.HCC.nl>

	* regmove.c (try_auto_increment): Change REG_DEAD into REG_UNUSED
	when register dies in the insn.

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

	* diagnostic.c (fatal): Fix word wrap.

2001-01-30  Alexandre Oliva  <aoliva@redhat.com>

	* combine.c (try_combine): Fix SUBREG setting for
	HOST_BITS_PER_WIDE_INT >= 2 * BITS_PER_WORD.

2001-01-30  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* jump.c (comparison_dominates_p): Don't try to handle UNKNOWN
	comparison codes.

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

	* c-decl.c (c_expand_body): Check TYPE_SIZE_UNIT (ret_type)
	is not NULL.
	* toplev.c (decode_W_option): Update warn_larger_than
	unconditionally for each processed switch.

2001-01-30  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* pa.c (pa_init_machine_status): Initialize pic_offset_table_save_rtx
	to NULL_RTX.
	(hppa_expand_prologue): Delete code to save pic offset table register
	in the function prologue.
	* pa.h (PIC_OFFSET_TABLE_SAVE_RTX): Correct type in comment.
	* pa.md (call, call_value, sibcall, sibcall_value): Save the pic offset
	table register at the beginning of the function after the prologue.

2001-01-29  lars brinkhoff  <lars@nocrew.org>

	* tm.texi (PUSH_ROUNDING): Remove duplicate lines.

2001-01-29  John David Anglin  <dave@hiauly1.hia.nrc.ca>
	    Jeff Law <law@redhat.com>

	* pa.md (return): Revise comment for trivial return.
	(return_internal): Non-trivial return pattern for non-PIC code.
	(return_internal_pic): Non-trivial return pattern for PIC code.
	It uses the PIC register to ensure it is restored after
	function calls.
	(epilogue): Generate appropriate return for PIC and non-PIC code.

Mon Jan 29 23:53:14 2001  Christopher Faylor <cgf@cygnus.com>

	* config/i386/cygwin.h: Fix -mno-cygwin search path for link.

2001-01-29  DJ Delorie  <dj@redhat.com>

	* combine.c (if_then_else_cond): Pass the correct mode to
	operand_subword() for constants.

Mon Jan 29 20:38:19 2001  Christopher Faylor <cgf@cygnus.com>

	* config/i386/cygwin.h: Add w32api to include search.  Search different
	directories in a cross-build environment.

2001-11-29  Tim Josling  <tej@melbpc.org.au>

	* tree.h (TYPE_STUB_DECL): Add documentation.

2001-11-29  Laurynas Biveinis  <lauras@softhome.net>

	* sdbout.c (sdbout_one_type): Skip types with indeterminate size.
	(sdbout_field_types): Likwise.  Fix use of host_integerp.

2001-01-29  Thomas Pfaff  <tpfaff@gmx.net>

	* mingw32.h: Override STARTFILE_SPEC and LINK_SPEC declared in
	cygwin.h.

2001-01-29  Jeffrey Oldham  <oldham@codesourcery.com>

	* config/mips/iris6.h (SUPPORTS_INIT_PRIORITY): Revise definition
	to use flag_gnu_linker.

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

	* cpplib.c (T_BAD_DIRECTIVE): Remove.
	(_cpp_init_stacks): Loop from 0 to N_DIRECTIVES - 1.

2001-01-29  Joseph S. Myers  <jsm28@cam.ac.uk>

	* tree.c, tree.h (build_parse_node): Remove; was identical to
	build_nt.
	* c-lang.c (start_cdtor), objc/objc-act.c
	(build_module_descriptor): Use build_nt instead of
	build_parse_node.

2001-01-29  Jakub Jelinek  <jakub@redhat.com>

	* config/i386/i386.md (addqi_1_lea): Fix mode (QI instead of HI).
	(testqi_1, andqi_2): If widening to SImode, make sure CONST_INT does
	not have any upper bits set.

2001-01-29  Phil Edwards  <pme@sources.redhat.com>

	* COPYING.LIB:  Update to LGPL 2.1 from the FSF.

2001-01-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* stmt.c (estimate_case_costs): Use integer_minus_one_node.

	* tree.c (build_common_tree_nodes_2): Set integer_minus_one_node.

	* tree.h (tree_index): Add new element TI_INTEGER_MINUS_ONE.
	(integer_minus_one_node): Define.

2001-01-28  Alexandre Oliva  <aoliva@redhat.com>

	* Makefile.in (bootstrap2-lean): Fix typo.

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

	* cpphash.c (_cpp_cleanup_hashtable, _cpp_lookup_with_hash)
	: Don't set fe_value.
	* cpplib.h (AVOID_LPASTE): New flag.
	(struct cpp_hashnode): Remove fe_value.
	* cpplex.c (cpp_avoid_paste): Don't paste '.' with a number.
	* cppmacro.c (builtin_macro): Don't set flags here.
	(replace_args): Set AVOID_LPASTE flag on first token of an
	argument, and the token following it.
	(cpp_get_token): Set AVOID_LPASTE flag on first token of a
	macro expansion, and on the token following it.  Do it for
	builtins too.
	* cppmain.c (scan_buffer): Avoid pasting only flagged tokens.

2001-01-27  Richard Henderson  <rth@redhat.com>

	* config/alpha/t-ieee: Remove multilibbing.
	(TARGET_LIBGCC2_CFLAGS): Add -mieee.

2001-01-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* configure.in: Arrange to include defaults.h in [ht]config.h/tm.h.

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

2001-01-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtins.c (expand_builtin_fputs): Use size_one_node when
	transforming into fwrite.

2001-01-27  Joseph S. Myers  <jsm28@cam.ac.uk>

	* extend.texi (Attribute Syntax): New section.

2001-01-27  Michael Sokolov  <msokolov@ivan.Harhan.ORG>

	* fixproto: Correctly install synthesized unistd.h and stdlib.h when
	they didn't need fixing.

2001-01-27  Janis Johnson <janis@us.ibm.com>

	* config.gcc (i[34567]86-sequent-{ptx4*,sysv4*}): Use usegas.h
	if appropriate.
	* config/ptx4.h: Several fixes to build on DYNIX/ptx v4.[456], and
	to remove macro definitions that are duplicated from elfos.h.

2001-01-27  Richard Henderson  <rth@redhat.com>

	* config/i386/sco5gas.h: Move ...
	* config/usegas.h: ... here.
	* config.gcc (i[34567]86-*-sco3.2v5) [tm_file]: Update.

2001-01-27  Jakub Jelinek  <jakub@redhat.com>

	* c-typeck.c (struct constructor_stack): Add range_stack member.
	(really_start_incremental_init): Clear it.
	(push_init_level): Save constructor_range_stack and clear it if
	pushing explicit braces.
	(pop_init_level): abort if constructor_range_stack is nonzero at
	explicit closing brace.  Restore saved constructor_range_stack if
	not implicit.

2001-01-27  Alexandre Oliva  <aoliva@redhat.com>

	* expr.c (emit_move_insn): Add REG_EQUAL note when constant loaded
	into register was forced into memory.

2001-01-27  Alexandre Oliva  <aoliva@redhat.com>

	* Makefile.in: Remove uses of + before $(MAKE).

2001-01-26  Richard Henderson  <rth@redhat.com>

	* stmt.c (cost_table): Remove.
	(COST_TABLE, cost_table_initialized): New.
	(estimate_case_costs): Use the later instead of the former.
	(balance_case_nodes): Likewise.

2001-01-26  Richard Henderson  <rth@redhat.com>

	* alias.c (objects_must_conflict_p): Read-only slots may not
	conflict despite having the same type.

2001-01-27  Michael Hayes  <mhayes@redhat.com>

	* loop.c (loop_giv_reduce_benefit): Copy mode size into
	int variable.
	(check_ext_dependant_givs): Initialize u_start_val and
	u_end_val.
	(load_mems): Make last_max_reg unsigned.
	(try_swap_copy_prop): Use INSN_P and initialize set.

Fri Jan 26 23:22:58 2001  Denis Chertykov  <denisc@overta.ru>

	* README.AVR : Removed.

Fri Jan 26 11:37:26 2001  Jeffrey A Law  (law@cygnus.com)

	* pa-64.h (text_section): Remove declaration.

	* pa.md (return_internal): Remove mode on PIC register use.

2001-01-25  lars brinkhoff  <lars@nocrew.org>

	* tm.texi (DATA_ALIGNMENT, LOCAL_ALIGNMENT, ASM_OPEN_PAREN,
	ASM_CLOSE_PAREN): fix typos.

2001-01-25  Mark Mitchell  <mark@codesourcery.com>

	* acconfig.h: Define `const' to the empty string if neither
	__STDC__ nor __cplusplus is defined.
	* config.in: Regenerated.

2001-01-25  David Edelsohn  <edelsohn@gnu.org>

	* config.gcc (rs6000-ibm-aix[5-9]*): Change to aix51.h.
	* collect2.c (main): Delete importf.  Add ".obj" file extension.
	(GCC_CHECK_HDR): Handle AIX V5 new magic number.
	(aix_std_libs): Add additional AIX libraries to skip.
	* config/rs6000/aix.h (MY_ISCOFF): Add AIX V5 new magic number.
	* config/rs6000/aix51.h: New file.

2001-01-25  Michael Hayes  <mhayes@redhat.com>

	* loop.c (loop_call_insn_emit_before, loop_call_insn_hoist): New.
	(loop_insn_emit_before): No longer static.
	(move_movables): Replace emit_insn_after with loop_insn_emit_after.
	(loop_givs_rescan, load_mems): Likewise.
	(check_dbra_loop): Replace emit_insn_before with loop_insn_emit_before.
	(maybe_eliminate_biv_1):
	(move_movables): Replace emit_call_insn_before with
	loop_call_insn_hoist.
	* loop.h (loop_insn_emit_before): Add.
	* unroll.c (copy_loop_body): Replace emit_insn_before with
	loop_insn_emit_before.

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

	* diagnostic.c (fatal): Request preprocessed source.

Thu Jan 25 02:01:16 2001  J"orn Rennecke <amylaar@redhat.com>

	* c-decl.c (duplicate_decls): If different_binding_level is nonzero,
	olddecl has argument types and newdecl has none, use the argument
	types from olddecl.

2001-01-24  Ulrich Drepper  <drepper@redhat.com>

	* dwarf2out.c (prefix_of): New function.  Determine longest common
	prefix of the two arguments.  The units are whole path components.
	(output_file_names): When adding a new directory find the one entry
	with the longest common prefix already in the list.  Artificially
	generate entry if there is none for this prefix.
	Fix test to check whether the zeroth directory entry is used.

Wed Jan 24 23:51:55 2001  J"orn Rennecke <amylaar@redhat.com>

	* reload1.c (reload_reg_free_for_value_p): New parameter start_regno.
	Changed all callers.  Take it into account when deciding if a
	previously loaded value matches.

2001-01-24  Richard Henderson  <rth@redhat.com>

	* reload.c (find_reloads_subreg_address): Fail the substitution
	if the resulting address is insufficiently aligned.

2001-01-24  DJ Delorie  <dj@redhat.com>

	* combine.c (combine_simplify_rtx): If the modes are all VOIDmode,
	check the original operand's mode also.
	* simplify-rtx.c (simplify_ternary_operation): Ditto.

2001-01-24  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-parse.in (cast_expr): Move compound literals from here ...
	(primary): ... to here.  Use standard terminology "compound
	literal" instead of "constructor expression".

2001-01-24  Joseph S. Myers  <jsm28@cam.ac.uk>

	* gcc.1, cpp.1: Regenerate.

2001-01-24  Alexandre Oliva  <aoliva@redhat.com>

	* calls.c (emit_library_call_value_1): Memory slot for
	pass-by-reference argument should have the mode of the argument,
	not of the pointer to it.

2001-01-24  Tom Tromey  <tromey@redhat.com>

	* gcc.texi (G++ and GCC): Mention gcj manual.
	(Standards): Link to section of manual mentioning gcj/Java
	compatibility.

2001-01-24  Jakub Jelinek  <jakub@redhat.com>

	* cppfiles.c (_cpp_read_file): Add to dependencies if requested.
	* cppinit.c (cpp_start_read): Remove deps_add_dep call.
	* tradcpp.c (main): Add -imacros or -include'd dependencies
	for -M*.
	* cpp.texi (-M, -MM): Document -M -include behavior.

2001-01-24  Roger Collins <roger@ProProject.com>

	* config/i386/xm-i386.h: Make __i386__ a boolean macro.

2001-01-24  Will Cohen  <wcohen@redhat.com>

	* config/mips/abi64.h (RETURN_IN_MEMORY): Always take into account
	whether registers are 32 bits or 64 bits in size.

2001-01-24  Ben Elliston  <bje@redhat.com>

	* config/m32r/m32r.h (PREDICATE_CODES): Remove m32r_not_same_reg.

2001-01-24  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.md (builtin_longjmp_internal): New.
	(builtin_longjmp): Use it instead of emit_indirect_jump.

2001-01-23  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* bb-reorder.c (make_reorder_chain_1): Handle case where
	jump edge goes to the same block as the fallthru edge.

2001-01-23  Jim Wilson  <wilson@redhat.com>

	* dwarf2out.c (dwarf2out_line): Make last_file_num be unsigned.
	* frame.h (__ia64_personality_v1): Add prototype.
	* libgcc2.c (ia64_throw_helper): Change personality declaration to
	prototype form.  Add void * cast to first argument to personality
	call.
	* real.c (e113toe): Surround with INTEL_EXTENDED_IEEE_FORMAT ifdefs.
	(asctoe113): Likewise.
	* config/ia64/frame-ia64.c: Include eh-common.h.
	* config/ia64/ia64-protos.h (sdata_section, sbbs_section): Add
	prototypes.
	* config/ia64/ia64.c (emit_insn_group_barriers): Add ATTRIBUTE_UNUSED
	to dump parameter.
	(itanium_split_issue): Add prototype.
	(gen_nop_type): Ifdef out.
	(find_best_packet): Initialize best_packet.
	(ia64_encode_section_info): New local string.  Use for ggc_alloc_string
	result.
	* config/ia64/ia64.h (ASM_OUTPUT_LONG_DOUBLE): Use 0L not 0.
	* config/ia64/ia64.md (bsp_value): Add explicit stop bit at start.
	(flushrs): Add explicit stop bit at end.
	* config/ia64/lib1funcs.asm (__ia64_restore_stack_nonlocal): Change
	trailing \ to >.

2001-01-23  Chris Demetriou  <cgd@broadcom.com>

	* libgcc-std.ver (GCC_3.0): Add __terminate_func_set to list
	of EH symbols.
	* libgcc2.c (__terminate_func): Make variable static.
	(__terminate_set_func): New function to set __terminate_func.
	* libgcc2.h (__terminate_func_ptr): New typedef.
	(__terminate_set_func): New function.

2001-01-23  Richard Henderson  <rth@redhat.com>

	* flow.c (init_propagate_block_info): Don't consider unchanging
	memories for dead frame store elimination.

2001-01-23  Richard Henderson  <rth@redhat.com>

	* varasm.c (UNIQUE_SECTION): Move default implementation ...
	* defaults.h: ... here.

2001-01-24  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* c4x.h (TARGET_LOAD_DIRECT_MEMS): Define.

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

	* c-lex.c (lex_charconst): Fix typo: s/p/str.

2001-01-23  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* rs6000.h (rs6000_return_addr): Move prototype from here...
	* rs6000-protos.h (rs6000_return_addr): ...to here.
	(rs6000_init_expanders): Delete prototype.

2001-01-23  Nick Clifton  <nickc@redhat.com>

	* invoke.texi: Replace , with \, inside @gccoptlist macros.
	(Spec Files): Document %B and %j and %.	and %v3 and %M and
	%{S*&T} spec switches.

2001-01-24  Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>

	* c4x.c (c4x_r11_set_p): Calculate rtx code correctly.

2001-01-23  Chris Demetriou  <cgd@sibyte.com>
	    Neil Booth  <neil@daikokuya.demon.co.uk>

	* cpperror.c: Merge handlers of PEDWARN and WARNING.
	Have -Werror make pedantic warnings errors, like the
	rest of GCC.

2001-01-23  Phil Edwards  <pme@sources.redhat.com>

	* c-tree.texi (IDENTIFIER_LENGTH):  Fix typo.

2001-01-23  Jakub Jelinek  <jakub@redhat.com>

	* integrate.h (struct inline_remap): Add compare_src, compare_mode.
	* integrate.c (expand_inline_function): Initialize them.
	(subst_constants): If changing COMPARE so that both its arguments
	will be VOIDmode and the comparison mode will be lost, note
	compare_mode.  Use the recorded compare_mode to optimize
	IF_THEN_ELSE.

2001-01-23  Jason Merrill  <jason@redhat.com>

	* dwarf2out.c (new_die): Use xcalloc.
	(output_die): Abort rather than emit a local reference to offset 0.

2001-01-17  Andrew Haley  <aph@redhat.com>

	* libgcc2.c (get_reg_addr): Don't abort if we haven't got a copy
	of a saved register; return NULL instead.
	(copy_reg): Take a pointer to a source register rather than a
	frame_state.
	(next_stack_level): Remember the address in the stack frame of all
	saved registers.
	Use the saved register pointer array as the source of the CFA.
	(throw_helper): Rewrite.  Unwind once rather than twice and keep
	track of saved registers as we go.

2001-01-23  Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>

	* c4x-protos.h (c4x_legitimize_reload_address): Remove.
	* c4x.c (c4x_legitimize_reload_address): Remove.
	* c4x.h (LEGITIMIZE_RELOAD_ADDRESS): Rewrite to generate correct
	reload address for ldp(k) insn.

Mon Jan 22 20:53:47 2001  Jeffrey A Law  (law@cygnus.com)

	* pa.md (return_internal): Add a USE of the PIC register to ensure
	it is restored after each call.
	(return expander): Corresponding changes.

2001-01-22  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* rs6000.h (INIT_EXPANDERS): Delete.
	(RETURN_ADDR_RTX): Call rs6000_return_addr().
	* rs6000.c (rs6000_override_options): Call *_machine_status from
	here...
	(rs6000_init_expanders): ...instead of here. Delete.
	(rs6000_mark_machine_status): New function.
	(rs6000_init_machine_status): Use xcalloc.
	(rs6000_return_addr): Generate RTX for the return address.
	(rs6000_ra_ever_killed): New, check if LR was ever destroyed.
	(rs6000_stack_info): Use it.

2001-01-22  Thomas Pfaff  <tpfaff@gmx.net>

	* gthr-win32.h: Include errno.h to get a declaration for
	EINVAL and _mingw.h if the target is mingw32.

2001-01-22  Andres Felipe Vargas <avargas@teletulua.com.co>

	* cpp.texi: Correct typos.

Mon Jan 22 13:59:09 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* explow.c (probe_stack_range): Ensure value passed to
	stack_check_libfunc is ptr_mode, not Pmode.

Mon Jan 22 16:53:06 2001  J"orn Rennecke <amylaar@redhat.com>

	* recog.c (validate_replace_rtx_1): In ZERO_EXTEND / SIGN_EXTEND
	case, don't use operand_subword to calculate a SUBREG that is
	wider than a word.

	* rtl.texi: Comparisons yield 0 or STORE_FLAG_VALUE.

2001-01-22 Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>

	* c4x.c (c4x_valid_rptb_p, c4x_label_ref_used_p): New functions.
	(c4x_rptb_insert): Call c4x_valid_rptb_p to check if repeat block is
	valid.  If not replace it by equivalent insns.

2001-01-22 Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>

	* c4x.c (c4x_check_legit_addr): Only check CONST.  Not if CONST
	contains SYMBOL_REF, LABEL_REF and CONST_INT.
	(c4x_U_constraint, symbolic_address_operand): Likewise.
	(c4x_immed_float_constant): Do not check if CONST_DOUBLE is in
	memory.
	(c4x_r11_set_p, c4x_check_laj_p): New functions.
	* c4x-protos.h (c4x_check_laj_p): Add prototype.
	* c4x.md (in_annul_slot_3): Do not allow auto-increment in last
	anulling slot because of silicon bug.
	(laj, lajv): Call c4x_check_laj_p to check for silicon bug.

2001-01-22  Alan Modra <alan@linuxcare.com.au>

	* cppexp.c (parse_charconst):  Change `mask' type to agree
	with parse_escape.

2001-01-21  Richard Henderson  <rth@redhat.com>

	* config/i386/i386.c (ix86_asm_file_end): Disable putting
	pic_label_name in a linkonce section.

2001-01-17  Philipp Thomas  <pthomas@suse.de>

	* aclocal.m4 (AM_WITH_NLS): Add -lintl to LIBS if gettext was
	found in libintl.
	* configure: Regenerate.

Sun Jan 21 02:38:56 2001  J"orn Rennecke <amylaar@redhat.com>

	* expmed.c (synth_mult, expand_mult_highpart, expand_divmod): Guard
	uses of shift_cost, shiftadd_cost and shiftsub_cost with bound checks.

Sun Jan 21 09:44:17 2001  Denis Chertykov  <denisc@overta.ru>

	* config/avr/avr.c (ret_cond_branch): New argument (reverse) added.
	If REVERSE nonzero then condition code in X must be reversed.
	(encode_section_info): Optimize if/else.
	(avr_function_value): Fix formatting.

	* config/avr/avr.md (branch): Call to ret_cond_branch changed.
	(difficult_branch): Likewise.
	(rvbranch): Likewise.
	(difficult_rvbranch): Likewise.

	* config/avr/avr-protos.h (ret_cond_branch): Prototype changed.

	* config/avr/libgcc.S: Fix comment.

2001-01-20  Michael Sokolov  <msokolov@ivan.Harhan.ORG>

	* sdbout.c (PUT_SDB_DEF): Fix after last bogus change.

2001-01-20  Michael Sokolov  <msokolov@ivan.Harhan.ORG>

	* cppinit.c (INO_T_EQ): Don't use #elif, fix formatting.

2001-01-20  Michael Sokolov  <msokolov@ivan.Harhan.ORG>

	* aclocal.m4 (gcc_AC_FUNC_STRSTR): New macro.
	* configure.in (gcc_AC_FUNC_STRSTR): Add invokation.
	* configure, config.in: Regenerate.
	* Makefile.in (STRSTR, HOST_STRSTR, USE_HOST_STRSTR): New variables.
	(LIBDEPS, HOST_LIBDEPS, LIBS, HOST_LIBS): Add strstr handling.
	(strstr.o, $(HOST_PREFIX_1)strstr.o): New rules.
	(doprint.o): New rule.

2001-01-20  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-typeck.c (digest_init): Handle boolean types as scalars.

Sat Jan 20 12:46:57 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* stmt.c (expand_return): Don't return anything if size is zero.
	Delete redundant assignment to BYTES.
	* expr.c (move_block_from_reg): Do nothing if NREGS is zero.

2001-01-20  Marek Michalkiewicz  <marekm@linux.org.pl>

	* config/avr/avr.h (INIT_TARGET_OPTABS): Remove most of it, was
	the same as the default library function names.
	* config/avr/avr.md: Document special characters after '%'.
	(mulqi3, mulhi3, mulsi3): Call libgcc.S functions ourselves,
	knowing which of the call-used registers are really clobbered.
	(divmodqi4, udivmodqi4, divmodhi4, udivmodhi4, divmodsi4, udivmodsi4):
	New.  Both quotient and remainder from one libgcc.S call.
	* config/avr/libgcc.S: Optimize mul/divmod for the new insns above,
	clobber as few registers as possible.
	* config/avr/t-avr (LIB1ASMFUNCS): Adjust for the above changes.

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

	* cppmacro.c (funlike_invocation_p): Don't move back up to the
	context of the top of the stack.

2001-01-20  Jakub Jelinek  <jakub@redhat.com>

	* function.c (fixup_var_refs): Move CALL_PLACEHOLDER handling...
	(fixup_var_refs_insns): ...here.

2001-01-20  Zack Weinberg  <zack@wolery.stanford.edu>

	* function.c (fixup_var_refs_insns): Break up into
	fixup_var_refs_insn [body of loop], fixup_var_refs_insns
	[loop over entire insn list], and fixup_var_refs_insns_with_hash
	[loop over hash table entries].
	(fixup_var_refs): Adjust calls to fixup_var_refs_insns and/or
	fixup_var_refs_insns_with_hash, to match above changes.

2001-01-19  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* Makefile.in (ORDINARY_FLAGS_TO_PASS): Add MAKEOVERRIDES variable.
	(libgcc.a): Likewise.
	(stmp-multilib): Likewise.
	(STAGE2_FLAGS_TO_PASS): Likewise.

2001-01-19  Alexandre Oliva  <aoliva@redhat.com>

	* config/sh/sh.c (prepare_move_operands) [PIC]: Use operands[0] as
	temporary if no_new_pseudos.

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

	* cppinternals.texi: Update.

2001-01-19  Richard Earnshaw  <rearnsha@arm.com>

	* arm.c (arm_init_builtins): Re-enable builtins.

Fri Jan 19 13:02:56 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* rtl.texi (SET, CLOBBER): Document PARALLEL as SET_DEST possibility.
	* flow.c (mark_set_1, case PARALLEL): Don't require BLKmode, allow
	element to be null, and always expect an EXPR_LIST.
	* rtlanal.c (reg_overlap_mentioned_p, note_stores): Likewise.
	* sched-deps.c (sched_analyze_1): Likewise.
	* sched-rgn.c (check_live_1, update_live_1): Likewise.

	* regclass.c (max_set_parallel): New variable.
	(reg_scan): Take it into account in computation of max_parallel.
	(reg_scan_mark_refs, case SET): Compute it.

	* alias.c (rtx_equal_for_memref_p, case ADDRESSOF): Don't assume
	args are REG.
	* expr.c (store_constructor): Don't look at MEM_ALIAS_SET unless MEM.
	* function.c (assign_parms): Use INTVAL for a CONST_INT.

2001-01-19  Jason Merrill  <jason@redhat.com>

	* dwarf2out.c (gen_subprogram_die): Don't reuse the in-class decl
	for the abstract instance of an inline function.

Fri Jan 19 14:31:35 2001  Alexandre Oliva  <aoliva@redhat.com>
			  J"orn Rennecke <amylaar@redhat.com>

	* reload1.c (move2add_note_store): Treat all registers directly or
	indirectly derived from a base register as members of the same set
	of values.
	(reload_cse_move2add): Adjust accordingly.  Take mode and offset
	of base register into account.

Fri Jan 19 09:18:42 2001  J"orn Rennecke <amylaar@redhat.com>

	* alias.c (find_base_value): Recognize TRUNCATE.
	(record_set): In PLUS case, invalidate if other summand is also a
	base value.

Thu Jan 18 06:43:04 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* flow.c (mark_set_1, case PARALLEL): New case; rework to allow
	entry to be EXPR_LIST.
	* rtlanal.c (reg_overlap_mentioned_p): Allow PARALLEL in SET to
	be an EXPR_LIST (but not null, which other code doesn't allow).
	(note_stores): Properly handle PARALLEL in SET.
	Recursively call for top-level PARALLEL.
	* sched-deps.c (sched_analyze_1): Handle EXPR_LIST in PARALLEL in SET.
	* sched-rgn.c (check_live_1, update_live_1): Likewise.

	* config.gcc (rs6000-ibm-aix*, rs6000-bull-bosx): Add rs6000/aix.h.

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

	* cpplib.c (_cpp_handle_directive): Use buffer->was_skipping,
	not pfile->skipping (== 0).

2001-01-17  Nick Clifton  <nickc@redhat.com>

	* config/rs6000/rs6000.c: Add prototypes for {init|free}_
	machine_status.

2001-01-17  Jim Wilson  <wilson@redhat.com>

	* invoke.texi (IA-64 options): Improve.

2001-01-17  Tom Tromey  <tromey@redhat.com>

	* invoke.texi (Optimize Options): Use `{}' to around @samp
	argument.

2001-01-17  Aldy Hernandez  <aldyh@redhat.com>

	* invoke.texi (-fno-guess-branch-probability): New option.

Wed Jan 17 13:26:34 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* combine.c (try_combine): Don't set i3_subst_into_i2 for
	case of making new double-word constant.
	Revert last change: instead just test i3_subst_into_i2.

2001-01-17  Jakub Jelinek  <jakub@redhat.com>

	* config/i386/i386.md (cmpqi_minus_1): Use {b} for QImode operation.
	Use q constraints instead of r.

Tue Jan 16 22:23:04 2001  Alan Modra (alan@linuxcare.com.au)

	* config/pa/pa.h (PIC_OFFSET_TABLE_REGNUM_SAVED): Remove.
	(machine_function): Define.
	(PIC_OFFSET_TABLE_SAVE_RTX) : Define.
	* config/pa/pa.c (pa_init_machine_status, pa_mark_machine_status,
	pa_free_machine_status): New functions.
	(override_options): Set {init,mark,free}_machine_status to above.
	(hppa_expand_prologue): Use PIC_OFFSET_TABLE_SAVE_RTX instead of
	PIC_OFFSET_TABLE_REGNUM_SAVED.
	* config/pa/pa.md: Use PIC_OFFSET_TABLE_SAVE_RTX instead of
	PIC_OFFSET_TABLE_REGNUM_SAVED throughout.
	* config/pa/pa32-regs.h (CONDITIONAL_REGISTER_USAGE): Remove
	references to PIC_OFFSET_TABLE_REGNUM_SAVED.
	* config/pa/pa64-regs.h (CONDITIONAL_REGISTER_USAGE): Likewise.

2001-01-15  DJ Delorie  <dj@redhat.com>

	* Makefile.in (gcov.1): Protect against texi2pod/pod2man failing.
	(cpp.1): Ditto.
	(gcc.1): Ditto.

Tue Jan 16 17:20:43 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* flow.c (propagate_one_insn): Make trying to delete a prologue
	or epilogue insn an ICE, not a warning.  Allow doing this if
	the current function returns with stack pointer depressed.

	* combine.c (try_combine): If i3_subst_into_i2, properly check for
	I3 having more than one SET.

2001-01-16  Jim Wilson  <wilson@redhat.com>

	* invoke.texi: Document IA-64 options.

	* config/ia64/ia64.c (ia64_print_operand_address): Delete 'B' support.
	(fixup_errata): Delete TARGET_A_STEP use.
	* config/ia64/ia64.h (MASK_A_STEP, TARGET_A_STEP): Delete.
	(TARGET_SWITCHES): Delete -ma-step option.
	* config/ia64/ia64.md (all FP patterns): Delete %B0.
	(movqicc_astep, movqi_internal_astep, movhicc_astep,
	movhi_internal_astep, movsicc_astep, movsi_internal_astep, movdi+1,
	movdi_internal_astep, movsfcc_astep, movsf_internal_astep,
	movdfcc_astep, movdf_internal_astep, movtfcc_astep,
	movtf_internal_astep, cmovdi_internal_astep, cmovsi_internal_astep):
	Delete.
	(movqi_internal, movhi_internal, movsi_internal, movdi_internal,
	movsf_internal, movdf_internal, movtf_internal, cmovdi_internal,
	cmovsi_internal): Delete ! TARGET_A_STEP check.

2001-01-16  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* gcc.texi (Bug Lists): Do not mention newsgroups nor the
	possibility to report bugs via postal mail. Change a URL and
	merge in a nearly duplicate statement...
	(Bug Reporting): ...from here.
	(Service): Refer to the Bug Reporting section instead of
	duplicating an URL.
	(Contributing): Remove trivial explanations concerning snapshots.

2001-01-16  Alan Modra <alan@linuxcare.com.au>

	* cppmain.c (general_init): Don't use ANSI prototype.

2001-01-16  Tom Tromey  <tromey@redhat.com>

	* gcc.c (cpp_options): Added `*' to specs for -MF, -MQ, and -MT.

2001-01-16  Richard Henderson  <rth@redhat.com>

	* config/i386/i386.h: Fix comment typo.
	* config/i386/i386.md (shift+compare pattern names): s/cmpno/cmp/
	(ashr+compare patterns): Match CCGOCmode not CCNOmode.

2001-01-16  Phil Edwards  <pme@sources.redhat.com>

	* gcc.c:  Revert previous -fsyntax-only-related change; move
	to cp/g++spec.c.

2001-01-16  Jakub Jelinek  <jakub@redhat.com>

	* config/i386/i386.c (fcmov_comparison_operator): Only initialize
	inmode after checking GET_CODE (op).

2001-01-16  Richard Henderson  <rth@redhat.com>

	* flow.c (struct propagate_block_info): Add mem_set_list_len.
	(MAX_MEM_SET_LIST_LEN): New.
	(propagate_one_insn): Update mem_set_list_len.
	(invalidate_mems_from_autoinc): Likewise.
	(invalidate_mems_from_set): Likewise.
	(mark_used_regs): Likewise.
	(init_propagate_block_info): Likewise.  Stop collecting memories
	when we reach MAX_MEM_SET_LIST_LEN.
	(mark_set_1): Likewise.

2001-01-16  Richard Henderson  <rth@redhat.com>

	* unroll.c (precondition_loop_p): Fail if no iteration
	variable found.

2001-01-16  Phil Edwards  <pme@sources.redhat.com>

	* gcc.c:  When -fsyntax-only is given, do not complain about
	unused libraries.

2001-01-15  Richard Henderson  <rth@redhat.com>

	* config/i386/i386.c (asm_output_function_prefix): Remove.
	(ix86_asm_file_end): New.
	(load_pic_register): Generate pic_label_name into a
	statically allocated buffer.
	* config/i386/i386-protos.h: Update.
	* config/i386/i386.h (ASM_OUTPUT_FUNCTION_PREFIX): Remove.
	(ASM_FILE_END): New.
	* config/i386/i386afe.h: New file.
	* config.gcc (i?86-*-elf) [tm_file]: Use it.
	(i?86-*-{freebsd,linux*,moss*}): Likewise.
	* config/elfos.h (ASM_FILE_END): Undef before redefinition.
	* config/i386/cygwin.h (ASM_FILE_END): Likewise.
	* config/i386/osfrose.h (ASM_FILE_END): Invoke ix86_asm_file_end.
	* config/i386/sco5.h (ASM_FILE_END): Likewise.
	* config/i386/winnt.c (i386_pe_asm_file_end): Likewise.

2001-01-15  Joseph S. Myers  <jsm28@cam.ac.uk>

	* Makefile.in (install-man): Remove explicit dependency on
	$(srcdir)/gcc.1.

	* configure.in, configure: Revert previous patch requiring perl
	5.6.0.

2001-01-12  Aldy Hernandez  <aldyh@redhat.com>

	* toplev.c (flag_guess_branch_prob): New.
	(f_options): Add guess-branch-probability option.
	(rest_of_decl_compilation): Only estimate branch probability if
	flag set.
	(main): set flag_guess_branch_prob.

	* flags.h (flag_guess_branch_prob): New.

2001-01-15  DJ Delorie  <dj@redhat.com>

	* gcc.texi (Makefile): Add documentation for Makefile targets.

2001-01-15  Philip Blundell  <philb@gnu.org>

	* config/arm/arm.c (arm_finalize_pic): New arg "prologue".
	(is_pic): Delete.
	* config/arm/arm-protos.h (arm_finalize_pic): Update prototype.
	(is_pic): Delete declaration.
	* config/arm/arm.h (FINALIZE_PIC): Update call to arm_finalize_pic.
	(OUTPUT_INT_ADDR_CONST): Remove special handling of PIC address.
	* config/arm/arm.md (builtin_setjmp_receiver): New.

2001-01-15  Richard Earnshaw  <rearnsha@arm.com>

	* arm.c (use_return_insn): Don't try to determine the function type
	until after reload has completed.
	(arm_output_epilogue): Don't adjust the sp value recovered from the
	stack.
	(emit_multi_reg_push): Don't record dwarf information for the pc.
	* arm.md (eh_epilogue): The function type may have changed, so it
	needs to be recalculated.
	* arm/netbsd.h (DWARF2_UNWIND_INFO): Delete.  Can now use dwarf2
	unwind tables on arm/netbsd.

2001-01-15  Richard Earnshaw  <rearnsha@arm.com>

	* arm.md (cbranchsi4): Correct calculation of branch ranges.
	(negated_cbranchsi4): Likewise.

2001-01-15  Richard Earnshaw  <rearnsha@arm.com>

	* config/arm/semi.h (SUBTARGET_EXTRA_SPECS): Define.
	(SUBTARGET_EXTRA_ASM_SPEC): Define to empty string.
	(ASM_SPEC): Call subtarget_extra_asm_spec.  Don't
	pass -mapcs-* options to assembler.
	* config/arm/elf.h (SUBTARGET_EXTRA_SPECS): Define.
	(SUBTARGET_EXTRA_ASM_SPEC): Define to empty string.
	(ASM_SPEC): Call subtarget_extra_asm_spec.

2001-01-15  Andreas Jaeger  <aj@suse.de>

	* config/i386/i386.c (ix86_init_builtins): Make i size_t to remove
	warnings.
	(ix86_expand_builtin): Likewise.

	* gencodes.c (output_predicate_decls): Make i size_t to avoid
	warning about comparison between signed and unsigned.

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

	* expr.c (do_jump): Treat VOIDmode CONST_DOUBLEs like CONST_INTs.

2001-01-14  Ralf Baechle <ralf@gnu.org>

	* config/mips/linux.h (SUBTARGET_CPP_SPEC): Default ABI is 32; change
	SUBTARGET_CPP_SPEC appropriately.

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

	* varasm.c (make_decl_rtl): Fix typo in last change.

2001-01-14  Jeffrey Oldham  <oldham@codesourcery.com>

	* defaults.h (SUPPORTS_INIT_PRIORITY): New macro to indicate the
	linker supports the init_priority C++ attribute.
	* tm.texi (SUPPORTS_INIT_PRIORITY): Documentation for new macro.
	* config/mips/iris6.h (SUPPORTS_INIT_PRIORITY): Indicate Irix
	linker does not support init_priority C++ attribute.

Sun Jan 14 22:31:30 2001  J"orn Rennecke <amylaar@redhat.com>

	* Makefile.in (libgcc1-test.o): Depends on stmp-int-hdrs.

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

	* c-parse.in (finish_parse): Add comment about cpp_destroy.
	* cp/lex.c (finish_parse): Similarly.
	* cppinit.c (cpp_cleanup): Rename cpp_destroy for clarity.
	Return the number of errors encountered.
	* cpplib.h (cpp_cleanup): Rename cpp_destroy, return int.
	* cppmain.c (main): Don't call cpp_destroy.

2001-01-14  Joseph S. Myers  <jsm28@cam.ac.uk>

	* configure.in: Require at least perl 5.6.0 to regenerate
	manpages.
	* configure: Regenerate.

2001-01-14  Richard Henderson  <rth@redhat.com>

	* genrecog.c (DT_veclen_ge): New.
	(add_to_sequence) [MATCH_PARALLEL]: Generate one.
	(maybe_both_true_2): Simplify DT_veclen vs DT_veclen_ge.
	(nodes_identical_1): Handle DT_veclen_ge.
	(write_cond, debug_decision_2): Likewise.

2001-01-14  Richard Earnshaw  <rearnsha@arm.com>

	* arm.md (ldmsi_postinc, ldmsi, stmsi_postinc, smsi): Delete.  Replace
	with ...
	(ldmsi_postinc[432], ldmsi[432], stmsi_postinc[432], stmsi[432]): New.

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

	* cppmain.c (do_preprocessing): New function; most of the old
	main.
	(main): Call it to do most of the work.
	(cb): Move from global scope to set_callbacks ().
	(setup_callbacks): Get the callback pointer.
	(general_init, printer_init): Clean up code and comments.

2001-01-14  Richard Earnshaw  <rearnsha@arm.com>

	* config/arm/semi.h (ASM_SPEC): Pass -k to the assembler when
	compiling PIC.

2001-01-14  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.c (get_shift_alg): Update comments.

Sun Jan 14 06:20:49 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* ggc-page.c (alloc_annon): Call perror and correctly call exit.
	(alloc_page, ggc_alloc): Add casts to remove warnings.

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

	* combine.c (simplify_comparison): Don't change `code' when
	can't reverse comparison.

2001-01-14  Richard Henderson  <rth@redhat.com>

	* rtlanal.c (computed_jump_p_1): Rename from jmp_uses_reg_or_mem;
	update all call sites.  Return true for all non-label constants.

Sun Jan 14 10:09:48 MET 2001  Jan hubicka  <jh@suse.cz>

	* i386.c (ix86_expand_compare): Add bypass_test and second_test
	parameters.
	(ix86_expand_branch): Update.
	(ix86_expand_setcc): Update to handle multiple test conditions.
	(expand_int_movcc): Likewise.
	(expand_fp_movcc): Likewise.
	* i386-protos.h (ix86_expand_compare): New.
	* i386.md (andqi_?_slp, orqi_?_slp): New.
	(conditional trap expander): Update call to ix86_expand_compare.

2001-01-14  Richard Henderson  <rth@redhat.com>

	* config/vax/vax.md: Use nonimmediate_operand instead of
	general_operand in destinations.

	* config/vax/vax.md (indirect_jump): Use register_operand.

	* config/vax/vax.h (RETURN_POPS_ARGS): Max at 255 arguments.
	* config/vax/vax.md (call_pop): Turn into an expander.
	(call_value_pop): Likewise.
	(call, call_value): New.

2001-01-14  Andreas Jaeger  <aj@suse.de>

	* config/i386/i386.c (ix86_split_fp_branch): Remove unused
	variables.
	(ix86_fp_compare_mode): Add unused attribute.
	(ix86_expand_fp_movcc): Remove unused variable.
	(ix86_expand_builtin): Make fcode unsigned.

	* expr.c (MOVE_BY_PIECES_P): Cast MOVE_RATIO to unsigned.
	(expand_expr): Add cast to avoid signed warning.
	(store_field): Likewise.
	(store_constructor_field): Likewise.
	(store_constructor): Likewise.
	(store_expr): Likewise.
	(clear_storage): Likewise.
	(emit_group_store): Likewise.
	(emit_group_load): Likewise.

2001-01-13  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-common.c: Move format checking code to ...
	* c-format.c: ... here.  New file.  Reorder some functions and
	declarations.
	(decl_handle_format_attribute, decl_handle_format_arg_attribute):
	New functions.
	* c-common.h (decl_handle_format_attribute,
	decl_handle_format_arg_attribute): Declare.
	* Makefile.in (C_AND_OBJC_OBJS): Add c-format.o.
	(c-common.o): Adjust dependencies.
	(c-format.o): New list of dependencies.

2001-01-13  Jakub Jelinek  <jakub@redhat.com>

	* unroll.c (loop_iterations): If we cannot prove iteration variable
	is set once in each iteration, punt.

Sun Jan 14 00:23:15 2001  Denis Chertykov  <denisc@overta.ru>

	* config/avr/avr.md ("strlenhi"): Remove clobber of input address.
	(*strlenhi): Remove clobber (which was buggy) of output address.

2001-01-13  Joseph S. Myers  <jsm28@cam.ac.uk>

	* Makefile.in (generated-manpages): Add gcc.1
	($(srcdir)/gcc.1): New target.
	(maintainer-clean): Delete $(srcdir)/gcc.1.
	* gcc.texi: Add macros @gccoptlist and @gol.
	* invoke.texi: Include option summary in manpage.  Mark up option
	summary with @gccoptlist and @gol.  Use @r in one place where
	appropriate.
	* texinfo.tex: Update to version 2000-12-11.07 from ftp.gnu.org.
	* gcc.1: Generate from invoke.texi.

2001-01-13  Richard Henderson  <rth@redhat.com>

	* ggc-page.c (USING_MALLOC_PAGE_GROUPS): New; set if not using mmap.
	(struct page_entry): Add group member.
	(struct page_group): New.
	(struct globals): Add page_groups member.
	(alloc_anon): Only define for using mmap; remove valloc call.
	(page_group_index): New.
	(set_page_group_in_use): New.
	(clear_page_group_in_use): New.
	(alloc_page): Implement USING_MALLOC_PAGE_GROUPS.
	(free_page, release_pages): Likewise.
	* configure.in (with-gc): Default to ggc-page always.

2001-01-13  Alexandre Oliva  <aoliva@redhat.com>

	* reload1.c (replace_pseudos_in_call_usage): Use
	reg_equiv_constant and reg_equiv_address, and don't try
	regno_reg_rtx first.

2001-01-13  Richard Henderson  <rth@redhat.com>

	* ggc-page.c (alloc_page): Round up allocation size to one page.
	Set e->order on extra pages.

2001-01-13  Richard Henderson  <rth@redhat.com>

	* genrecog.c (nodes_identical): Expand commentary.
	(write_switch): Watch out for identical nodes.

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

	* cppfiles.c (_cpp_fake_include): New function.
	* cpphash.h (_cpp_fake_include): New.
	* cpplib.c (do_line): Call _cpp_fake_include when entering
	header files in preprocessed input.
	* cppmain.c (cb_pragma_implementation): Remove handling.
	(setup_callbacks): Don't register pragmas.

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

	* extend.texi: Udate for CPP.

2001-01-13  Andreas Jaeger  <aj@suse.de>

	* reload1.c: Add prototype for replace_pseudos_in_call_usage.

	* regmove.c: Add prototype for replace_in_call_usage.

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

	* cpplib.h (cpp_pool, mi_state, mi_ind, struct cpp_macro,
	struct cpp_chunk, struct htab, struct toklist,
	struct cpp_context, CPP_STACK_MAX, struct lexer_state,
	struct spec_nodes, struct cpp_reader, CPP_OPTION, CPP_BUFFER,
	CPP_BUF_LINE, CPP_BUF_COL, CPP_BUF_COLUMN, U, ustrcmp, ustrncmp,
	ustrlen, uxstrdup, ustrchr, ufputs): Move to cpphash.h.
	(struct macro_args): Delete.
	* cpphash.h: See above.

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

	* cppmain.c (struct printer): Remove no_line_dirs.
	(options, cb): New.
	(main, setup_callbacks, scan_buffer, printer_init, cb_define)
	: Use options rather than CPP_OPTION.
	(setup_callbacks): Use cb rather than pfile->cb.
	(main): No need to check for a buffer.  Use cpp_errors.
	(printer_init): Don't set no_line_dirs.
	(maybe_print_line): Use options not no_line_dirs.
	(cb_file_change): Don't call print_line if -P.

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

	* c-lex.c (init_c_lex): Use cpp_get_callbacks to set
	callbacks.
	* c-parse.in (finish_parse): Use cpp_errors.
	(__yylex): Use return value of cpp_pop_buffer.
	* cp/lex.c (finish_parse): Use cpp_errors.
	* cp/spew.c (read_token): Use return value of cpp_pop_buffer.

Sat Jan 13 16:57:40 2001  Denis Chertykov  <denisc@overta.ru>

	* README.AVR: URLs corrected.

Sat Jan 13 07:30:02 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* c-decl.c (start_function): Don't warn if old prototype is builtin
	that's not in C's namespace.
	* libgcc2.c (_varargs): Update definition of __builtin_saveregs.
	(_bb): Add prototype for ctime.
	* config/alpha/osf.h (TRANSFER_FROM_TRAMPOLINE): Add missing protos.

Sat Jan 13 09:53:32 MET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.c (ix86_fp_comparison_arithmetics_cost,
	ix86_fp_comparison_fcomi_cost, ix86_fp_comparison_sahf_cost,
	ix86_fp_comparison_cost): New functions.
	(ix86_expand_fp_compare): Use the costs to choose best bethod; add
	two new parameters SECOND_TEST and BYPASS_TEST; allow generating
	two-branch sequences; make static.
	(ix86_use_fcomi_compare): Do decision according to the costs.
	(split_fp_branch): New.
	* i386.md (compare-and-branch patterns): Use split_fp_branch.
	* i386-protos.h (ix86_expand_fp_compare): Remove
	(ix86_split_fp_branch): Declare.

	* i386.h (PREDICATE_CODES): Update codes from fcmov_comparison_operand
	and ix86_comparison_operator.

	* i386.c (ix86_prepare_fp_compare_args): Try to rearange the comparison
	to make it cheaper.

	* i386.c (put_condition_code): Output properly the unordered/ordered
	compares in fp case.
	(ix86_expand_fp_movcc): Use ix86_expand_compare infrastructure.

	* tm.texi (REVERSE_CONDITION): Document.
	* i386.c (ix86_fp_compare_mode): Simplify; return always CCFPmode
	in -ffast-math mode.
	* i386.h (REVERSE_CONDITION, REVERSIBLE_CC_MODE): New macro.

2001-01-13  Alexandre Oliva  <aoliva@redhat.com>

	* config/sh/sh.c (sh_expand_epilogue): Use PR explicitly.

	* config/sh/sh.c (sh_expand_prologue): Let the second toggle_sz be
	optimized away.

	* config/sh/sh.c (mova_p): Fix test for mova_const.

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

	* fix-header.c (read_scan_file): Use cpp_get_callbacks and
	cpp_get_options rather than dereferencing pfile and using
	CPP_OPTION.
	* scan-decls.c (scan_decls): Use return value of
	cpp_pop_buffer rather than CPP_BUFFER.

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

	* cppinit.c (cpp_handle_option): help_only is now part of the
	cpp_options structure.
	* cpplib.c (cpp_errors, cpp_get_options, cpp_get_callbacks,
	cpp_set_callbacks): New functions.
	* cpplib.h (cpp_callbacks): Break out as a named structure.
	(cpp_options): Move help_only here from cpp_reader.
	(CPP_FATAL_ERRORS): Update to use cpp_errors.
	(cpp_errors, cpp_get_options, cpp_get_callbacks,
	cpp_set_callbacks): New prototypes.
	* cppmain.c (main): Update for help_only.

2001-01-13  Joseph S. Myers  <jsm28@cam.ac.uk>

	* Makefile.in (info, maintainer-clean, install-info, uninstall):
	Also build and remove and install and uninstall c-tree.info and
	cppinternals.info.
	($(srcdir)/gcc.info): Add dependency on contrib.texi.
	($(srcdir)/cppinternals.info): New target.
	* c-tree.texi: Change file name used when makeinfo used without -o
	from ir.info to c-tree.info.  Add info directory entry.
	* cppinternals.texi: Add info directory entry.
	* .cvsignore: Update.

2001-01-12  Jakub Jelinek  <jakub@redhat.com>

	* c-typeck.c (store_init_value): Don't require constant initializer
	elements with -pedantic -std=c99.
	(digest_init): Change error about non-constant initializer elements
	into pedwarn.
	(constructor_range_end): Remove.
	(constructor_incremental, designator_depth,
	designator_errorneous): New variables.
	(struct constructor_stack): Remove range_end, add incremental.
	(struct constructor_range_stack, constructor_range_stack): New.
	(struct initializer_stack): Add constructor_range_stack.
	(finish_init): Set it.
	(start_init): Likewise.  require_constant_elements for non-static
	trees only if not flag_isoc99.
	(really_start_incremental_init): Remove constructor_range_end, add
	constructor_incremental.
	(pop_init_level): Likewise.
	(push_init_level): Likewise.  If implicit and the subobject had some
	value set already, preinitialize the level with it.
	Warn about missing braces only if not pushing due to designators.
	(set_designator, push_range_stack): New functions.
	(set_init_label): Use them.
	(set_init_index): Likewise.  Remove constructor_range_end.
	Error if designator index is outside of array bounds.
	(add_pending_init): Compare values of purpose index trees, not the
	trees themselves.  Allow overwriting of already initialized element.
	Issue a warning if it had side-effects.
	(set_nonincremental_init, set_nonincremental_init_from_string): New
	functions.
	(pending_init_member): Rename to...
	(find_init_member): ...this function.  Call set_nonincremental_init
	if necessary.  Compare values of purpose index trees, not the trees
	themselves.  Return the actual value, not just nonzero if something
	is found.
	(output_init_element): Remove checks for duplicates.
	If field has zero size, only check the initializer for correctness.
	Call set_nonincremental_init if necessary.  Push RECORD/ARRAY into AVL
	if constructor_incremental is zero.  Change error about initializers
	not computable at load time into pedwarn.
	(output_pending_init_elements): Compare bit positions, not
	FIELD_DECLs to take into account zero-sized fields.
	(process_init_element): Use constructor_range_stack to fill all
	ranges in the designator lists from current level up.
	* extend.texi: Update documentation for labeled elements.

2001-01-12  Alexandre Oliva  <aoliva@redhat.com>

	* calls.c (emit_library_call_value_1): Add USEs and CLOBBERs
	to function usage for arguments passed by reference.  Optimize
	callee-copied arguments.
	* regmove.c (replace_in_call_usage): New function.
	(fixup_match_1): Call it.
	* cse.c (cse_insn): Canonicalize registers in function usage.
	* reload1.c (replace_pseudos_in_call_usage): New function.
	(reload): Call it.

	* Makefile.in: Reverted yesterday's wrong patch.  Installed the
	right version.

2001-01-12  Jakub Jelinek  <jakub@redhat.com>

	* config/alpha/alpha.c (alpha_expand_block_move): GET_MODE of tmp,
	not XEXP (tmp, 0).

2001-01-12  DJ Delorie  <dj@redhat.com>

	* Makefile.in (bootstrap): rename stages to be mnemonic.  Add
	restageN, unstageN, bubblestrap, quickstrap, and cleanstrap
	targets.

2001-01-12  Joseph S. Myers  <jsm28@cam.ac.uk>

	* cpp.texi, extend.texi, gcc.texi, install.texi, invoke.texi,
	tm.texi: Consistently refer to ISO C instead of ANSI C.  Refer to
	-std options alongside references to -ansi.  Update some
	documentation for C99.
	* cpp.1: Regenerate.

2001-01-12  Andreas Jaeger  <aj@suse.de>

	* haifa-sched.c (restore_line_notes): Remove argument block B
	since it's unused.
	* sched-ebb.c (schedule_ebb): Change caller.
	* sched-rgn.c (schedule_region): Likewise.
	* sched-int.h (restore_line_notes): Adjust prototype.

	* loop.h: Remove wrong declaration of doloop_condition_get.

2001-01-12  Phil Edwards  <pme@sources.redhat.com>

	* extend.texi:  Move C++-extension-related node from the C section
	into the C++ section.

2001-01-12  Joseph S. Myers  <jsm28@cam.ac.uk>

	* extend.texi: Refer to an array of pointers to functions instead
	of one of functions.

Fri Jan 12 12:08:12 MET 2001  Andreas Jaeger  <aj@suse.de>
			      Jan Hubicka  <jh@suse.cz>

	* combine.c (reversed_comparison): Fix typo in last patch.
	Check X for NULL.
	(combine_reversed_comparison_code): Make static to follow
	prototype declaration.

2001-01-12  Phil Edwards  <pme@sources.redhat.com>

	* install.texi:  Remove misplaced duplicate entry.

2001-01-11  Ulrich Drepper  <drepper@redhat.com>

	* config/float-i386.h: Define FLT_EVAL_METHOD and DECIMAL_DIG for C99.

Thu Jan 11 17:06:30 EST 2001  John Wehle  (john@feith.com)

	* final.c: (leaf_function_p): Fix typo.

2001-01-11  Zack Weinberg  <zack@wolery.stanford.edu>

	* aclocal.m4 (AC_FUNC_MMAP_ANYWHERE): Completely rewritten.
	Now defines HAVE_MMAP_DEV_ZERO and/or HAVE_MMAP_ANON depending
	which you have.
	(AC_FUNC_MMAP_FILE): Don't AC_REQUIRE AC_FUNC_MMAP_ANYWHERE.
	* configure.in: Set GGC to ggc-page if any of mmap_dev_zero,
	mmap_anon, and valloc is available.
	* ggc-page.c: Restructure ifdef logic to match new autoconf
	spec.  Don't throw away the test page in init_ggc.

	* configure, config.in: Regenerate.

2001-01-12  Michael Hayes  <mhayes@redhat.com>

	* loop.h (total_biv_increment): Constify iv_class pointer.
	(struct induction): Replace `mem_mode' with `mem' rtx.
	* unroll.c (total_biv_increment): Constify iv_class pointer.
	* loop.c (loop_giv_reduce_benefit): Derive mem mode from mem rtx.
	(find_mem_givs, combine_givs_p): Likewise.
	(debug_ivs, debug_iv_class, loop_ivs_dump, loop_iv_class_dump): New.

2001-01-10  Thomas Pfaff <tpfaff@gmx.net>

	* gthr-win32.h (__gthread_objc_thread_get_data): Save and restore Win32
	LastError.
	(__gthread_getspecific): Ditto.

Fri Jan 12 00:04:00 MET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.c (ix86_comparison_operator, fcmov_comparison_operator,
	put_condition_code): Convert fp comparison codes to integer
	before handling.
	(ix86_expand_fp_compare): Postnote the fp comparison code conversion
	to final.

	* i386.c (unsigned_comparison, no_comparison_operator): Kill.
	* i386-protos.h (no_comparison_operator): Kill.

	* i386.c (ix86_expand_fp_compare): Fix ordered/unordered confussion.

	* combine.c (REVERSIBLE_CC_MODE): Remove.
	(reversible_comparison_p): Remove.
	(combine_reversed_comparison_code): New.
	(reversed_comparison): New.
	(combine_simplify_rtx): Use
	combine_reversed_comparison_code/reversed_comparison instead
	of reversible_comparison_p.
	(simplify_if_then_else): Likewise.
	(simplify_set): Likewise.
	(simplify_logical): Likewise.
	(if_then_else_cond): Likewise.
	(known_cond): Likewise.
	(simplify_comparison): Likewise.

2001-01-11  Alan Lehotsky  <lehotsky@tiac.net>

	* builtins.c (std_expand_builtin_va_start): Handle varargs when
	sizeof (int) is larger than sizeof(__word__).

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

	* cppinit.c (do_includes): Fix typo.

2001-01-11  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/m68hc11.md (cmphi_1): Make sure reloading
	in S_REGS does not occur because not all sources are possible
	when a S_REGS is a destination (sometimes needs a clobber).
	(movqi_const0, zero_extendhisi2, zero_extendqisi2): Likewise.
	(zero_extendhidi2, extendqisi2, extendqihi2, extendhisi2): Likewise.
	(anddi3, iordi3, xordi3, negqi2, one_cmplhi2, one_cmplqi2: Likewise.
	(ashldi3_const32, ashldi3_const1, ashlsi3_const16): Likewise.
	(ashlsi3_const1, ashlhi3_2, ashlqi3_const1, ashrhi3): Likewise.
	(ashrqi3_const1, lshrdi3_const32, lshrdi3_const63): Likewise.
	(lshrdi_const1, lshrsi3_const16): Likewise.
	(*addhi3, lshrsi3_const1, lshrqi3_const1): Likewise.
	(*movhi_68hc12, *movqi_68hc12): Likewise.
	(movstrictqi): Make sure reloading in D_REGS as a destination
	does not happen.

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

	* cppspec.c (DEFAULT_WORD_SWITCH_TAKES_ARG): Add -MQ.

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

	* cppinit.c (cpp_start_read): If -fpreprocessed, ignore
	-D, -U and -A, and don't initialize the builtins.
	(do_includes): Error if -include or -imacros with -fpreprocessed.
	* cppmain.c (cb_define, cb_undef): Unconditionally process
	the callback.
	* tradcpp.c (main): Fix typo.

2000-01-11  Mark Elbrecht  <snowball3@bigfoot.com>

	* cppfiles.c (cpp_included, find_include_file, _cpp_execute_include)
	(read_name_map): Use IS_ABSOLUTE_PATH.
	* tradcpp.c (get_filename): Likewise.

2001-01-11  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/m68hc11.md (*adcq, *subcq): Fix operand numbers.
	(*ashlsi3_const16_zexthi, *ashlsi3_const1): Likewise.
	(*lshrsi3_const, *lshrsi3_const1, *lshrsi3_const16): Likewise.
	(*ashrsi3, *ashrsi3_const, *ashlsi3, *ashlsi3_const): Likewise.
	(*ashlsi3_const1, *lshrsi3, *ashlsi3_const16): Likewise.
	(cmphi_z_used): Don't use '@' for the output.
	(tstqi_z_used): Likewise.
	(cmpqi_z_used): Likewise.
	(one_cmplsi2): Likewise.

2001-01-11  Alexandre Oliva  <aoliva@redhat.com>

	* config/sh/sh.c (barrier_align): Recognize branch around far
	branch and redundant insn.

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

	* invoke.texi: Restore documentation of the drivers' switches -MD
	and -MMD.

2001-01-11  Alexandre Oliva  <aoliva@redhat.com>

	* config/sh/sh.h (LABEL_ALIGN): Use UNSPECV_ALIGN instead of 1.

	* Makefile.in (check-gcc//%, check-g++//%, check-g77//%,
	check-objc//%): Support parallel testing of multilibs.
	(TESTSUITEDIR): Set to testsuite by default, but override for
	parallel testing.
	(check-gcc, check-g++, check-g77, check-objc): Enter
	$(TESTSUITEDIR).

2001-01-11  Bernd Schmidt  <bernds@redhat.com>

	* alias.c (throughout): Use REGNO, rather than ORIGINAL_REGNO.
	* sched-deps.c (deps_may_trap_p): Likewise.
	* basic-block.h: Remove a comment.
	* flow.c (PROP_POSTRELOAD): Remove.
	(update_life_info): Don't add it to prop_flags.
	(mark_set_1): Lose the code that was enabled by it.

2001-01-11  Michael Hayes  <mhayes@redhat.com>

	* flow.c (flow_call_edges_add): New.
	* basic_block.h (flow_call_edges_add): New.

2001-01-11  J"orn Rennecke <amylaar@redhat.com>

	* reload1.c (move2add_note_store): Update reg_set_luid even if
	base reg remains the same.

2001-01-10  Nick Clifton  <nickc@redhat.com>

	* config/d30v/d30v.c (d30v_init_machine_status): Initialize
	machine_function structure to zero.
	Add prototypes for machine_status functions.

2001-01-10  Mark Mitchell  <mark@codesourcery.com>

	* c-common.h (CTI_VOID_LIST): Remove.
	(void_list_node): Likewise.
	* tree.h (TI_VOID_LIST_NODE): New enumeral.
	(void_list_node): New macro.
	* config/arm/arm.c (arm_init_builtins): Use void_list_node.
	* config/i386/i386.c (ix86_init_builtins): Likewise.
	* config/ia64a/ia64.c (ia64_init_builtins): Likewise.

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

	* Makefile.in (tradcpp0): Depend on mkdeps.h.  Link mkdeps.o
	* cppinit.c (cpp_start_read): Update comment, remove unneeded
	if statement.
	* tradcpp.c: Include mkdeps.h.
	(deps, print_deps_phony_targets, deps_append, output_deps,
	init_dependency_output, output_deps): New.
	(deps_buffer, deps_allocated_size, deps_size, deps_column,
	deps_output): Delete.
	(print_deps_missing_files): Rename deps_missing_files.
	(inhibit_output): Make global.
	(main): Delete inhibit_output, deps_stream, deps_target.
	Use mkdeps functionality in the same way as cpplib.  Remove
	-g3 handling.  Handle -MF, -MP, -MQ, -MT.  Update handling of
	-M and -MM.  Remove old handling of deps via deps_out, and
	old reading of environment variables.
	(get_filename): Update to use deps_add_dep.

2001-01-10  Mark Mitchell  <mark@codesourcery.com>

	* output.h (make_function_rtl): Remove prototype.
	(make_decl_rtl): Likewise.
	* varasm.c (make_function_rtl): Remove.
	(make_decl_rtl): Determine top-levelness from DECL_CONTEXT, rather
	than from a third parameter.
	* tree.h (make_decl_rtl): Remove last parameter.
	* c-decl.c (builtin_function): Remove last argument in call to
	make_decl_rtl; use make_function_rtl instead of make_decl_rtl.
	(start_function): Likewise.
	* except.c (call_get_eh_context): Likewise.
	* expr.c (emit_block_move): Likewise.
	(clear_storage): Likewise.
	* profile.c (output_func_start_profiler): Likewise.
	* toplev.c (rest_of_decl_compilation): Likewise.
	* objc/objc-act.c (create_builtin_decl): Likewise.
	(synth_module_prologue): Likewise.
	(generate_static_reference): Likewise.
	(build_selector_reference_decl): Likewise.
	(build_class_reference_decl): Likewise.
	(build_objc_string_decl): Likewise.
	(build_protocol_reference): Likewise.

2001-01-10  Richard Henderson  <rth@redhat.com>

	* hwint.h: Revert yesterday's change.

2001-01-10  Nick Clifton  <nickc@redhat.com>

	* function.h (save_machine_status): Delete.
	(restore_machine_status): Delete.
	Amend comment describing {init|mark|free}_machine_status.

	* function.c (save_machine_status): Delete.
	(restore_machine_status): Delete.
	Amend comment describing {init|mark|free}_machine_status.
	(push_function_context_to): Remove invocation of
	save_machine_status.
	(pop_function_context_from): Remove invocation of
	restore_machine_status.

	* emit-rtl.c (init_emit_once): Amend comment describing
	{init|mark|free}_machine_status.

	* tm.texi (Per-Function Data): New node.  Describe the
	INIT_EXPANDERS macro and the {init|mark|free}_machine_status
	function pointers.

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

	* cppinit.c (OPT_g): Remove.
	(cpp_handle_option): Update for removed -g3.
	(print_help): Update.
	* cpplib.h (struct cpp_options): Remove debug_output.
	* cppmain.c (setup_callbacks, cb_define): Update.
	* gcc.c (cpp_options): Translate -g3 to -dD.

2001-01-10  Aldy Hernandez  <aldyh@redhat.com>

	* config/i960/i960.md: Change modifier to + on the zero_extract
	pattern after the (rotate -2 reg) canonicalization pattern.

2001-01-10  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.c (alpha_free_machine_status): New.
	(override_options): Install it.
	(alpha_mark_machine_status): Verify machine non-null.
	* config/i386/i386.c (ix86_free_machine_status): New.
	(override_options): Install it.
	(ix86_init_machine_status): Use xcalloc.
	(ix86_mark_machine_status): Verify machine non-null.
	* config/ia64/ia64.c (ia64_free_machine_status): New.
	(ia64_override_options): Install it.
	(ia64_mark_machine_status): Verify machine non-null.

Wed Jan 10 11:34:39 2001  Jeffrey A Law  (law@cygnus.com)

	* function.c (instantiate_virtual_regs): Instantiate virtual
	registers found in CALL_INSN_FUNCTION_USAGE.

2001-01-10  Joseph S. Myers  <jsm28@cam.ac.uk>

	* i386.h (CPP_CPU_SPEC): Allow for -std=c* and -std=i* as
	equivalent to -ansi in disabling -Di386.

Wed Jan 10 16:38:31 MET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.c (ix86_fp_compare_code_to_integer, ix86_fp_comparison_codes):
	new functions.
	(ix86_expand_fp_compare): Make trivial use of new infrastructure.

2001-01-10  Richard Earnshaw  <rearnsha@arm.com>

	* arm.c (arm_init_builtins): Temporarily disable xscale builtins.

2001-01-10  Joseph S. Myers  <jsm28@cam.ac.uk>

	* invoke.texi: Document that -fcond-mismatch isn't supported for
	C++.

2001-01-10  Joseph S. Myers  <jsm28@cam.ac.uk>

	* gcc.texi: Define macro gcctabopt.
	* invoke.texi: Add manpage sections BUGS and AUTHOR.  Use
	@command, @env and @option in some places where appropriate.  Use
	@gcctabopt where appropriate.  Put URLs and email addresses inside
	@w.

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

	* gcc.c (cpp_options): Set MD file name from output
	filename, if specified.
	(suffix_subst): New static variable.
	(do_spec): Clear it.
	(do_spec_1, case '.'): Handle new `%.suffix' spec.
	Clear it.
	(give_switch): Handle suffix_subst.

2001-01-10  Phil Edwards  <pme@sources.redhat.com>

	* invoke.texi:  Fix another typo.

2001-01-10  Phil Edwards  <pme@sources.redhat.com>

	* invoke.texi:  Fix typo.

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

	* c-lang.c (lang_hooks): Update.
	(lang_decode_option): Remove.
	(lang_init_options): Rename c_init_options.
	* toplev.c (main): Use lang_hooks for lang_init_options
	and lang_decode_option.
	* toplev.h (lang_hooks): Add 2 new hooks.
	* tree.h: Remove lang_init_options and lang_decode_option.
	* cp/cp-tree.h (lang_decode_option): Rename cxx_decode_option.
	* cp/decl2.c: Similarly.
	* cp/lex.c (lang_init_options): Rename cxx_init_options.
	(lang_hooks): Update.
	* f/com.c (f_init, f_finish): Rename ffe_init, ffe_finish
	for consistency.
	(lang_init_options): Rename ffe_init_options.
	(lang_hooks): Update.
	(lang_decode_option): Remove.
	* java/lang.c (lang_init_options): Rename java_init_options.
	(lang_decode_option): Rename java_decode_option.
	(lang_hooks): Update.
	* objc/objc-act.c (lang_init_options): Rename objc_init_options.
	(lang_decode_option): Rename objc_decode_option.
	(lang_hooks): Update.

2001-01-09  Nick Clifton  <nickc@redhat.com>

	* config/d30v/d30v.c (d30v_eh_epilogue_sp_ofs): Delete.
	(d30v_return_addr_rtx): Delete.
	(d30v_expand_epilogue): Use eh_epilogue_sp_ofs field in the
	cfun->machine structure.
	(struct machine_function): Move to d30v.h
	(d30v_save_machine_status): Delete.
	(d30v_restore_machine_status): Delete.
	(d30v_init_machine_status): New Function.
	(d30v_mark_machine_status): New Function.
	(d30v_free_machine_status): New Function.
	(d30v_init_expanders): Use new functions.
	(d30v_return_addr): Use ra_rtx field in cfun->machine.
	(d30v_add_gc_roots): Remove d30v_eh_epilogue_sp_ofs and
	d30v_return_addr_rtx.

	* config/d30v/d30v.h (struct_machine): Move here.
	Add eh_epilogue_sp_ofs field.

	*config/d30v/d30v.md (epilogue): Initialize eh_epilogue_sp_ofs
	field in cfun->machine structure.

Tue Jan  9 21:34:57 2001  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* pa32-regs.h (CONDITIONAL_REGISTER_USAGE): When generating pic code,
	PIC_OFFSET_TABLE_REGNUM_SAVED is a call_used register.
	* pa64-regs.h (CONDITIONAL_REGISTER_USAGE): Likewise.

Tue Jan  9 21:25:19 2001  Jeffrey A Law  (law@cygnus.com)

	* objc/lang-options.h: Remove bogus reference to
	Java trademark.

2001-01-09  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.c (get_shift_alg): Use a struct shift_info to
	return the result.

2001-01-09  Alan Lehotsky  <lehotsky@tiac.net>

	* reload.c (find_reloads_address): Check for eliminable registers
	when substituting a constant expression for a pseudo.

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

	* c-common.c (enum format_type): Add format_type_error.
	(decode_format_type): New function.
	(decl_attributes): Use it.
	(format_kind_info): Adjust comment.

2001-01-09  David O'Brien  <obrien@BSDi.com>

	* config.gcc (*-*-gnu*, i[34567]86-*-elf*, i[34567]86-*-linux*libc1,
	i[34567]86-*-linux*, i[34567]86-*-moss*): Specify needed platform specific
	files in tm_file.
	* config/i386/gnu.h: Don't include required platform specific .h files,
	tm.h will do it instead.
	* config/i386/i386elf.h: Likewise.
	* config/i386/linux.h: Likewise.
	* config/i386/moss.h: Likewise.
	* config/mips/gnu.h: Likewise.

2001-01-09  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* config.gcc (powerpc-*-beos*): Include ${tm_file} and rs6000/aix.h.
	(rs6000-ibm-aix3.[01]*): Likewise.
	(rs6000-ibm-aix3.2.[456789]*, powerpc-ibm-aix3.2.[456789]*): Likewise.
	(rs6000-ibm-aix4.[12]*, powerpc-ibm-aix4.[12]*): Likewise.
	(rs6000-ibm-aix4.[3456789]*, powerpc-ibm-aix4.[3456789]*): Likewise.
	(rs6000-ibm-aix[56789].*, powerpc-ibm-aix[56789].*): Likewise.
	(powerpc-*-sysv*): Include {tm_file}. svr4.h and rs6000/sysv4.h.
	(powerpc-*-eabiaix*): Likewise.
	(powerpc-*-eabisim*): Likewise.
	(powerpc-*-elf*): Likewise.
	(powerpc-*-eabi*): Likewise.
	(powerpc-*-rtems*): Likewise.
	(powerpc-*-linux*libc1): Likewise.
	(powerpc-*-linux*): Likewise.
	(powerpc-wrs-vxworks*): Likewise.
	(powerpcle-wrs-vxworks*): Likewise.
	(powerpcle-*-sysv*): Likewise.
	(powerpcle-*-elf*): Likewise.
	(powerpcle-*-eabisim*): Likewise.
	(powerpcle-*-eabi*): Likewise.
	(powerpcle-*-solaris2*): Likewise.
	* config/rs6000/aix31.h: Delete includes.
	* config/rs6000/aix3newas.h: Likewise.
	* config/rs6000/aix41.h: Likewise.
	* config/rs6000/aix43.h: Likewise.
	* config/rs6000/beos.h: Likewise.
	* config/rs6000/rtems.h: Likewise.
	* config/rs6000/sysv4.h: Likewise.

2001-01-09  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.c (get_shift_alg): Remove an argument cpu.
	Change an argument mode of machine_mode to shift_mode of
	shift_mode.  Remove an extra error check.
	(emit_a_shift): Adopt to the new calling prototype of
	get_shift_alg.
	(function_prologue): Fix code for a monitor
	function.  Support H8S.
	(function_epilogue): Do not output pop for a monitor function.

2001-01-09  Nick Clifton  <nickc@redhat.com>

	* config/rs6000/rs6000.c (rs6000_sysv_varargs_p): Delete.
	(setup_incoming_varargs): Use sysv_varargs_p field of the
	cfun->machine structure.
	(struct machine_function): Move to rs6000.h
	(rs6000_save_machine_status): Delete.
	(rs6000_restore_machine_status): Delete.
	(rs6000_init_machine_status): New Function.
	(rs6000_free_machine_status): New Function.
	(rs6000_init_expanders): Use new functions.

	* config/rs6000/rs6000.h (rs6000_sysv_varargs_p): Delete
	export.
	(struct machine_function): Move here.

	* config/rs6000/sysv4.h (RS6000_VARARGS_AREA): Use
	sysv_varargs_p field of the cfun->machine structure.

	* config/rs6000/rs6000-protos.h (rs6000_save_machine_status):
	Remove prototype.
	(rs6000_restore_machine_status): Remove prototype.

2001-01-09  Richard Henderson  <rth@redhat.com>

	* sched-int.h (struct deps): Add max_reg, reg_last_in_use; merge
	reg_last_uses, reg_last_sets, reg_last_clobbers into struct deps_reg.
	* sched-deps.c (sched_analyze_1): Update uses of struct deps.
	(sched_analyze_2, sched_analyze_insn): Likewise.
	(sched_analyze, init_deps): Likewise.
	(free_deps): Likewise.  Iterate with EXECUTE_IF_SET_IN_REG_SET.
	* sched-rgn.c (propagate_deps): Likewise.  Remove max_reg argument.
	(compute_block_backward_dependences): Update propagate_deps call.

2001-01-09  Mark Elbrecht  <snowball3@bigfoot.com>

	* gcc.c (process_command): Set switches[n_switches].ordering to 0.

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

	* cppinit.c (OPT_MD, OPT_MMD): Restore.
	(cpp_handle_option): Handle them.
	(cpp_post_options): Ensure one of -M or -MM is specified with
	any other -M? option.
	(init_dependency_output): Suppress output with -MG.

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

	* cpp.texi: Update.
	* invoke.texi: Update.

2001-01-09  Bernd Schmidt  <bernds@redhat.com>

	* sh.md (reload_outsf): Generate recognizable patterns for
	TARGET_SH3E.

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

	* c-lang.c (lang_hooks): Update.
	(lang_init): Rename c_init.
	(lang_finish): Remove.
	* toplev.c (compile_file): Use lang_hooks for lang_init ()
	and lang_finish ().
	* toplev.h (lang_hooks): Add init () and finish ().
	* tree.h (lang_init, lang_finish): Remove.
	* cp/tree.h (lang_init, lang_finish): Remove.
	* cp/decl2.c (cxx_post_options, lang_hooks): Move to cp/lex.c.
	* cp/lex.c (cxx_init, cxx_finish, cxx_post_options,
	lang_hooks): New.
	(lang_init, lang_finish): Remove.
	* f/com.c (lang_init, lang_finish): Rename f_init, f_finish.
	(lang_hooks): Update.
	* java/lang.c (lang_init): Rename java_init.
	(lang_finish): Remove.
	(lang_hooks): Update.
	* objc/objc-act.c (lang_init): Rename objc_init.
	(lang_finish): Remove.
	(lang_hoooks): Update.

20001-01-09  Graham Stott  <grahams@redhat.com>

	* cppfiles.c (_cpp_execute_include): Move `len` initialisation
	after `ptr` is initialized.

2001-01-09  Alexandre Oliva  <aoliva@redhat.com>

	* config/sh/sh.h (STATIC_CHAIN_REGNUM): Change from r13 to r3.
	(INITIALIZE_TRAMPOLINE): Adjust accordingly.
	* config/sh/sh.c (sh_expand_prologue): Use r1 as temporary for
	stack adjusts, instead of r3.

2001-01-09  Michael Hayes  <mhayes@redhat.com>

	* flow.c (flow_loop_scan): Break out of ...
	(flow_loops_find) ... here.
	* basic-block.h (flow_loop_scan): New.
	(LOOP_ENTRY_EDGES, LOOP_EXIT_EDGES): Add.
	(LOOP_EDGES, LOOP_EXITS_DOMS, LOOP_ALL): Redefine.

2001-01-09  Alexandre Oliva  <aoliva@redhat.com>

	* cppinit.c (cpp_cleanup): NULLify macro_buffer and zero
	macro_buffer_len.
	* cppmacro.c (cpp_macro_definition): Reset macro_buffer_len when
	realloc()ing macro_buffer.

	* hwint.h (HOST_BITS_PER_WIDE_INT, HOST_WIDE_INT): Use long long
	if it's wider than long and the target's long is wider than the
	host's.

2001-01-09  Mark Mitchell  <mark@codesourcery.com>

	Remove support for using UWIN as a host machine.
	* configure.in: Issue an error message.
	* configure: Regenerated.
	* config.gcc: Remove xm_* UWIN configury.
	* config/i386/xm-uwin.h: Remove.

2001-01-08  Nick Clifton  <nickc@redhat.com>

	* config/v850/v850.c (ra_rtx): Delete.
	(v850_save_machine_status): Delete.
	(v850_restore_machine_status): Delete.
	(v850_init_machine_status): New function.
	(v850_mark_machine_status): New function.
	(v850_free_machine_status): New function.
	(v850_return_addr): Use ra_rtx field in machine structure.
	(v850_init_expanders): Use new functions.

	* config/v850/v850-protos.h: Fix prototypes for v850_output_*
	* config/v850/v850.c: Change arguments to v850_output+* functions
	to take a const char *, to avoid compile time warning.
	* config/v850/v850.h (ASM_OUTPUT_LABELREF): Undefine, not needed.
	(USER_LABEL_PREFIX): Redefine.

2000-01-08  Jim Wilson  <wilson@redhat.com>

	* sched-rgn.c (BITSET_ADD, BITSET_REMOVE, bitset_member): Cast
	1 to unsigned HOST_WIDE_INT before left shift.

2001-01-08  Nick Clifton  <nickc@redhat.com>

	* config/arm/arm.c (arm_mark_machine_status): Check to see if
	the machine structure has been allocated.
	(arm_free_machine_status): New function: Free the machine
	specific function structure.

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

	* jump.c (simplejump_p): Revert last change.

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

	* cppinit.c (init): Rename init_library.
	(cpp_create_reader): Update.
	* gcc.c (cpp_options): If -o given, use it as the target of
	any -M options.

2001-01-08  Richard Earnshaw  <rearnsha@arm.com>

	* arm.c (arm_arch5e): New variable.
	(all_cores): XScale is a 5TE device.
	(arm_override_options): Set arm_arch5e.
	(arm_init_builtins): __builtin_prefetch is in arch5e.
	* arm.h (arm_arch5e): Declare it.

	* arm.h (PREDICATE_CODES): Add arm_hard_register_operand.

	* arm.md (define_constants): Add defines for UNSPEC and
	UNSPEC_VOLATILE insns.  Update all users.
	(define_constants): Add constants for IP_REGNUM, SP_REGNUM, PC_REGNUM.
	* arm.c (multi_register_push, note_invalid_constants)
	(emit_multi_reg_push, emit_sfm, expand_prologue): Use constants.
	* arm.h (SP_REGNUM, IP_REGNUM, PC_REGNUM): Delete defines.
	(STACK_POINTER_REGNUM): Define in terms of SP_REGNUM.

Mon Jan  8 16:14:56 MET 2001  Jan Hubicka  <jh@suse.cz>

	* jump.c (jump_optimize_1): Use reversed_comparison_code
	instead of can_reverse_comparison_p.
	(jump_back_p): Likewise.
	(invert_exp_1): Likewise.
	(thread_jumps): Likewise.
	* simplify-rtx.c (simplify_unary_operation): Likewise.
	(simplify_ternary_operation): Likewise.
	* cse.c (find_comparison_args): Convert to use
	can_reverse_comparison_p.
	(record_jump_equiv): Likewise.

2001-01-08  Richard Earnshaw  <rearnsha@arm.com>

	* arm.h (HARD_REGNO_RENAME_OK): Delete.
	(EPILOGUE_USES): Define.
	(INITIAL_ELIMINATION_OFFSET): Current prologue code does not
	automatically stack the LR if it isn't live.

Mon Jan  8 13:46:02 MET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.c (ix86_expand_int_movcc): Take care to reverse fp conditions
	properly.

Sun Jan  7 18:37:43 2001  Mark P Mitchell  <mark@codesourcery.com>

	* ggc-page.c (max_alignment): New structure.
	(MAX_ALIGNMENT): New macro.
	(init_ggc): Use it to round up the sizes in the
	extra_order_size_table.

2001-01-07  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* config/rs6000/rs6000.h (EPILOGUE_USES): New, mark link register
	after reload.

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

	* builtins.def (BUILT_IN_FPRINTF): New entry.

	* c-common.c (c_expand_builtin_fprintf): New function.
	(init_function_format_info): Handle __builtin_fprintf.
	(c_common_nodes_and_builtins): Declare fprintf/__builtin_fprintf.
	(c_expand_builtin): Handle BUILT_IN_FPRINTF.

	* c-decl.c (duplicate_decls): Adjust comment.

	* extend.texi (fprintf): Document new builtin.

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

	* jump.c (simplejump_p): Recognize any single_set jump
	of the proper form.

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

	* configure.in (slibdir): Accept an --with-slibdir option.
	Use "test" not "[" in configure.  Default to $(libdir).

	* config/t-linux (SHLIB_INSTALL): Double quote slibdir;
	fix typo in rm -f.
	* config/t-aix43 (SHLIB_INSTALL): Likewise.
	* config/alpha/t-osf4 (SHLIB_INSTALL): Likewise.
	(SHLIB_LINK): Create links for the soname.
	* config/mips/t-iris6: Likewise.
	* config/sparc/t-slibgcc: Likewise.
	* config/sparc/t-slibgcc-sld: Likewise.

2001-01-07  Jakub Jelinek  <jakub@redhat.com>

	* config/i386/i386.c (constant_call_address_operand): Accept
	(const (plus (symbol_ref) (const_int))).
	* config/i386/i386.h (PREDICATE_CODES): Add CONST for
	constant_call_address_operand.

2001-01-08  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* libgcc2.h (W_TYPE_SIZE): Fix case where MIN_UNITS_PER_WORD == 1
	and LONG_LONG_TYPE_SIZE > 32.

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

	* jump.c (reversed_comparison_code_parts): Fix typo introduced by
	the previous change.

Sun Jan  7 19:37:48 MET 2001  Jan Hubicka  <jh@suse.cz>

	* jump.c (reversed_comparison_code_parts, reversed_comparison_code):
	New.
	(can_reverse_comparison_p): Rewrite to use reversed_comparison_code.
	(reverse_condition_maybe_unordered): Abort on unsigned comparisons.
	* rtl.h (reversed_comparison_code_parts, reversed_comparison_code):
	Declare.

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

	* fix-header.c (read_scan_file): s/pfile/scan_in/.

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

	* c-lang.c (c_post_options): Call cpp_post_options.
	* objc/objc-act.c (objc_post_options): Similarly.
	* cppmain.c (main): Similarly.
	* fix-header.c (read_scan_file): Similarly.
	* cppinit.c (cpp_start_read): Move option consistency checks
	to cpp_post_options.  Don't call init_dependency_output.
	If needed, add default target and main file dependency.
	(OPT_MD, OPT_MMD): Remove.
	(OPT_MF): New.
	(cpp_handle_option): Update for OPT_* changes.
	(cpp_post_options): New.
	(init_dependency_output): Command line -MF overrides environment
	variables.  Don't set default target etc.  Suppress output
	if dependencies are going to stdout.
	(print_help): Update.
	* cpplib.h (cpp_post_options): New.
	* gcc.c (cpp_options): Update for -MD, -MMD, -MF.

Sun Jan  7 14:44:19 MET 2001  Jan Hubicka  <jh@suse.cz>

	* jump.c (comparison_dominates_p): Support unordered compares.

Sun Jan  7 14:39:07 MET 2001  Jan Hubicka  <jh@suse.cz>

	* simplify-rtx.c (simplify_relational_operation): Always simplify
	ORDERED and UNORDERED when FLAG_FAST_MATH.  Handle properly UNLE
	and UNGE.

Sun Jan  7 14:35:13 MET 2001  Jan Hubicka  <jh@suse.cz>

	* combine.c (combine_simplify_rtx): Recognize the unordered compares.
	(nonzero_bits): Likewise.
	(simplify_comparison): Likewise.
	(num_sign_bit_copies): Likewise; return more sane value depending
	on STORE_FLAG_VALUE.
	(known_cond): Do not assume EQ to be always true for equivalent
	operands.

Sun Jan  7 14:31:57 MET 2001  Jan Hubicka  <jh@suse.cz>

	* cse.c (fold_rtx): Handle unordered comparisons.

Sun Jan  7 13:49:19 MET 2001  Jan Hubicka  <jh@suse.cz>

	* rtlanal.c (set_of_1): New static function.
	(reg_set_last_1, reg_set_p_1, reg_set_reg, reg_set_flag,
	 reg_set_last_unknown, reg_set_last_value, reg_set_last_first_regno,
	 reg_set_last_last_regno): Remove.
	(set_of): New global function.
	(set_of_data): New structure.
	(reg_set_p, reg_set_last): Revamp for set_of.
	* rtl.h (set_of): New.

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

	* c-common.c (c_common_nodes_and_builtins): Add _Exit builtin.
	* extend.texi: Document _Exit builtin.

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

	* (initialize, initialize_builtins,
	initialize_dependency_output, initialize_standard_includes):
	Rename s/initialize/init. Update.
	(init_dependency_output): Move to after
	cpp_handle_options, the correct location temporally at least.
	(opt_comp): Move next to init (), its caller.  Fix prototype.
	(init): Make "initialized" local scope.
	(cpp_create_reader): Always call init ().
	(cpp_start_read): Update.
	(output_deps): New function, broken out of cpp_finish.
	(cpp_finish): Break out output_deps.

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

	* collect2.c (COFF specific stuff): Revert 12-06 patch
	to prototype system functions.

2001-01-07  Michael Hayes  <mhayes@redhat.com>

	* hard-reg-set.h: Add multiple include guard.
	* basic-block.h (struct loop): Add `sink' field.
	* loop.h: Include sbitmap.h, hard-reg-set.h, and basic-block.h.
	(emit_iv_add_mult): Delete.
	(loop_iv_add_mult_hoist, loop_iv_add_mult_sink): Define.
	(loop_iv_add_mult_emit_before, loop_insn_sink): Define.
	(unroll_loop): Remove end_insert_before argument.
	* loop.c (loop_givs_rescan): Remove end_insert_before argument.
	(maybe_eliminate_biv_1): Likewise.
	(emit_iv_add_mult): Delete.
	(gen_add_mult, loop_regs_update): New.
	(loop_insn_emit_after, loop_insn_emit_before): New.
	(loop_insn_sink, loop_insn_sink_or_swim): New.
	(emit_iv_add_mult): Delete.
	(scan_loop): Set loop->sink.
	(loop_givs_reduce): Use loop_insn_sink and its ilk.
	(loop_givs_rescan, strength_reduce, check_dbra_loop): Likewise.
	(maybe_eliminate_biv_1): Likewise.
	(maybe_eliminate_biv_1): Add basic block argument.
	* unroll.c (unroll_loop): Remove end_insert_before argument.
	(find_splittable_regs): Likewise.
	(find_splittable_regs): Use loop_insn_sink and its ilk.
	(find_splittable_givs, final_biv_value, final_giv_value): Likewise.

2001-01-07  Michael Hayes  <mhayes@redhat.com>

	* loop.h (loop_insn_hoist): New prototype.
	* loop.c (loop_insn_hoist, loop_insn_emit_before): New.
	(move_movables, loop_givs_rescan): Use loop_insn_hoist.
	(check_dbra_loop, load_mems): Likewise.
	* unroll.c (unroll_loop, find_splittable_regs): Likewise.
	(find_splittable_givs): Likewise.

2001-01-07  Michael Hayes  <mhayes@redhat.com>

	* loop.c (emit_iv_add_mult): Use single_set to examine new insn.

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

	* sched-rgn.c (is_cfg_nonregular): Fix thinko's last change.

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

	* Makefile.in (DRIVER_DEFINES): Define ENABLE_SHARED_LIBGCC and
	NO_SHARED_LIBGCC_MULTILIB as required for the target.
	* gcc.c (init_spec): Massage the existing libgcc_spec into a
	variant that handles a shared libgcc.
	(process_command): Always validate -{static,shared}-libgcc.
	(do_spec_1): New 'M' case.
	* invoke.text (Link Options): Document -{static,shared}-libgcc.

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

	* Makefile.in (slibdir): New variable.
	(libgcc.mk): Pass SHLIB_INSTALL to mklibgcc.
	(installdirs): Create slibdir.
	(install-libgcc, install-multilib): Defer to libgcc.mk.
	* configure.in (slibdir): Substitute.
	* mklibgcc.in (install): New target.

	* config/t-linux (SHLIB_LINK): Create links for the soname.
	(SHLIB_INSTALL): New.
	* config/alpha/t-osf4 (SHLIB_INSTALL): New.
	* config/mips/t-iris6 (SHLIB_INSTALL): New.
	* config/rs6000/t-aix43 (SHLIB_INSTALL): New.
	* config/sparc/t-slibgcc (SHLIB_INSTALL): New.
	* config/sparc/t-slibgcc-sld (SHLIB_INSTALL): New.

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

	* config/rs6000/aix.h (LINK_LIBGCC_SPECIAL_1): New.
	* config/rs6000/rs6000.h (LIBGCC_SPEC): Remove.
	* config/rs6000/sysv4.h (LIBGCC_SPEC): Remove.

2001-01-07  Michael Hayes  <mhayes@redhat.com>

	* loop.c (count_loop_regs_set): Delete.
	(load_mems_and_recount_loop_regs_set): Delete.
	(loop_regs_scan): Merge common code from count_loop_regs_set,
	scan_loop, and load_mems_and_recount_loop_regs_set.
	(scan_loop): Call load_mems directly and loop_regs_scan
	again if new registers created.

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

	* toplev.c (main): Call the front-end specific post_options
	hook if one is given.
	* toplev.h (struct_lang_hooks, lang_hooks): New.
	* c-lang.c (c_post_options, lang_hooks): Implement lang_hooks
	for the C front end.
	* cp/decl2.c (cxx_post_options, lang_hooks): Implement
	lang_hooks for the C++ front end.
	* objc/objc-act.c (objc_post_options, lang_hooks): Implement
	lang_hooks for the ObjC front end.
	* f/com.c (lang_hooks): Hooks for the Fortran front end.
	* java/lang.c (lang_hooks): Hooks for the Java front end.

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

	* c-lex.c (init_c_lex): Request #define / #undef callbacks
	for verbose DWARF[2] debugging.
	(cb_define, cb_undef): The new callbacks.
	* toplev.h (debug_define, debug_undef): Make const correct.
	* toplev.c (debug_define, debug_undef): Similarly.  Do not
	perform the verbosity tests here anymore.

2001-01-07  Alexandre Oliva  <aoliva@redhat.com>

	* reload.c (subst_reloads): Take INSN argument.  When
	replacing a LABEL_REF in a JUMP_INSN, add a REG_LABEL note.
	* reload.h (subst_reloads): Adjust prototype.
	* reload1.c (reload_as_needed): Pass INSN to subst_reloads.
	* jump.c (mark_all_labels): Canonicalize any REG_LABEL notes
	present in JUMP_INSNs and copy them to JUMP_LABEL.
	* flow.c (find_label_refs, find_basic_blocks_1): Skip
	JUMP_INSNs and insns with REG_LABELs that are followed by
	JUMP_INSNs with the same REG_LABEL.
	* sched-rgn.c (is_cfg_nonregular): Likewise.
	* rtlanal.c (computed_jump_p): Make it false if a REG_LABEL
	note is available.
	* unroll.c (unroll_loop): Look for REG_LABEL notes in
	JUMP_INSNs too.
	* rtl.texi (REG_LABEL): Document usage in JUMP_INSNs.

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

	* loop.c (scan_loop): Use xcalloc for the regs array.
	(load_mems_and_recount_loop_regs_set): Zero the new memory
	received from xrealloc.

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

	* mkdeps.c (deps_add_dep): Fix vector re-allocation.

Sat Jan  6 00:09:34 2001  J"orn Rennecke <amylaar@redhat.com>

	* integrate.c (copy_rtx_and_substitute): When copying
	an ignored return value, strip REG_FUNCTION_VALUE_P.

2001-01-06  Michael Hayes  <mhayes@redhat.com>

	* loop.c (debug_biv, debug_giv): New.
	(loop_biv_dump): Break out from ...
	(record_biv): ... here.
	(loop_giv_dump): Break out from ...
	(record_giv): ... here.
	(loop_bivs_check): Use print_simple_rtl.
	* unroll.c (loop_iterations): Use print_simple_rtl.

2000-01-05  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* pa.md (return, return_internal): Modify patterns to prevent regrename
	mucking with the return pointer.

2001-01-05  Richard Henderson  <rth@redhat.com>

	* dwarf2out.c (mem_loc_descriptor) [case MEM]: Revert 10-31 change.

Fri Jan  5 16:34:18 2001  Nick Clifton  <nickc@redhat.com>

	* config/v850/lib1funcs.asm: Replace __mulsi3 routine with faster
	version supplied by Matteo Frigo.

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

	* cpp.texi: Update for -MQ.
	* cppinit.c (cpp_create_reader): Always create pfile->deps.
	(cpp_cleanup): Always free pfile->deps.
	(initialize_dependency_output): Don't create pfile->deps.
	(cpp_handle_option): Similarly.
	(OPT_MQ): New.
	* gcc.c (cpp_options): Handle -MQ.
	(DEFAULT_WORD_SWITCH_TAKES_ARG): Add -MQ.
	* mkdeps.c (base_name): Remove.
	(deps_init): Don't allocate vector space until it's needed.
	(deps_free): Only free vectors if allocated.
	(deps_add_target, deps_add_dep): Update for initial allocation.
	(deps_add_default_target): Don't strip to the base_name.

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

	* config/v850/v850.h (RETURN_ADDR_RTX): Define.
	(INIT_EXPANDERS): Define.

	* config/v850/v850.c (struct machine_function): Define.
	(v850_save_machine_status): New function.
	(v850_restore_machine_status): New function.
	(v850_return_addr): New function.
	(v850_init_expanders): New function.

	* config/v850/v850-protos.h: Add prototypes for v850_return_addr
	and v850_init_expanders.

2001-01-05  Zack Weinberg  <zack@wolery.stanford.edu>

	* cpplib.h (struct cpp_reader): Add help_only field.
	* cppinit.c (COMMAND_LINE_OPTIONS): Add OPT_version.
	(cpp_handle_option): Set pfile->help_only if we see -h,
	--help, -target-help, or --version.  Print version string but
	do not set help_only if we see -v or -version.  Make text
	printed by -v match that printed by (-)-version.

	* cppmain.c (main): Exit after option parsing if
	pfile->help_only is true.

	* toplev.c (independent_decode_option): Call print_version,
	then exit, if we see --version (but not -version).
	(print_version): Split lengthy message into two lines.

2001-01-05  Nick Clifton  <nickc@redhat.com>

	* config/v850/v850.c (v850_encode_data_area): Use alloca to create
	temporary string for initialisation before calling ggc_alloc_string.

2001-01-06  Michael Hayes  <mhayes@redhat.com>

	* rtl.h (print_simple_rtl): New.
	* print-rtl.c (print_simple_rtl): New.
	(flag_simple): New.
	(print_rtx): Disable printing of flags and modes, etc.,
	if `flag_simple` nonzero.

2001-01-05  Zack Weinberg  <zack@wolery.stanford.edu>

	* function.c (fixup_var_refs): Use push_to_full_sequence where
	possible.

2001-01-05  Michael Meissner  <meissner@redhat.com>

	* flags.h (flag_reorder_blocks): Add declaration.
	(flag_rename_block): Ditto.

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

	* function.c (reorder_blocks): Make sure the flags are all reset
	before using them to mark blocks, else a second invocation will
	corrupt the block chain.
	(reorder_blocks_0): New, resets the flags.

Fri Jan  5 20:34:06 2001  J"orn Rennecke <amylaar@redhat.com>

	* cse.c (find_comparison_args): Stop if the argument is known to
	be constant.

2001-01-05  Alexandre Oliva  <aoliva@redhat.com>

	* config/sh/sh.md (movdf): When splitting load into pair of
	registers, don't clobber the register used in the address too
	early.

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

	* varasm.c (mark_constant_pool): Improve initial comments.
	(mark_constants): Move marking of constants to mark_constant.
	(mark_constant): New function to recursively mark all constants
	referred to by a constant.

2001-01-05  Catherine Moore  <clm@redhat.com>

	* dbxout.c ((dbxout_parms): Handle invisible ref where decl is a REG.

2001-01-05  Phil Edwards  <pme@sources.redhat.com>

	* cp/lang-options.h:  Bring comment in line with reality.
	* f/lang-options.h:  Likewise.
	* java/lang-options.h:  Likewise.
	* objc/lang-options.h:  Likewise.
	* ch/lang-options.h:  Likewise.
	* f/g77.texi:  And update the manual.

2001-01-05  Marek Michalkiewicz  <marekm@linux.org.pl>
	    Denis Chertykov  <denisc@overta.ru>

	* config/avr/avr-protos.h (avr_peep2_scratch_safe): Prototype.
	* config/avr/avr.c (avr_peep2_scratch_safe): New function.
	* config/avr/avr.md (all peepholes that request a scratch register):
	Call it, FAIL the peephole if not safe (in interrupt functions).

2001-01-05  Mark Mitchell  <mark@codesourcery.com>

	* ggc-page.c (NUM_EXTRA_ORDERS): Hardwire to zero for now.

2001-01-05  Joseph S. Myers  <jsm28@cam.ac.uk>

	* builtins.def (BUILT_IN_CONJ, BUILT_IN_CREAL, BUILT_IN_CIMAG):
	Define.
	* builtins.c (expand_builtin): Abort on BUILT_IN_CONJ,
	BUILT_IN_CREAL and BUILT_IN_CIMAG.
	* c-common.c (c_common_nodes_and_builtins): Create builtin conjf,
	conj, conjl, crealf, creal, creall, cimagf, cimag and cimagl.
	(expand_tree_builtin): Handle BUILT_IN_CONJ, BUILT_IN_CREAL and
	BUILT_IN_CIMAG.
	* extend.texi: Document these builtins.

2001-01-05  Daniel Berlin  <dberlin@redhat.com>

	* c-common.c (lang_get_alias_set): Say we know nothing of
	VECTOR_TYPE aliasing.

	* dwarf2out.c (is_base_type): Handle VECTOR_TYPE properly.

2001-01-05  Bruce Korb  <bkorb@gnu.org>

	* fixinc/mkfixinc.sh(vax-*-bsd): convert exit and atexit calls to
	their x* equivalent versions for atexit-less systems
	* fixinc/fixincl.c(main): do not return from main() on atexit-less
	systems (or any other system any more).

2001-01-05  Richard Earnshaw  <rearnsha@arm.com>

	* arm.md (ldmsi_postinc): Avoid use of match_dup between input and
	output operands.  Use arm_hard_register_operand for operand 4.
	(stmsi_postinc): Similarly.
	(ldmsi): Use arm_hard_register_operand for opernand 2.
	(stmsi): Similarly.
	* arm.c (arm_hard_register_operand): New function.
	* arm-protos.h (arm_hard_register_operand): Prototype it.

	* arm.h (HARD_REGNO_RENAME_OK): Define.

Fri Jan  5 16:29:49 MET 2001  Jan Hubicka  <jh@suse.cz>

	* simplify-rtx.c (cfc_args): add "unordered" field.
	(check_fold_consts): Set unordered field.
	(simplify_relational_operation): Simplify the unordered
	comparisons.

	* reg-stack.c (swap_rtx_condition): Ensure that the transformation
	is valid.

	* emit-rtl.c (try_split): Fix code to mark labels.
	* jump.c (mark_jump_label): Make global.
	* rtl.h (mark_jump_label): Declare.

	* predict.c (estimate_probability): Handle unordred comparisons.

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

	* cpp.texi: Update for -MP.  Clarify behavior of -MT.
	* cppinit.c (initialize_dependency_output):  Update.
	(cpp_finish): Output dummy targets for -MP.
	(OPT_MP): New.
	(cpp_handle_option): Handle -MP.  Don't quote -MT options.
	* cpplib.h (struct cpp_options): Add deps_phony_targets.
	* gcc.c (cpp_options): Update to handle -MP.
	* mkdeps.c (deps_add_target, deps_add_default_target): Update
	to quote only the default target.
	(deps_phony_targets): Insert a preceding newline.  Rename from
	deps_dummy_targets for consistency.
	* mkdeps.h: Update

2001-01-05  Alexandre Oliva  <aoliva@redhat.com>

	* calls.c (emit_library_call_value_1): Support
	INIT_CUMULATIVE_LIBCALL_ARGS.
	* tm.texi (INIT_CUMULATIVE_LIBCALL_ARGS): Document it.

2001-01-04  Richard Henderson  <rth@redhat.com>

	* c-decl.c (finish_struct): Detect flexible array members
	used in an inappropriate context.
	* c-typeck.c (really_start_incremental_init): Special case
	constructor_max_index for zero length arrays.
	(pop_init_level): Allow initialization of flexible array
	members.  Deprecate initialization of zero length arrays.
	Don't issue missing initializer warning for flexible array
	members or zero length arrays.
	(process_init_element): Don't dereference null DECL_SIZE.
	* varasm.c (array_size_for_constructor): Return a HOST_WIDE_INT.
	Don't abort for empty constructors.  Use size_binop
	(output_constructor): Add commentary regarding zero length
	array futures.  Abort if we try to initialize an array of
	unspecified length with a non-empty constructor in the middle
	of a structure.

	* extend.texi (Zero Length): Update and clarify documentation
	on static initialization.

2001-01-05  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* config/c4x/c4x.c (c4x_expand_prologue): Don't compile an ISR
	with more than 32767 words of local storage.

2001-01-05  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* config/c4x/c4x.c (c4x_init_builtins): Remove builtin support
	for 'abs', 'labs', and 'fabs'.
	(c4x_expand_builtin): Likewise.
	* config/c4x/c4x.h (enum c4x_builtins): Likewise.

2001-01-05  Alexandre Oliva  <aoliva@redhat.com>

	* config/sh/sh.md (prget, prset): New insn types.
	(return delay slot): Don't allow prset.
	(call, sfunc delay slot): Don't allow prget.
	(movsi_i, movsi_ie, movsi_i_lowpart): Create separate alternatives
	for prset and prget.

2001-01-05  Michael Hayes  <mhayes@redhat.com>

	* loop.h (struct loop_reg): New.
	(struct loop_regs): Change to use array of `struct loop_reg'.
	* loop.c: Replace assortment of varrays with single regs array.
	(count_one_set): Delete may_not_move array argument
	and use regs array instead.  All caller's changed.
	(count_loop_regs_set): Delete may_not_move and single_usage
	arguments and use regs array instead.  All caller's changed.
	(find_single_use_in_loop): Replace usage array argument with pointer
	to regs structure.  All caller's changed.
	(loop_optimize): Delete `moved_once' array.

2001-01-05  Michael Hayes  <mhayes@redhat.com>

	* loop.c (prescan_loop): Set loop_info->has_nonconst_call.
	Use it instead of loop_info->has_call for scanning loop mems.
	(check_dbra_loop): Replace loop_info->has_call test with
	loop_info->has_nonconst_call.

2000-01-04  Matthew Hiller  <hiller@redhat.com>

	* config/sh/sh.h (EPILOGUE_USES): Recognize fpscr as epilogue-used
	for TARGET_SH3E.

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

	* fold-const.c (fold): When folding a CONJ_EXPR of a COMPLEX_CST,
	use TREE_REALPART and TREE_IMAGPART instead of TREE_OPERAND.

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

	* c-common.c (SIZE_TYPE, WCHAR_TYPE): Define.
	(flag_short_double, flag_short_wchar): Define.
	(c_common_nodes_and_builtins): Create many tree nodes shared
	between C and C++ here instead of in cp/decl.c and ...
	* c-decl.c (init_decl_processing): ... here.
	(SIZE_TYPE, WCHAR_TYPE): Don't define.
	(flag_short_double, flag_short_wchar): Don't define.
	(record_builtin_type): New function.
	(build_void_list_node): New function.
	* c-common.h (flag_short_double, flag_short_wchar,
	record_builtin_type, build_void_list_node): Declare.

Thu Jan  4 21:09:47 2001  J"orn Rennecke <amylaar@redhat.com>

	* integrate.c (expand_inline_function): Don't put a virtual
	register into the reg map.

	* function.c (fixup_var_refs_1): If force_operand didn't put
	the address into the target, move it there.

2001-01-04  Mark Mitchell  <mark@codesourcery.com>

	Special-case tree_decl/tree_list allocations.
	* ggc-page.c (OBJECT_PER_PAGE): Reimplement.
	(OBJECT_SIZE): New macro.
	(NUM_EXTRA_ORDER): Likewise.
	(extra_order_size_table): New variable.
	(NUM_ORDERS): New macro.
	(objects_per_page_table): New variable.
	(object_size_table): New variable.
	(G.pages): Use NUM_ORDERS to bound the array.
	(G.page_tails): Likewise.
	(DIV_ROUND_UP): Remove.
	(BITMAP_SIZE): Use CEIL, instead of DIV_ROUND_UP.
	(alloc_page): Use OBJECT_SIZE.
	(size_lookup): Don't make it const.
	(ggc_alloc): Use OBJECT_SIZE.
	(ggc_set_mark): Likewise.
	(ggc_get_size): Likewise.
	(init_ggc): Set up the object_size_table, objects_per_page_table,
	and adjust size_lookup.
	(ggc_recalculate_in_use_p): Use CEIL, not DIV_ROUND_UP.
	(ggc_pop_context): Use NUM_ORDERS.
	(clear_marks): Likewise.
	(sweep_pages): Likewise.
	(poison_pages): Likewise.
	(ggc_print_statistics): Use OBJECT_SIZE.

Thu Jan  4 15:54:05 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* varasm.c (output_constructor): Use HOST_WIDE_INT for sizes.
	Only call array_size_for_constructor if last field and array type
	with no upper bound.

2001-01-04  Philip Blundell  <philb@gnu.org>

	* config/arm/arm.c (arm_gen_constant): Prefer to emit constants
	from bit 31 downwards, if this requires no more insns.
	(count_insns_for_constant): New helper function for above.

2001-01-04  Alexandre Oliva  <aoliva@redhat.com>

	* gencodes.c (output_predicate_decls): Remove empty initializer.

2001-01-04  Mark Mitchell  <mark@codesourcery.com>

	* tree.c (copy_node): Remove documentation about obstacks.
	(buidl1): Check that nobody tries to build 2-argument nodes this
	way.

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

	* sparc.h (PREDICATE_CODES): Delete fp_sethi_p, fp_mov_p and
	fp_high_losum_p.

	* gencodes.c (output_predicate_decls): Fill empty initializer
	braces.

2001-01-04  Jakub Jelinek  <jakub@redhat.com>

	* tradcpp.c (deps_file, print_deps_missing_files): New variables.
	(main): Handle -MG, -MD, -MMD.  Bail out if -MG is given without -M
	or -MM.
	(do_include): Handle missing headers like cpp0.
	* cppfiles.c (_cpp_execute_include): Don't prefix absolute header
	paths with first include pathname.  Don't strcat to uninitialized
	string.

2001-01-04  Bernd Schmidt  <bernds@redhat.com>

	* regrename.c (regrename_optimize): Don't rename from frame pointer
	if frame_pointer_needed.
	(do_replace): Don't set ORIGINAL_REGNO to a hard register number.
	* config/ia64/ia64.c (emit_all_group_insn_barriers): New function.
	(ia64_reorg): Use it instead of scheduling if ! optimize.
	(errata_emit_nops): Properly call asm_noperands.
	(ia64_sched_reorder): Finish cycle if we see an asm.
	(ia64_variable_issue): Clear scheduling state after asms.

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

	* cpp.texi: Update for -MT.
	* cppinit.c (initialize_dependency_output): Add a default
	target if none has been given already.
	(no_tgt, OPT_MT): New.
	(cpp_handle_option): Handle -MT.  Update -M etc.
	* cpplib.h (struct cpp_options): Remove deps_target.
	* gcc.c (cpp_options): Handle -MT.
	* mkdeps.c (struct deps): Move from mkdeps.h.
	(deps_calc_target): Rename deps_add_default_target.  Add a
	default target if none has been specified already.
	* mkdeps.h (struct deps): Move to mkdeps.c.
	(deps_calc_target): Rename deps_add_default_target.

2000-01-03  Richard Henderson  <rth@redhat.com>

	* c-decl.c (grokdeclarator): Give zero-length arrays size zero.
	Remove dead code.
	* c-typeck.c (push_init_level): Move checks for flexible array
	members and zero length arrays ...
	(pop_init_level): ... here.  Silently discard empty initializations.
	Remove dead code.
	* varasm.c (output_constructor): Update for sizeof change to
	zero-length arrays.

	* extend.texi (Zero Length): Clarify semantics.

2001-01-03  Alexandre Oliva  <aoliva@redhat.com>

	* configure.in (tm.h): Include isns-codes.h last.
	* configure: Rebuilt.

2001-01-03  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.md (addvsi3, addvdi3): New.
	(negvsi2, negvdi2, subvsi3, subvdi3, mulvsi3, mulvdi3): New.

2001-01-03  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* tradcpp.c (main): Make sure finclude() is called with a valid
	indepth value while handling -include.

2001-01-03  Alexandre Oliva  <aoliva@redhat.com>

	* gencodes.c (output_predicate_decls): New function.
	(main): Call it.
	* machmode.h (GET_MODE_MASK): Arrange for it to be defined
	even if it is not the first time machmode.h is #included.
	* config/sh/sh.c (fpul_operand): Declare MODE argument.
	* tm.texi (PREDICATE_CODES): Document predicate declarations.
	* gcc.texi (Copyright): Added 2001.

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

	* c-common.c (c_common_lang_init): New function.  Warn if format
	warning options which only have effects when used with -Wformat
	are used without -Wformat.
	* c-common.h (c_common_lang_init): Declare.
	* c-lang.c (lang_init): Call c_common_lang_init.
	* objc/objc-act.c (lang_init): Call c_common_lang_init.

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

	* configure.in: Check for the mktemp command.
	* configure: Regenerate.
	* gccbug.in: Use a separate temporary file $TEMP0 for one use of
	$TEMP.  Create temporary files with mktemp, if available at
	configure time; otherwise use set -C.  Remove temporary files
	before exit.

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

	* configure.in: Require at least texinfo 4.0.  Check for whether
	Pod::Man is sufficiently recent to regenerate GCC manpages.
	* configure:  Regenerate.
	* Makefile.in (TEXI2POD): Call perl explicitly rather than relying
	on #!.
	(GENERATED_MANPAGES): Define.
	(generated-manpages): New target.  Depend on cpp.1 as well as
	gcov.1.
	(install-man): Depend on $(GENERATED_MANPAGES) (defined by
	configure to generated-manpages or empty) rather than on the
	manpages directly.  Remove execute permission from installed
	gcov.1 as well as cpp.1.
	* cpp.1, gcov.1: Regenerate.

2001-01-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtins.c (expand_builtin_strncmp): Use host_integerp and
	tree_low_cst.  Allow using cmpstrsi in more cases.

Wed Jan  3 10:48:43 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* config/sparc/sparc.h (RETURN_IN_MEMORY): Return 0 for variable
	sized types.

Wed Jan  3 12:22:32 2001  Alexandre Oliva  <aoliva@redhat.com>

	* build-make (HOST_CFLAGS): Added `-DGENERATOR_FILE'.
	* Makefile.in (HOST_CFLAGS): Mention build-make.

Wed Jan  3 08:53:50 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* config/sparc/sparc.md (nonlocal_goto): Emit goto_handler_and_restore
	as JUMP_INSN.

2001-01-01  Bernd Schmidt  <bernds@redhat.com>

	* builtins.c (expand_builtin_return_addr): Don't use MEM_ALIAS_SET on
	a REG rtx.

	* cse.c (cse_rtx_varies_p): Accept additional FROM_ALIAS arg.  All
	callers changed.

	* alias.c (throughout): Use ORIGINAL_REGNO when accessing
	reg_base_value and reg_known_value arrays.
	(init_alias_analysis): Add more cases to detect known values.
	* sched-deps.c (deps_may_trap_p): New function.
	(sched_analyze_2): Use it.

2001-01-03  Alexandre Oliva  <aoliva@redhat.com>

	* combine.c (simplify_shift_const): Even if we're sign-extracting,
	don't discard an ASHIFTRT if we're shifting in a wider mode.

2000-01-02  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* toplev.c (rest_of_compilation): Don't print basic block information
	when CFG isn't up to date.

2001-01-02  Mark Elbrecht  <snowball3@bigfoot.com>

	* config/i386/djgpp.h (DWARF2_DEBUGGING_INFO): Define.
	(UNALIGNED_INT_ASM_OP, UNALIGNED_DOUBLE_ASM_OP): Define.
	(UNALIGNED_SHORT_ASM_OP): Define.
	(CPP_PREDEFINES): Remove defines for GO32 and DJGPP.

2001-01-02  Mark Mitchell  <mark@codesourcery.com>

	* fold-const.c (fold_convert): Fix typo.

2001-01-02  Richard Henderson  <rth@redhat.com>

	* c-common.h (ASM_INPUT_P): New.
	* c-parse.in (asm): Set it when needed.
	* c-semantics.c (genrtl_asm_stmt): Test it instead of the
	existence of an operand.

Tue Jan  2 20:27:07 MET 2001  Jan Hubicka  <jh@suse.cz>

	* dwarf2out.c (stack_adjust_offset): Handle PRE_MODIFY.
	(dwarf2out_frame_debug_expr): Likewise.
	(mem_loc_descriptor): Handle PRE and POST_MODIFY.

Tue Jan  2 20:21:31 MET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.c (ix86_split_to_parts): Return number of part required;
	handle TFmodes.
	(print_operand, ix86_expand_branch, ix86_expand_fp_movcc): Handle
	TFmodes.
	(ix86_split_long_move): Use number of part returned
	by ix86_split_to_parts
	* i386.h (MASK_128BIT_LONG_DOUBLE, TARGET_128BIT_LONG_DOUBLE):
	New macros.
	(TARGET_SWITCHES): Add 128bit-long-double and 96bit-long-double
	(LONG_DOUBLE_TYPE_SIZE): Change from constant.
	(MAX_LONG_DOUBLE_TYPE_SIZE): New macro.
	(INTEL_EXTENDED_IEEE_FORMAT): Likewise.
	(ALIGN_MODE_128): Add TFmode.
	(IS_STACK_MODE): Likewise.
	(HARD_REGNO_NREGS): TFmode needs 3 registers.
	(HARD_REGNO_OK): Support TFmodes.
	(ASM_OUTPUT_LONG_DOUBLE): Handle TFmodes.
	* i386.md (scheduler definitions): Use memory operand to determine
	fst/fld instructions; use mode attribute to determine real mode of
	the instruction.
	(*tf): New patterns, expanders and splitters; based on XFmode patterns.
	* invoke.texi (128bit-long-double, 96bit-long-double): Document.

2001-01-02  Mark Mitchell  <mark@codesourcery.com>

	* tree.def (TRUTH_NOT_EXPR): Improve documentation.

Tue Jan  2 10:47:38 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.

	* expr.c (store_constructor_field): Update ALIGN before calling
	store_constructor.

2001-01-02  Jeffrey Oldham  <oldham@codesourcery.com>

	* config/mips/mips.c (function_arg): Don't pass NULL_TREE to
	host_integerp.

2001-01-02  Jeffrey Oldham  <oldham@codesourcery.com>

	* tm.texi (FUNCTION_ARG): Document that @var{type} can be an
	incomplete type.

Tue Jan  2 10:47:38 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.

	* c-decl.c (start_function): Don't warn on third parameter to main.

2001-01-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* tsystem.h: Define HAVE_DECL_GETOPT.

2001-01-02  Philip Blundell  <pb@futuretv.com>

	* config/arm/linux-gas.h (CLEAR_INSN_CACHE): Avoid illegal clobber
	of input operand.

2001-01-02  Richard Henderson  <rth@redhat.com>

	* alpha.md (*ze_and_ne): Duplicate insn condition to split.

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

	* c-decl.c (c_decode_option): Remove support of
	-Wmissing-noreturn.

	* toplev.c (documented_lang_options): Remove -Wmissing-noreturn.
	(W_options): Add -Wmissing-noreturn here.

	* flow.c: Define lang_missing_noreturn_ok_p.
	(check_function_return_warnings): Use it.

	* c-common.h: Declare lang_missing_noreturn_ok_p.

	* c-lang.c (c_missing_noreturn_ok_p): New function.
	(lang_init): Set lang_missing_noreturn_ok_p.

	* invoke.texi (Warning Options): Document this.

2000-12-27  Phil Edwards  <pme@sources.redhat.com>

	* extend.texi (C++ Extensions):  New node for C++ attributes;
	describe init_priority and com_interface.
	* invoke.texi:  Remove -finit-priority as it now has zero effect.
	* install.texi:  Fix xref syntax.
	* md.texi:  Likewise.

Mon Jan  1 21:28:29 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* config.gcc (sparc64-wrs-vxworks*): New case.
	* config/sparc/vxsparc64.h, config/sparc/t-vxsparc64: New files.

	* config/sparc/sparc.c (sparc_override_options): Do support different
	pointer and architecture size.
	* config/sparc/sparc.h (MIN_UNITS_PER_WORD): Always 4.
	(POINTERS_EXTEND_UNSIGNED): Define.
	(Pmode): Test TARGET_ARCH64, not TARGET_PTR64.
	(FUNCTION_MODE): Define to be Pmode.
	* config/sparc/sparc.md (64-bit call patterns): FUNCTION_MODE now DI.

	* function.c (expand_function_end): Properly handle DECL_RESULT
	and copy when ptr_mode != Pmode.
	* expmed.c (make_tree): Convert X from Pmode to ptr_mode, if needed.

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

	* c-common.c (c_common_nodes_and_builtins): Set prototype
	parameters for __builtin_fputs, __builtin_fputc and
	__builtin_fwrite.  Don't declare plain fputc as a builtin.

2001-01-01  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* loop.c (add_label_notes): Increment the label usage count when
	a note is added to an insn which refers to a CODE_LABEL.
	* gcse.c (add_label_notes): Likewise.

2001-01-01  Andreas Jaeger  <aj@suse.de>

	* loop.c (scan_loop): Use xmalloc to allocate movables.

2001-01-01  Alexandre Oliva  <aoliva@redhat.com>

	* tm.texi (REGISTER_MOVE_COST): Add a mode argument.
	* reload.c (REGISTER_MOVE_COST): Likewise.  Adjust all callers.
	* reload1.c (REGISTER_MOVE_COST): Likewise.
	* regclass.c (REGISTER_MOVE_COST): Likewise.
	(move_cost, may_move_in_cost, may_move_out_cost): Add mode
	dimension.  Adjust all users.
	(init_reg_sets_1): Iterate on all modes.
	* config/1750a/1750a.h (REGISTER_MOVE_COST): Adjust.
	* config/a29k/a29k.h (REGISTER_MOVE_COST): Adjust.
	* config/alpha/alpha.h (REGISTER_MOVE_COST): Adjust.
	* config/arc/arc.h (REGISTER_MOVE_COST): Adjust.
	* config/arm/arm.h (REGISTER_MOVE_COST): Adjust.
	* config/avr/avr.h (REGISTER_MOVE_COST): Adjust.
	* config/c4x/c4x.h (REGISTER_MOVE_COST): Adjust.
	* config/d30v/d30v.h (REGISTER_MOVE_COST): Adjust.
	* config/dsp16xx/dsp16xx.h (REGISTER_MOVE_COST): Adjust.
	* config/h8300/h8300.h (REGISTER_MOVE_COST): Adjust.
	* config/i386/i386.h (REGISTER_MOVE_COST): Adjust.
	* config/ia64/ia64.h (REGISTER_MOVE_COST): Adjust.
	* config/m32r/m32r.h (REGISTER_MOVE_COST): Adjust.
	* config/m68hc11/m68hc11.h (REGISTER_MOVE_COST): Adjust.
	* config/m68k/m68k.h (REGISTER_MOVE_COST): Adjust.
	* config/mcore/mcore.h (REGISTER_MOVE_COST): Adjust.
	* config/mips/mips.h (REGISTER_MOVE_COST): Adjust.
	* config/mn10200/mn10200.h (REGISTER_MOVE_COST): Adjust.
	* config/mn10300/mn10300.h (REGISTER_MOVE_COST): Adjust.
	* config/ns32k/ns32k.h (REGISTER_MOVE_COST): Adjust.
	* config/pa/pa.h (REGISTER_MOVE_COST): Adjust.
	* config/pdp11/pdp11.h (REGISTER_MOVE_COST): Adjust.
	* config/pj/pj.h (REGISTER_MOVE_COST): Adjust.
	* config/romp/romp.h (REGISTER_MOVE_COST): Adjust.
	* config/rs6000/rs6000.h (REGISTER_MOVE_COST): Adjust.
	* config/sh/sh.h (REGISTER_MOVE_COST): Adjust.
	* config/sparc/sparc.h (REGISTER_MOVE_COST): Adjust.

2001-01-01  Bernd Schmidt  <bernds@redhat.com>

	* alias.c (fixed_scalar_and_varying_struct): Adjust prototype of
	arg VARIES_P.  Call it with extra arg.
	(true_dependence): Likewise.
	* rtl.h (rtx_addr_can_trap_p): Declare.
	(rtx_varies_p, rtx_addr_varies_p, true_dependence): Update
	prototypes.
	* rtlanal.c (rtx_addr_can_trap_p): No longer static.
	(rtx_varies_p): Accept extra arg FOR_ALIAS; only disallow
	pic offset table register if it's zero.  All callers changed.
	(rtx_addr_varies_p): Accept extra arg FOR_ALIAS; all callers changed.

Mon Jan  1 07:38:33 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* explow.c (convert_memory_address, case SYMBOL_REF): Copy
	STRING_POOL_ADDRESS_P.

	* config/sparc/sparc.c (input_operand): Properly test for short op.

	* config.gcc (sparc-*-elf): Include sparc/sol2.h.
	(sparc-*-rtems*): Include sparc/sol2.h and sparc/elf.h.
	(sparclite-*-elf*, sparc86x-*-elf*): Likewise.
	* config/sparc/elf.h: No longer include sol2.h.
	* config/sparc/lifeelf.h: No longer include sparc/elf.h.
	* config/sparc/rtemself.h, config/sparc/sp86x-elf.h: Likewise.

	* config/sparc/sparc.md: Test TARGET_ARCH64 instead of TARGET_PTR64.

2001-01-01  Michael Hayes  <mhayes@redhat.com>

	* loop.c (check_insn_for_bivs): Use ivs->n_regs to check array bounds.
	(find_mem_givs, record_biv, maybe_eliminate_biv): Likewise.
	(record_initial): Likewise.
	* unroll.c (copy_loop_body, loop_iterations): Likewise.
	(remap_split_bivs): Likewise.

2001-01-01  Michael Hayes  <mhayes@redhat.com>

	* loop.c (loop_ivs_free): New function.
	(strength_reduce): Break out from...

2001-01-01  Michael Hayes  <mhayes@redhat.com>

	* loop.h (struct iv): New.
	(REG_IV_TYPE, REG_IV_CLASS, REG_INFO): Modify to use 'struct iv'.
	(struct loop_ivs): Replace 'reg_iv_type', 'reg_iv_info',
	'reg_biv_class' fields with 'regs' and 'n_regs'.
	(struct ivs): Rename 'loop_iv_list' field to 'list'.
	* loop.c (loop_bivs_find, strength_reduce): Use ivs->regs array.
	* unroll.c (loop_iterations): Check array bounds with ivs->n_regs.

2000-12-31  Alexandre Oliva  <aoliva@redhat.com>

	* resource.c (mark_referenced_resources): Abort() before
	attempting to mark a pseudo register.
	(mark_set_resources): Likewise.

2001-01-01  Michael Hayes  <mhayes@redhat.com>

	* loop.h (REG_IV_CLASS): New accessor macro.
	* loop.c (REG_IV_CLASS): Use it instead of reg_iv_class array.
	* unroll.c (REG_IV_CLASS): Likewise.

See ChangeLog.4 for earlier changes.
