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 behaviour 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 behaviour.
	* 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): Initialise "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 behaviour.

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 favour 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 non-zero 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 parenthesised 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 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
	behaviour 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 non-zero.

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_funciton): 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 synthesised 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 non-zero 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): Initialise u_start_val and
	u_end_val.
	(load_mems): Make last_max_reg unsigned.
	(try_swap_copy_prop): Use INSN_P and initialise 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 behaviour.

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): Optimise 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 non-zero 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): Initialise
	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): Initialise 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 H8/S.
	(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 initialised.

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