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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* (movsi_insv_1, movsi_insv_1_rex64): Allow immediate operand.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* flow.c (split_edge): Set frequency.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* cppmacro.c (make_string_token): Null terminate.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* rtl.h (expand_builtin_expect_jump): Add prototype.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* tm.texi: Document STDC_0_IN_SYSTEM_HEADERS.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* inclhack.def (hpux10_cpp_pow_inline): New hack.

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

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

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

	* NEWS: Remove.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* dwarf2out.c: #include diagnostic.h

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* doc/invoke.texi: Remove superfluous text.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* dbxout.c (dbxout_symbol): Use DECL_RTL_SET_P.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* doc/contrib.texi: Add copyright notice.

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

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

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

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

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

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

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

	* NEWS: Regenerate.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* gccbug.in:  Fix typo.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* rtlanal.c (replace_regs):  Use simplify_gen_subreg

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* doc/install.texi2html: New script.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* README: Update references to installation instructions.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2001-05-22  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* doc/install.texi (Specific): Remove a bogus and duplicate part
	copied from the end of the document.

2001-05-22  Bernd Schmidt  <bernds@redhat.com>

	* Makefile.in (LIBGCC_DEPS): Correct LIB1ASMSRC dependency.

2001-05-22  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* install.texi: Remove obsolete information on SunOS as well as
	i386-sun-sunos4, i860-intel-osf1, and powerpcle-*-solaris2*.
	(Installing GNU CC on the Sun): Remove section.

2001-05-22  Alexandre Oliva  <aoliva@redhat.com>

	* cppfiles.c (remove_component_p): Don't assume lstat/stat will
	keep errno unchanged on success.

2001-05-22  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-lex.c (lex_number): If pedantic and not C99, pedwarn exactly
	once for hexadecimal floats, whether or not they contain a decimal
	point.  Don't let the setting of pedantic otherwise affect the
	parsing of hexadecimal floats.

2001-05-22  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* README.ACORN: Remove obsolete file.

2001-05-22  Jan Hubicka  <jh@suse.cz>

	* combine.c (gen_binary): Use swap_commutative_operands_p
	(simplify_comparison): Likewise.
	* expmed.c (emit_store_flag): Likewise.
	* expr.c (compare_from_rtx): Likewise.
	(do_compare_rtx_and_jump): Likewise.
	* optabs.c (emit_cmp_and_jump_insn): Revert last patch; abort
	if not emitting a branch and operands want swapping.

2001-05-22  Neil Booth  <neil@daikokuya.demon.co.uk>

	* c-lex.c (c_lex): Just cast cpp's hashnode to gcc's one.
	* stringpool.c:	(IS_FE_IDENT, make_identifier): Delete.
	(maybe_get_identifier): Update.
	* tree.h (make_identifier): Delete.

2001-05-21  Richard Henderson  <rth@redhat.com>

	* combine.c (subst): Do not substitute for a register as
	a destination subreg/strict_low_part/zero_extract.

	* combine.c (simplify_comparison): Update op1 after constant
	extension.
	* recog.c (const_int_operand): Accept only constants valid
	for the given mode.
	* genrecog.c: Update comments wrt const_int_operand.

	* emit-rtl.c (init_emit_once): Zero unused memory in a
	CONST_DOUBLE.

2001-05-21  Mark Mitchell  <mark@codesourcery.com>

	* tree.h (type_num_arguments): Declare it.
	* tree.c (type_num_arguments): New function.

2001-05-21  Richard Henderson  <rth@redhat.com>

	* dwarf2out.c (current_funcdef_number): Move outside dwarf2
	conditional ifdef.

2001-05-21  Geoff Keating  <geoffk@redhat.com>

	* config/rs6000/rs6000.md (maxsf3): Use rs6000_emit_minmax.
	(maxsf3+1): Delete.
	(minsf3): Use rs6000_emit_minmax.
	(minsf3+1): Generalize to handle both SMIN and SMAX.  Use
	rs6000_emit_minmax.
	(movsfcc): Use rs6000_emit_cmove.
	(fselsfsf4): Don't compare a CONST_INT with a floating-point value.
	Don't generate emit_fselsfsf4.
	(fseldfsf4): Likewise.
	(maxdf3): Use rs6000_emit_minmax.
	(maxdf3+1): Delete.
	(mindf3): Use rs6000_emit_minmax.
	(mindf3+1): Generalize to handle both SMIN and SMAX.  Use
	rs6000_emit_minmax.
	(movdfcc): Use rs6000_emit_cmove.
	(fseldfdf4): Don't compare a CONST_INT with a floating-point value.
	Don't generate emit_fselsfsf4.
	(fselsfdf4): Likewise.
	* config/rs6000/rs6000.c (zero_fp_constant): New predicate.
	(min_max_operator): New predicate.
	(rs6000_emit_cmove): New function.
	(rs6000_emit_minmax): New function.
	* config/rs6000/rs6000-protos.h: Prototype new functions.
	* config/rs6000/rs6000.h (PREDICATE_CODES): Add zero_fp_constant
	and min_max_operator.

	* config/rs6000/rs6000.c (output_cbranch): Handle all
	conditional types in the switch statement.

2001-05-21  Mark Mitchell  <mark@codesourcery.com>

	* c-decl.c (finish_decl): Don't set DECL_C_HARD_REGISTER for
	non-register variables.
	* extend.texi: Document that asm-specifications do not make sense
	for non-static local variables.

2001-05-21  Jason Merrill  <jason_merrill@redhat.com>

	* dbxout.c (MINIMAL_DEBUG, flag_minimal_debug): Lose.
	(dbxout_type_fields): Lose minimal_debug support.
	(dbxout_type_methods, dbxout_type): Likewise.

2001-05-17  Andrew Haley  <aph@redhat.com>

	* config/rs6000/linux.h (MD_FALLBACK_FRAME_STATE_FOR): New.

2001-05-21  Richard Henderson  <rth@redhat.com>

	* dwarf2out.c (DEBUG_FRAME_SECTION): Rename from FRAME_SECTION.
	Update all users.

2001-05-20  Richard Henderson  <rth@redhat.com>

	* dwarf2out.c (DEBUG_ABBREV_SECTION, DEBUG_ARANGES_SECTION,
	DEBUG_MACINFO_SECTION, DEBUG_LOC_SECTION, DEBUG_PUBNAMES_SECTION,
	DEBUG_STR_SECTION): Rename from s/DEBUG_//.  Update all users.
	* dwarfout.c (DEBUG_SFNAMES_SECTION, DEBUG_SRCINFO_SECTION,
	DEBUG_MACINFO_SECTION, DEBUG_PUBNAMES_SECTION, DEBUG_ARANGES_SECTION):
	Likewise.
	* config/mips/iris6.h (DEBUG_SFNAMES_SECTION, DEBUG_SRCINFO_SECTION,
	DEBUG_MACINFO_SECTION, DEBUG_PUBNAMES_SECTION, DEBUG_ARANGES_SECTION,
	DEBUG_FRAME_SECTION, DEBUG_ABBREV_SECTION): Rename as above.
	(DEBUG_LOC_SECTION, DEBUG_STR_SECTION): New.
	* config/ia64/ia64.h (DEBUG_ABBREV_SECTION, DEBUG_ARANGES_SECTION,
	DEBUG_PUBNAMES_SECTION): Rename as above.
	(DEBUG_MACINFO_SECTION, DEBUG_LOC_SECTION, DEBUG_STR_SECTION): New.

2001-05-20  Richard Henderson  <rth@redhat.com>

	* optabs.c (emit_cmp_and_jump_insns): Don't swap commutative
	operands unless the operation is commutative.

2001-05-20  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* fold-const.c (tree_expr_nonnegative_p): Detect more non-negative
	cases.

2001-05-21  Joseph S. Myers  <jsm28@cam.ac.uk>

	* extend.texi: Clarify documentation of extensions included in ISO
	C99.  Prefer C99 terminology and syntax to old GNU terminology and
	syntax.  Add more index entries.  Document mixed declarations and
	code as an extension in C89 mode.  Warn about future changes to
	semantics of inline functions.  Fixes PR other/930.

Sun May 20 16:39:24 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* expr.c (expand_expr, case ARRAY_REF): Don't fold constant
	access if EXPAND_CONST_ADDRESS or EXPAND_INITIALIZER.
	(expand_expr, case COMPONENT_REF): Do copy if misaligned even
	if EXPAND_CONST_ADDRESS or EXPAND_INITIALIZER.

	* stmt.c (expand_decl): Set mode, alignment, and sizes for CONST_DECL.

2001-05-20  Richard Henderson  <rth@redhat.com>

	* sched-deps.c (sched_analyze_insn): Force volatile memory reads
	to be output before a branch.

2001-05-20  Richard Henderson  <rth@redhat.com>

	* Makefile.in (dwarf2asm.o): Depend on $(TREE_H).

2001-05-20  Richard Henderson  <rth@redhat.com>

	* config/i386/att.h (ASM_SHORT, ASM_LONG): Add trailing \t.
	(ASM_DOUBLE): Remove.
	* config/i386/bsd.h, config/i386/sco5.h: Likewise.
	* config/i386/sun386.h: Likewise.

	* config/i386/i386.h (UNALIGNED_SHORT_ASM_OP): New.
	(UNALIGNED_INT_ASM_OP, INT_ASM_OP): New.

	* config/i386/cygwin.h (INT_ASM_OP): Remove.
	* config/i386/freebsd-aout.h, config/i386/i386-aout.h: Likewise.
	* config/i386/i386-coff.h, config/i386/i386-interix.h: Likewise.
	* config/i386/netbsd.h, config/i386/openbsd.h: Likewise.

	* config/i386/cygwin.h: Adjust uses of ASM_LONG for trailing \t.
	* config/i386/djgpp.h, config/i386/i386.h: Likewise.
	* config/i386/i386elf.h, config/i386/ptx4-i.h: Likewise.
	* config/i386/sco5.h, config/i386/svr3gas.h: Likewise.
	* config/i386/sysv4.h, config/i386/vsta.h: Likewise.
	* config/i386/win32.h: Likewise.

2001-05-20  Joseph S. Myers  <jsm28@cam.ac.uk>

	* invoke.texi: Add more options to summary list.

2001-05-20  Joseph S. Myers  <jsm28@cam.ac.uk>

	* invoke.texi: Document meaning of -pedantic when -std=gnu* is
	used.  Fixes PR c/2291.
	* gcc.1: Regenerate.

2001-05-20  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/m68hc11.c (m68hc11_override_options): Ignore
	the -fpic and -fPIC options, clear flag_pic.

2001-05-20  Neil Booth  <neil@daikokuya.demon.co.uk>

	* hashtable.c (calc_hash): Fix HASHSTEP definition.
	* stringpool.c (make_identifier): No statistics here anymore.
	* objc-act.c (steup_string_decl): Remove redundant check.

2001-05-20  Neil Booth  <neil@daikokuya.demon.co.uk>

	* Makefile.in (OBJS, LIBCPP_OBJS, LIBCPP_DEPS,
	cpplib.o, cpphash.o, fix-header): Update.
	(hashtable.o): New target.
	* c-common.h: Include cpplib.h.  Define C_RID_CODE and
	struct c_common_identifier here.
	* c-lang.c (c_init_options): Update.  Call set_identifier_size.
	* c-lex.c (c_lex): Update.
	* c-pragma.h: Update.
	* c-tree.h (struct lang_identifier): Contain c_common_identifier.
	Delete rid_code.
	(C_RID_CODE): Delete.
	* cpphash.c: Rewrite to use hashtable.c.
	* cpphash.h: Update include guards.
	(struct cpp_reader): Remove hashtab.
	hash_ob and buffer_ob are no longer pointers.  Add hash_table
	and our_hashtable.
	(HASHSTEP, _cpp_init_hashtable,	_cpp_lookup_with_hash): Delete.
	(_cpp_cleanup_hashtable): Rename _cpp_destroy_hashtable.
	(_cpp_cleanup_stacks): Rename _cpp_init_directives.
	* cppinit.c (cpp_create_reader): Update.
	* cpplex.c (cpp_ideq, parse_identifier, cpp_output_token): Update.
	(cpp_interpret_charconst): Eliminate warning.
	* cpplib.c (do_pragma, do_endif, push_conditional,
	cpp_push_buffer, cpp_pop_buffer): Update.
	(_cpp_init_stacks): Rename cpp_init_directives.
	(_cpp_cleanup_stacks): Remove.
	* cpplib.h: Update include guards.  Include tree-core.h and c-rid.h.
	(cpp_hashnode, cpp_token, NODE_LEN, NODE_NAME,
	 cpp_forall_identifiers, cpp_create_reader): Update.
	(C_RID_CODE, cpp_make_node): New.
	(c_common_identifier): New identifier node for C front ends.
	* cppmain.c (main): Update.
	* fix-header.c (read_scan_file): Update.
	* flags.h (id_clash_len): Make unsigned.
	* ggc.h (ggc_mark_nonnull_tree): New.
	* hashtable.c: New.
	* hashtable.h: New.
	* stringpool.c: Update comments and copyright.  Update to use
	hashtable.c.
	* toplev.c (approx_sqrt): Move to hashtable.c.
	(id_clash_len): Make unsigned.
	* toplev.h (ident_hash): New.
	* tree.c (gcc_obstack_init): Move to hashtable.c.
	* tree.h: Include hashtable.h.
	(IDENTIFIER_POINTER, IDENTIFIER_LENGTH): Update.
	(GCC_IDENT_TO_HT_IDENT, HT_IDENT_TO_GCC_IDENT): New.
	(struct tree_identifier): Update.
	(make_identifier): New.
cp:
	* cp-tree.h (struct lang_identifier, C_RID_YYCODE): Update.
	(C_RID_CODE): Remove.
	* lex.c (cxx_init_options): Call set_identifier_size.  Update.
	(init_parse): Don't do it here.
objc:
	* objc-act.c (objc_init_options): Call set_identifier_size. Update.

Sat May 19 18:23:04 2001  Richard Henderson <rth@redhat.com>

	* except.c (dw2_build_landing_pads): Use word_mode, not Pmode,
	as ncessary.
	(expand_eh_return): Convert between word_mode and Pmode.
	* unwind-dw2.c (extract_cie_info): Do not assume words and pointers
	are the same size.
	(execute_stack_op): Likewise.
	(execute_cfa_program): Likewise.
	(uw_frame_state_for): Likewise.
	(uw_update_context_1): Likewise.
	* unwind.inc (_Unwind_Reason_Code): Likewise.
	* config/mips/mips.h (EH_RETURN_DATA_REGNO): Define.
	(EH_RETURN_STACKADJ_RTX): Likewise.
	* config/mips/mips.c (compute_frame_size): Make space for saving
	EH return registers.
	(mips_expand_epilogue): Handle EH stack adjustments.
	* config/mips/mips.md (eh_return): New pattern.
	(eh_set_lr_si): Likewise.
	(eh_set_lr_di): Likewise.
	Add splitter to perform EH return after reload.

2001-05-19  Mark Mitchell  <mark@codesourcery.com>

	* jump.c (mark_jump_label): Tidy previous change.

2001-05-19  Bruce Korb  <bkorb@gnu.org>

	* fixinc/genfixes: no need for two warnings
	* fixinc/Makefile.in: open stdin for those building with a closed one.

2001-05-19  Mark Mitchell  <mark@codesourcery.com>

	* jump.c (jump_optimize_1): Tidy.
	(mark_jump_label): When changing the label in a LABEL_REF, change
	update any REG_EQUAL notes as well.

2001-05-19  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-parse.in (parm_declarator): Split into
	parm_declarator_starttypename and parm_declarator_nostarttypename.
	(parm_declarator_starttypename, parm_declarator_nostarttypename):
	New.  Allow 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
	behavior with the -falign-* options.  Default -falign-* from
	the processor table.
	* i386.h (FUNCTION_BOUNDARY): Define to 16; revert Richard Kenner's
	patch of Wed May 2 13:09:36 2001.
	(LOOP_ALIGN): Delete.
	(LOOP_ALIGN_MAX_SKIP): Delete.
	(LABEL_ALIGN_AFTER_BARRIER): Delete.
	(LABEL_ALIGN_AFTER_BARRIER_MAX_SKIP): Delete.

2001-05-04  Andreas Jaeger  <aj@suse.de>

	* except.h: Add prototype declaration for
	expand_builtin_init_dwarf_reg_sizes.

2001-05-03  Geoffrey Keating  <geoffk@redhat.com>

	* Makefile.in (site.exp): Set TESTING_IN_BUILD_TREE.

2001-05-03  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/m68hc11.md ("bitcmpqi"): New pattern for bitb
	instruction.
	("bitcmpqi2"): New pattern for bit-extract and test.
	("bitcmphi"): New pattern for bitb/bita instructions.

2001-05-03  Joseph S. Myers  <jsm28@cam.ac.uk>

	* gccbug.in: Use a temporary directory when the mktemp command is
	not available.

2001-05-03  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/m68hc11.h (STATIC_CHAIN_REGNUM): Use soft z register
	instead of _.d1.
	(INITIALIZE_TRAMPOLINE): Call it.
	(TRAMPOLINE_SIZE): Define according to 68HC11/68HC12.
	(TRAMPOLINE_TEMPLATE): Remove.
	* config/m68hc11/m68hc11.c (m68hc11_initialize_trampoline): New.
	* config/m68hc11/m68hc11-protos.h (m68hc11_initialize_trampoline):
	Declare.

2001-05-03  David O'Brien  <obrien@FreeBSD.org>

	* config/t-freebsd: Don't install "assert.h" in gcc.  Compile crtbeginS.o
	and crtendS.o with PIC.

2001-05-03  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/larith.asm (__mulqi3): Fix multiplication of two
	negative numbers.
	(___subdi3, ___adddi3): Use x instead of y as index register.
	(__init_bss_section, __map_data_section): Optimize for 68HC12.
	(__memset, __memcpy): Likewise.
	(regs): Put the soft registers in bss for 68HC12.
	(abort): Use trap to abort for 68hc12.
	(__mulhi3, __mulhi32): Use emul for 68hc12.
	(__mulsi3): Avoid to use the tmp soft register for 68hc12.

2001-05-03  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/m68hc11.h (LIMIT_RELOAD_CLASS): Don't define.
	* config/m68hc11/m68hc11-protos.h (limit_reload_class): Remove.
	* config/m68hc11/m68hc11.c (limit_reload_class): Remove.
	(m68hc11_override_options): Remove setting of flag_no_nonansi_builtin.
	Set 68HC12 min offset to -65536.
	(print_operand): Put parenthesis arround the operand if it refers
	to a symbol having the same name as a register.
	(m68hc11_z_replacement): When z register is replaced by its
	equivalent soft register, force the insn to be re-recognized.
	(m68hc11_check_z_replacement): Fix the test when destination is
	the index register and z dies in the insn.
	(m68hc11_reorg): Remove the REG_DEAD notes beforce recomputing them.

2001-05-03  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/m68hc11.c (m68hc11_override_options): Initialize
	costs according to processor variant.
	(m68hc11_shift_cost): New function to compute shift costs.
	(m68hc11_rtx_costs): Define costs according to processor variant.
	(m6811_cost): Costs for 68HC11.
	(m6812_cost): Costs for 68HC12.
	(COSTS_N_INSNS): Remove.

	* config/m68hc11/m68hc11.h (RTX_COSTS): New.
	(DEFAULT_RTX_COSTS): Remove.
	(CONST_COSTS): Define costs according to OUTER_CODE.
	(processor_costs): New struct to define costs.
	(m68hc11_cost): Pointer to current costs.

2001-05-03  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/m68hc11.md (*addhi3_68hc12): Fix generation
	and use m68hc11_notice_keep_cc when using leax/leay.
	(addhi3 split): Reject split if the insn is handled by
	leax/leay above.
	* config/m68hc11/m68hc11.c (m68hc11_split_move): For 68HC12 the
	push must be handled in a special way if the source operand uses
	sp as index register.
	(m68hc11_notice_keep_cc): New function.
	(m68hc11_gen_movhi): Use it when an insn changes a register but
	not the flags.
	(m68hc11_gen_movqi): Fix move for 68HC12.
	* config/m68hc11/m68hc11-protos.h (m68hc11_notice_keep_cc): Declare.

2001-05-03  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/m68hc11.c (m68hc11_emit_libcall): Use LCT_CONST
	and don't pass operands[0] to emit_library_call_value.

2001-05-03  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/m68hc11.md (tsthi_1): Use cpd for 68HC12.
	(zero_extendsi split): Simplify and use (zero_extendhi).
	(*addhi3): Remove 'w' constraint since stack pointer is handled
	by (addhi3_sp).
	(*ashlhi3_2): Operand 2 is clobbered use '+' for its constraint.
	(*ashlhi3, *ashrhi3, *lshrhi3): Likewise.
	(*ashrhi3_const): Fix shift by 7.
	(*lshrsi3_const16): Fix template.
	(call, call_value): Fix constraint and predicate.

2001-05-03  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/m68hc11.md (X_REGNUM, D_REGNUM): New constant.
	(Y_REGNUM, SP_REGNUM, PC_REGNUM, A_REGNUM, B_REGNUM): Likewise.
	(CC_REGNUM): Likewise.
	(*unnamed splits): Use above constants instead of hard coded numbers.
	(*adcq, *subcq, *addsi_carry, *rotlqi3_with_carry): Likewise.
	(*rotlhi3_with_carry, *rotrhi3_with_carry): Likewise.
	(*return_16bit, *unnamed peepholes): Likewise.

2001-05-03  David O'Brien  <obrien@FreeBSD.org>

	* config.gcc(rs6000-ibm-aix|powerpc-ibm-aix):  Do not include
	rs6000/rs6000.h twice.

2001-05-03  Mark Elbrecht  <snowball3@bigfoot.com>

	* config/i386/djgpp.h (CPP_PREDEFINES): Define __GO32__.
	(CPP_SPEC): Conditionally define MSDOS and GO32.
	(SUBTARGET_SWITCHES): Ignore -mbnu210 and -mno-bnu210.
	(SUBTARGET_OVERRIDE_OPTIONS): Warn that -mbnu210 and -mno-bnu210 are
	ignored.
	(SUPPORTS_WEAK, SUPPORTS_ONE_ONLY): Remove.

2001-05-03  Alexandre Oliva  <aoliva@redhat.com>

	* config/mn10300/mn10300.md: Sign-extend GEN_INT operands.

2001-05-03  Mark Mitchell  <mark@codesourcery.com>

	* integrate.h (struct inline_remap): Add leaf_reg_map table.
	* integrate.c (expand_inline_function): Use xcalloc to allocate
	memory.
	(copy_rtx_and_substitute): Use the leaf_reg_map for leaf
	registers.

2001-05-03  Mark Mitchell  <mark@codesourcery.com>

	* c-dump.c (dequeue_and_dump): Don't look at DECL_ASSEMBLER_NAME
	if it is not set.

2001-05-03  Alexandre Oliva  <aoliva@redhat.com>

	* config/mn10300/mn10300.h (LINK_SPEC): Pass --relax to the
	linker if -mrelax is given.
	(TARGET_SWITCHES): Document -mrelax.

	Re-installed 2001-01-09's patch:
	* hwint.h (HOST_BITS_PER_WIDE_INT, HOST_WIDE_INT): Use long long
	if it's wider than long and the target's long is wider than the
	host's.

2001-05-02  David O'Brien  <obrien@FreeBSD.org>

	* config.gcc, config/rs6000/aix51.h, config/rs6000/mach.h:  Do not
	directly include rs6000/rs6000.h.  Instead do it in tm.h.

2001-05-02  Stan Shebs  <shebs@apple.com>

	* objc/objc-act.c (STRING_OBJECT_CLASS_NAME): Default to
	NSConstantString for NeXT-style runtimes.
	(STRING_OBJECT_GLOBAL_NAME): New macro.
	(enum objc_tree_index): Add values OCTI_CNST_STR_GLOB_ID and
	OCTI_STRING_CLASS_DECL.
	(constant_string_global_id): New macro.
	(string_class_decl): Ditto.
	(setup_string_decl): New function.
	(build_objc_string_object): Use it to build a NeXT runtime
	compatible string initializer.

2001-05-02  Jakub Jelinek  <jakub@redhat.com>

	* tradcpp.c (do_define): Make sure we don't walk past limit.

2000-05-01  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* config/rs6000/rs6000.c (rs6000_legitimate_address): Allow any stack
	offsets if not REG_OK_STRICT.

	* config/rs6000/rs6000.h (REG_OK_STRICT_FLAG): New macro.
	(INT_REG_OK_FOR_INDEX_P): Likewise.
	(INT_REG_OK_FOR_BASE_P): Likewise.
	(REG_OK_FOR_INDEX_P): Use INT_REG_OK_FOR_INDEX_P.
	(REG_OK_FOR_BASE_P): Use INT_REG_OK_FOR_BASE_P.
	(LEGITIMATE_OFFSET_ADDRESS_P): Use INT_REG_OK_FOR_INDEX_P and
	INT_REG_OK_FOR_BASE_P instead of REG_OK_FOR_INDEX_P and
	REG_OK_FOR_BASE_P. Take an additional parameter.
	(LEGITIMATE_INDEXED_ADDRESS_P): Likeewise.
	(LEGITIMATE_INDIRECT_ADDRESS_P): Likewise.
	(LEGITIMATE_LO_SUM_ADDRESS_P): Likewise.
	(GO_IF_LEGITIMATE_ADDRESS): Move code into new function
	rs6000_legitimate_address() and use it.
	* config/rs6000/rs6000.c: Update all callers.
	(rs6000_legitimate_address): New function.

2001-05-02  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.c (rs6000_emit_move): Merge
	special_constant conditional blocks together.

2001-05-02  Dale Johannesen  <dalej@apple.com>

	* config/rs6000/rs6000.h (RS6000_ARG_SIZE): Remove unused NAMED
	parameter.
	(STRICT_ARGUMENT_NAMING): Define.
	* config/rs6000/rs6000.c (function_arg_advance, function_arg,
	function_arg_partial_nregs, setup_incoming_varargs): Remove
	args logic which depends on "named" now that STRICT_ARGUMENT_NAMING
	is defined.

Wed May  2 13:09:36 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* config/i386/i386.h (FUNCTION_BOUNDARY): Result is unsigned.

	* function.c (fixup_var_regs_1, case SUBREG): Use promoted mode
	for replacement.

	* expr.c (store_field): Do nothing except elaborate side-effects if
	zero-bit field.

2001-05-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* c-lex.c: NULL_PTR -> NULL.
	* cse.c: Likewise.
	* emit-rtl.c: Likewise.
	* gcse.c: Likewise.
	* genpeep.c: Likewise.
	* jump.c: Likewise.
	* mips-tdump.c: Likewise.
	* reload1.c: Likewise.
	* rtlanal.c: Likewise.
	* stmt.c: Likewise.
	* stor-layout.c: Likewise.
	* toplev.c: Likewise.

2001-05-01  Per Bothner  <per@bothner.com>

	* expr.c (expand_expr):  When compiling LABELED_BLOCK_EXPR,
	call do_pending_stack_adjust before emiting label.

2001-05-01  Mark Mitchell  <mark@codesourcery.com>

	* extend.texi: Fix typo.

2001-05-01  Stan Shebs  <shebs@apple.com>

	* objc/objc-act.c (build_module_descriptor): Clear DECL_CONTEXT
	of UOBJC_MODULES_decl.
	(generate_strings): Clear DECL_CONTEXT of new decl nodes.
	(generate_descriptor_table): Ditto.
	(generate_protocols): Ditto.
	(generate_protocol_list): Ditto.
	(generate_classref_translation_entry): Ditto.

2001-05-01  Jeffrey Oldham  <oldham@codesourcery.com>

	* invoke.texi (Optimize Options): Add documentation for `--param
	max-delay-slot-insn-search' and `--param
	max-delay-slot-live-search' and reorder --param section.
	* params.def: Modify initial comment.
	* params.h (param_info): Add `help' member.
	* toplev.c (lang_independent_params): Include `help' description.
	(display_help): Print --param parameters.

2001-05-01  Zack Weinberg  <zackw@stanford.edu>

	* config.gcc: Don't default xmake_file to ${cpu_type}/x-${cpu_type}.
	Remove references to deleted files.
	(*-*-openbsd): No need to override xmake_file.
	(*-*-sysv4): Treat like *-*-sysv.

	* configure.in: Probe for ldopen in various places, and set up
	collect2 to be linked with them if found.
	Don't dink with Windows registry stuff unless $host_os is a
	Win32 os name.  Check to see if we need -ladvapi32.
	* configure: Regenerate.

	* Makefile: Get rid of CLIB and HOST_CLIB.
	Substitute in COLLECT2_LIBS and link collect2 against its contents.
	* build-make: Get rid of HOST_CLIB.

	* config/a29k/x-unix, config/alpha/x-osf, config/i386/x-aix,
	config/i386/x-osfrose, config/m68k/x-dpx2, config/mips/x-iris3,
	config/mips/x-mips, config/mips/x-osfrose, config/mips/x-sony,
	config/mips/x-sysv, config/rs6000/x-aix31, config/rs6000/x-aix41,
	config/rs6000/x-rs6000: Delete.

	* config/i386/x-cygwin, config/m68k/t-aux, config/mips/x-iris:
	Don't set CLIB.

	24 x-host fragments remain, 0 x-cpu, 3 top level.

2001-05-01  Zack Weinberg  <zackw@stanford.edu>

	* aclocal.m4 (gcc_AC_C_CHAR_BIT): Correct test program.
	* configure: Regenerate.

2001-05-01  Angela Marie Thomas <angela@cygnus.com>

	* Makefile.in (install-headers): Remove redundant dependency.

2001-05-01  Nathan Sidwell  <nathan@codesourcery.com>

	* c-tree.texi (USING_STMT): Document.

2001-05-01  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* bitmap.c: Change NULL_PTR to NULL or "(rtx*)0".
	* c-common.c: Likewise.
	* c-decl.c: Likewise.
	* combine.c: Likewise.
	* rs6000.c: Likewise.
	* except.c: Likewise.
	* explow.c: Likewise.
	* expr.c: Likewise.
	* fold-const.c: Likewise.
	* function.c: Likewise.
	* gcc.c: Likewise.
	* gcse.c: Likewise.
	* integrate.c: Likewise.
	* loop.c: Likewise.
	* objc/objc-act.c: Likewise.
	* recog.c: Likewise.
	* reg-stack.c: Likewise.
	* reload.c: Likewise.
	* reload1.c: Likewise.
	* simplify-rtx.c: Likewise.
	* stmt.c: Likewise.
	* varasm.c: Likewise.

2001-05-01  Gabriel Dos Reis  <gdr@codesourcery.com>

	* diagnostic.def: New file.
	* diagnostic.h (diagnostic_t): New enum.
	* Makefile.in (diagnostic.o): Depend on diagnostic.def

2001-04-30  Zack Weinberg  <zackw@stanford.edu>

	* tsystem.h: Test only POSIX for availability of string.h
	and time.h.
	* config.gcc (all systems): If USG appeared in xm_defines,
	change it to POSIX.  If both USG and POSIX appeared, just
	delete USG. Remove unnecessary quotes around xm_defines
	settings.
	(m68k-crds-unos*): Don't #define unos - tested nowhere.
	(m68k-apple-aux*): Don't #define AUX - tested nowhere.
	(alpha*-*-linux*ecoff*, powerpc-*-linux*libc1,
	powerpc-*-linux*): No need to set xm_defines - handled by
	global settings for *-*-linux*.

2001-04-30  Zack Weinberg  <zackw@stanford.edu>

	* dbxout.c, mips-tfile.c, config/mips/mips.c, xcoffout.c:
	Always include gstab.h, not system stab.h.  Don't provide
	default definitions of N_CATCH or N_OPT.  Always use the
	gstab.h variant of STAB_CODE_TYPE.
	* final.c: Don't include stab.h/gstab.h at all, or provide
	defaults for N_SLINE and N_SOL.

	* xcoffout.c: Can assume N_MAIN, N_DSLINE, N_BSLINE, N_BINCL,
	N_EINCL, N_EXCL, N_M2C, N_SCOPE, N_CATCH, and N_OPT are
	available.
	* sdbout.c: Always include gsyms.h instead of system syms.h.

	* configure.in: No need to check for stab.h.
	* configure, config.in: Regenerate.
	* Makefile.in (final.o): Don't depend on gstab.h.

2001-04-30  Mark Mitchell  <mark@codesourcery.com>
	    Richard Henderson  <rth@redhat.com>

	* extend.texi: Improve documentation of volatile asms.

2001-04-30  Mark Mitchell  <mark@codesourcery.com>

	* c-tree.texi: Fix thinko.
	* gcc.texi: Likewise.

2001-04-30  Richard Henderson  <rth@redhat.com>

	* c-common.c (c_promoting_integer_type_p): New function, from the
	corpse of old macro.  Properly promote too-small enumerations and
	booleans.  Adjust all callers.
	* c-common.h (C_PROMOTING_INTEGER_TYPE_P): Remove.
	(c_promoting_integer_type_p): Declare.
	* c-decl.c: Adjust C_PROMOTING_INTEGER_TYPE_P invocations.
	* c-typeck.c: Likewise.
	(default_conversion): Remove now redundant boolean check.

2001-04-30  Jan Hubicka  <jh@suse.cz>
	    Richard Henderson  <rth@redhat.com>

	* regmove.c (try_apply_stack_adjustment): Remove now redundant
	sanity checks.
	(combine_stack_adjustments_for_block): Don't combine stack
	allocation followed by deallocations.  Handle grow-up stacks.

2001-04-30  Mark Mitchell  <mark@codesourcery.com>

	* fdl.texi: New file.
	* c-tree.texi: Use the GFDL.
	* gcc.texi: Likewise.

2001-04-30  Stan Shebs  <shebs@apple.com>

	* invoke.texi: Add a section documenting Objective-C options.

2001-04-27  Andrew Haley  <aph@cambridge.redhat.com>

	* emit-rtl.c (try_split):  Copy EH notes to sequence.

2001-04-30  Mark Mitchell  <mark@codesourcery.com>

	* regmove.c (record_stack_memrefs): Catch all references to the
	stack pointer.

2001-04-29  Toomas Rosin <toomas at ns dot tklabor dot ee>

	* Makefile.in (stmp-fixinc): quote shell assignment values

2001-04-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* c-aux-info.c: NULL_PTR->NULL in calls to `concat'.

	* gcc.c: Likewise.

	* prefix.c: Likewise.

2001-04-28  Stan Shebs  <shebs@apple.com>

	* objc/objc-act.c (handle_class_ref): Rewrite to flush target
	specific code and use new macro ASM_DECLARE_UNRESOLVED_REFERENCE.
	* config/darwin.h (ASM_DECLARE_UNRESOLVED_REFERENCE): Define.
	* tm.texi (ASM_DECLARE_UNRESOLVED_REFERENCE): Document.

	* config/darwin.h (STANDARD_EXEC_PREFIX): Don't define.
	(NEXT_OBJC_RUNTIME): Define.

Sat Apr 28 21:02:58 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* rtl.h (simplify_gen_relational): Add cmp_mode parameter.
	* simplify-rtx.c (simplify_gen_relational): Likewise.

	* simplify-rtx.c (simplify_replace_rtx): Handle relationals and MEMs.

	* i386.h (VALID_SSE_REG_MODE): Accept MMX modes if SSE2
	* i386.md (movsi_1, movdi2, movdi_1_rex64): Handle SSE2 moves.

	* i386.md (negsf2, negdf2, abssf2, absdf2): Force operands to
	registers in SSE case; fix handling of the immediates.
	(negsf2_ifs, abssf2_ifs): Tweak constraints; require
	operands to be in regsiters before reload.
	(negdf2_ifs, absdf2_ifs): Likewise; disable for 64bit
	(negdf2_ifs_rex64, absdf2_ifs_rtx64): New.
	(abstf,absxf,negtf,negxf splitters): Compute
	properly the regnum for x86_64.
	(avsdf2_if_rex64): New.

Sat Apr 28 10:36:23 2001  Jeffrey A Law  (law@cygnus.com)

	* flow.c (propagate_block_delete_insn): Handle deletion of ADDR_VEC
	and ADDR_DIFF_VEC insns when the proceeding CODE_LABEL was put
	into the constant pool.
	* jump.c (jump_optimize_1): Remove barrier successors after all
	the LABEL_NUSES counds have been computed.
	(delete_barrier_successors): When deleting a tablejump insn, also
	delete the jump table it uses.
	* varasm.c (force_const_mem): Set LABEL_PRESERVE_P when forcing a
	label into memory.

2001-04-28  Martin Kalen  <martin.kalen@todaysystems.com.au>

	* pa.c (FRP): Remove erroneous white space in macro definition.

2001-04-28  Andreas Jaeger  <aj@suse.de>

	* invoke.texi: Use XX-bit instead of XXbit or XX bit where
	appropriate.
	* extend.texi: Likewise.
	* tm.texi: Likewise.

2001-04-28  Andreas Jaeger  <aj@suse.de>

	* md.texi: Use XX-bit instead of XXbit or XX bit where
	appropriate.

2001-04-28  Jens Schweikhardt <schweikh@schweikhardt.net>

	* gcc.c (process_command): Allow -l lib in addition to -llib
	for POSIX compliance. This fixes PR c/2347.

	* invoke.texi: Update section on Link Options accordingly.

2001-04-27  Zack Weinberg  <zackw@stanford.edu>

	* function.c (purge_addressof_1): Remove the duplicate
	if (code == SET) block.  Fold the two if (code == ADDRESSOF)
	blocks together.

2001-04-28  Jason Merrill  <jason_merrill@redhat.com>

	* except.c (expand_eh_region_start): Don't start a new block.
	(expand_eh_region_end): Don't end a block.
	* stmt.c (expand_end_bindings): Don't end EH blocks.
	(expand_decl_cleanup): Starting an EH region won't change the block.
	(mark_block_as_eh_region, mark_block_as_not_eh_region): Lose.
	(is_eh_region): Lose.
	* tree.h: Adjust.

2001-04-27  Jeffrey Oldham  <oldham@codesourcery.com>

	* except.c (expand_eh_region_end_cleanup): word_mode, not Pmode.

	* collect2.c (main): Add `-L' case to remove duplicate entries.
	(is_in_args): New function to check for a duplicate argument.
	* defaults.h (LINK_ELIMINATE_DUPLICATE_LDIRECTORIES): New macro.
	* tm.texi (LINK_ELIMINATE_DUPLICATE_LDIRECTORIES): New documentation.
	* config/mips/iris6.h (LINK_ELIMINATE_DUPLICATE_LDIRECTORIES):
	Define to be nonzero.

2001-04-27  Andreas Jaeger  <aj@suse.de>
	    Richard Henderson  <rth@redhat.com>

	* md.texi (Machine Constraints): Document additional i386
	constraints and fix description of "A".

Fri Apr 27 10:43:49 2001  Jeffrey A Law  (law@cygnus.com)

	* tm.texi (TARGET_MEM_FUNCTIONS): Update text.

2001-04-27  Jason Merrill  <jason_merrill@redhat.com>

	* except.c (get_exception_filter): word_mode, not Pmode.

2001-04-26  Geoffrey Keating  <geoffk@redhat.com>

	* config/sparc/sparc.md (movsf_no_f_insn): Add more alternatives
	common to other movsf patterns.  Move up so that in future
	people who change the other patterns will change it too.
	(movsf_lo_sum): Allow even for soft-float; add appropriate
	constraints.
	(movsf_high): Likewise.
	(movsf_high+1): Allow even for soft-float.

	* function.c (expand_function_end): Always clobber the
	return registers, even if there is no return label.

Thu Apr 26 20:28:21 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* (ix86_expand_fp_movcc): Re-enable SSE conditional move generation.

Thu Apr 26 19:20:28 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (abs/neg splitter): Fix calculation of sign bit for TFmodes
	(pushqi2_rex64, pushhi2_rex64): Add.

2001-04-26  Andrew Haley  <aph@cambridge.redhat.com>

	* except.c (expand_eh_region_end_cleanup): Force pending stack
	adjust before emitting label that branches around cleanup code.

2001-04-26  H.J. Lu  (hjl@gnu.org)

	* config.gcc (mips*-*-linux*): Add elfos.h to tm_file.

	* config/mips/ecoff.h (STARTFILE_SPEC): Undefine before
	define.
	* config/mips/elf64.h (MAX_OFILE_ALIGNMENT): Likewise.
	(ASM_OUTPUT_SECTION_NAME): Likewise.
	(ASM_WEAKEN_LABEL): Likewise.
	(UNIQUE_SECTION): Likewise.
	(ASM_OUTPUT_CONSTRUCTOR): Likewise.
	(ASM_OUTPUT_DESTRUCTOR): Likewise.
	* config/mips/elf.h (MAX_OFILE_ALIGNMENT): Likewise.
	(ASM_OUTPUT_SECTION_NAME): Likewise.
	(ASM_WEAKEN_LABEL): Likewise.
	(UNIQUE_SECTION): Likewise.
	(ASM_OUTPUT_CONSTRUCTOR): Likewise.
	(ASM_OUTPUT_DESTRUCTOR): Likewise.
	* config/mips/linux.h (HANDLE_SYSV_PRAGMA): Likewise.
	* config/mips/mips.h (DBX_CONTIN_LENGTH): Likewise.
	(ASM_FILE_START): Likewise.
	(ASM_OUTPUT_SOURCE_LINE): Likewise.
	(ASM_DECLARE_OBJECT_NAME): Likewise.
	(ASM_FILE_END): Likewise.
	(ASM_DECLARE_FUNCTION_NAME): Likewise.
	(ASM_OUTPUT_INTERNAL_LABEL): Likewise.
	(ASM_GENERATE_INTERNAL_LABEL): Likewise.
	(ASM_OUTPUT_CASE_LABEL): Likewise.
	(ASM_OUTPUT_SKIP): Likewise.
	(ASM_OUTPUT_ASCII): Likewise.
	(ASM_OUTPUT_IDENT): Likewise.
	(READONLY_DATA_SECTION): Likewise.
	(EXTRA_SECTIONS): Likewise.
	(EXTRA_SECTION_FUNCTIONS): Likewise.
	(SELECT_RTX_SECTION): Likewise.
	(SELECT_SECTION): Likewise.

	* config/mips/linux.h (INVOKE__main): Undefine.
	(CTOR_LIST_BEGIN): Likewise.
	(CTOR_LIST_END): Likewise.
	(DTOR_LIST_BEGIN): Likewise.
	(DTOR_LIST_END): Likewise.
	(SET_ASM_OP): Defined it to ".dummy".
	(ASM_OUTPUT_DEF): Defined.
	(ASM_OUTPUT_DEFINE_LABEL_DIFFERENCE_SYMBOL): Defined.

2001-04-26  Nick Clifton  <nickc@cambridge.redhat.com>

	* config/arm/arm.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Define, if the
	assembler supports .p2align.

2001-04-26  Nathan Sidwell <nathan@codesourcery.com>

	* c-lex.c (c_lex): Remove # from %o diagnostic formatting.

2001-04-26  Jakub Jelinek  <jakub@redhat.com>

	* integrate.c (expand_inline_function): Check for error_mark_node
	in actual argument.

2001-04-26  Jakub Jelinek  <jakub@redhat.com>

	* config/i386/i386.h (CC1_CPU_SPEC): Fix deprecation warnings for
	-m386 and -m486.

2001-04-26  Alexandre Oliva  <aoliva@redhat.com>

	* configure.in (configargs.h): Define thread_model.
	* configure: Rebuilt.
	* gcc.c (main): Print it with -v.

2001-04-25  Joseph S. Myers  <jsm28@cam.ac.uk>

	* invoke.texi: Document -Wmissing-braces, -dumpspecs,
	-dumpmachine, -dumpversion, -fmem-report and -ftime-report.
	* gcc.1: Regenerate.

2001-04-25  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* dwarfout.c (is_pseudo_reg, type_main_variant, is_tagged_type,
	is_redundant_typedef): Use static inline instead of inline static.

Wed Apr 25 18:21:01 2001  Christopher Faylor <cgf@cygnus.com>

	* config/i386/cygwin.h: Move W32API search to LINK_SPEC to ensure that
	this directory is always searched.

2001-04-25  Richard Henderson  <rth@redhat.com>

	* config/i386/i386.c (ix86_expand_epilogue): Properly compute size
	of registers to restore along non eh_return path.

2001-04-25  Jakub Jelinek  <jakub@redhat.com>

	* c-format.c (check_format_info_recurse): Handle
	PLUS_EXPR for format string.

2001-04-25  Jakub Jelinek  <jakub@redhat.com>

	* config/ia64/ia64.h (CC1_SPEC): Define.
	* config/ia64/linux.h (CC1_SPEC): Define.

Wed Apr 25 17:09:50 2001  J"orn Rennecke <amylaar@redhat.com>

	* emit-rtl.c (constant_subword): Also do sign extension in
	BITS_PER_WORD == 16 case.

2001-04-25  Jason Merrill  <jason_merrill@redhat.com>

	* loop.c (try_swap_copy_prop): Go back to checking insn.

2001-04-25  Jakub Jelinek  <jakub@redhat.com>

	* emit-rtl.c (subreg_hard_regno): Only do HARD_REGNO_MODE_OK check
	if check_mode is nonzero.

2001-04-25  Jakub Jelinek  <jakub@redhat.com>

	* config/i386/i386.c (ix86_expand_int_movcc): If overlap between
	out and comparison sequence has been detected, put result into
	proper temporary pseudo.

2001-04-24  Zack Weinberg  <zackw@stanford.edu>

	* Makefile.in (LIB2FUNCS): Remove _varargs and __dummy.
	* libgcc-std.ver: Remove __builtin_saveregs, __dummy, and __empty.
	* libgcc2.c: Remove __dummy and __builtin_saveregs.
	* libgcc2.h: Don't prototype __builtin_saveregs or __dummy.
	* config/i860/varargs.asm: New file - preserve i860 __builtin_saveregs
	for future reference.

2001-04-24  Jason Merrill  <jason_merrill@redhat.com>

	* except.c (reachable_handlers): Step out one level from a RESX.

	* except.c (struct eh_region): Rename 'last' to 'resume'.
	(mark_eh_region, duplicate_eh_region_1): Adjust.
	(expand_eh_region_end_cleanup): Remember the jump, not the barrier.
	(build_post_landing_pads): Likewise.
	(expand_end_catch, expand_eh_region_end_allowed): Don't set it.
	(expand_eh_region_end_must_not_throw): Likewise.
	(connect_post_landing_pads): Thread (only) regions with non-deleted
	resume insns.

	* except.c (expand_eh_region_end_cleanup): Save the EH return data
	registers around the cleanup.
	(get_exception_filter): New fn.
	(finish_eh_generation): Use it.

2001-04-24  Nathan Sidwell <nathan@codesourcery.com>

	* c-semantics.c (add_scope_stmt): Don't call
	current_scope_stmt_stack multiple times.

2001-04-24  Zack Weinberg  <zackw@stanford.edu>
	    Nathan Sidwell <nathan@codesourcery.com>

	Lazy __FUNCTION__ generation.
	* c-common.h (RID_FUNCTION_NAME, RID_PRETTY_FUNCTION_NAME,
	RID_C99_FUNCTION_NAME): New _RIDs.
	(CTI_FUNCTION_ID, CTI_PRETTY_FUNCTION_ID, CTI_FUNC_ID): Remove.
	(CTI_FUNCTION_NAME_DECL, CTI_PRETTY_FUNCTION_NAME_DECL,
	CTI_C99_FUNCTION_NAME_DECL, CTI_SAVED_FUNCTION_NAME_DECLS): New
	global tree slots.
	(function_id_node, pretty_function_id_node, func_id_node): Remove.
	(c99_function_name_decl_node, function_name_decl_node,
	pretty_function_name_decl_node, saved_function_name_decls):
	Declare.
	(struct language_function): Remove x_function_name_declared_p.
	(make_fname_decl): Remove a parameter.
	(declare_function_names): Remove prototype.
	(start_fname_decls, finish_fname_decls): Prototype.
	(fname_as_string): Likewise.
	(fname_string, fname_decl): Likewise.
	* c-common.c (make_fname_decl): Adjust.
	(struct fname_var_t): New struct.
	(fname_vars): New static array.
	(declare_function_name): Remove.
	(start_fname_decls, finish_fname_decls): New functions.
	(fname_as_string): New function from remnants of
	declare_function_name.
	(fname_string, fname_decl): New functions.

	* c-decl.c (c_function_name_declared_p): Remove.
	(init_decl_processing): Don't generate __FUNCTION__ et al ids,
	don't call declare_function_name. Call start_fname_decls.
	(c_make_fname_decl): Adjust parameters. Generate the name. Don't
	clobber the line number. Call finish_decl.
	(start_function): Call start_fname_decls.
	(finish_function): Call finish_fname_decls.
	Remove c_function_name_declared_p.
	(push_c_function_context): Don't push c_function_name_declared_p.
	(pop_c_function_context): Don't pop c_function_name_declared_p.
	(c_begin_compound_stmt): Don't check c_function_name_declared_p.
	* c-parse.in (STRING_FUNC_NAME, VAR_FUNC_NAME): New tokens.
	(program): Call finish_fname_decls for C.
	(primary): Add VAR_FUNC_NAME.
	(reswords): Add slots for __FUNCTION__ et al.
	(rid_to_yy): Add mappings for __FUNCTION__ et al.
	(yylexname): If it's a STRING_FUNC_NAME generate the function name
	now. Don't look for VAR_DECLs containing __FUNCTION__ et al.
	* c-semantics.c (prune_unused_decls): Remove.
	(finish_stmt_tree): Don't call prune_unused_decls.
	(genrtl_decl_stmt): Don't prune unused decls here.

2001-04-24  Nick Clifton  <nickc@cambridge.redhat.com>

	* dwarf2out.c (mem_loc_descriptor): If a SYMBOL_REF is in the
	constant pool, use the pool's SYMBOL_REF instead.

	* config/v850/v850.h (STRICT_ALIGNMENT): Always set, even for the
	v850e.

2001-04-23  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-convert.c (convert): When converting to a BOOLEAN_TYPE, avoid
	passing nested NOP_EXPRs to fold.

Mon Apr 23 14:32:12 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* reg-stack.c (emit_swap_insn): Do not get pass CALL_INSNs.

2001-04-22  Mark Mitchell  <mark@codesourcery.com>

	* loop.c (loop_delete_insns): Add prototype.

2001-04-23  Phil Edwards  <pme@sources.redhat.com>

	* configure.in:  Remove ENABLE_STD_NAMESPACE.
	* config.in:  Regenerated.
	* configure:  Regenerated.

2001-04-22  Stan Shebs  <shebs@apple.com>

	* config.gcc (powerpc-*-darwin*): Move the flag in xm-darwin.h
	into xm_defines.
	* config/rs6000/xm-darwin.h: Remove file.

2001-04-22  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* collect2.c (main): Use concat in lieu of xmalloc/sprintf.
	(write_c_file_stat): Likewise.

	* dbxout.c (dbxout_init): Likewise.

	* profile.c (output_func_start_profiler): Likewise.

2001-04-22  Philipp Thomas  <pthomas@suse.de>

	* ABOUT-GCC-NLS: Now that gettext 0.10.37 is out,
	require it instead of the CVS version.
	* cpperror.c (v_message): Put a blank before the macro
	body to not confuse exgettext.

2001-04-21  Mark Mitchell  <mark@codesourcery.com>

	* flow.c (proagate_one_insn): Remove useless assignment.
	* jump.c (delete_insn): Tidy.
	* loop.c (try_copy_prop): When deleting an instruction with a
	REG_RETVAL note, delete the entire libcall sequence.
	(loop_delete_insns): New function.
	* unroll.c (initial_reg_note_copy): Copy INSN_LIST notes, even if
	we're not substituting into them yet.

2001-04-21  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.c (general_operand_src): Fix a comment typo.

	* config/sparc/sparc.c (sparc_flat_eligible_for_epilogue_delay):
	Fix a comment typo.
	* config/i960/i960.c (signed_arith_operand): Likewise.

	* calls.c (expand_call): Fix a comment typo.

2001-04-20  Zack Weinberg  <zackw@stanford.edu>

	* configure.in: Probe for times, clock, struct tms, and clock_t.
	* configure, config.in: Regenerate.
	* timevar.c: Replace ifdef forest in get_time with (relatively)
	straightforward series of checks based on autoconf's probes.

Fri Apr 20 12:24:50 2001  Jeffrey A Law  (law@cygnus.com)

	* config/pa/som.h (NM_FLAGS): Define.

2001-04-20  Bernd Schmidt  <bernds@redhat.com>

	* ia64.h (MD_SCHED_REORDER, MD_SCHED_REORDER2): Pass CLOCK to called
	function.
	* ia64-protos.h (ia64_sched_reorder): Additional arg for clock.
	* ia64.c (nop_cycles_until): New function.
	(prev_cycle, prev_first, last_issued): New static variables.
	(ia64_sched_reorder): Additional arg for clock.
	On final scheduling pass, emit extra NOPs as needed.
	Set prev_first and prev_cycle.
	(ia64_sched_reorder2): Pass clock arg down to ia64_sched_reorder.
	(ia64_variable_issue): Set last_issued.

2001-04-20  Alexandre Oliva  <aoliva@redhat.com>

	* config/i386/i386.c (ix86_expand_int_movcc,
	ix86_expand_strlensi_unroll_1): Sign-extend CONST_INTs.

2001-04-20  Geoff Keating  <geoffk@redhat.com>

	* config/rs6000/rs6000.md (ctrsi_internal1, ctrsi_internal2,
	ctrsi_internal3, ctrsi_internal4, ctrsi_internal5,
	ctrsi_internal6, ctrdi_internal1, ctrdi_internal2,
	ctrdi_internal3, ctrdi_internal4, ctrdi_internal5,
	ctrdi_internal6): In the short-branch case, this insn is only 4
	bytes long.  Reported by Reza Yazdani <reza@apple.com>.

2001-04-20  Jakub Jelinek  <jakub@redhat.com>

	* reg-stack.c (check_asm_stack_operands): Issue error if "=t" resp.
	"=u" is used together with "st" resp. "st(1)" clobber.

2001-04-20  Jakub Jelinek  <jakub@redhat.com>

	* gcse.c (gcse_main): Fix comment typo.
	(delete_null_pointer_check): Likewise.
	(hash_scan_set): Don't consider sets with REG_EQUIV MEM notes.
	* cse.c (cse_insn): Likewise.
	* function.c (fixup_var_refs_insns_with_hash): The sequence is
	toplevel.

2001-04-19  Zack Weinberg  <zackw@stanford.edu>

	* toplev.c: Excise all code for the undocumented -dm option.
	(float_signal): Call signal just once, unconditionally.

2001-04-19  Geoff Keating  <geoffk@redhat.com>

	* fold-const.c (fold): Use first_rtl_op rather than
	TREE_CODE_LENGTH when looping over parameters of a tree.
	Correct strange grouping in test for evaluated SAVE_EXPR.

Thu Apr 19 19:15:26 2001  Jeffrey A Law  (law@cygnus.com)

	* config/pa/pa-linux.h (CPLUSPLUS_CPP_SPEC): Undefine.
	* config/pa/pa.h (CPLUSPLuS_CPP_SPEC): Define.

	* config/pa/som.h (ASM_OUTPUT_FUNCTION_PREFIX): Truncate subspace
	name at 32 total characters.
	(ASM_OUTPUT_SECTION_NAME): Similarly.  Also, only support placing
	functions in named sections -- data items can still go into unique
	sections, but they have normal names (ie $LIT$ and $DATA$).

	* config/pa/som.h (SUPPORTS_INIT_PRIORITY): SOM does not support
	INIT_PRIORITY.

2001-04-19 DJ Delorie  <dj@redhat.com>

	* config/alpha/vms.h: Change OBJECT_SUFFIX and EXECUTABLE_SUFFIX
	to TARGET_OBJECT_SUFFIX and TARGET_EXECUTABLE_SUFFIX.
	* config/i386/cygwin.h: Likewise.
	* config/i386/mingw32.h: Likewise.
	* config/vax/vms.h: Likewise.
	* config/i386/djgpp.h: Remove NO_AUTO_EXE_SUFFIX.

	* config/alpha/xm-vms.h: Change OBJECT_SUFFIX and EXECUTABLE_SUFFIX
	to HOST_OBJECT_SUFFIX and HOST_EXECUTABLE_SUFFIX.
	* config/i386/xm-cygwin.h: Likewise.
	* config/i386/xm-djgpp.h: Likewise.
	* config/i386/xm-mingw32.h: Likewise.
	* config/vax/xm-vms.h: Likewise.

	* mkdeps.c (deps_add_default_target): Use TARGET_OBJECT_SUFFIX
	instead of OBJECT_SUFFIX.
	* collect2.c (find_a_file): Look for files matching the extension
	HOST_EXECUTABLE_SUFFIX instead of EXECUTABLE_SUFFIX.
	* gcc.c (DEFAULT_SWITCH_CURTAILS_COMPILATION): Depend on
	TARGET_EXECUTABLE_SUFFIX.
	(find_a_file): Use HOST_EXECUTABLE_SUFFIX.
	(make_relative_prefix): Likewise.
	(convert_filename): Use TARGET_ suffixes throughout.  Remove
	NO_AUTO_EXE_SUFFIX.
	(process_command): Likewise.
	(do_spec_1): Likewise.
	* java/lang.c (init_parse): Likewise.

	* gcc.texi : Document four new options matching the pattern
	(HOST|TARGET)_(OBJECT|EXECUTABLE)_SUFFIX.  Remove documentation
	for deleted macros OBJECT_SUFFIX and EXECUTABLE_SUFFIX.  Remove
	documentation for NO_AUTO_EXE_SUFFIX.

2001-04-19  Mark Mitchell  <mark@codesourcery.com>

	* toplev.h (struct lang_hooks): Allow decode_option to indicate
	that language-independent processing should not be done.
	* toplev.c (main): Adjust accordingly.

	* rtl.texi (jump_insn): Expand on JUMP_LABEL documentation.
	* loop.c (load_mems): Handle a NULL JUMP_LABEL for a JUMP_INSN.

	* mips.md (reload_outputdi): Require that operand0 be a
	general_operand.

2001-04-19  Jakub Jelinek  <jakub@redhat.com>

	* invoke.texi (-Wshadow): Clarify.

2001-04-18  Mark Mitchell  <mark@codesourcery.com>

	* loop.c (load_mems): Examine all the instructions in the loop
	before concluding that all jumps branch to the first instruction
	after the loop.

Wed Apr 18 20:32:03 2001  Christopher Faylor <cgf@cygnus.com>

	* config/i386/xm-cygwin.h (CPP_SPEC): Fix typo.

2001-04-18  Jakub Jelinek  <jakub@redhat.com>

	* cpp.texi (-Wwhite-space): Remove.
	(-Wall): -Wall does not imply -Wwhite-space.

2001-04-17  Zack Weinberg  <zackw@stanford.edu>

	* dbxout.c (dbxout_init): If DBX_OUTPUT_GCC_MARKER is defined,
	use it instead of blindly generating a .stabs.
	* xcoffout.h: Define DBX_OUTPUT_GCC_MARKER so we put the type
	in the right place.
	* xcoffout.c: Don't bother defining default for N_CATCH.
	(UNKNOWN_STAB): Use internal_error.
	(stab_to_sclass): Remove now-unnecessary aborts.
	Remove #if 0'ed case N_BROWS.  Add #ifdef N_OPT block.

Tue Apr 17 21:41:11 2001  Jeffrey A Law  (law@cygnus.com)

	* jump.c (mark_all_labels): Canonicalize the tail recursion
	label attached to CALL_PLACEHOLDER insns.

2001-04-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* output.h (dump_flow_info, free_basic_block_vars,
	which_alternative): Delete redundant prototypes.

	* rtl.h (bss_section): Likewise.

2001-04-17  Loren J. Rittle  <ljrittle@acm.org>

	* dbxout.c (N_OPT): Define if not available from <stab.h>

2001-04-17  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* vax.h (PROMOTE_PROTOTYPES): Define for compatibility with system
	libraries and native K&R compilers.

2001-04-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* c-typeck.c (convert_arguments): Don't check for width changes
	with -Wtraditional.

	* invoke.texi (-Wtraditional): Update documentation.

2001-04-16  Zack Weinberg  <zackw@stanford.edu>

	* toplev.c (output_lang_identify): Delete.
	(compile_file): Don't call ASM_IDENTIFY_GCC or ASM_IDENTIFY_LANGUAGE.
	Don't generate gcc2_compiled. label.  Don't emit a nop if profiling.
	If IDENT_ASM_OP is defined, emit an .ident "GCC (GNU) <version>"
	after calling ASM_FILE_END.

	* dbxout.c (dbxout_init): Don't call ASM_IDENTIFY_GCC_AFTER_SOURCE.
	Instead, unconditionally emit an N_OPT stab with string equal
	to STABS_GCC_MARKER, which defaults to "gcc2_compiled."

	* defaults.h: Don't provide default for ASM_IDENTIFY_LANGUAGE.

	* config/dbxelf.h, config/freebsd.h, config/nextstep.h,
	config/psos.h, config/ptx4.h, config/1750a/1750a.h,
	config/alpha/alpha.h, config/alpha/elf.h, config/arc/arc.h,
	config/arm/aof.h, config/arm/coff.h, config/arm/elf.h,
	config/arm/linux-elf.h, config/avr/avr.h, config/d30v/d30v.h,
	config/dsp16xx/dsp16xx.h, config/h8300/h8300.h,
	config/i370/i370.h, config/i386/beos-elf.h,
	config/i386/osf1elf.h, config/i386/osfrose.h,
	config/ia64/sysv4.h, config/m68k/3b1.h, config/m68k/auxgas.h,
	config/m68k/crds.h, config/m68k/hp320.h, config/m68k/m68kv4.h,
	config/m68k/mot3300.h, config/m68k/news.h, config/m68k/sgs.h,
	config/m68k/tower-as.h, config/mcore/mcore-elf.h,
	config/mips/iris6.h, config/mips/osfrose.h,
	config/mips/sni-svr4.h, config/pa/som.h, config/pdp11/pdp11.h,
	config/sparc/sp64-elf.h:
	Delete definitions of any or all of: ASM_IDENTIFY_GCC,
	ASM_IDENTIFY_GCC_AFTER_SOURCE, and ASM_IDENTIFY_LANGUAGE.

	* config/elfos.h, config/freebsd.h, config/linux.h,
	config/alpha/elf.h, config/arm/linux-elf.h, config/i386/i386elf.h,
	config/i386/ptx4-i.h, config/mips/gnu.h, config/mips/linux.h,
	config/sparc/linux.h, config/sparc/linux64.h: Delete definitions
	of ASM_FILE_START which merely emit a .version directive.  Delete
	definitions of ASM_FILE_END which merely emit an .ident directive.

	* config/avr/avr.h, config/vax/vax.h: Delete definition of
	ASM_IDENTIFY_GCC and move part of its logic into
	ASM_FILE_START.

	* config/i386/att.h, config/i386/gas.h, config/i386/linux.h,
	config/sparc/linux-aout.h: Don't emit .version directive in
	ASM_FILE_START.

	* config/i386/dgux.c, config/m88k/m88k.c, config/sh/sh.c
	(output_file_start): Correct comment.

	* config/i386/osfrose.h: Don't emit trailing .ident directive.
	* config/m68k/mot3300.h: Override STABS_GCC_MARKER to "gcc2_compiled%"
	to match gdb.
	* config/pa/lib2funcs.asm: Delete gcc_compiled. label.
	* config/rs6000/aix.h: Correct comment.

	* config/i386/i386afe.h: Delete.
	* config.gcc: Remove references to i386afe.h.

	* tm.texi: Delete documentation of ASM_IDENTIFY_GCC.  The
	other macros deleted by this patch were undocumented.

Mon Apr 16 08:03:48 2001  Jeffrey A Law  (law@cygnus.com)

	* pa.md (reload_outdi): Operand 0 must be a non hard register.

	* pa.c (secondary_reload_class): SAR<->FP copies require a
	secondary register.

	* install.texi (mips-mips-bsd): Update list of functions
	required to include memmove.
	* tm.texi (TARGET_MEM_FUNCTIONS): Update list of implicitly
	used functions to include memmove.

2001-04-15  Toon Moene  <toon@moene.indiv.nluug.nl>

	* i386.md (sqrtdf2): SFmode should be DFmode.

2001-04-15  Alexandre Oliva  <aoliva@redhat.com>

	* gcse.c (compute_ld_motion_mems): ASM outputs aren't moveable.
	(find_moveable_store): Likewise.

2001-04-15  Jim Wilson  <wilson@redhat.com>

	* function.c (expand_function_end): Handle PARALLEL real_decl_rtl.

Sat Apr 14 16:24:19 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (ashldi3_1_rex64): Add 'J' to the constraints
	(ashrdi3_1_rex64): Change 'n' constraint to 'J'.

2001-04-14  Alexandre Oliva  <aoliva@redhat.com>

	* config/mn10300/mn10300.md (cmpsi): Tell reload to disregard the
	first alternative.

2001-04-14  Alan Modra  <amodra@one.net.au>

	* pa.c (force_mode): New function.
	(emit_move_sequence): Use it instead of generating new rtx_REGs.

2001-04-13  Jim Wilson  <wilson@redhat.com>

	* config/ia64/ia64.c (ia64_expand_epilogue): Emit alloc if sibcall_p.
	(first_instruction): New static variable.
	(rtx_needs_barrier): Return 1 for alloc.
	(init_insn_group_barriers): Set first_instruction.
	(rws_sum): Delete duplicate definition.
	(group_barrier_needed_p): Return 0 when first_instruction true.
	(safe_group_barrier_needed_p): Save and restore first_instruction
	around group_barrier_needed_p call.

Fri Apr 13 21:40:28 2001  Loren J. Rittle  <ljrittle@acm.org>

	* expr.h (enum libfunc_index): Add LTI_memmove.
	(memmove_libfunc): Define macro.
	* optabs.c (init_optabs): Initialize memmove_libfunc.
	* expr.c (expand_assignment): Use memmove_libfunc instead of
	memcpy_libfunc.

2001-04-13  Alan Modra  <alan@linuxcare.com.au>

	* pa.h (GO_IF_LEGITIMATE_ADDRESS): Disallow PIC LO_SUM
	fp mode addresses.

2001-04-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (reg-stack.o): Depend on reload.h.
	(insn-attrtab.o): Depend on flags.h.

	* genattrtab (main): Include flags.h in insn-attrtab.c.

	* reg-stack.c: Include reload.h.

	* sparc.h (flag_pic): Delete redundant declaration.

	* output.h (flag_pic): Likewise.

	* tree.h (pedantic): Likewise.

2001-04-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (toplev.o, jump.o, regmove.o): Depend on reload.h

	* jump.c, regmove.c, toplev.c: Include reload.h.

	* reload.h (reload_cse_regs): Declare.

	* rtl.h (find_equiv_reg, operands_match_p, safe_from_earlyclobber,
	reload_cse_regs, init_reload, mark_home_live, reload,
	init_caller_save): Delete redundant prototypes.

2001-04-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (ssa.o, regclass.o): Depend on $(EXPR_H).

	* regclass.c, ssa.c: Include expr.h.

	* rtl.h (memory_address, force_reg, emit_queue, emit_move_insn,
	gen_move_insn): Delete redundant declarations.

2001-04-13  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* Makefile.in (CFLAGS, BOOT_CFLAGS): Partly revert 2000-10-27 patch.
	(stage1_build): Instead pass down STAGE1_CFLAGS here. Pass down
	MAKEINFO and MAKEINFOFLAGS too.
	(stage4_build): Correctly order -B flags.

2001-04-13  Alan Modra  <amodra@one.net.au>

	* pa.c (hppa_init_pic_save): Set rtx_unchanging for
	PIC_OFFSET_TABLE_SAVE_RTX.
	(zdepi_cint_p): Describe zdepi insn.
	Formatting and white space fixes throughout file.

	* pa.c (uint32_operand): Don't use long constant >= 2^32.
	(emit_move_sequence): Use HOST_WIDE_INT constants.  Don't worry
	about 32->64 bit sign extension if 32 bit HOST_WIDE_INTs.
	(compute_movstrsi_length): Make `align' unsigned to avoid warning.
	(output_64bit_and): Use plain `int's for shift counts.
	(output_64bit_ior): Likewise.
	(function_arg_partial_nregs): Use unsigned vars to avoid warnings.
	* pa.h (CONST_OK_FOR_LETTER_P): Use HOST_WIDE_INT constants for case
	`N', and simplify.

	* pa-hpux10.h (NEW_HP_ASSEMBLER): Define to 1.
	* pa-hpux11.h (NEW_HP_ASSEMBLER): Likewise.
	* pa.h (LEGITIMATE_CONSTANT_P) Collapse two defines depending on
	NEW_HP_ASSEMBLER into one.  Kill warnings.

	* pa-gas.h: Delete file.
	* config.gcc: Match `parisc' as well as `hppa' for cpu_type=pa.
	Add new targets hppa*64*-*-linux* and parisc*64*-*-linux*.  Update
	hppa*-*-linux*.  For all pa targets, remove pa/gas.h from tm_file,
	instead setting MASK_GAS | MASK_JUMP_IN_DELAY in target_cpu_default2.

	* config/pa/mill32.S: New file.
	* config/pa/mill64.S: New file.
	* config/pa/t-linux (LIBGCC1, CROSS_LIBGCC1, LIB1ASMFUNCS,
	LIB1ASMSRC, CRTSTUFF_T_CFLAGS_S, TARGET_LIBGCC2_CFLAGS): Define.
	* config/pa/t-linux64: New file.
	* config/pa/t-pa64 (CROSS_LIBGCC1): Change to libgcc1-asm.a
	(LIB1ASMFUNCS, LIB1ASMSRC): Define.
	(TARGET_LIBGCC2_CFLAGS): Add -Dpa64=1 -DELF=1.

	* elfos.h (SELECT_SECTION): Undef before defining.
	* pa-linux.h (LINUX_DEFAULT_ELF, PTRDIFF_TYPE, CPP_SPEC): Remove.
	(LIB_SPEC): Remove -lmilli.
	(DBX_REGISTER_NUMBER): Remove.
	(PREFERRED_DEBUGGING_TYPE, DWARF2_ASM_LINE_DEBUG_INFO,
	(DWARF2_UNWIND_INFO, ASM_SPEC, LINK_SPEC, FUNCTION_OK_FOR_SIBCALL,
	NO_PROFILE_COUNTERS, SELECT_RTX_SECTION, INCOMING_RETURN_ADDR_RTX,
	DWARF_FRAME_RETURN_COLUMN, STRING_ASM_OP, TEXT_SECTION_ASM_OP,
	DATA_SECTION_ASM_OP, BSS_SECTION_ASM_OP, ASM_FILE_START,
	ASM_OUTPUT_DEF, ASM_OUTPUT_ADDR_VEC_ELT, ASM_OUTPUT_ADDR_DIFF_ELT,
	ASM_OUTPUT_LABEL, ASM_GLOBALIZE_LABEL, ASM_DECLARE_FUNCTION_NAME,
	TARGET_GAS): Define.
	* pa.c (output_arg_descriptor): Disable for TARGET_ELF32.
	(function_arg): If TARGET_ELF32, pass fp args in both general and fp
	regs if we don't have a prototype.
	* pa.md (canonicalize_funcptr_for_compare): Not for TARGET_ELF32.
	* pa.h (TARGET_ELF32): Default to 0 if undefined.
	(EH_RETURN_DATA_REGNO, EH_RETURN_STACKADJ_RTX,
	EH_RETURN_HANDLER_RTX): Define.
	* pa32-regs.h (DBX_REGISTER_NUMBER): Remove unnecessary test.
	(DWARF_FRAME_REGNUM): Define.
	* pa64-regs.h (DWARF_FRAME_REGNUM): Define.
	* pa32-linux.h: New file.
	* pa64-linux.h: New file.

	* pa-64.h (WCHAR_TYPE, WCHAR_TYPE_SIZE): Define.
	(ASM_OUTPUT_DOUBLE_INT): Format, protect macro with do..while.
	(LINK_SPEC, LIB_SPEC, MD_EXEC_PREFIX, MD_STARTFILE_PREFIX,
	NEW_HP_ASSEMBLER, ASM_FILE_START, OBJECT_FORMAT_ELF,
	DWARF2_DEBUGGING_INFO, PREFERRED_DEBUGGING_FORMAT,
	DWARF2_ASM_LINE_DEBUG_INFO, USE_CONST_SECTION, CONST_SECTION_ASM_OP,
	CTORS_SECTION_ASM_OP, DTORS_SECTION_ASM_OP, INIT_SECTION_ASM_OP,
	FINI_SECTION_ASM_OP, EXTRA_SECTIONS, EXTRA_SECTION_FUNCTIONS,
	READONLY_DATA_SECTION, CONST_SECTION_FUNCTION, CTORS_SECTION_FUNCTION,
	DTORS_SECTION_FUNCTION, ASM_OUTPUT_SECTION_NAME, MAKE_DECL_ONE_ONLY,
	UNIQUE_SECTION_P, UNIQUE_SECTION, INT_ASM_OP, ASM_OUTPUT_CONSTRUCTOR,
	ASM_OUTPUT_DESTRUCTOR, TYPE_ASM_OP, SIZE_ASM_OP, ASM_WEAKEN_LABEL,
	TYPE_OPERAND_FMT, ASM_DECLARE_RESULT): Move to..
	* pa64-hpux.h: New file.
	(ASM_FILE_START): Correct typo.
	(PREFERRED_DEBUGGING_FORMAT): Rename to PREFERRED_DEBUGGING_TYPE.
	* config.gcc: Modify for above.

Fri Apr 13 00:09:22 EDT 2001  John Wehle  (john@feith.com)

	* jump.c (jump_optimize_1): Don't delete dead stores here.
	* toplev.c (rest_of_compilation): Call delete_trivially_dead_insns
	prior to running jump optimize before cse2.

2001-04-12  Richard Henderson  <rth@redhat.com>

	* Makefile.in (regmove.o): Depend on except.h.
	* regmove.c: Include it.

2001-04-12  Stan Shebs  <shebs@apple.com>

	* objc/objc-act.c: Remove all code ifdefed with the never-used
	macro OBJC_INT_SELECTORS.
	* config/d30v/d30v.h: Remove commented-out ref to OBJC_INT_SELECTORS.
	* tm.texi: Remove doc for OBJC_INT_SELECTORS.

Thu Apr 12 18:13:37 2001  Rodney Brown  <RodneyBrown@mynd.com>

	* config/pa/quadlib.c: Add prototypes.

2001-04-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* bitmap.h (debug_bitmap): Delete redundant prototype.

	* rtl.h (get_frame_size): Likewise.

2001-04-12  Jim Wilson  <wilson@redhat.com>

	* config/ia64/ia64.md (extendsfdf2, extendsftf2, extenddftf2): Simplify
	to just emit an fnorm.

2001-04-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* c-common.h (truthvalue_conversion, type_for_mode,
	type_for_size): Delete redundant declarations.

	* c-lex.h (is_class_name): Likewise.

	* c-tree.h (pedantic, convert, getdecls, gettags,
	global_bindings_p, init_decl_processing, insert_block,
	maybe_build_cleanup, poplevel, print_lang_decl,
	print_lang_identifier, print_lang_type, pushdecl, pushlevel,
	set_block, incomplete_type_error, build_function_call,
	lvalue_or_else, mark_addressable): Likewise.

	* expr.h (expand_tree_builtin): Likewise.

2001-04-12  Mark Mitchell  <mark@codesourcery.com>

	* invoke.texi: Document --param max-gcse-memory.

2001-04-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* configure.in (errno): Check for declaration.
	* configure, config.in: Regenerated.

	* system.h (errno): Only declare if not already done.

2001-04-12  Alexandre Oliva  <aoliva@redhat.com>

	* recog.c (general_operand, immediate_operand,
	nonmemory_operand): Require CONST_INTs to be sign-extended
	values for their modes.

2001-04-12  Alexandre Oliva  <aoliva@redhat.com>

	* expmed.c (store_bit_field): Truncate CONST_INTs.
	(expand_mult_highpart, expand_divmod): Likewise.
	* expr.c (convert_modes, store_field): Likewise.
	* integrate.c (expand_inline_function): Use promote_mode() to
	determine whether to convert_modes() an argument as signed
	or unsigned.
	* optabs.c (expand_binop): Get CONST_INT operands
	sign-extended for their appropriate modes.
	* stmt.c (emit_case_nodes): Convert node values to the
	appropriate mode.
	(expand_end_case): Convert minval and range to the appropriate
	mode.
	* unroll.c (loop_iterations): Truncate abs_diff to the mode of
	the iteration variable.
	* varasm.c (immed_double_const): Don't require words to be
	narrower than host wide ints to properly sign-extend
	CONST_INTs.

2001-04-12  kaz Kojima  <kkojima@rr.iij4u.or.jp>

	* sh.md (builtin_setjmp_receiver): New expander.

2001-04-12  David Edelsohn  <dje@watson.ibm.com>

	* config/rs6000/rs6000.c (rs6000_emit_move): Do not
	special-case HOST_BITS_PER_WIDE_INT != 32.  Use same criteria
	for generating CONST_INT and CONST_DOUBLE.

2001-04-12  Alexandre Oliva  <aoliva@redhat.com>

	* config/rs6000/rs6000.c (logical_operand): CONST_INTs are
	already sign-extended.
	(rs6000_emit_prologue): Make register iterator signed.
	(rs6000_emit_epilogue): Likewise.
	* config/rs6000/rs6000.md (addsi3, adddi3): Sign-extend high
	and low.
	(movsf split, movdf split): Sign-extend CONST_INTs.
	(movdi splits): Likewise.

2001-04-12  Kelley Cook <kelley.cook@home.com>

	* config-lang.in (lang_dirs): Add in zlib.

2001-04-11  Alexandre Oliva  <aoliva@redhat.com>

	* config/i386/i386.md: Apply trunc_int_for_mode() to GEN_INT
	operands that make it to RTL.

2001-04-11  Stan Shebs  <shebs@apple.com>

	Add Darwin (Mac OS X kernel) native support.
	* config.gcc (powerpc-*-darwin*): Add native bits.
	* config/darwin.c: New file, generic Darwin support functions.
	* config/darwin.h: New file, generic Darwin definitions.
	* config/darwin-protos.h: New file, generic Darwin prototypes.
	* rs6000/darwin.h: New file, Darwin for PowerPC.
	* rs6000/t-darwin: New file, Darwin makefile fragment.
	* rs6000/rs6000.h (OBJECT_MACHO): New macro.
	(TARGET_MACHO): Ditto.
	(rs6000_abi): Add ABI_DARWIN.
	(RS6000_REG_SAVE): Add ABI_DARWIN case.
	(RS6000_SAVE_AREA): Ditto.
	(FP_ARG_MAX_REG): Ditto.
	(RETURN_ADDRESS_OFFSET): Ditto.
	* rs6000/rs6000.c (rs6000_legitimize_address): Add TARGET_MACHO
	cases.
	(rs6000_emit_move): Add ABI_DARWIN cases.
	(print_operand): Ditto.
	(first_reg_to_save): Ditto.
	(rs6000_stack_info): Ditto, also align stack by 16 instead of 8.
	(debug_stack_info): Ditto.
	(rs6000_emit_prologue): Ditto.
	(rs6000_emit_epilogue): Ditto.
	(output_profiler_hook): Ditto.
	(output_function_profiler): Ditto.
	(rs6000_add_gc_roots): Call machopic_add_gc_roots if TARGET_MACHO.
	(output_mi_thunk): Add TARGET_MACHO case.
	(add_compiler_stub): Ditto.
	(output_compiler_stub): Ditto.
	(no_previous_def): Ditto.
	(output_call): Ditto.
	(machopic_output_stub): Ditto.
	(rs6000_machopic_legitimize_pic_address): Ditto.
	(toc_section): Ditto.
	* rs6000/rs6000.md (addsi3_high): New TARGET_MACHO pattern.
	(macho_high): Ditto.
	(macho_low): Ditto.
	(movsi_low): Ditto.
	(load_macho_picbase): Ditto.
	(call): Add TARGET_MACHO case to modify function.
	(call_value): Ditto.
	(call_nonlocal_sysv): Add ABI_DARWIN case.
	(call_value_nonlocal_sysv): Ditto.
	* rs6000/rs6000-protos.h (rs6000_machopic_legitimize_pic_address):
	Add prototype.
	(machopic_output_stub): Ditto.
	* ginclude/stddef.h: Test _BSD_WCHAR_T_DEFINED_.

2001-04-11  Mark Mitchell  <mark@codesourcery.com>

	* dwarf2out.c (modified_type_die): Don't create new types here.
	* tree.h (get_qualified_type): New function.
	(build_qualified_type): Adjust comment.
	* tree.c (get_qualified_type): New function.
	(build_qualified_type): Use it.

2001-04-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* cpp.texi (-Wtraditional): Update description.

	* invoke.texi (-Wtraditional): Likewise.

2001-04-11  Jim Wilson  <wilson@redhat.com>

	* config/ia64/ia64.h (FUNCTION_ARG_BOUNDARY): Return 128 if argument
	requires more than 64 bits of alignment.

2001-04-11  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cpplib.c (do_line): Sanity check iff enable checking.

2001-04-11  Richard Henderson  <rth@redhat.com>

	* Makefile.in (insn-recog.o): Depend on toplev.h.
	(insn-emit.o, doloop.o): Likewise.
	* genrecog.c, genemit.c: Include toplev.h in generated file.
	* doloop.c: Include toplev.h.

2001-04-11  Mark Mitchell  <mark@codesourcery.com>

	* Makefile.in (gcse.o): Depend on params.h.
	* gcse.c: Include params.h.
	(gcse_main): Don't do GCSE if doing so will take inordinate
	amounts of memory.
	* params.def (PARAM_MAX_GCSE_MEMORY): New  parameter.
	* params.h (MAX_GCSE_MEMORY): New macro.

2001-04-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (insn-output.o): Depend on $(EXPR_H).

	* genoutput.c (output_prologue): Include expr.h in insn-output.c.

2001-04-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* output.h (assemble_real): Declare if REAL_VALUE_TYPE is defined.

	* real.h (ereal_atof, real_value_truncate, target_isnan,
	target_isinf, target_negative, assemble_real, debug_real): Delete
	redundant prototypes.

	* Makefile.in (ifcvt.o): Depend on toplev.h.

	* c-semantics.c: Include expr.h.

	* ifcvt.c: Include toplev.h.

	* expr.h (rtx_equal_p): Delete prototype.

	* rtl.h (exact_log2_wide, floor_log2_wide, permalloc,
	protect_from_queue, gen_jump, gen_beq, gen_bge, gen_ble,
	eliminate_constant_term, expand_complex_abs, find_single_use,
	make_tree, init_expr_once, init_optabs, supports_one_only):
	Likewise.

	* tree.h (exact_log2_wide, floor_log2_wide, expand_null_return,
	rest_of_type_compilation, emit_queue, do_pending_stack_adjust,
	expand_assignment, store_expr, emit_line_note_after,
	emit_line_note_force, split_specs_attrs, label_rtx): Likewise.

	* toplev.h (exact_log2_wide, floor_log2_wide): Add prototype.

	* sparc-protos.h: Delete redundant prototypes.

2001-04-11  Vladimir Makarov  <vmakarov@toke.toronto.redhat.com>

	* reload.c (push_reload): Add condition missed in SUBREG byte
	offset patch.

Wed Apr  4 00:28:23 2001  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* sparc/sol2-sld-64.h (STARTFILE_SPEC): Added missing blank.

Wed Apr 11 14:06:10 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (floatsisf_sse): Fix output template
	* i386.c (ix86_expand_fp_movcc)

	* reg-stack.c (emit_pop_insn): Handle complex modes.
	(move_for_stack_reg): Emit proper move mode.
	(subst_stack_regs_pat): Handle complex modes.

2001-04-11  Jakub Jelinek  <jakub@redhat.com>

	* cpplex.c (_cpp_lex_token): Only warn if -Wcomment.

2001-04-10  Richard Henderson  <rth@redhat.com>

	* libgcc2.h (__terminate_func_ptr): Remove typedef.
	(__pure_virtual, __terminate, __terminate_set_func,
	__default_terminate, __throw_type_match, __empty,
	__get_eh_context, __get_eh_info, __get_dynamic_handler_chain,
	__eh_rtime_match, __unwinding_cleanup, __rethrow,
	__sjthrow, __sjpopnthrow, __eh_alloc, __eh_free):
	Remove prototypes of deleted functions.

2001-04-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* c-typeck.c (convert_arguments): -Wtraditional now activates
	-Wconversion warnings, except for changes in signed-ness.
	Detect complex<->int & int<->complex conversions as well.

	* invoke.texi (-Wtraditional): Document it.

Tue Apr 10 17:45:50 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* gcse.c (update_ld_motion_stores): Don't use variable I for an insn.
	* flow.c (set_block_for_new_insns): Remove needless cast and
	properly check for unset block number.

2001-04-10  Andrew MacLeod  <amacleod@redhat.com>

	* function.c (purge_single_hard_subreg_set): Only check REGNO if
	the subreg was a hard register. Pseudos are left as subregs.

2001-04-09  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* Makefile.in (LIB2FUNCS_STATIC_EXTRA): New macro.
	(LIB2ADD_ST): New macro, pass it to mklibgcc.
	* mklibgcc.in (libgcc2_st_objs): New variable, set it from LIB2ADD_ST.
	(libgcc_st_objs): New, set from libgcc2_st_objs. Use it for libgcc.a.
	* config/rs6000/t-ppccomm (LIB2FUNCS_STATIC_EXTRA): New macro.

2001-04-09  Bo Thorsen  <bo@suse.co.uk>

	* config/i386/i386.md: "TARGET_64BIT && TARGET_64BIT": Removed one.

2001-04-09  Andrew MacLeod  <amacleod@redhat.com>

	* output.h (set_block_num): Missed it earlier, remove deprecated
	prototype.

2001-04-09  Andrew MacLeod  <amacleod@redhat.com>

	* gcse.c (oprs_unchanged_p): Pass basic_block to load_killed_in_block_p.
	(load_killed_in_block_p): Change bb parameter from int to basic_block.
	(oprs_not_set_p): Pass basic_blocks instead of ints as parameters.
	(handle_rd_kill_set): Change bb parameter from int to basic_block.
	(compute_kill_rd): Pass basic_blocks instead of ints as parameters.
	(expr_killed_p): Change bb parameter from int to basic_block, pass
	basic_blocks instead of ints as parameters.
	(compute_ae_kill): Pass basic_blocks instead of ints as parameters.
	(expr_reaches_here_p_work, expr_reaches_here_p): Change bb parameter
	from int to basic_block, pass basic_blocks instead of ints as parms.
	(pre_expr_reaches_here_p_work, pre_expr_reaches_here_p): Change bb
	parameter from int to basic_block, pass basic_blocks instead of ints.
	(process_insert_insn): Pass basic_blocks instead of ints as parameters.
	(insert_insn_end_bb): Change bb parameter from int to basic_block,
	pass basic_blocks instead of ints.
	(pre_edge_insert, pre_insert_copy_insn, pre_insert_copies): Pass
	basic_blocks instead of ints as parameters.
	(pre_delete): Pass basic_blocks instead of ints as parameters.
	(hoist_expr_reaches_here_p): Change bb parameter from int to
	basic_block, pass basic_blocks instead of ints.
	(hoist_code): Pass basic_blocks instead of ints as parameters.
	(reg_set_info, store_ops_ok, store_killed_after, store_killed_before):
	Change bb parameter from int to basic_block.
	(build_store_vectors): Pass basic_blocks instead of ints as parameters.
	(insert_insn_start_bb): Change bb parameter from int to basic_block,
	pass basic_blocks instead of ints.
	(insert_store): Pass basic_blocks instead of ints as parameters.
	(replace_store_insn, delete_store): Change bb parameter from int to
	basic_block, pass basic_blocks instead of ints.
	(store_motion): Pass basic_blocks instead of ints as parameters.

2001-04-09  Andrew MacLeod  <amacleod@redhat.com>

	* basic-block.h (set_new_block_for_insns): New Prototype.
	(set_block_num): Delete prototype.
	* flow.c (set_block_num): Remove obsolete function.
	(set_block_for_new_insns): Set BB for single or multiple insns.
	* gcse.c (handle_avail_expr): Use set_block_for_new_insns.
	(process_insn_end_bb): Use set_block_for_new_insns or
	set_block_for_insn instead of set_block_num.
	(pre_insert_copy_insn): Use set_block_for_new_insns.
	(update_ld_motion_stores): Use set_block_for_new_insns.
	(insert_insn_start_bb): Use set_block_for_new_insns.
	(replace_store_insn): Use set_block_for_new_insns.

2001-04-09  Andrew MacLeod  <amacleod@redhat.com>
	    Jeff Law  <law@redhat.com>

	* alias.c (get_addr): Externalize.
	(canon_true_dependence): New function. Behaves like true_dependance
	except it already assumes a MEM has been canonicalized.
	* flags.h (flag_gcse_lm, flag_gcse_sm): New optimization flags.
	* gcse.c (struct ls_expr): Add load/store expressions structure.
	(modify_mem_list, canon_modify_mem_list): New variable.
	(gcse_main): Initialize & finalize alias analysis. Use enhanced
	load motion and store motion if requested.
	(alloc_gcse_mem): Allocate space for modify_mem_list array.
	(free_gcse_mem): Free the modify_mem_list array.
	(oprs_unchanged_p): Use load_killed_in_block_p.
	(gcse_mems_conflict_p, gcse_mem_operand): New variables.
	(mems_conflict_for_gcse_p): New function.  Don't kill loads
	with stores to themselves if its in the load/store expression list.
	(load_killed_in_block_p): New function.
	(canon_list_insert): New Function.
	(record_last_mem_set_info): Keep a list of all instructions which
	can modify memory for each basic block.
	(compute_hash_table, reset_opr_set_tables): Clear modify_mem_list.
	(oprs_not_set_p): Use load_killed_in_block_p.
	(mark_call, mark_set, mark_clobber): Use record_last_mem_set_info.
	(expr_killed_p): Use load_killed_in_block_p.
	(compute_transp): Do not pessimize memory references.
	(pre_edge_insert): Update stores for a load motion expression.
	(one_pre_gcse_pass): Check loads/stores for extra load motion.
	(ldst_entry): Find or create a ldst_expr structure.
	(free_ldst_entry): Free memory for an individual item.
	(free_ldst_mems): Free entire load/store expression list.
	(print_ldst_list): Print debug info.
	(find_rtx_in_ldst): Try to find an rtx expression in the ldst list.
	(enumerate_ldsts): Assign integer values to each entry in list.
	(first_ls_expr): First expression in the list.
	(next_ls_expr): Next expression in the list.
	(simple_mem): Check if expression qualifies for ld/st expression list.
	(invalidate_any_buried_refs): Remove from expression list if its
	used in some other way we don't understand.
	(compute_ld_motion_mems): Find all potential enhanced load motion
	expression.
	(trim_ld_motion_mems): Remove any expressions which are invalid.
	(update_ld_motion_stores): Copy store values to registers for loads
	which have been moved.
	(regvec, st_antloc, num_store): New global statics.
	(reg_set_info): Marks registers as set.
	(store_ops_ok): Verfies registers expressions are valid in a block.
	(find_moveable_store): Look for moveable stores in a pattern.
	(compute_store_table): Find stores in a function worth moving, maybe.
	(load_kills_store): Check dependence of a load and store.
	(find_loads): Find any loads in a pattern.
	(store_killed_in_insn): Check if a store is killed in an insn.
	(store_killed_after): Check is store killed after an insn in a block.
	(store_killed_before): Check is store killed before an insn in a block.
	(build_store_vectors): Generate the antic and avail vectors.
	(insert_insn_start_bb): Insert at the start of a BB, update BLOCK_HEAD.
	(insert_store): Add a store to an edge.
	(replace_store_insn): Replace a store with a SET insn.
	(delete_store): Delete a store insn.
	(free_store_memory): Free memory.
	(store_motion): Perform store motion.
	* invoke.texi: Add documentation for -fcse-lm and -fgcse-sm.
	* rtl.h (get_addr, canon_true_dependence): Add prototypes.
	* toplev.c (flag_gcse_lm, flag_gcse_sm): New Variables.
	(f_options): Add gcse-lm and gcse-sm.

Mon Apr  9 16:18:03 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.c (expand_fp_movcc): Fix condition reversal code.

	* i386.c (ix86_register_move_cost): Fix handling of reformating penalty
	* i386.h (INTEGER_CLASS_P, MAYBE_INTEGER_CLASS_P): New.
	(CLASS_MAX_NREGS): Use it.

	* i386.h (HARD_REGNO_NREGS): Handle properly TF and TCmodes on 64bit;
	handle properly complex values.
	(CLASS_MAX_NREGS): Likewise; update comment.

2001-04-05  Bernd Schmidt  <bernds@redhat.com>

	* ia64.c (ia64_flag_schedule_insns2): New variable.
	(ia64_override_options): Initialize it.  Clear
	flag_schedule_insns_after_reload.
	(ia64_reorg): Only do scheduling if ia64_flag_schedule_insns2.

Mon Apr  9 15:09:13 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (truncdfsf2_*): Add i387->int/sse reg alternatives;
	Do not require source to match destination anymore;
	Add abort to the nontrivial cases that should be handled by split.
	(fix_trunc?fdi): Add SSE case for x86_64.
	(floatdi?f): Likewise.
	(floatdi?f_sse): New.
	(fix_trunc?fdi_sse): New.

2001-04-09  Richard Sandiford   <rsandifo@redhat.com>

	* dwarfout.c (DEBUG_ARANGES_BEGIN_LABEL): New label.
	(DEBUG_ARANGES_END_LABEL): Ditto.
	(dwarfout_init): Generate length and version fields at the start
	of the .debug_aranges info.  Insert DEBUG_ARANGES_BEGIN_LABEL
	after the length field.
	(dwarfout_finish): Insert DEBUG_ARANGED_END_LABEL at the end of
	the .debug_aranges info.

Sun Apr  8 00:43:27 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.c (call, call_value): Make sure that resulting call_insn
	does have proper second operand.

Sun Apr  8 22:50:49 2001  Christopher Faylor <cgf@cygnus.com>

	* config/i386/xm-cygwin.h (GET_ENV_PATH_LIST): Eliminate obsolete
	function.  Remove include of sys/cygwin.h.

Sun Apr  8 22:20:27 2001  Christopher Faylor <cgf@cygnus.com>

	* config/i386/cygwin.h (STARTFILE_SPEC): search */lib/w32api by default.
	(CPP_SPEC): Always search */include/w32api for header files.
	(ASM_OUTPUT_SECTION_NAME): Avoid testing NULL DECL.
	(LINK_SPEC): Add "cyg" to the library search prefixes.

2001-04-08  Philip Blundell  <philb@gnu.org>

	* config/arm/arm.h (ASM_OUTPUT_LABELREF): Use asm_fprintf.

2001-04-08  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cpperror.c (print_location): Don't special case <stdin>.
	(_cpp_begin_message): Handle WARNING_SYSHDR the same as
	WARNING, but we don't check if we're in system headers.
	* cpplib.h (enum error_type): WARNING_SYSHDR: New.
	* cpplib.c (do_warning): Warn in system headers.

2001-04-07  Mumit Khan <khan@NanoTech.Wisc.EDU>

	* mbchar.c: Include config.h first.

2001-04-07  Zack Weinberg  <zackw@stanford.edu>

	* config.gcc: Set default for xmake_file at top, not bottom.
	Change places that set xmake_file to "none" to set to the
	empty string instead, or remove them entirely if there is no
	default xmake_file for this cpu_type.  Remove references to
	deleted files.

	* config/x-lynx, config/convex/x-convex, config/elxsi/x-elxsi,
	config/i386/x-isc, config/i386/x-isc3, config/i386/x-ncr3000,
	config/i386/x-next, config/i386/x-sco, config/i386/x-sysv3,
	config/i386/x-vsta, config/i860/x-sysv4, config/m68k/x-amix,
	config/m68k/x-apollo68, config/m68k/x-ccur, config/m68k/x-crds,
	config/m68k/x-hp2bsd, config/m68k/x-mot3300, config/m68k/x-mot3300-gas,
	config/m68k/x-tower, config/m88k/x-sysv4, config/mips/x-dec-osf1,
	config/mips/x-sni-svr4, config/mips/x-ultrix, config/romp/x-mach,
	config/romp/x-romp, config/rs6000/x-beos, config/rs6000/x-lynx,
	config/rs6000/x-mach, config/rs6000/x-sysv4, config/sparc/x-sysv4:
	Delete.

	* config/a29k/x-unix, config/i386/x-aix, config/i386/x-osf1elf,
	config/i386/x-osfrose, config/m68k/x-dpx2, config/mips/x-iris3,
	config/mips/x-mips, config/mips/x-osfrose, config/mips/x-sony,
	config/mips/x-sysv, config/rs6000/x-aix31:
	Just set CLIB to -lld or -lmld, as appropriate.

	* config/arm/x-riscix, config/i370/x-oe, config/i386/x-dgux,
	config/i386/x-sco4, config/i386/x-sco5, config/m68k/x-hp320,
	config/m68k/x-hp320g, config/m68k/x-next, config/m88k/x-dgux,
	config/mips/x-iris, config/pa/x-pa:
	Just set (some of) FIXPROTO_DEFINES, STMP_FIXPROTO,
	OTHER_FIXINCLUDES_DIRS.

	* config/i386/x-djgpp: Don't set LN or LN_S.
	* config/m88k/x-dolph: Don't define __m88k__.
	* config/m88k/x-tekXD88: Don't set AR_FLAGS.
	* config/pa/x-pa-mpeix: Just set up quadlib.asm.
	* config/i860/fx2800.h: No need to #undef SVR4.

	38 x-host fragments remain, 2 x-cpu.

2001-04-07  Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>

	* c4x.h (HARD_REGNO_NREGS): HCmode mode uses 2 regs not 4.

2001-04-06  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cpplib.c (cpp_push_buffer): Give stdin buffers the name <stdin>.

2001-04-06  Neil Booth  <neil@daikokuya.demon.co.uk>

	* configure.in: Add check for lstat.
	* configure, config.in: Regenerate.
	* cppinit.c (append_include_chain): Make empty path ".".
	* cpplib.c (do_line): Don't simplify #line paths.
	* cppfiles.c (remove_component_p): New function.
	(find_or_create_entry): Acknowledge stat () errors during
	path simplification.
	(handle_missing_header): Don't simplify paths.
	(_cpp_simplify_pathname): Don't simplify VMS paths.  Return
	the empty path untouched.  Don't leave a trailing '/'.

2001-04-06  Benjamin Kosnik  <bkoz@redhat.com>

	* cppdefault.c (GPLUSPLUS_BACKWARD_INCLUDE_DIR): Add.
	* Makefile.in (-DGPLUSPLUS_BACKWARD_INCLUDE_DIR): Add.

2001-04-06  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cppfiles.c (open_file): Fail directories silently, but
	with an errno of NOENT set.
	(read_include_file): Move the common exit code to the sole
	caller.  Return an int indicating success or failure.  Let
	open_file handle directories.
	(stack_include_file): If read_include_file fails,
	push a "null" buffer.

2001-04-05  DJ Delorie  <dj@redhat.com>

	* function.h (virtuals_instantiated): Declare.
	* function.c: (virtuals_instantiated): Make global.
	* calls.c (emit_library_call_value_1): Use
	virtual_outgoing_args_rtx only if it hasn't been instantiated.
	Otherwise, use the stack pointer directly.

Thu Apr  5 19:13:33 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.c (x86_initialize_trampoline): New global function.
	* i386.h (TRAMPOLINE_SIZE): Size is 23 for x86_64.
	(INITIALIZE_TRAMPOLINE): Move offline.
	* i386-protos.h (x86_initialize_trampoline): Declare.

Thu Apr  5 19:02:15 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (movdi_1_rex64): Allow SSE->SSE reg move.
	(lea_0): Rename to lea_1.
	(lea_1_zext, lea_1_rex64, lea_2_rex64): New patterns.
	(lea_general_?): Allow SImodes on TARGET_64BIT
	(lea_general_?_zext): New patterns.
	(call_1, call_1_rex64): Fix.

Thu Apr  5 19:00:15 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.c (ix86_split_long_move): Use PUT_MODE instead of change_address.

Thu Apr  5 18:25:56 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.c (function_arg): Return constm1_rtx for last argument.
	(ix86_expand_prologue): Update gen_call calls.
	* i386.h (FUNCTION_BLOCK_PROFILER_EXIT): Likewise.
	* i386.md (call_pop): Likewise.
	(call): Second operand is VOIDmode.
	(call_0): Likewise; Support 64bits.
	(call_exp): New expander.
	(call_1): Get to the sync.
	(call_1_exp): New pattern.
	(call_value): Support 64bit.
	(call_value_exp): New pattern.
	(untyped_call): Update gen_call call.
	(call_value_pop): Disable for 64bit.
	(call_value_0_rex64): New pattern.
	(call_value_1_rex64): Likewise.

2001-04-05  Bo Thorsen  <bo@suse.de>

	* i386.md: Don't allow "builtin_setjmp_receiver" for TARGET_64BIT.

Thu Apr  5 13:44:17 2001  J"orn Rennecke <amylaar@redhat.com>

	* i386.md (*andsi_1+3): If used after reload, make sure the operand
	satisfies ANY_QI_REG_P.

2001-04-05  Bernd Schmidt  <bernds@redhat.com>

	* config/ia64/ia64.c (rtx_needs_barrier): A PARALLEL can contain
	ASM_OPERAND.

	* sched-deps.c (sched_analyze_insn): Revert more of the March 27
	change.

2001-04-04  Zack Weinberg  <zackw@stanford.edu>

	* config.gcc: Remove default for xm_file.  Clean up local
	machine type handling.  Remove settings of xm_file to
	something that doesn't exist.  In the big switch, set xm_file,
	don't append to it (the value before the big switch is always
	null).  Don't force build_xm_file or host_xm_file to have a value.
	* configure.in: Remove default for xm_file.  Do not special
	case $cpu/xm-$cpu.h not existing.
	* configure: Regenerate.

2001-04-04  Diego Novillo  <dnovillo@redhat.com>

	* simplify-rtx.c (simplify_binary_operation): Check for overflow
	when folding integer division and modulo operations.

2001-04-04  Andrew MacLeod  <amacleod@redhat.com>

	* dwarf2out.c (output_cfi): Add 'for_eh' parameter, use PTR_SIZE
	instead of DWARF2_ADDR_SIZE for EH addresses.
	(output_call_frame_info): Use PTR_SIZE instead of DWARF2_ADDR_SIZE for
	EH addresses.

2001-04-04  Richard Henderson  <rth@redhat.com>

	* config/ia64/ia64.h (IA64_UNWIND_INFO): Disable.
	* config/ia64/t-glibc (LIB2ADDEH): Disable.
	* config/ia64/t-ia64 (LIB2ADDEH): Disable.

2001-04-04  Richard Henderson  <rth@redhat.com>

	* configure.in (gcc_cv_as_leb128): Escape "." in regexp.
	* configure: Rebuilt.

2001-04-04  Jakub Jelinek  <jakub@redhat.com>

	* gcse.c (delete_null_pointer_checks_1): Add delete_list argument,
	push insns to delete to it instead of deleting them.
	(delete_null_pointer_checks): Delete insns from delete_list after
	all delete_null_pointer_checks_1 passes are done.

2001-04-04  Richard Henderson  <rth@redhat.com>

	* configure.in (gcc_cv_as_leb128): Tweek minor number extraction.
	* configure: Rebuilt.

2001-04-04  Zack Weinberg  <zackw@stanford.edu>

	* expr.h: Remove #ifdef FUNCTION_CONVERSION_BUG logic.
	* config/romp/xm-romp.h: Delete.

2001-04-04  Bernd Schmidt  <bernds@redhat.com>

	* sched-deps.c (sched_analyze_insn): Partially revert March 27
	change.

2001-04-04 Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>

	* emit-rtl.c (mark_label_nuses) Increment the label uses for
	all labels present in rtx.
	(try_split) Call new function for all split insns.

2001-04-04  Jakub Jelinek  <jakub@redhat.com>

	* recog.c (validate_replace_rtx_1): Instead of aborting just make
	sure the change won't be validated.

Wed Apr  4 00:45:38 EDT 2001  John Wehle  (john@feith.com)

	* rtl.h (set_noop_p): Declare.
	* flow.c (set_noop_p): Move from here ...
	* rtlanal.c (set_noop_p): ... to here and enhance.
	* cse.c (delete_trivially_dead_insns): Use it.
	* gcse.c (hash_scan_set): Likewise.
	* jump.c (delete_noop_moves): Likewise.
	* recog.c (split_all_insns): Likewise.

2001-04-04  Alan Modra  <alan@linuxcare.com.au>

	* dwarf2out.c (dwarf2out_frame_debug_expr): Support adjusting
	stack pointer via a LO_SUM.  Ditto for setting a temp register
	used to save to the stack.  Set cfa_temp when setting fp, and
	allow matches to cfa_temp in addition to cfa_store when saving
	regs.  Handle POST_INC and LO_SUM register stores.  Document the
	changes and errors in rule 12 doco.

	* pa.c (set_reg_plus_d, store_reg, load_reg): Return last insn.
	(actual_fsize, local_fsize, save_fregs): Move for store_reg to see.
	(load_reg): Move closer to epilogue code.
	(DO_FRAME_NOTES): Define to control the following..
	(FRP): Define to set RTX_FRAME_RELATED_P on insns.
	(hppa_expand_prologue): Use FRP and REG_FRAME_RELATED_EXPR
	notes as necessary.
	(hppa_expand_epilogue): Likewise.

2001-04-03  Richard Henderson  <rth@redhat.com>

	* configure.in (gcc_cv_as_leb128): Reject gas before 2.11.
	* configure: Rebuild.

2001-04-03  Richard Henderson  <rth@redhat.com>

	* rtl.h (LCT_THROW): New.
	* calls.c (emit_library_call_value_1): Handle it.
	* except.c (connect_post_landing_pads): Use it.

2001-04-03  Zack Weinberg  <zackw@stanford.edu>

	* gansidecl.h: Delete file.
	* configure.in: Change all refs to gansidecl.h to use
	ansidecl.h.  Adjust *_file_list so they know where ansidecl.h
	lives.
	* configure: Regenerate.

	* Makefile.in (intl.o): Don't depend on gansidecl.h.
	* defaults.h: s/gansidecl.h/ansidecl.h/ in comment.
	* ggc.h, config/fr30/fr30.h, config/mcore/mcore.c:
	Don't include gansidecl.h.
	* intl.c, main.c, version.c, fixinc/fixlib.h,
	fixinc/procopen.c, fixinc/server.c: Include ansidecl.h not
	gansidecl.h.

Tue Apr  3 19:41:21 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.c (ix86_force_to_memory, ix86_free_from_memory):
	Update for 64bit.

2001-04-03  Zack Weinberg  <zackw@stanford.edu>

	* config/i386/xm-beos.h, config/i386/xm-isc.h,
	config/i386/xm-next.h, config/i386/xm-sco.h,
	config/i386/xm-sco5.h, config/m68k/xm-plexus.h,
	config/m88k/xm-m88k.h: Delete.

	* config/i386/xm-djgpp.h: Don't define __MSDOS__.
	* config/romp/xm-romp.h: Don't define bcopy.
	* config/rs6000/xm-beos.h: Don't define bcopy, HAVE_VPRINTF,
	HAVE_PUTENV, HAVE_RENAME, or USE_C_ALLOCA.

	* config.gcc: Remove references to deleted files.

	14 xm-host.h remain, 1 xm-cpu.h.

2001-04-03  Jakub Jelinek  <jakub@redhat.com>
	    David S. Miller  <davem@pierdol.cobaltmicro.com>
	    Andrew MacLeod  <amacleod@redhat.com>

	Use byte offsets in SUBREGs instead of words.

	* alias.c (nonlocal_mentioned_p): Use subreg_regno function.
	* caller-save.c (mark_set_regs): Change callers of subreg_hard_regno
	to pass new argument.
	(add_stored_regs): Use subreg_regno_offset function.
	* calls.c (expand_call): For non-paradoxical SUBREG take endianess
	into account.
	(precompute_arguments): Use gen_lowpart_SUBREG.
	* combine.c (try_combine): Replace explicit XEXP with SUBREG_REG.
	(combine_simplify_rtx): Rework to use SUBREG_BYTE.
	(simplify_set): Rework to use SUBREG_BYTE.
	(expand_field_assignment): Use SUBREG_BYTE.
	(make_extraction): Use SUBREG_BYTE.
	(if_then_else_cond): Use SUBREG_BYTE.
	(apply_distributive_law): Use SUBREG_BYTE and fixup subreg comments.
	(gen_lowpart_for_combine): Compute full byte offset.
	* cse.c (mention_regs): Use SUBREG_BYTE.
	(remove_invalid_subreg_refs): Rework to use SUBREG_BYTE.
	(canon_hash): Use SUBREG_BYTE.
	(fold_rtx): Pass SUBREG_BYTE div UNITS_PER_WORD to operand_subword.
	(gen_lowpart_if_possible): Formatting.
	* dbxout.c (dbxout_symbol_location): Compute SUBREG hard regnos
	correctly.
	* dwarf2out.c (is_pseudo_reg): Fixup explicit XEXP into SUBREG_REG
	(mem_loc_descriptor): Fixup explicit XEXP into SUBREG_REG
	(loc_descriptor): Fixup explicit XEXP into SUBREG_REG
	* dwarfout.c (is_pseudo_reg): Fixup explicit XEXP into SUBREG_REG
	(output_mem_loc_descriptor): Fixup explicit XEXP into SUBREG_REG
	(output_loc_descriptor): Fixup explicit XEXP into SUBREG_REG
	* emit-rtl.c (gen_rtx_SUBREG): New function, used to verify
	certain invariants about SUBREGs the compiler creates.
	(gen_lowpart_SUBREG): New function.
	(subreg_hard_regno): New function to get the final register number.
	(gen_lowpart_common): Use SUBREG_BYTE.
	(gen_imagpart): Spacing nits.
	(subreg_realpart_p): Use SUBREG_BYTE.
	(gen_highpart): Use SUBREG_BYTE.
	(subreg_lowpart_p): Always compute endian corrected goal offset,
	even at the byte level, then compare against that.
	(constant_subword): New function, pulled out all constant cases
	from operand_subword and changed second argument name to offset.
	(operand_subword): Detect non REG/SUBREG/CONCAT/MEM cases early
	and call constant_subword to do the work.  Return const0_rtx if
	looking for a word outside of OP.
	(operand_subword_force): Change second arg name to offset.
	* expmed.c (store_bit_field): Use SUBREG_BYTE.
	(store_split_bit_field): Use SUBREG_BYTE.
	(extract_bit_field): Use SUBREG_BYTE.
	(extract_split_bit_field): Use SUBREG_BYTE.
	(expand_shift): Use SUBREG_BYTE.
	* expr.c (store_expr, expand_expr): Use gen_lowpart_SUBREG.
	* final.c (alter_subreg) Use subreg_hard_regno and SUBREG_BYTE.
	* flow.c (set_noop_p): Use SUBREG_BYTE.
	(mark_set_1): Remove ALTER_HARD_SUBREG. Use subreg_regno_offset instead.
	* function.c (fixup_var_refs_1): Fixup explicit XEXP into a SUBREG_REG.
	(fixup_memory_subreg): Use SUBREG_BYTE and remove byte endian
	correction code.
	(optimize_bit_field): Use SUBREG_BYTE.
	(purge_addressof_1): Use SUBREG_BYTE.
	(purge_single_hard_subreg_set): Use subreg_regno_offset function.
	(assign_params): Mark arguments SUBREG_PROMOTED_VAR_P if they are
	actually promoted by the caller and PROMOTE_FOR_CALLS_ONLY is true.
	* gengenrtl.c (special_rtx): Add SUBREG.
	* global.c (mark_reg_store): Use SUBREG_BYTE.
	(set_preference): Rework to use subreg_regno_offset and SUBREG_BYTE.
	* ifcvt (noce_emit_move_insn): Use SUBREG_BYTE.
	* integrate.c (copy_rtx_and_substitute): Use SUBREG_BYTE and make sure
	final byte offset is congruent to subreg's mode size.
	(subst_constants): Use SUBREG_BYTE.
	(mark_stores): Use subreg_regno_offset function.
	* jump.c (rtx_renumbered_equal_p, true_regnum): Use subreg_regno_offset
	function and SUBREG_BYTE.
	* local-alloc.c (combine_regs): Use subreg_regno_offset function.
	(reg_is_born): Use subreg_hard_regno.
	* recog.c (valid_replace_rtx_1): Use SUBREG_BYTE and remove byte
	endian correction code.  Don't combine subregs unless resulting
	offset aligns with type.  Fix subreg constant extraction for DImode.
	Simplify SUBREG of VOIDmode CONST_DOUBLE.
	(general_operand): Remove dead mode_altering_drug code.
	(indirect_operand): Use SUBREG_BYTE.
	(constrain_operands): Use subreg_regno_offset function.
	* reg-stack.c (get_true_reg): Use subreg_regno_offset function.
	* regmove.c (regmove_optimize): Use SUBREG_BYTE.
	(optimize_reg_copy_3): Use gen_lowpart_SUBREG.
	* regs.h (REG_SIZE): Allow target to override.
	(REGMODE_NATURAL_SIZE): New macro which target can override.
	* reload.c (reload_inner_reg_of_subreg): subreg_regno should be used
	on the entire subreg rtx.
	(push_reload): Use SUBREG_BYTE in comments and code.
	(find_dummy_reload): Use subreg_regno_offset.  Only adjust offsets
	for hard registers inside subregs.
	(operands_match_p): Use subreg_regno_offset.
	(find_reloads): Use SUBREG_BYTE and only advance offset for subregs
	containing hard regs.
	(find_reload_toplev): Use SUBREG_BYTE.  Remove byte endian
	corrections when fixing up MEM subregs.
	(find_reloads_address_1): Use SUBREG_BYTE, subreg_regno, and
	subreg_regno_offset where appropriate.
	(find_reloads_subreg_address): Use SUBREG_BYTE.  Remove
	byte endian corrections when fixing up MEM subregs.
	(subst_reloads): When combining two subregs, make sure final
	offset is congruent to subreg's mode size.
	(find_replacement): Use SUBREG_BYTE and subreg_regno_offset.
	(refers_to_regno_for_reload_p): Use subreg_regno.
	(reg_overlap_mentioned_for_reload_p): Use subreg_regno_offset.
	* reload1.c (eliminate_regs) Use SUBREG_BYTE. Remove byte endian
	correction code for memory subreg fixups.
	(forget_old_reload_1): Use subreg_regno_offset.
	(choose_reload_regs): Use subreg_regno.
	(emit_input_reload_insns): Use SUBREG_BYTE.
	(reload_combine_note_store): Use subreg_regno_offset.
	(move2add_note_store): Use subreg_regno_offset.
	* resource.c (update_live_status, mark_referenced_resources): Use
	subreg_regno function.
	(mark_set_resources): Use subreg_regno function.
	* rtl.h (SUBREG_WORD): Rename to SUBREG_BYTE.
	(subreg_regno_offset, subreg_regno): Define prototypes.
	(subreg_hard_regno, constant_subword, gen_rtx_SUBREG): Newi functions.
	(gen_lowpart_SUBREG): Add prototype.
	* rtl.texi (subreg): Update to reflect new byte offset representation.
	Add mentioning of the effect that BYTES_BIG_ENDIAN has on subregs now.
	* rtlanal.c (refers_to_regno_p): Use subreg_regno.
	(reg_overlap_mentioned_p): Use subreg_regno.
	(replace_regs); Make sure final offset of combined subreg is
	congruent to size of subreg's mode.
	(subreg_regno_offset): New function.
	(subreg_regno): New function.
	* sched-vis.c (print_value): Change SUBREG_WORD to SUBREG_BYTE.
	* sdbout.c (sdbout_symbol): Compute offset using alter_subreg.
	* stmt.c (expand_anon_union_decl): Use gen_lowpart_SUBREG.
	* tm.texi (ALTER_HARD_SUBREG): Remove, it is now dead.
	(SUBREG_REGNO_OFFSET): Describe SUBREG_REGNO_OFFSET overrides.
	* config/a29k/a29k.c (gpc_reg_operand): Use subreg_regno.
	(a29k_get_reloaded_address): Use SUBREG_BYTE.
	(print_operand): Use SUBREG_BYTE.
	* config/alpha/alpha.c (print_operand_address): Use SUBREG_BYTE.
	* config/arm/arm.c (arm_reload_in_hi): Use SUBREG_BYTE.
	(arm_reload_out_hi): Use SUBREG_BYTE.
	* config/d30v/d30v.c (d30v_split_double): Use subreg_regno_offset
	instead of SUBREG_WORD.
	(d30v_print_operand_memory_reference): Use subreg_regno_offset.
	* config/dsp16xx/dsp16xx.md (extendqihi2, zero_extendqihi2): Fix
	SUBREG creation to use byte offset.
	* config/h8300/h8300.md (Unnamed HImode zero extraction and 16bit
	inverted load insns): Fix explicit rtl subregs to use byte
	offsets.
	* config/i370/i370.md (cmpstrsi, movstrsi, mulsi3, divsi3,
	udivsi3, umodsi3): Generate SUBREGs with byte offsets.
	* config/i860/i860.c (single_insn_src_p): Use SUBREG_BYTE.
	* config/i860/i860.md (mulsi3_big): Fixup explicit SUBREGs in rtl
	to use byte offsets.
	(unnamed fmlow.dd insn): Fixup SUBREGS to use byte offsets.
	* config/i960/i960.md (extendhisi2): Generate SUBREGs with byte
	offsets, also make sure it is congruent to SUBREG's mode size.
	(extendqisi2, extendqihi2, zero_extendhisi2, zero_extendqisi2,
	unnamed ldob insn): Generate SUBREGs with byte offset.
	(zero_extendqihi2): SUBREG's are byte offsets.
	* config/m68hc11/m68hc11.c (m68hc11_gen_lowpart): Use SUBREG_BYTE.
	(m68hc11_gen_highpart): Use SUBREG_BYTE.
	* config/m68k/m68k.md (zero_extendhisi2, zero_extendqihi2,
	zero-extendqisi2): Generate SUBREGs with byte offset.
	(umulsidi3, mulsidi3, subreghi1ashrdi_const32,
	subregsi1ashrdi_const32, subreg1lshrdi_const32): Fixup explicit
	subregs in rtl to use byte offsets.
	* config/m88k/m88k.md (extendsidi2): fixup subregs to use byte offset.
	* config/mips/mips.c (mips_move_1word): Use subreg_regno_offset.
	(mips_move_2words): Use subreg_regno_offset.
	(mips_secondary_reload_class): Use subreg_regno_offset.
	* config/mips/mips.md (DImode plus, minus, move, and logical op
	splits): Fixup explicit subregs in rtl to use byte offsets.
	* config/mn10200/mn10200.c (print_operand): Use subreg_regno function.
	* config/mn10300/mn10300.c (print_operand): Use subreg_regno function.
	* config/ns32k/ns32k.md (udivmoddisi4): Fix explicit subregs in
	rtl to use byte offsets.
	* config/pa/pa.c (emit_move_sequence): Use SUBREG_BYTE.
	* config/pa/pa.md (floatunssisf2, floatunssidf2, mulsi3): fix explicit
	subregs to use byte offsets.
	* config/pdp11/pdp11.md (zero_extendhisi2, modhi3, modhi3+1):
	Fixup explicit subregs in rtl to use byte offsets.
	* config/romp/romp.c (memory_offset_in_range_p): Use SUBREG_BYTE
	and remove byte endian correction code.
	* config/sh/sh.c (output_movedouble): Use subreg_regno.
	(gen_ashift_hi): Use SUBREG_BYTE.
	(regs_used): Use subreg_regno_offset.
	(machine_dependent_reorg): Use subreg_regno_offset.
	* config/sh/sh.h (INDEX_REGISTER_RTX_P): Use SUBREG_BYTE.
	* config/sh/sh.md (DImode and DFmode move splits): Use subreg_regno.
	(movdf_i4): Subregs are byte offsets now.
	* config/sparc/sparc.c (ultra_find_type): Use SUBREG_BYTE.
	* config/sparc/sparc.h (ALTER_HARD_SUBREG): Removed.
	(REGMODE_NATURAL_SIZE): Override.
	(REG_SIZE): For SUBREG check float mode on SUBREG_REG's mode.
	* config/sparc/sparc.md (TFmode move splits): Generate SUBREGs
	with byte offsets.
	(zero_extendhisi2, zero_extendqidi2_insn, extendhisi2,
	extendqihi2, sign_extendqihi2_insn, sign_extendqisi2_insn,
	extendqidi2): Generate SUBREGs with byte offsets, also make sure
	it is congruent to SUBREG's mode size.
	(smulsi3_highpart_v8plus): Fix explicit subregs in rtl to use byte
	offsets.
	(cmp_siqi_trunc, cmp_siqi_trunc_set, cmp_diqi_trunc,
	cmp_diqi_trunc_set, lshrdi3_v8plus+1, lshrdi3_v8plus+2,
	lshrdi3_v8plus+3, lshrdi3_v8plus+4): Use proper
	SUBREG_BYTE offset for non-paradoxical subregs in patterns.
	* config/v850/v850.c (print_operand, output_move_double): Use
	subreg_regno function.

2001-04-03  Alexandre Oliva  <aoliva@redhat.com>

	* configure.in (target_subdir): Use target_alias, not target.
	* configure: Rebuilt.

	* config/sh/crtn.asm (init, fini): Restore r15 from r14, not the
	other way round.
	* config/sh/crti.asm: Fix typos in comments.

2001-04-03  Alan Modra  <alan@linuxcare.com.au>

	* pa.h: Revise comments for TARGET_NO_SPACE_REGS and
	TARGET_FAST_INDIRECT_CALLS.
	* pa.c (override_options): TARGET_NO_SPACE_REGS is now OK with
	-fPIC.  Don't warn.
	(return_addr_rtx): Short circuit export stub matching when
	TARGET_NO_SPACE_REGS.
	(output_millicode_call): For out of range calls, make -fPIC
	take precedence, then TARGET_PORTABLE_RUNTIME, then ble.  Don't
	return before delay slot checks when TARGET_PORTABLE_RUNTIME.
	* pa.md: Modify length attr calculation of all millicode insns to
	match above.

2001-04-02  Geoffrey Keating  <geoffk@redhat.com>

	* configure.in (gcc_cv_as_leb128): Correct name of cache variable.
	Require at least 2.11 in the version test.  Specifically check
	for and reject GAS version 2.10.90.
	* configure: regenerate.

2001-04-03  Alan Modra  <alan@linuxcare.com.au>

	* pa.c (override_options): Remove PIC profiling warning.
	(hp_profile_labelno): Delete.
	(hp_profile_label_rtx): Delete.
	(hp_profile_label_name): Delete.
	(pa_add_gc_roots): Remove reference to hp_profile_label_rtx.
	(output_function_prologue): Remove profiling code and all tests on
	profile_flag.  Move store of PIC_OFFSET_TABLE_REGNUM now that
	merge_sp_adjust_with_store can work for PIC and profiling.
	(hppa_expand_epilogue): Remove profile_flag test.
	(hppa_can_use_return_insn_p): Likewise.
	(hppa_init_pic_save): Emit before tail_recursion_reentry, and
	cater for PROFILE_HOOK.
	(hppa_profile_hook): New function.
	* pa.h (FUNCTION_PROFILER): Now does nothing.
	(PROFILE_HOOK): Define.
	(hppa_profile_hook): Declare.
	(PROFILE_BEFORE_PROLOGUE): Delete.
	(ASM_OUTPUT_REG_PUSH): Delete.
	(ASM_OUTPUT_REG_POP): Delete.
	* pa.md (call_profiler): Turn it into a call insn, and don't `use'
	r24.  Accept function name operand, and use this and a locally
	generated label to calculate pc-rel offset to func start.

2001-04-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* $(HOST_PREFIX_1)errors.o, $(HOST_PREFIX_1)ggc-none.o,
	ggc-common.o, ggc-simple.o, ggc-page.o, ggc-none.o: Depend on
	$(SYSTEM_H).

2001-04-03  Alan Modra  <alan@linuxcare.com.au>

	* dwarf2out.c (dwarf2out_frame_debug_expr): Move errant HIGH and
	LO_SUM cases to where they belong.

2001-04-02  Richard Henderson  <rth@redhat.com>

	* except.h (lang_eh_type_covers): Mark extern.
	(lang_eh_runtime_type): Likewise.

2001-04-02  Zack Weinberg  <zackw@stanford.edu>

	* genattr.c, gencheck.c, gencodes.c, genconfig.c, genflags.c,
	gengenrtl.c:  Wrap generated header in multiple-include guard.
	Improve error checking.

2001-04-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* configure.in: Don't check for putenv.
	* configure: Regenerate.
	* gcc.c (putenv): Don't define.
	* vax/xm-vms.h: Handle putenv.

2001-04-02  Jakub Jelinek  <jakub@redhat.com>

	* ifcvt.c (noce_emit_move_insn): New.
	(noce_try_store_flag, noce_try_store_flag_constants,
	noce_try_store_flag_inc, noce_try_store_flag_mask,
	noce_try_cmove, noce_try_cmove_arith, noce_try_minmax,
	noce_try_abs): Use it.
	(noce_process_if_block): Likewise.
	For STRICT_LOW_PART, take mode from its SUBREG.

2001-04-02  Jakub Jelinek  <jakub@redhat.com>

	* fold-const.c (fold): Before optimizing unsigned comparison with
	0x7fffffffU, make sure arg0 is integral type.

2001-04-02  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-tree.texi: Document representation of wide strings.

2001-04-01  Richard Henderson  <rth@redhat.com>

	* except.h (expand_builtin_dwarf_fp_regnum): Declare.

Sun Apr  1 11:49:05 CEST 2001  Jan Hubicka  <jH@suse.cz>

	* i386.md: remove obsoleted comments.
	(adddi_?): Rename to adddi_?_rex64; disable for 32bit.
	(x86_movsicc_0_m1_rex64): Rename to x86_movdicc_0_m1_rex64;
	fix output template.

2001-03-31  Marek Michalkiewicz  <marekm@linux.org.pl>

	* config/avr/libgcc.S (__mulhi3): Optimize previous change.

2001-03-30  Bernd Schmidt  <bernds@redhat.com>

	* loop.c (load_mems): When generating a load from a pseudo, update
	REGNO_LAST_UID.

Fri Mar 30 17:36:43 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.c (ix86_split_long_move): Use change address to compensate
	stack pointer change in push instruction.

Fri Mar 30 00:31:00 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (sse_movdfcc_eq): Fix constraint (sse_mov?fcc splitter): Use operands_match_p
	instead of rtx_equal_p; fix the output template.

Fri Mar 30 00:21:41 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.c (ix86_expand_setcc): Support 64bit.
	(ix86_expand_int_movcc): Likewise.
	* i386.md (movdicc_rex64, x86_movsicc_0_m1_rex64, movdicc_c_rex64):
	New patterns.

	* i386.md (allocate_stack_worker): Turn to expander.
	(allocate_stack_worker_1, allocate_stack_worker_rex64): New insns.

	* i386.c (print_reg): Do not print x86_64 style regs on IA-32

2001-03-29  Richard Henderson  <rth@redhat.com>

	* libgcc2.c [L__main]: Include unwind-dw2-fde.h instead of frame.h.

2001-03-28  Matthew Hiller  <hiller@redhat.com>

	* config/mn10300/mn10300.md (cmpsi): Fix first alternative's
	output template.

	* MAINTAINERS: Added self.

2001-03-28  Richard Henderson  <rth@redhat.com>

	* Makefile.in (cs-tconfig.h): Depend on CONFIG_H, not GCONFIG_H.
	Use ALL_CFLAGS not HOST_CFLAGS for sjlj detection.

2001-03-28  Jim Wilson  <wilson@redhat.com>

	* config/ia64/ia64.md (movtf): Change DImode to TFmode in calls to
	operand_subword.

2001-03-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* toplev.h (fatal_error): Add ATTRIBUTE_NORETURN.

	* tradcif.y (yyerror): Likewise.  Add format specifier in call to
	`error'.

	* tradcpp.c (macroexpand): Likewise for call to `error_with_line'.

2001-03-28  DJ Delorie  <dj@redhat.com>

	* Makefile.in (stage1_build): Revert CFLAGS patch.

2001-03-28  Marek Michalkiewicz  <marekm@linux.org.pl>

	* config/avr/libgcc.S (__mulhi3): Correct tests to exit the loop
	when multiplier or multiplicand is zero.

2001-03-28  Bernd Schmidt  <bernds@redhat.com>

	* cselib.c (hash_rtx): Don't do tail recursion elimination by hand.

	* config/ia64/ia64.c (update_set_flags): New function, broken out of
	rtx_needs_barrier.
	(set_src_needs_barrier): Likewise.
	(rtx_needs_barrier): For SET case, use these two functions.  Rework
	PARALLEL case to handle all inputs before all outputs.
	(emit_insn_group_barriers): Call init_insn_group_barriers only if we
	saw a label and no stop bit since then.
	(maybe_rotate, process_epilogue): Add prototypes.

2001-03-28  Richard Henderson  <rth@redhat.com>

	* config/rs6000/rs6000.h (EPILOGUE_USES): Use TARGET_AIX,
	not TARGET_TOC for special toc restore handling.
	* config/rs6000/rs6000.md (eh_return): Likewise.

2001-03-28  Richard Henderson  <rth@redhat.com>

	* config/sparc/sparc.c (eligible_for_epilogue_delay): False if
	current_function_calls_eh_return.
	(output_function_epilogue): Handle eh_return.
	* config/sparc/sparc.h (DOESNT_NEED_UNWINDER): Remove.
	(EH_RETURN_DATA_REGNO): New.
	(EH_RETURN_STACKADJ_RTX): New.
	(EH_RETURN_HANDLER_RTX): New.
	* config/sparc/sparc.md (call/short branch peepholes): Check
	can_throw_internal instead of in_same_eh_region.

	* config/rs6000/rs6000.c (rs6000_stack_info): Allocate space
	for eh_return data registers.
	(rs6000_emit_prologue): Save eh_return data registers.
	(rs6000_emit_epilogue): Force inline restores if eh_return.
	Restore eh_return data registers.  Mind EH_RETURN_STACKADJ_RTX.
	* config/rs6000/rs6000.h (rs6000_stack_t): Add ehrd_offset.
	(EH_RETURN_DATA_REGNO, EH_RETURN_STACKADJ_RTX): New.
	(EPILOGUE_USES): True for TOC_REGISTER if calls_eh_return and
	the target uses one.
	* config/rs6000/rs6000.md (eh_epilogue, eh_reg_restore): Remove.
	(return_eh_si, return_eh_di): Remove.
	(eh_return): New, from corpse of eh_epilogue.
	(eh_set_lr_si, eh_set_lr_di): New.

	* config/i386/i386.c (general_no_elim_operand): Disallow virtual regs.
	(ix86_save_reg): If maybe_eh_return, true for EH_RETURN_DATA_REGNOs.
	True for pic register if current_function_calls_eh_return.
	(ix86_expand_epilogue): Change "emit_return" argument into "style".
	Handle eh_return requirements.
	* config/i386/i386.h (EH_RETURN_DATA_REGNO): New.
	(EH_RETURN_STACKADJ_RTX): New.
	* config/i386/i386.md (exception_receiver): Remove.
	(eh_return, eh_return_1): New.
	* config/i386/linux.h (MD_FALLBACK_FRAME_STATE_FOR): New.

	* config/alpha/alpha.c (alpha_sa_mask): Add EH_RETURN_DATA_REGNOs.
	(alpha_mark_machine_status): No eh_epilogue_sp_ofs ...
	(alpha_expand_epilogue): ... use EH_RETURN_STACKADJ_RTX instead.
	* config/alpha/alpha.h (machine_function): Remove eh_epilogue_sp_ofs.
	(EH_RETURN_DATA_REGNO): New.
	(EH_RETURN_STACKADJ_RTX, EH_RETURN_HANDLER_RTX): New.
	* config/alpha/alpha.md (eh_epilogue): Remove.
	(exception_receiver): Use $26 for ldgp input.
	* config/alpha/linux.h (MD_FALLBACK_FRAME_STATE_FOR): New.

2001-03-28  Richard Henderson  <rth@redhat.com>

	* except.c: Rewrite entirely for IA-64 ABI exception handling.
	* except.h: Likewise.

	* Makefile.in (LIB2ADDEH): Mention unwind-dw2*.c
	(LIB2ADDEHDEP): New.
	(LIB2FUNCS_EH): Remove.
	(LIB2ADD): Remove LIB2ADDEH.
	(libgcc.mk): Pass LIB2ADDEHDEP, don't pass LIB2FUNCS_EH.
	(LIBGCC_DEPS): Use LIB2ADDEHDEP.
	(crt{begin,end}[S].o): Likewise.
	(except.o): Update includes.
	* mklibgcc.in: Remove LIB2FUNCS_EH, add LIB2ADDEH, LIB2ADDEHDEP.
	(libgcc2_c_dep): Use LIB2ADDEHDEP.

	* basic-block.h (struct basic_block_def): Remove eh_beg, eh_end.
	* bb-reorder.c (reorder_basic_blocks): Don't disable for EH.
	* builtins.def (BUILT_IN_EH_RETURN_DATA_REGNO): New.
	* builtins.c (expand_builtin): Implement it.
	[BUILT_IN_EH_RETURN]: Update for nr arguments change.
	* c-common.c (c_common_nodes_and_builtins): Declare it.
	* c-decl.c (init_decl_processing): Update __builtin_eh_return.
	* calls.c (libfunc_nothrow): Remove.
	(emit_library_call_value_1): Don't call it.
	* crtstuff.c: Include unwind-dw2-fde.h instead of frame.h.
	* dwarf2.h (dwarf_call_frame_info): Add dwarf2.1 elements.
	(DW_EH_PE_*): New defines for pointer encoding in .eh_frame.
	* dwarf2out.c (struct dw_fde_struct): Add uses_eh_lsda, funcdef_number.
	(current_funcdef_number): Globalize.
	(output_call_frame_info): Emit frame data if an lsda is needed.
	Generate augmentation for personality routine.  Don't play with
	difference symbols.
	(dwarf2out_begin_prologue): Record funcdef_number.
	* dwarf2out.h (current_funcdef_number): Declare.
	* expr.c (expand_expr): Update for except.h name changes.
	Remove POPDCC_EXPR, POPDHC_EXPR.  Add EXC_PTR_EXPR.
	* expr.h (LTI_throw, LTI_rethrow): Remove.
	(LTI_sjthrow, LTI_sjpopnthrow, LTI_terminate): Remove.
	(LTI_eh_rtime_match): Remove.
	(LTI_unwind_resume, LTI_eh_personality): Add.
	(LTI_unwind_sjlj_register, LTI_unwind_sjlj_unregister): Add.
	* final.c (final): Don't call check_exception_handler_labels,
	init_insn_eh_region, or free_insn_eh_region.
	(final_scan_insn): Always emit debug labels for
	NOTE_INSN_EH_REGION notes.
	* flags.h (flag_new_exceptions): Remove.
	* flow.c (entry_exit_blocks): Remove eh_beg, eh_end.
	(record_active_eh_regions): Remove.
	(count_basic_blocks): Check all instructions for REG_EH_REGION.
	Use can_throw_internal.
	(find_basic_blocks_1): Likewise.
	(move_stray_eh_region_notes): Remove.
	(find_label_refs): No eh_return_stub_label.
	(make_edges): Likewise.  No init/free_eh_nesting_info.  Handle RESX.
	(make_eh_edge): No eh_nest_info.  Update for reachable_handlers
	changes.
	(delete_unreachable_blocks): Don't track deleted handlers.
	(flow_delete_block): Use maybe_remove_eh_handler.
	(delete_eh_regions): Remove.
	(merge_blocks): Don't check for eh region match.
	(mark_regs_live_at_end): Handle EH_RETURN_DATA_REGNO,
	EH_RETURN_STACKADJ_RTX, EH_RETURN_HANDLER_RTX.
	(init_propagate_block_info): Disable dead frame store optimization
	when current_function_calls_eh_return.
	(dump_bb): Don't print eh_beg, eh_end.
	* function.c (fixup_var_refs): No catch_clauses.
	(expand_function_end): Likewise.  Call expand_eh_return before
	the return register use.  Call sjlj_emit_function_exit_after.
	(expand_function_start): Force pseudo DECL_RESULT if sjlj exceptions.
	* function.h (struct function): Add calls_eh_return, uses_eh_lsda.
	* ifcvt.c (dead_or_predicable): Remove eh region check.
	* integrate.c (function_cannot_inline_p): Disallow __builtin_eh_return.
	Don't check for EH vs parameters.
	(expand_inline_function_eh_labelmap, eif_eh_map): Remove.
	(expand_inline_function): Call duplicate_eh_regions.
	(copy_insn_list): Don't handle NOTE_INSN_EH_REGION_BEG/END.
	(copy_insn_notes): Remap REG_EH_REGION notes.
	(copy_rtx_and_substitute): Remove SYMBOL_REF_NEED_ADJUST check.
	* integrate.h (struct inline_remap): Add local_return_label.
	* jump.c (jump_optimize_1): Don't init/free_insn_eh_region, nor
	check_exception_handler_labels, nor exception_optimize.
	(find_cross_jump): No EH region check.
	* optabs.c (init_optabs): Update for changed eh libfuncs.
	* rtl.def (RESX): New.
	* rtl.h (SYMBOL_REF_NEED_ADJUST): Remove.
	* stmt.c (expand_decl_cleanup): Simplify using_eh_for_cleanups_p
	checks.  Update for except.h name changes.
	(expand_cleanups): Likewise.
	(expand_dcc_cleanup, expand_dhc_cleanup): Remove.
	* toplev.c (dump_file_index, dump_file): Add .02.eh dump.
	(compile_file): Call init_eh before init_optabs.  Don't
	output_exception_table here.
	(rest_of_compilation): Call convert_from_eh_region_ranges,
	convert_to_eh_region_ranges, output_function_exception_table.
	Don't emit_eh_context.
	* tree.def (POPDHC_EXPR, POPDCC_EXPR): Remove.
	(EXC_PTR_EXPR): New.

	* md.texi (eh_epilogue): Remove.
	(eh_return): Document.
	* tm.texi (EH_RETURN_DATA_REGNO): Document.
	(EH_RETURN_STACKADJ_RTX, EH_RETURN_HANDLER_RTX): Document.

	* eh-common.h: Remove file.
	* frame-dwarf2.c, frame.c, frame.h: Remove files.
	* libgcc2.c (L_eh): Remove.

	* unwind-dw2-fde.c: New file, largely copied from frame.c.
	* unwind-dw2-fde.h: New file.
	* unwind-dw2.c: New file, largely cribbed from frame-dwarf2.c.
	* unwind-sjlj.c, unwind.h, unwind.inc: New files.
	* libgcc-std.ver: Update for eh symbols.

2001-03-27  Richard Henderson  <rth@redhat.com>

	* regmove.c (perhaps_ends_bb_p): Use can_throw_internal to
	reduce false positives.
	(regmove_optimize): Disable if flag_non_call_exceptions.

	* stmt.c (expand_return): Remove always true predicate.
	(expand_decl_cleanup_no_eh): Remove dead code.

	* sched-deps.c (sched_analyze_insn): Consolidate scheduling
	barrier code.  Add a scheduling barrier if a non-call insn
	can throw internally.

	* rtlanal.c (rtx_addr_can_trap_p): Virtual registers cannot trap.
	Auto-inc addresses trap only if their base register does.

	* except.c (can_throw_internal): Rename from can_throw.
	* except.h, resource.c: Update references.

	* integrate.c (copy_insn_list): Use returnjump_p.
	(copy_insn_notes): Recurse for CALL_PLACEHOLDER.

	* function.h (struct function): Move all boolean valued fields
	to single bit fields at the end of the struct.

	* bb-reorder.c, dwarf2out.c, except.c, except.h, flow.c,
	jump.c, toplev.c:
	Rename asynchronous_exceptions to flag_non_call_exceptions.

	* gthr-single.h (UNUSED): New.  Distinguish between how C
	and C++ mark unused function arguments.  Use throughout.

	* Makefile.in (cs-tconfig.h): Copy USING_SJLJ_EXCEPTIONS
	value to target configuration header.
	* configure.in (CONFIG_SJLJ_EXCEPTIONS): New.
	* config.in, configure: Rebuild.
	* except.h (USING_SJLJ_EXCEPTIONS): New.  Define based on
	configuration and target defines.
	(exceptions_via_longjmp): Remove.
	* dwarf2out.c, except.c, final.c, toplev.c, config/ia64/ia64.c:
	Use USING_SJLJ_EXCEPTIONS instead of exceptions_via_longjmp.

	* except.h (flag_non_call_exceptions): Move ...
	* flags.h: ... here.

	* combine.c (distribute_notes) [REG_EH_REGION]: If non-call
	exceptions, put the note on the trapping instruction.

	* flags.h (flag_new_exceptions): Remove.
	* toplev.c: Don't set it.
	* final.c: Don't check it.
	* except.c: Provide stub definition.

	* flow.c (tidy_fallthru_edges): Don't combine complex edges.
	(calculate_global_regs_live): Kill call-clobbered registers
	across exception edges.
	* reg-stack.c (convert_regs_1): Kill the entire target stack
	across non-call exception edges.

	* flow.c (cleanup_cfg): Take no argument.
	* output.h, sibcall.c, toplev.c: Update all calls.

2001-03-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* configure.in: Don't check for bcopy.
	* configure, config.in: Regenerate.

	* system.h: Don't define or prototype bcopy, instead poison it.

2001-03-27  Richard Henderson  <rth@redhat.com>

	* function.c (expand_function_start): Set DECL_REGISTER on
	a pseudo used for DECL_RESULT.

	* rtl.h (LCT_NORETURN): New.
	* calls.c (emit_library_call_value_1): Handle it.

2001-03-27  Stan Shebs  <shebs@apple.com>

	* objc/objc-act.c (objc_init): Use dump_base_name.
	(gen_declaration): Clear the buffer arg.
	(gen_declaration_1): New function, body of gen_declaration.
	(adorn_decl): Call gen_declaration_1 instead of gen_declaration.
	(gen_method_decl): Ditto, plus always clear buffer arg.
	(error_with_ivar): Simplify.
	(warn_with_method): Ditto.
	(build_message_expr): Don't clear buffers.
	(dump_interface): Ditto.
	(objc_debug): Ditto.
	(build_keyword_selector): Clear the buffer by only zeroing
	the first element.
	(objc_implementation_context): Declare.
	(start_class): Warn about missing @end.
	(finish_objc): Ditto.

2001-03-28  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* reload1.c (eliminate_regs): Don't abort on MEM USEs.

2001-03-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (SYSTEM_H): Define.
	Depend on $(SYSTEM_H), not system.h.

	* objc/Make-lang.in: Depend on $(SYSTEM_H), not system.h.

2001-03-27  Jim Wilson  <wilson@redhat.com>

	* final.c (final_scan_insn, case NOTE_INSN_BASIC_BLOCK): Call
	IA64_UNWIND_EMIT.
	* config/ia64/ia64.c (block_num, need_copy_state): New static vars.
	(process_epilogue): New static function.
	(process_set): Call process_epilogue instead of emitting .restore
	directly.
	(process_for_unwind_directive): Handle NOTE_INSN_BASIC_BLOCK.

	* flow.c (struct reg_cond_life_info): New fields orig_condition
	and stores.
	(init_propagate_block_info): Set new fields.
	(mark_regno_cond_dead): Set and use new fields.
	(flush_reg_cond_reg_1): Likewise.
	(and_reg_cond, case AND): Check for redundant AND conditions.
	(mark_used_reg): Delete unnecessary clears before freeing splay trees.
	Set new fields.

2001-03-27  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cppmacro.c (stringify_arg): Null terminate strings.

2001-03-27  Zack Weinberg  <zackw@stanford.edu>

	* config.gcc (m68hc11-*-*, m68hc12-*-*): Convert to new tm.h
	inclusion style.  xm-m68hc11.h no longer exists.
	* config/m68hc11/xm-m68hc11.h: Delete file.
	* config/m68hc11/m68hc12.h: Convert to new tm.h inclusion style.

	* config/m68hc11/m68hc11.h: Convert to new tm.h inclusion style.
	Don't define GCC_VERSION, N_, or PARAMS; don't include
	gansidecl.h or stdio.h.  Define inhibit_libc here.
	Make code conditioned on #if GCC_VERSION > 2095 unconditional.
	Delete code conditioned on #if GCC_VERSION == 2095.

	* config/m68hc11/m68hc11-protos.h, config/m68hc11/m68hc11.c:
	Make code conditioned on #if GCC_VERSION > 2095 unconditional.
	Delete code conditioned on #if GCC_VERSION == 2095.

2001-03-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* system.h: Include symcat.h.
	(STRINGIFY): Don't define.

	* configure.in: Adjust comment.

	* builtins.c: Use STRINGX, not STRINGIFY.
	* gencheck.c: Likewise.
	* gengenrtl.c: Likewise.
	* protoize.c: Likewise.

	* cpplex.c: Don't include symcat.h.
	* cpplib.c: Likewise.

	* gansidecl.h (HAVE_STRINGIZE): Don't define.

2001-03-27  Alan Modra  <alan@linuxcare.com.au>

	* c-typeck.c (digest_init): Fold init expression.

2001-03-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* sbitmap.c (sbitmap_copy): Call memcpy, not bcopy.

2001-03-27  Alan Modra  <alan@linuxcare.com.au>

	* except.c (eh_regs): Save results of build_pointer_type to a temp
	as FUNCTION_VALUE macro may evaluate its args multiple times.

2001-03-26  Mark Mitchell  <mark@codesourcery.com>

	* c-common.h (DECL_NUM_STMTS): New macro.
	* c-decl.c (duplicate_decls): Copy DECL_NUM_STMTS, not
	DECL_FRAME_SIZE.
	(pushdecl): Likewise.
	* c-semantics.c (add_stmt): Update DECL_NUM_STMTS.
	* integrate.c (expand_inline_function): Don't check
	DECL_FRAME_SIZE.
	* print-tree.c (print_node): Don't print it.
	* toplev.c (rest_of_compilation): Don't try to inline when
	flag_no_inline is on.
	* tree.h (DECL_FRAME_SIZE): Remove.
	(tree_decl): Adjust accordingly.

2001-03-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* combine.c (try_combine): Use memcpy, not bcopy.

	* genattrtab.c (expand_units): Likewise.

Mon Mar 26 15:55:08 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (push mem DI peep2): New.
	(mov 0, mov -1 peep2): Handle 64bit.
	(lea to arithmetics peep2): Handle 64bit leas.
	(rsp arithmetics to push/pop peep2s): New.

	* i386.md (truncdfsf2_3, trunctfsf2_2): Change predicate to memory_operand.

Mon Mar 26 14:35:18 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.c (struct machine_function): Add save_varrargs_registers.
	(ix86_save_varrargs_registers): New macro.
	(ix86_frame_layout): Support 64bit; support red zones and varrargs area.
	(ix86_expand_prologue): Likewise.
	(ix86_emit_epilogue_esp_adjustement): Likewise.
	(ix86_expand_epilogue): Likewise.
	* i386.md (pro_epilogue_adjust_stack): Turn to expander; support 64bit.
	(pro_epilogue_adjust_stack_1): New insn.
	(pro_epilogue_adjust_stack_rex64): Likewise.
	* i386.h (MASK_NO_RED_ZONE): New constant.
	(TARGET_RED_ZONE): New macro.
	(TARGET_OPTIONS): Add "red-zone" and "no-red-zone"
	(RED_ZONE_SIZE): New constant.
	(RED_ZONE_RESERVE): New constant.

2001-03-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* toplev.c (set_float_handler): Use memcpy, not bcopy.

2001-03-25  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.md (umodqi3): Output a tab instead of a
	space.
	(modqi3): Likewise.
	(umodhi3): Likewise.
	(modhi3): Likewise.

2001-03-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* mkconfig.sh (DEFINES): Handle entries with '='.

	* config.gcc: Don't use i370/xm-mvs.h or ns32k/xm-pc532-min.h.
	Set xm_defines to MACRO=value instead.

	* i370/xm-mvs.h: Delete.

	* ns32k/xm-pc532-min.h: Likewise.

Sun Mar 25 15:01:40 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (ashldi3, ashrdi3, lshrdi3): Change predicates to
	shiftdi_operand;
	use ix86_expand_binary_operator
	(?sh??i_?): Disable for 64bit.
	* i386.h (PREDICATE_CODES): Add shiftdi_operand.
	* i386.c (shiftdi_operand): New predicate.

	* (ashldi3_1_rex64, ashldi3_cmp_rex64, ashlsi3_1_zext, ashlsi3_cmp_zext,
	ashrdi3_63_rex64, ashrdi3_1_one_bit_rex64, ashrdi3_1_rex64,
	ashrdi3_one_bit_cmp_rex64, ashrdi3_cmp_rex64, ashrsi3_31_zext,
	ashrsi3_1_one_bit_zext, ashrsi3_1_zext, ashrsi3_one_bit_cmp_zext,
	ashrsi3_cmp_zext, lshrdi3_1_one_bit_rex64, lshrdi3_1_rex64,
	lshrdi3_cmp_one_bit_rex64, lshrdi3_cmp_rex64, lshrsi3_1_one_bit_zext,
	lshrsi3_1_zext, lshrsi3_cmp_one_bit_zext, lshrsi3_cmp_zext,
	rotlsi3_1_one_bit_rex64, rotldi3_1_rex64,
	rotlsi3_1_one_bit_zext, rotlsi3_1_zext, rotrdi3_1_one_bit_rex64,
	rotrdi3_1_rex64, rotrsi3_1_one_bit_zext, rotrsi3_1_zext): New patterns.
	(rotldi3, rotrdi3): New expanders.

Sun Mar 25 14:25:33 CEST 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (movstrsi): Move offline.
	(movstrdi): New.
	(strmovdi_rex64): New.
	(strmov?i): Accept 64bit.
	(strmov?i_rex64): New.
	(strmov?i_rex_1): New.
	(strmov?i_1): Disable for 64bit.
	(rep_mov?i_rex64): New.
	(rep_mov?i): Disable for 64bit.
	(clrstrsi): Move offline.
	(strset?i_rex64): New.
	(strset?i: Accept 64bit.
	(rep_stos?i): Disable for 64bit.
	(rep_stos?i_rex64): New.
	(strset?i_rex_1): New.
	(strset?i_1): Disable for 64bit.
	(cmpstrsi): Accept 64bit.
	(cmpstrsi_nz_1): Rename to cmpstrqi_nz_1; Disable for 64bit.
	(cmpstrqi_nz_rex_1): New.
	(cmpstrsi_1): Rename to cmpstrqi_1; Disable for 64bit.
	(strlensi): Move offline.
	(strlendi): New.
	(strlenqi_1): Disable for 64bit; fix constraints.
	(strlenqi_rex_1): New.
	* i386.c (ix86_adjust_counter): New static function.
	(ix86_zero_extend_to_Pmode): Likewise.
	(ix86_expand_aligntest): Likweise.
	(ix86_expand_strlensi_unroll_1): Make static; update for 64bit.
	(ix86_expand_movstr): New global function.
	(ix86_expand_clrstr): New global function.
	(ix86_expand_strlen): New global function.
	* i386-protos.h (ix86_expand_movstr, ix86_expand_clrstr,
	ix86_expand_strlen): Declare.
	(ix86_expand_strlensi_unroll_1): Delete.

Sat Mar 24 23:15:19 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (cmpdi): Fix operand predicates.
	(cmpdi_ccno_1_rex64, cmpdi_minus_1_rex64, cmpdi_1_rex64,
	 cmpdi_1_insn_rex64): New patterns.
	(adddi3): Turn to expander.
	(adddi3_1, adddi3_carry_rex64, adddi3_cc_rex64): New patterns.
	(addsi3_carry_zext): New pattern.
	(adddi_?_rex64): New patterns and splitters.
	(addsi_?_zext): New patterns.
	(subsi3_carry_zext): New pattern.
	(subdi_?_rex64): New patterns and splitters.
	(iorsi_?_zext): New patterns.
	(iordi_?_rex64): New patterns and splitters.
	(iorsi_?_zext): New patterns.
	(iorsi_?_zext_imm): New patterns.
	(xorsi_?_zext): New patterns.
	(xordi_?_rex64): New patterns and splitters.
	(xorsi_?_zext): New patterns.
	(negdi*): New patterns.
	(one_cmpldi*): Likewise.
	(one_cmplsi*_zext, negsi*_zext): Likewise.
	(testqi_ext_3_rex64): New pattern.

Sat Mar 24 21:13:28 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386-protos.h (ix86_split_long_move): Return void.
	* i386.c (ix86_split_to_parts): Handle 64bit target.
	(ix86_split_long_move): Likewise.
	* i386.md (all calls to ix86_split_long_move): Update.

2001-03-23  Richard Henderson  <rth@redhat.com>

	* config/mips/iris4.h (ASM_OUTPUT_ASCII): Rename local variables
	to avoid shadowing arguments.

2001-03-23  Jakub Jelinek  <jakub@redhat.com>

	* varasm.c (make_decl_rtl): Don't append var_labelno discriminator
	to variable names where DECL_NAME is different from
	DECL_ASSEMBLER_NAME.

2001-03-23  Jim Wilson  <wilson@redhat.com>

	* varasm.c (make_decl_rtl): Add TREE_PUBLIC check to abort test.
	(assemble_alias): Call make_decl_rtl.

Fri Mar 23 16:59:08 2001  J"orn Rennecke <amylaar@redhat.com>

	* stor-layout.c (layout_type): Give OFFSET_TYPE a MODE_INT type.

2001-03-23  Bryce McKinlay  <bryce@albatross.co.nz>

	* extend.texi: Document the "java_interface" attribute.

2001-03-22  Zack Weinberg  <zackw@stanford.edu>

	* mkconfig.sh: Use a subshell with redirected stdout,
	instead of closing stdout and confusing commands that run
	afterward.  Throw away output of cmp.

2001-03-22  Gordon Sadler  <gbsadler1@lcisp.com>

	* Makefile.in (stage1_build): Pass CFLAGS to stage1_build.

Thu Mar 22 22:15:59 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (zero_extendsidi2_32): Break out from ...
	(zero_extendsidi2): ... here ; turn to expander.
	(zero_extendsidi2_rex64): New.
	(extendsidi2_32): Break out from ...
	(extendsidi2): ... here ; turn to expander.
	(extendsidi2_rex64): New.
	(zero_extendhidi2, zero_extendqidi2, extendhidi2, extendqidi2): New.
	(trunc?f?f splitters): Add 64bit versions.

Thu Mar 22 21:41:16 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (pushsi, pushsi2_prologue): Disable.
	(pushsi2_rex64): New.
	(movabs?i_1_rex64, movabs?i_2_rex64): New.
	(movqi_ext_1): Disable for 64bit.
	(movqi_ext_1_rex64): New.
	(pushdi2_rex64): New pattern, peep2s and splitter.
	(pushdi2_prologue_rex64): New pattern.
	(popdi1_epilogue_rex64, popdi1, movdi_xor_rex64, movdi_or_rex64):
	Likewise.
	(movdi splitters): Disable for 64bit.
	(movdi_1_rex64): New pattern, peep2s and splitters.
	(swapdi): New pattern.
	(pushsf): Disable for 64bit.
	(pushsf_rex64): New pattern and splitter.
	(pushdf_nointeger): Disable for 64bit.
	(pushdf_integer): Handle the 64bit case.
	(pushtf): Likewise; update splitters.

2001-03-22  Richard Henderson  <rth@redhat.com>

	* mkconfig.sh: Include insn-flags.h.
	* Makefile.in (CONFIG_H): Include insn-flags.h.
	(lots of objects): Remove insn-codes.h and insn-flags.h.

	* alias.c, bb-reorder.c, calls.c, do-loop.c, flow.c, haifa-sched.c,
	integrate.c, jump.c, loop.c, predict.c, profile.c, reg-stack.c,
	regmove.c, reorg.c, a29k/a29k.c, alpha/alpha.c, arc/arc.c, arm/arm.c,
	avr/avr.c, clipper/clipper.c, convex/convex.c, d30v/d30v.c,
	dsp16xx/dsp16xx.c, fr30/fr30.c, h8300/h8300.c, i370/i370.c,
	i386/i386.c, i860/i860.c, ia64/ia64.c, m32r/m32r.c, m68hc11/m68hc11.c,
	m68k/m68k.c, m88k/m88k.c, mcore/mcore.c, mn10200/mn10200.c,
	mn10300/mn10300.c, ns32k/ns32k.c, pa/pa.c, pdp11/pdp11.c,
	pj/pj.c, romp/romp.c, rs6000/rs6000.c, sh/sh.c, sparc/sparc.c,
	v850/v850.c, vax/vax.c:
	Don't include insn-flags.h.

	* diagnostic.c, expr.h, reload.c, toplev.c:
	Don't include insn-codes.h.

	* builtins.c, combine.c, except.c, explow.c, expmed.c, expr.c,
	final.c, function.c, optabs.c, recog.c, reload1.c, stmt.c,
	c4x/c4x.c, i960/i960.c, mips/mips.c:
	Don't include insn-codes.h or insn-flags.h.

	* genemit.c, genopinit.c, genoutput.c: Don't include insn-codes.h
	or insn-flags.h in the generated code.
	* genflags.c (gen_proto): Use "struct rtx_def *" instead of "rtx".
	(main): Forward declare struct rtx_def.

2001-03-22  Joseph S. Myers  <jsm28@cam.ac.uk>

	* invoke.texi (-ffast-math): Remove duplicate line about
	__FAST_MATH__.

	* gcc.texi: Remove more obsolete documentation of bugs and
	installation problems.

2001-03-21  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.md (movsi_h8300hs): Split the 2nd alternative
	into two parts.

2001-03-20  Jason Merrill  <jason@redhat.com>

	* collect2.c (is_ctor_dtor): Always use '_' in the file fn names,
	not '.' or '$'.
	* tree.c (FILE_FUNCTION_FORMAT): Likewise.
	* varasm.c (CHKR_PREFIX): Likewise.

Wed Mar 21 14:27:11 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* gcse.c (hash_scan_set): An expression is not anticipatible if it
	is part of a multi-SET insn.

	* cse.c (find_comparison_args): Remove previous change.
	* ifcvt.c (noce_process_if_block): When moving an insn, remove any
	REG_EQUAL notes.

	* config/i386/i386.md (conditional_trap): Remove warning.

	* recog.c (push_operand): Fix error in last change that caused
	undefined symbol on many targets.

	* sdbout.c: #include ggc.h.
	(sdbout_init): Move to end of file.
	Call ggc_add_tree_root for anonymous_types.
	(sdbout_symbol): Use DECL_NAME for local, not DECL_ASSEMBLER_NAME.
	(sdbout_one_type): Use DECL_NAME for field name.
	* Makefile.in (sdbout.o): Show includes ggc.h.

Wed Mar 21 20:33:26 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.c (override_options): Default ix86_regparm to REGPARM_MAX.
	(override_options): Use properlimits for preferred_stack_boundary.
	(ix86_valid_type_attribute_p): Disable stdcall and cdecl attributes
	on x86_64.
	(ext_register_operand): Accept DImode.
	(load_pic_register): Abort on 64bit.
	(gen_push): Use Pmode instead of SImode.
	(ix86_save_reg): Pic reg is never used on 64bit.
	(ix86_expand_prologue): Likewise.
	(ix86_emit_save_regs): Use Pmode instead of SImode.
	(legitimate_address_p): Check displacement for 64bit.
	(print_operand): Avoid outputting of (%rip) on 64bit.
	(print_operand_address): Output (%rip) where possible.
	(split_di): Abort on 64bit registers.
	(ix86_expand_branch): DImode comparison is simple for x86_64.
	(memory_address_length): Recognize memory addresses formed using
	PRE/POST modify.
	(ix86_data_alignment, ix86_local_alignment): Align arrays to 16 bytes
	for x86_64.
	* i386.h (TARGET_USE_SAHF): Disable for 64bit.

Wed Mar 21 18:51:19 CET 2001  Jan Hubicka  <jh@suse.cz>

	* recog.c (push_operand): Recognize new format of push instructions.

Wed Mar 21 10:53:57 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (pushqi1): New.
	* i386-protos.h (x86_64_general_operand, x86_64_szext_general_operand,
	x86_64_nonmemory_operand, x86_64_szext_nonmemory_operand,
	x86_64_immediate_operand, x86_64_immediate_operand,
	x86_64_zext_immediate_operand): Declare.
	* i386.c (x86_64_general_operand, x86_64_szext_general_operand,
	x86_64_nonmemory_operand, x86_64_szext_nonmemory_operand,
	x86_64_immediate_operand, x86_64_immediate_operand,
	x86_64_zext_immediate_operand): define.
	* i386.h (PREDICATE_CODES): Add new predicates.

Wed Mar 21 10:25:13 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (pophi1, popqi1, pushqi1): Remove.

	* expr.c (emit_single_push_insn): New function.
	(move_by_pieces): Accept NULL as destination for push instructions.
	(gen_push_operand): Kill.
	(emit_push_insn): Pass NULL when pushing; avoid updating of
	stack_pointer_delta.
	* expr.h (gen_push_operand): Kill.

Tue Mar 20 20:15:06 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* rtl.texi (COMPARE): Clarify documentation and reference section
	on comparisons.

2001-03-20  Stan Shebs  <shebs@apple.com>

	* objc/objc-act.c (get_static_reference): Use NULL_TREE.
	(get_object_reference): Ditto.
	(error_with_ivar): Use error_with_file_and_line.
	(warn_with_method): Use warning_with_file_and_line.

2001-03-20  Tom Tromey  <tromey@redhat.com>

	* libgcc-std.ver: Added __fixunssfsi and __fixunsdfsi.

2001-03-20  Mark Mitchell  <mark@codesourcery.com>

	* tree.c (set_decl_assembler_name): Set DECL_ASSEMBLER_NAME for
	variables that are TREE_PUBLIC, even if not TREE_STATIC.

2001-03-20  DJ Delorie  <dj@redhat.com>

	* Makefile.in (install-libgcc): Pass complete list of variables.
	(install-multilib): Ditto.

2001-03-20  David Billinghurst  <David.Billinghurst@riotinto.com>

	* config/i386/cygwin.h: Declare ctor_section, dtor_section
	drectve_section, switch_to_section.

	* winnt.c: Declare functions associated_type, gen_stdcall_suffix,
	i386_pe_dllexport_p, i386_pe_dllimport_p, i386_pe_mark_dllexport,
	i386_pe_mark_dllimport.

2001-03-20  David Billinghurst <David.Billinghurst@riotinto.com>

	* config/i386/cygwin.h: Include <stdio.h> Declare and constify
	functions i386_pe_*.

	* config/i386/winnt.c: Include "tm_p.h" and "toplev.h" Constify
	i386_pe_* functions with char * arguments.

2001-03-20  Alexandre Oliva  <aoliva@redhat.com>

	* config/sh/sh.md (movsf_ie): Fix output patterns for fpul load
	and store.
	(movsi_ie): Introduce fpul store.

2001-03-20  Alan Modra  <alan@linuxcare.com.au>

	* Makefile.in (OBJS): Remove hashtab.o.

2001-03-19  Stan Shebs  <shebs@apple.com>

	* objc/objc-act.c (maybe_objc_method_name): Remove, never called.
	* c-lang.c (maybe_objc_method_name): Ditto.
	* c-tree.h (maybe_objc_method_name): Remove decl.

2001-03-19  Tom Tromey  <tromey@redhat.com>

	* gcc.c (init_gcc_specs): Fix comment.

2001-03-19  Mark Mitchell  <mark@codesourcery.com>

	Compute DECL_ASSEMBLER_NAME lazily.
	* tree.h (DECL_ASSEMBLER_NAME): Compute it lazily.
	(DECL_ASSEMBLER_NAME_SET_P): New macro.
	(SET_DECL_ASSEMBLER_NAME): Likewise.
	(COPY_DECL_ASSEMBLER_NAME): Likewise.
	(set_decl_assembler_name): Declare.
	(lang_set_decl_assembler_name): Likewise.
	* tree.c (lang_set_decl_assembler_name): New variab.e
	(set_decl_assembler_name): New function.
	(init_obstacks): Set lang_set_decl_assembler_name.
	(build_decl): Don't set DECL_ASSEMBLER_NAME.
	* c-decl.c (duplicate_decls): Use SET_DECL_ASSEMBLER_NAME,
	COPY_DECL_ASSEMBLER_NAME, etc.  Don't set DECL_ASSEMBLER_NAME
	where it's not necessary.
	(builtin_function): Likewise.
	(finish_decl): Likewise.
	* dbxout.c (dbxout_type_methods): Likewise.
	* ggc-common.c (ggc_mark_trees): Likewise.
	* profile.c (output_func_start_profiler): Likewise.
	* varasm.c (make_decl_rtl): Likewise.

	* cse.c (find_comparison_args): Update documentation.  Fix
	mishandling of COMPARE operations.

	* tree.def (ABS_EXPR): Add documentation.
	* fold-const.c (fold): Improve folding of ABS_EXPRs.

2001-03-19  Zack Weinberg  <zackw@stanford.edu>

	* Makefile.in (hash.o): Depend on $(GCONFIG_H), not $(CONFIG_H).

2001-03-19  Jakub Jelinek  <jakub@redhat.com>

	* crtstuff.c (init_dummy): Use CRT_END_INIT_DUMMY if defined.
	Remove ia32 linux PIC kludge and move it...
	* config/i386/linux.h (CRT_END_INIT_DUMMY): ...here.

Mon Mar 19 18:53:54 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (absdf2 expander): Fix 64bit case.

2001-03-19  Brad Lucier  <lucier@math.purdue.edu>

	* Makefile.in: Have splay-tree.o depend on $(GCONFIG_H).

2001-03-16  Andrew Haley  <aph@cambridge.redhat.com>

	* config/ia64/libgcc-ia64.ver: Add __ia64_backtrace.

2001-03-19  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* README.X11: Remove obsolete file.

2001-03-18  Anthony Green  <green@redhat.com>

	* config/pj/pj.h: Remove some trailing commas.
	(ASM_SPEC): Use -EB and -EL, not -mb and -ml.

2001-03-18  Richard Henderson  <rth@redhat.com>

	* defaults.h (ACCUMULATE_OUTGOING_ARGS, PUSH_ARGS): Move from ...
	* calls.c: ... here.
	* combine.c, expr.c, final.c, function.c toplev.c: Don't provide
	defaults for them here.

2001-03-17  Anthony Green  <green@redhat.com>

	* config/pj/lib1funcs.S: Fix broken comment.
	* config/pj/pj.h (LOCAL_LABEL_PREFIX): Prefix internal
	labels with '.'.

2001-03-18  Joseph S. Myers  <jsm28@cam.ac.uk>

	* gcc.texi: Remove obsolete information relating to build and
	installation problems with enquire or the Pyramid C compiler.

2001-03-17  Richard Henderson  <rth@redhat.com>

	* dwarf2out.c (queue_reg_save): New.
	(flush_queued_reg_saves, clobbers_queued_reg_save): New.
	(dwarf2out_frame_debug_expr): Call queue_reg_save instead of
	dwarf2out_reg_save.
	(dwarf2out_frame_debug): Call flush_queued_reg_saves when needed.
	(cfa, cfa_store, cfa_temp): Make static.
	* final.c (final_scan_insn): Always call dwarf2out_frame_debug.

2001-03-17  Richard Henderson  <rth@redhat.com>

	* integrate.h (struct inline_remap): Add local_return_label.
	* integrate.c (expand_inline_function): Initialize it and emit
	it after copy_insn_notes.
	(copy_insn_list): Don't store local_return_label here.
	(copy_insn_notes): New function split out from copy_insn_list.

2001-03-17  Richard Henderson  <rth@redhat.com>

	* dwarf2out.c (lookup_filename): Emit .file if the assembler
	is generating .debug_line.
	(dwarf2out_init): Add main_input_filename to the file table first.
	* configure.in (as_dwarf2_debug_line): Test with file number 1
	instead of file number 0.

Sat Mar 17 11:52:34 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* combine.c (undobuf): Remove field previous_undos; all refs deleted.
	(gen_rtx_combine): Deleted; all references changed as appropriate.
	(gen_unary): Deleted; all refs changed to call simplify_gen_unary.

	* print-tree.c (print_node): Print DECL_NONADDRESSABLE_P.

2001-03-17  David Billinghurst  <David.Billinghurst@riotinto.com>

	* config/i386/xm-cygwin.h: Include <sys/cygwin.h.  Remove unused
	variable.

2001-03-16  Jim Wilson  <wilson@redhat.com>

	* config/ia64/ia64.c (ia64_compute_frame_size): If reg_fp is zero,
	then set it to LOC_REG (79) instead of aborting.

2001-03-16  Phil Edwards  <pme@sources.redhat.com>

	* gccbug.in:  Remove high priority.

2001-03-16  Richard Henerson  <rth@redhat.com>

	* aclocal.m4 (gcc_AC_EXAMINE_OBJECT): Substitute leading od
	output with a space instead of deleting it.
	* configure: Regenerate.

2001-03-16  Zack Weinberg  <zackw@stanford.edu>

	* aclocal.m4 (gcc_AC_EXAMINE_OBJECT): New utility macro which
	handles the gory details of converting an object file into
	something that's safe to grep.
	(gcc_AC_C_COMPILE_BIGENDIAN): Rename to
	gcc_AC_C_COMPILE_ENDIAN.  Use gcc_AC_EXAMINE_OBJECT.  Put
	newlines at either end of the string we're looking for.
	Make 'checking ...' message less stilted.
	(gcc_AC_C_FLOAT_FORMAT): Use gcc_AC_EXAMINE_OBJECT.  Handle
	ARM in-memory layout and its hypothetical converse.  Don't
	define HOST_FLOAT_WORDS_BIG_ENDIAN unless it's different from
	HOST_WORDS_BIG_ENDIAN.

	* configure.in: Adjust for renamed macro.  Move
	gcc_AC_C_FLOAT_FORMAT below gcc_AC_C_COMPILE_ENDIAN.
	* configure, config.in: Regenerate.

2001-03-16  Laurynas Biveinis  <lauras@softhome.net>

	* fixinc/Makefile.in: Set SHELL.

2001-03-16  Laurynas Biveinis  <lauras@softhome.net>

	* fixinc/fixincl.c (fix_with_system): Quote file names before
	passing them to shell.

2001-03-16  Laurynas Biveinis  <lauras@softhome.net>

	* Makefile.in: Use fix-header$(build_exeext) instead
	of fix-header.

2001-03-16  Richard Henderson  <rth@redhat.com>

	* dwarf2out.c: Revert most of 2000-11-25 and 2001-01-24 changes.
	(LN_PROLOG_AS_LABEL, LN_PROLOG_END_LABEL): New.
	(size_of_line_prolog): Remove.
	(output_line_info): Compute prologue size via label difference.
	(lookup_filename): Return "unspecified" for <internal> and <built-in>.

	* configure.in (HAVE_AS_DWARF2_DEBUG_LINE): Require that the
	assembler error when redefining file numbers.
	* config.in, configure: Rebuild.

	* dwarf2asm.c (dw2_asm_output_data): Mask data to the output size.
	(dw2_asm_output_data_uleb128): Use space not tab after .uleb128.
	(dw2_asm_output_delta_uleb128): Likewise.
	(dw2_asm_output_delta_sleb128): Similarly.
	(dw2_asm_output_data_sleb128): Similarly.  Print number in decimal.

2001-03-16  Michael Meissner  <meissner@redhat.com>

	* mips.h (BITMASK_HIGH): Replacement for 0x80000000 that avoids
	warnings.
	(BITMASK_UPPER16): Replacement for 0xffff0000 that avoids
	warnings.
	(BITMASK_LOWER16): Replacement for 0x0000ffff.

	* mips.c (save_restore_insns): Use BITMASK_UPPER16/BITMASK_LOWER16
	instead of 0xffff0000/0x0000ffff to avoid warnings about constants
	being unsigned in ISO C and signed in traditional.
	(expand_prologue): Ditto.
	(RA_MASK): Use BITMASK_HIGH to avoid warnings.

	* mips.md (divmodsi4,divmodsi4): Use BITMASK_HIGH to avoid
	warnings.
	(divsi3,divdi3): Ditto.
	(modsi3,moddi3): Ditto.
	(fix_truncdfsi2,fix_truncdfdi2): Ditto.
	(fix_truncsfsi2,fix_truncsfdi2): Ditto.
	(movsi split): Use BITMASK_UPPER16/BITMASK_LOWER16 to avoid
	warnings.

Fri Mar 16 14:47:57 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.c (ix86_expand_fp_movcc): Do not attempt to construct
	SSE based conditional moves on LTGT/UNEQ conditions;
	Canonicalize EQ to NE.
	* i386.md (sse_mov?fcc): Disallow EQ and NE in IEEE mode.
	(sse_mov?fcc_ne): New.

	* i386-protos.h (sign_extended_value, zero_extended_value): Declare.

2001-03-16  Alexandre Oliva  <aoliva@redhat.com>

	* config/sh/sh.c (sh_expand_prologue): Insns that set up the PIC
	register may be dead.

2001-03-16  Brad Lucier  <lucier@math.purdue.edu>

	* Makefile.in (hash.o): Depend on CONFIG_H.

2001-03-15  Mark Mitchell  <mark@codesourcery.com>

	* dwarf2out.c (rtl_for_decl_location): Use DECL_RTL_IF_SET.

2001-03-15  Richard Henderson  <rth@redhat.com>

	* config/ia64/ia64.h (ASM_OUTPUT_DWARF_OFFSET): New.
	(ASM_OUTPUT_DWARF_PCREL): New.
	* config/ia64/hpux.h (ASM_OUTPUT_DWARF_OFFSET): Remove.

2001-03-16  Alexandre Oliva  <aoliva@redhat.com>

	* cppfiles.c (stack_include_file): Use MAX of sysp.

2001-03-15  Steve Ellcey  <sje@cup.hp.com>

	* config.gcc (ia64*-*-hpux*): New case.
	* config/ia64/hpux.h: New file for HP-UX support.
	* config/ia64/t-hpux: New file for HP-UX support.

2001-03-16  Bruce Korb  <bkorb@gnu.org>, Alexandre Oliva  <aoliva@redhat.com>

	* fixinc/inclhack.def (irix_stdio_va_list): New.
	* fixinc/fixincl.x: Rebuilt.

2001-03-15  Richard Henderson  <rth@redhat.com>

	* dwarf2asm.c (dw2_asm_output_offset): Use ASM_OUTPUT_DWARF_OFFSET
	if provided by the target.
	(dw2_asm_output_pcrel): Likewise with ASM_OUTPUT_DWARF_PCREL.
	(dw2_asm_output_addr): New.
	* dwarf2asm.h (dw2_asm_output_addr): Declare.
	* dwarf2out.c (output_cfi): Use it for program addresses.
	(output_call_frame_info, output_die): Likewise.
	(output_aranges, output_line_info): Likewise.

2001-03-15  Bruce Korb  <bkorb@gnu.org>

	* gcc.c(main): make more rigorous
	* collect2.c(main): guard against ignoring SIGCHLD
	* protoize.c(main): ditto
	* gcc/fixinc/fixincl.c(initialize): ditto

2001-03-15  Mark Mitchell  <mark@codesourcery.com>

	* sdbout.c (sdbout_symbol): Use DECL_RTL_SET_P, SET_DECL_RTL.
	(sdbout_parms): Likewise.

Thu Mar 15 12:57:14 2001  Jeffrey A Law  (law@cygnus.com)

	* reload1.c (reload_cse_simplify_set): For LOAD_EXTEND_OP, do not
	"widen" a destination that is already wider than a word.  Also do
	not widen if LOAD_EXTEND_OP is NIL for the given mode.

2001-03-15  Bernd Schmidt  <bernds@redhat.com>

	* config/ia64/ia64.c (ia64_sched_reorder): Remove debugging aids.

Thu Mar 15 11:30:31 EST 2001  John Wehle  (john@feith.com)

	* i960.h (ROUND_TYPE_SIZE_UNIT): Fix typo.

Thu Mar 15 11:24:29 EST 2001  John Wehle  (john@feith.com)

	* i960.h (i960_maxbitalignment,
	i960_last_maxbitalignment): Declare.
	* i960.c (i960_maxbitalignment,
	i960_last_maxbitalignment): Make global.
	(process_pragma): Delete.
	(i960_pr_align, i960_pr_noalign): Move from here ...
	* i960-c.c: ... to this new file.
	* t-960bare (i960-c.o): New rule.
	* t-vxworks960 (i960-c.o): Likewise.
	* config.gcc (i960-*-*): Define c_target_objs and
	cxx_target_objs.

2001-03-15  Bernd Schmidt  <bernds@redhat.com>

	* cselib.c (hash_rtx): For REG and MEM, just use value of expression
	without adding in rtx code and mode.

	* alias.c (init_alias_analysis): Don't use any rtx whose value
	varies as a known value.
	Delete a superfluous test.

	* config/ia64/ia64.c (maybe_rotate): New function, broken out of
	ia64_sched_reorder.
	(ia64_sched_reorder): Call maybe_rotate; also rotate after
	scheduling a stop bit.
	(ia64_emit_nops): Correctly handle ASMs.

2001-03-15  Mark Mitchell  <mark@codesourcery.com>

	* varasm.c (assemble_variable): Use DECL_RTL_SET_P.

2001-03-15  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cpp.texi: Update documentation for -include and -imacros.
	* cppfiles.c (struct include_file): Remove "defined" memeber.
	(find_or_create_entry): Make a copy of the file name, and
	simplify it.
	(open_file): Update to ensure we use the simplified filename.
	(stack_include_file): Don't set search_from.
	(cpp_included): Don't simplify the path name here.
	(find_include_file): New prototype.  Call search_from to
	get the start of the "" include chain.  Don't simplify the
	filenames here.
	(_cpp_execute_include): New prototype.  Move diagnostics to
	do_include_common.  Update.
	(_cpp_pop_file_buffer): Don't set defined.
	(search_from): New prototype.  Use the preprocessor's cwd
	for files included from the command line.
	(read_name_map): Don't simplify the pathname here.
	* cpphash.h (enum include_type): New.
	(struct buffer): Delete search from.  New search_cached.
	(_cpp_execute_include): Update prototype.
	* cppinit.c (do_includes): Use _cpp_execute_include.
	* cpplib.c (do_include_common): New function.
	(do_include, do_include_next, do_import): Use it.

2001-03-14  Mark Mitchell  <mark@codesourcery.com>

	* varasm.c (assemble_alias): Use DECL_ASSEMBLER_NAME, not the
	contents of the RTL, to determine the name of the object.

2001-03-14  Mark Mitchell  <mark@codesourcery.com>

	* tree.h (DECL_RTL): Allocate RTL lazily.
	(SET_DECL_RTL): New macro.
	(DECL_RTL_SET_P): Likewise.
	(COPY_DECL_RTL): Likewise.
	(DECL_RTL_IF_SET): Likewise.
	* varasm.c (make_decl_rtl): Add assertions about the kind of
	declaration we are processing.
	* c-decl.c (duplicate_decls): Use COPY_DECL_RTL, DECL_RTL_SET_P, etc.
	(start_decl): Likewise.
	(finish_decl): Likewise.
	* c-semantics.c (emit_local_var): Likewise.
	* calls.c (expand_call): Likewise.
	* dbxout.c (dbxout_symbol): Likewise.
	* emit-rtl.c (unshare_all_rtl): Likewise.
	(unshare_all_decls): Likewise.
	(reset_used_decls): Likewise.
	* expr.c (store_constructor): Likewise.
	(safe_from_p): Likewise.
	(expand_expr): Likewise.
	* function.c (put_var_into_stack): Likewise.
	(instantiate_decls_1): Likewise.
	(assign_parms): Likewise.
	(expand_function_start): Likewise.
	(expand_function_end): Likewise.
	* ggc-common.c (gcc_mark_trees): Likewise.
	* integrate.c (function_cannot_inline_p): Likewise.
	(copy_decl_for_inlining): Likewise.
	(expand_inline_function): Likewise.
	(integrate_parm_decls): Likewise.
	(integrate_decl_tree): Likewise.
	* print-tree.c (print_node): Likewise.
	* reg-stack.c (stack_result): Likewise.
	* stmt.c (label_rtx): Likewise.
	(expand_return): Likewise.
	(expand_decl): Likewise.
	(expand_decl_cleanup): Likewise.
	(expand_anon_union_decl): Likewise.
	* toplev.c (check_global_declarations): Likewise.
	(rest_of_decl_compilation): Likewise.
	* tree.c (simple_cst_equal): Likewise.
	* objc/objc-act.c (generate_static_references): Likewise.

2001-03-14  Zack Weinberg  <zackw@stanford.edu>

	* aclocal.m4 (gcc_AC_C_CHARSET, gcc_AC_C_COMPILE_BIGENDIAN,
	gcc_AC_C_FLOAT_FORMAT): New macros.
	* configure.in: Add AC_PROG_CPP after CC tests;
	gcc_AC_C_CHARSET and gcc_AC_C_FLOAT_FORMAT after the sizeof
	tests; and gcc_AC_C_COMPILE_BIGENDIAN after gcc_AC_C_CHAR_BIT.
	* configure, config.in: Regenerate.

	* config/a29k/xm-a29k.h, config/arc/xm-arc.h,
	config/arm/xm-arm.h, config/c4x/xm-c4x.h,
	config/convex/xm-convex.h, config/d30v/xm-d30v.h,
	config/i370/xm-linux.h, config/i370/xm-oe.h,
	config/ia64/xm-ia64.h, config/m32r/xm-m32r.h,
	config/m68k/xm-m68k.h, config/mips/xm-mips.h,
	config/pa/xm-linux.h, config/pa/xm-pa.h,
	config/rs6000/xm-lynx.h, config/rs6000/xm-mach.h,
	config/rs6000/xm-rs6000.h, config/rs6000/xm-sysv4.h,
	config/sparc/xm-sparc.h, config/vax/xm-vax.h,
	config/we32k/xm-we32k.h: Delete.

	* config/i370/xm-mvs.h, config/m88k/m88k.h,
	config/romp/xm-romp.h, config/rs6000/xm-beos.h,
	config/vax/xm-vms.h: Don't define any of:
	HOST_FLOAT_FORMAT, HOST_EBCDIC, HOST_WORDS_BIG_ENDIAN

	* config/rs6000/aix.h: Define COLLECT_EXPORT_LIST here.

	* config.gcc: Remove references to deleted files.
	(i370-*-opened*): Use i370/xm-mvs.h (which now defines only
	FATAL_EXIT_CODE, which is the same between oe and mvs).

2001-03-14  DJ Delorie  <dj@redhat.com>
	    Vladimir Makarov  <vmakarov@redhat.com>

	* config/i960/i960.c (i960_function_prologue): Compute size of
	frame according to number of registers actually saved there.

2001-03-14  Richard Henderson  <rth@redhat.com>

	* expr.c (emit_move_insn_1): Fix else if around #endif.

Wed Mar 14 22:39:12 CET 2001  Jan Hubicka  <jh@suse.cz>
			      Vojtech Pavlik

	* md.texi (machine constraints): Document 'Q', 'R', 'e' and 'Z'
	constraints.

Wed Mar 14 22:26:10 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.c (ix86_cmodel_string, ix86_cmodel): Define.
	(override_options): Parse cmodel string.
	(x86_64_sign_extended_value, x86_64_zero_extended_value): New.
	* i386.h (TARGET_OPTIONS): Add "cmodel".
	(EXTRA_CONSTRAINT): Recognize 'e' and 'Z'.
	(enum cmodel): New.
	(ix86_cmodel_string, ix86_cmodel): Declare.

Wed Mar 14 22:26:54 CET 2001  Jan Hubicka  <jh@suse.cz>

	Spot by Matt Kraai:
	* i386.h (GENERAL_REG_P): Add missing REG_P.

2001-03-14  Laurynas Biveinis  <lauras@softhome.net>

	* configure.in: Use $gcc_cv_as instead of $as.
	* configure: Regenerated.

2001-03-14  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cppfiles.c (stack_include_file): Only increase the include
	count if we actually process the file properly, as opposed
	to treating it as length zero.  Only call read_include_file
	if not DO_NOT_REREAD.  Handle the -H include file output
	here.
	(read_include_file): Remove now redundant DO_NOT_REREAD check.
	(cpp_included, find_include_file): Simplify pathnames after
	remapping them.  If remapping, don't use the remapped file
	name's buffer as our scratch buffer.
	(cpp_pop_file_buffer): Replace the multiple include macro
	only if it isn't yet set.
	(read_name_map): Simplify remapped names when reading in.
	(remap_filename): Move code to code path that uses it.
	(_cpp_simplify_pathname): Return the input pointer.
	* cpphash.h (_cpp_simplify_pathname): Update prototype.

2001-03-14  Mark Mitchell  <mark@codesourcery.com>

	* expr.c (expand_expr): Revove bogus conditional.

Wed Mar 14 19:29:50 CET 2001  Jan Hubicka  <jh@suse.cz>

	* expr.c (emit_move_insn_1): Guard PUSH_ROUNDING use by ifdef.

2001-03-14  Jakub Jelinek  <jakub@redhat.com>

	* reg-stack.c (stack_result): Unconditionally use
	FUNCTION_OUTGOING_VALUE resp. FUNCTION_VALUE.

Wed Mar 14 16:36:25 CET 2001  Jan Hubicka  <jh@suse.cz>

	* expr.c (emit_move_insn_1):  Split push of complex value when
	no suitable push instruction exist.

	* i386.md (QImode move/add/shift patterns): Use ANY_QI_REG_P
	instead of QI_REG_P.

Tue Mar 13 22:22:04 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* alias.c (handled_component_p, can_address_p): New functions.
	(get_alias_set): Use them.

2001-03-13  Jim Wilson  <wilson@redhat.com>

	* config/ia64/ia64.c (find_gr_spill): Subtract frame_pointer_needed
	from 80 in try_locals code.
	(ia64_expand_prologue): Add comment pointing to find_gr_spill change.

2001-03-13  Zack Weinberg  <zackw@stanford.edu>

	* aclocal.m4 (gcc_AC_COMPILE_CHECK_SIZEOF, gcc_AC_C_CHAR_BIT,
	gcc_AC_C_LONG_LONG): New.
	* configure.in: Use them.  Probe the size of short, int, long,
	and long long/__int64 if we have them.  Move all the AC_C_*
	checks together, except gcc_AC_C_CHAR_BIT which has to go
	after AC_CHECK_HEADERS(limits.h).
	Take hwint.h out of host_xm_file and build_xm_file.

	* hwint.h: Unconditionally define HOST_BITS_PER_CHAR,
	HOST_BITS_PER_SHORT, HOST_BITS_PER_INT, HOST_BITS_PER_LONG,
	and HOST_BITS_PER_LONGLONG in terms of SIZEOF_* and CHAR_BIT.
	Move the HOST_WIDEST_INT setup logic here from system.h.
	Provide HOST_WIDEST_INT even if HOST_BITS_PER_LONGLONG is not
	defined.
	* system.h: Include hwint.h after limits.h.  HOST_WIDEST_INT
	is now handled by hwint.h.

	* config/alpha/xm-alpha-interix.h, config/alpha/xm-vms.h,
	config/c4x/xm-c4x.h, config/i370/xm-oe.h,
	config/ia64/xm-ia64.h: Don't define any of:
	HOST_BITS_PER_LONG, HOST_BITS_PER_CHAR, HOST_BITS_PER_SHORT,
	HOST_BITS_PER_LONGLONG.

	* config/alpha/xm-alpha.h, config/dsp16xx/xm-dsp16xx.h,
	config/h8300/xm-h8300.h, config/mips/iris6.h,
	config/mn10200/xm-mn10200.h, config/pa/xm-pa64hpux.h,
	config/sparc/xm-sp64.h: Delete.
	* config.gcc: Remove references to deleted files.

	* config/arm/xm-arm.h, config/mips/xm-mips.h: Don't define
	HOST_FLOAT_FORMAT to IEEE_FLOAT_FORMAT.
	* config/i370/xm-linux.h: Clarify floating-point situation in
	a comment.

2001-03-13  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cppfiles.c (NO_INCLUDE_PATH): New macro.
	(find_include_file): Decide here which part of the include
	chain to start the search.  Complain about an empty include
	chain in all cases apart from an abolsute file name.
	(_cpp_execute_include): Don't choose the search chain here.
	Don't call handle_missing_include in the case of an empty
	include chain.
	(_cpp_compare_file_date): Don't choose the search chain here.
	* cpplib.c (do_include_next): Move the in-main-file diagnostic
	here from _cpp_execute_include.  Behave like #include if
	we're in the main file.

2001-03-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* system.h (malloc, realloc, calloc, strdup): Only poison these
	tokens when IN_GCC is defined.

Tue Mar 13 14:38:44 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (abs?f expander): Support SSE case.
	(abd?f_if): Add new "USE"; add splitters.

2001-03-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* cpp.texi (poison): Explain the macro expansion exception.

2001-03-13  Jakub Jelinek  <jakub@redhat.com>

	* expr.c (store_expr): Add dont_store_target.  If temp is already in
	target before copying to reg, don't store it into target again.

2001-03-12  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cppinternals.texi: Update for file handling.

2001-03-12  Jeffrey Oldham  <oldham@codesourcery.com>

	* emit-rtl.c (remove_unnecessary_notes): Reverse Richard Kenner's
	2001-02-24 which broke building the Java library.
	* function.c (identify_blocks): Likewise.
	(all_blocks): Likewise.
	* integrate.c (integrate_decl_tree): Likewise.
	* print-tree.c (print_node): Likewise.
	* tree.h (BLOCK_NUMBER): Likewise.
	(struct tree_block): Likewise.

2001-03-12  David Edelsohn  <edelsohn@gnu.org>

	* rs6000/aix51.h (CPP_SPEC, CPLUSPLUS_CPP_SPEC): Fix typo in
	__WCHAR_TYPE__ definition.
	(WCHAR_TYPE_SIZE): #undef before #define.

2001-03-12  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cppfiles.c: Update comments.
	(destroy_include_file_node): Rename destroy_node.
	(find_or_create_entry): New function.
	(open_file, _cpp_fake_include): Use it.
	(handle_missing_header): New function, broken out of
	_cpp_execute include.  Don't segfault if there is no
	system or quoted path.
	(_cpp_execute_include): Use handle_missing_header.

2001-03-12  Jeffrey Oldham  <oldham@codesourcery.com>

	* jump.c (reversed_comparison_code_parts): Reverse Jan Hubricka's
	2001-02-28 patch because it breaks arm-linux and mips-sgi-irix6.5.

Mon Mar 12 14:05:32 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* flow.c (insn_dead_p): Don't consider two memrefs equivalent
	unless anti_dependence says they are.
	* alias.c (objects_must_conflict): If neither has a type specified,
	they must conflict.

2001-03-12  Neil Booth  <neil@daikokuya.demon.co.uk>
	    David Billinghurst <David.Billinghurst@riotinto.com>

	* config/mips/iris5.h:  Change WCHAR_TYPE to int.

Mon Mar 12 16:32:21 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (trunctfdf2_2): Rename missnamed pattern.
	(*_one_bit): Remove type on the match_operand in attributes.

Mon Mar 12 16:27:56 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.c: Commit forgotten hunk in previous patch.
	(regclass_map): Add extended registers.
	(dbx_register_map): Add missing frame register.

Mon Mar 12 15:41:08 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (all XFmode patterns except swapxf): Disable for 64bit.

	* i386.md (x86_sahf_1): Disable for 64bit.
	(popsi*, pophi*): Likewise.
	(pushqi, pushhi): Likewise.
	(movdi, pushdi): Likewise.
	(zero extend DImode splitter): Likewise.
	(adddi, minusdi splitter): Likewise.
	(umulsidi): Likewise.
	(umulsi): New.
	(mulsidi): Disable for 64bit
	(lshift:DI/ashift:DI): Disable for 64bit.
	(loop patterns): Likewise.
	(call_pop, call_value_pop expanders and patterns): Likewise.
	(prologue_get_pc): Likewise.
	(leave): Likewise.
	(fcmovDI pattern and splitter): Likewise.
	(movdfcc_1_rex64): New.

Mon Mar 12 15:16:36 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.h (VALID_FP_MODE_P): XFmode is invalid on x86_64.
	(MODES_TIEABLE_P): QImodes and DImodes are tiable on x86_64.
	(HARD_REGNO_CALLER_SAVE_MODE): Save QImodes as QImodes for x86_64.
	(STATIC_CHAIN_REGNUM): Set to r10 for x86_64.
	(PIC_OFFSET_TABLE_REGNUM): Set to INVALID_REGNUM for x86_64.
	(LIMIT_RELOAD_CLASS): Avoid limiting of QImodes on x86_64.
	(SECONDARY_OUTPUT_RELOAD_CLASS): No need to QImodes.
	(PUSH_ROUNDING): x86_64 rounds to 64bits.
	(CONSTANT_ADDRESS_P): Accept CONST_DOUBLE.
	(REGPARM_MAX): Set to 6 for x86_64.
	(SSE_REGPARM_MAX): Set to 16 for x86_64.
	* i386.c (hard_regno_mode_ok): QImodes can be in all general purpose
	registers.

	* (patterns that does use upper halves): Update constraints
	'q' to 'Q' and 'r' to 'R'.
	(cmpqi_ext_1): Disable for 64bit.
	(cmpqi_ext_3_insn): Likewise.
	(movqi_extzv_1): Likewsie.
	(addqi_ext_1): Liekwsie
	(testqi_ext_1): Liekwsie
	(andqi_ext_1): Liekwsie
	(xorqi_ext_1): Liekwsie
	(cmpqi_ext_1_rex64): New.
	(cmpqi_ext_3_insn_rex64): Likewise.
	(movqi_extzv_1_rex64): Likewsie.
	(addqi_ext_1_rex64): Liekwsie
	(testqi_ext_1_rex64): Liekwsie
	(andqi_ext_1_rex64): Liekwsie
	(xorqi_ext_1_rex64): Liekwsie

2001-03-11  Zack Weinberg  <zackw@stanford.edu>

	* configure.in: Move check for unsigned enumerated bitfields
	to macro in aclocal.m4.  Disable it for now.
	* configure, config.in: Regenerate.
	* system.h: Don't do anything with ONLY_INT_FIELDS.  Use the
	unsigned-int form of ENUM_BITFIELD() unless being compiled by GCC.
	* varasm.c (struct rtx_const): Use ENUM_BITFIELD().  Move enum
	kind above its first use.

	* config/xm-interix.h, config/alpha/xm-alpha.h,
	config/i370/xm-linux.h, config/i386/xm-beos.h,
	config/i386/xm-mingw32.h, config/mips/xm-mips.h,
	config/pa/xm-pa.h, config/pa/xm-pa64hpux.h,
	config/rs6000/xm-beos.h, config/rs6000/xm-sysv4.h,
	Don't define ONLY_INT_FIELDS under any circumstances.

	* config/pa/xm-pa.h: Don't define __BSD_NET2__.

	* config/pa/xm-pahpux.h, config/pa/xm-papro.h,
	config/sparc/xm-sysv4.h: Delete - now identical with some
	other xm header.
	* config.gcc (hppa targets): Replace xm-pahpux.h and
	xm-papro.h with implicit xm-pa.h.
	(sparc targets): Replace xm-sysv4.h with implicit or explicit
	xm-sparc.h.

2001-03-12  Aldy Hernandez  <aldyh@redhat.com>

	* reload1.c (reload_cse_simplify): Call reload_cse_simplify_set
	before reload_cse_noop_set_p.

2001-03-11  Zack Weinberg  <zackw@stanford.edu>

	* config.gcc: Where xm-host.h used to include another
	xm-host.h, list the nested header directly in xm_file.  Remove
	references to deleted files.  Can now use sparc/xm-sp64.h for
	sparcv9-*-solaris*.

	* config/xm-linux.h, config/arm/xm-linux.h,
	config/i386/xm-dos.h, config/i386/xm-gnu.h,
	config/i386/xm-linux.h, config/i386/xm-openbsd.h,
	config/i860/xm-fx2800.h, config/m68k/xm-atari.h,
	config/m68k/xm-linux.h, config/m68k/xm-sun3.h,
	config/sparc/xm-linux.h, config/sparc/xm-sysv4-64.h:
	Delete.

	* config/alpha/xm-alpha-interix.h: Don't include alpha/xm-alpha.h.
	* config/mips/xm-iris5.h: Don't include mips/xm-mips.h.  Don't
	bother to wrap #undef in #ifdef.
	* config/pa/xm-linux.h, config/rs6000/xm-sysv4.h:
	Don't include xm-linux.h.
	* config/sparc/xm-sp64.h: Don't include sparc/xm-sparc.h.

	* configure.in: Wrap regexps using [] in changequote block.
	Use expr : not echo | grep.  Simplify regexps.
	* configure: Regenerate.

	56 xm-files remain, 22 xm-arch.

2001-03-11  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* mips-tfile.c: Cast arg to PTR when specifier is HOST_PTR_PRINTF.
	(__proto, PTR_T, CPTR_T): Delete, use PARAMS/PTR instead.
	(local_index, local_rindex): Delete, use strchr/strrchr instead.
	(copy_object): Fix format specifier vs argument mismatch.

	* mips-tdump.c: Make local functions static.
	(rindex): Don't #undef.
	(__proto, PTR_T, CPTR_T): Delete, use PARAMS/PTR instead.
	(fatal, fancy_abort): Delete.
	(read_seek): Avoid signed/unsigned compare.

Sun Mar 11 17:01:41 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* combine.c (try_combine): Fix error in change to try original
	register.
	(gen_rtx_combine): Do same as gen_rtx for now.

2001-03-11  Zack Weinberg  <zackw@stanford.edu>

	* configure.in: AC_SUBST xm_defines.
	* configure: Regenerate.
	* Makefile.in: Set DEFINES=$(xm_defines) when building
	tconfig.h.

2001-03-11  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cppfiles.c (INCLUDE_LEN_FUDGE, ENOMEM): Delete.
	(cpp_included, find_include_file): Update.
	(_cpp_compare_file_date): Make else unconditional.

2001-03-10  kaz Kojima <kkojima@rr.iij4u.or.jp>

	* config/sh/sh.h (LEGITIMATE_PIC_OPERAND_P): Defined.

2001-03-10  Toshiyasu Morita  <toshiyasu.morita@hsa.hitachi.com>

	* config/sh/sh.md (umulhisi3_i, mulhisi3_i): Fix mnemonics.
	* config/sh/lib1funcs.asm (mulsi3): Convert mulu to mulu.w.

Sat Mar 10 22:42:05 2001  Alexandre Oliva  <aoliva@redhat.com>

	* tree.c (build_common_tree_nodes_2): Don't copy va_list_type_node
	if it's a record type.

Sat Mar 10 17:52:54 2001  Christopher Faylor <cgf@cygnus.com>

	* config/i386/cygwin.h: Make ../w32api a system directory.  Reorganize
	mingw includes slightly.

2001-03-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* system.h (malloc, realloc, calloc, strdup, bzero, bcmp, rindex):
	#undef token before poisoning it.

2001-03-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* alpha.c (check_float_value): Use memcpy, not bcopy.

	* m32r.c (m32r_sched_reorder): Likewise.

	* vax.c (check_float_value): Likewise.

2001-03-10  Neil Booth  <neil@daikokuya.demon.co.uk>

	* toplev.c (file_name_nondirectory): Remove.
	* toplev.h: Similarly.
	* dwarf2out.c (compute_section_prefix): Use lbasename instead
	of file_name_nondirectory.

Sat Mar 10 10:36:45 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* mips-tdump.c (read_seek): Call xmalloc, not malloc.
	* mips-tfile.c: Don't #undef rindex; not used.

Sat Mar 10 14:34:59 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.h (DBX_REGISTER_NUMBER): Return proper values for 64bits.
	(dbx64_register_map): Declare.
	(RETURN_ADDR_RTX): Fix for 64bit.
	(DWARF_FRAME_RETURN_COLUMN): Set to 16 for 64bit.
	(INCOMING_FRAME_SP_OFFSET): Set to 8.
	* i386.c (dbx64_register_map): New global array.
	* beos-elf.h, freebsd.h, i386-interix.h, i386elf.h,
	linux.h (DBX_REGISTER_REGNUMBER): Use dbx64_register_map
	for 64bits.

2001-03-10  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cppfiles.c (search_from): Use lbasename.
	* mkdeps.c (deps_add_default_target): Use lbasename.

2001-03-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* fixinc/server.c (load_data, run_shell): Use xmalloc, xrealloc &
	xcalloc in lieu of malloc, realloc & calloc.

	* gencheck.c (xmalloc): Use really_call_malloc, not malloc.

	* gengenrtl.c (xmalloc): Likewise.

	* gensupport.c (xcalloc, xrealloc, xmalloc): Use the
	really_call_* memory allocation routines.

	* stmt.c (check_for_full_enumeration_handling): Use
	really_call_calloc, not calloc.

	* system.h (really_call_malloc, really_call_calloc,
	really_call_realloc): Define.
	(malloc, realloc, calloc, strdup, bzero, bcmp, rindex): Poison.

Fri Mar  9 18:39:19 2001  Jeffrey A Law  (law@cygnus.com)

	* pa.md (builtin_longjmp): Rework slightly to work for PA64 too.

2001-03-09  Nicola Pero <n.pero@mi.flashnet.it>

	* configure: Rebuilt.
	* configure.in: Only use `lang_requires' for languages athat are
	actually enabled.

2001-03-09  Joseph S. Myers  <jsm28@cam.ac.uk>

	* invoke.texi: Fix typo.
	* gcc.1: Regenerate.

2001-03-09  Zack Weinberg  <zackw@stanford.edu>

	* configure.in: Prune nonexistent files from build_xm_file,
	xm_file, and host_xm_file lists.  Warn unless they're
	$cpu/xm-$cpu.h.
	Don't generate *config.h here.
	AC_SUBST all variables needed to generate *config.h.
	* configure: Regenerate.
	* mkconfig.sh: New helper script, from code removed from
	configure.in.
	* Makefile.in: Zap all MALLOC variables - no longer used
	anywhere, and malloc.c doesn't exist.
	Substitute in variables needed to generate *config.h.
	Stop lying about the dependencies contained in CONFIG_H and
	GCONFIG_H.
	(HCONFIG_H, TCONFIG_H, TM_P_H): New variables.
	(config.h, hconfig.h, tconfig.h, tm_p.h, cs-config.h,
	cs-hconfig.h, cs-tconfig.h, cs-tm_p.h): New rules.
	(all .o): Add dependencies on $(HCONFIG_H), $(TCONFIG_H),
	$(TM_P_H), etc. as appropriate.

	* config.gcc: Zap references to deleted files.
	* ggc-none.c: Don't include rtl.h or tm_p.h.

	* config/i386/xm-beos.h, config/i386/xm-dgux.h,
	config/i386/xm-djgpp.h, config/i386/xm-dos.h,
	config/i386/xm-gnu.h, config/i386/xm-i386-interix.h,
	config/i386/xm-linux.h, config/i386/xm-linux.h,
	config/i386/xm-next.h, config/i386/xm-openbsd.h,
	config/i386/xm-sun.h, config/i386/xm-sysv3.h:
	Don't include i386/xm-i386.h.

	* config/elxsi/xm-elxsi.h, config/i386/xm-bsd386.h,
	config/i386/xm-i386.h, config/i860/xm-i860.h,
	config/i960/xm-i960.h, config/mcore/xm-mcore.h,
	config/mn10300/xm-mn10300.h, config/ns32k/xm-ns32k.h,
	config/pj/xm-pj.h, config/sh/xm-sh.h, config/v850/xm-v850.h:
	Delete (empty except comments, #includes of other deleted
	files, and macros used nowhere).

Fri Mar  9 20:05:27 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.h (MAX_WCHAR_TYPE_SIZE): New constant to keep tradcpp
	independent on TARGET_FLAGS.

Fri Mar  9 19:52:52 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.h (FIRST_PSEUDO_REGISTER): Set to 53.

	(FIXED_REGISTERS, CALL_USED_REGISTERS, REG_ALLOC_ONES): Add
	extended ones.
	(CONDITIONAL_REGISTER_USAGE): Set proper values according to
	TARGET_64BIT.
	(FIRST_REX_INT_REG, LAST_REX_INT_REG, FIRST_REX_SSE_REG,
	LAST_REX_SSE_REG): define.
	(enum reg_class): Add 'LEGACY_REGS'
	(REG_CLASS_CONTENTS): Likewise; add extended registers.
	(SSE_REGNO_P): Recognize extended registers.
	(ANY_QI_REG_P, REX_INT_REGNO_P, REX_INT_REG_P): New.
	(REG_CLASS_FROM_LETTER): Add 'R' and 'Q'.
	(REGNO_OK_FOR_INDEX_P, REGNO_OK_FOR_BASE_P,
	REG_OK_FOR_BASE_NONSTRICT_P): Recognize REX registers.
	(REG_OK_FOR_STRREG_NONSTRICT_P, REG_OK_FOR_STRREG_STRICT_P,
	 REG_OK_FOR_STRREG_P): Remove.
	(HI_REGISTER_NAMES): Add extended registers.
	(ADDITIONAL_REGISTER_NAMES): Likewise.
	(QI_REGISTER_NAMES): Add 8bit extended registers.
	(DEBUG_REG): Support extended registers.
	* i386.c (regclass_map): Add extended registers.
	(dbx_register-map): Likewise.
	(svr4_dbx_register_map): Likewise.
	(print_reg): Support extended registers.
	(print_operand): Support 64bit operands.

Fri Mar  9 19:37:46 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.h (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Set to 128bit for x86_64
	(BOOL_TYPE_SIZE, SHORT_TYPE_SIZE, INT_TYPE_SIZE,
	 FLOAT_TYPE_SIZE, LONG_TYPE_SIZE, MAX_LONG_TYPE_SIZE,
	 DOUBLE_TYPE_SIZE, LONG_LONG_TYPE_SIZE): New constants.
	(BITS_PER_WORD, UNITS_PER_WORD, POINTER_SIZE, PARM_BOUNDARY,
	 STACK_BOUNDARY): Set properly for 64bits.
	(MAX_BITS_PER_WORD, MIN_UNITS_PER_WORD): New constants.
	(EMPTY_FIELD_BOUNDARY): Define using BITS_PER_WORD.
	(BIGGEST_FIELD_ALIGNMENT): Set to 128 for 64bits.
	(MOVE_MAX): Set to 16.
	(MOVE_MAX_PIECES): 8 for 64bit.
	(Pmode): Set to SImode.

Fri Mar  9 09:00:36 2001  Mike Stump  <mrs@wrs.com>

	* cselib.c (hash_rtx): Ensure that hash isn't zero upon return.

Fri Mar  9 17:38:08 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.h (mask_64bit): New constant.
	(target_64bit): New macro.
	(target_options): Add '64'/'32'
	(target_default): Define.
	* cygwin.h freebsd-aout.h i386-interix.h i386.h i386elf.h isc.h
	isccoff.h netbsd.h next.h openbsd.h p sco.h sco5.h scodbx.h sequent.h
	unix.h win32.h (TARGET_DEFAULT): Rename to TARGET_SUBTARGET_DEFAULT.

Thu Mar  8 23:36:56 2001  Jeffrey A Law  (law@cygnus.com)

	* config/pa/som.h (MAKE_DECL_ONE_ONLY, ASM_WEAKEN_LABEL): Disable.

Thu Mar  8 23:29:37 2001  John Wehle  (john@feith.com)

	* rtlanal.c (rtx_varies_p): Check operand 0 of a
	LO_SUM unless for_alias is set.

2001-03-08  Stan Shebs  <shebs@apple.com>

	* objc/objc-act.c: Fix old typos in comments, add comments for
	various functions.
	(hash_init): Fix file name in error message.
	(hash_enter): Ditto.
	(hash_add_attr): Ditto.
	(continue_class): Ditto.

2001-03-08  Bruce Korb  <bkorb@gnu.org>

	gcc.c(main): ensure SIGCHLD handling is set to SIG_DFL so that
	wait4() can receive the signal.

Thu Mar  8 21:09:10 2001  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* fixinc/inclhack.def (AAB_dgux_int_varargs): Don't use HTML
	entities.
	* fixinc/fixincl.x: Regenerate.

Thu Mar  8 21:09:10 2001  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* fixinc/inclhack.def (AAA_standards): Undo <standards.h> breakage
	on Tru64 UNIX.
	* fixinc/fixincl.x: Regenerate.

2001-03-08  Richard Henderson  <rth@redhat.com>

	* configure.in (HAVE_AS_LEB128): New assembler check.
	* configure, config.in: Rebuilt.

Thu Mar  8 19:54:04 CET 2001  Jan Hubicka  <jh@suse.cz>

	* reg-stack.c (move_for_stack_reg): Avoid non-poping fst for
	TFmode too.

2001-03-08  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* config/ns32k/xm-pc532-min.h, config/we32k/xm-we32k.h: Delete
	references to the MAXPATHLEN macro.

	* config/alpha/xm-alpha.h, config/arm/xm-arm.h,
	config/i386/xm-cygwin.h, config/xm-linux.h: Delete references to
	the POSIX macro.

	* config/i386/xm-gnu.h, config/xm-gnu.h,
	config/alpha/xm-openbsd.h, config/i386/xm-openbsd.h,
	config/m68k/xm-openbsd.h, config/mips/xm-openbsd.h,
	config/sparc/xm-openbsd.h, config/xm-openbsd.h: Delete empty
	and/or unused files.

	* config.gcc: Define POSIX in xm_defines as appropriate in lieu of
	doing so in various xm-*.h files.

Thu Mar  8 06:32:50 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* config/i386/i386.md (clrstrsi): Call ix86_set_move_mem_attrs.

2001-03-08  Alexandre Oliva  <aoliva@redhat.com>

	* configure.in (enable_shared): Support per-package shared-library
	enabling.
	* configure: Rebuilt.

2001-03-07  David Edelsohn  <edelsohn@gnu.org>

	* rs6000.md (cr logic): Add original POWER mnemonic alternative
	for crnot.  Set operands[5] in splitter.

2001-03-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* config/i370/xm-mvs.h, config/i370/xm-oe.h,
	config/i386/xm-beos.h, config/i386/xm-mingw32.h,
	config/m88k/xm-m88k.h, config/mips/xm-iris6.h,
	config/mips/xm-openbsd.h, config/pa/xm-pa64hpux.h,
	config/pa/xm-pahpux.h, config/rs6000/xm-beos.h,
	config/rs6000/xm-darwin.h, config/rs6000/xm-mach.h,
	config/rs6000/xm-rs6000.h, config/xm-interix.h: Delete references
	to the USG macro.

	* config/vax/xm-vaxv.h, config/a29k/xm-unix.h,
	config/i370/xm-i370.h, config/i386/xm-dgux.h,
	config/i386/xm-sun.h, config/i386/xm-sysv3.h,
	config/m68k/xm-tower.h, config/m68k/xm-aux.h,
	config/m68k/xm-hp320.h, config/m68k/xm-amix.h,
	config/m68k/xm-altos3068.h, config/m68k/xm-mot3300.h,
	config/m68k/xm-m68kv.h, config/m88k/xm-openbsd.h,
	config/mips/xm-nws3250v4.h, config/mips/xm-sysv.h,
	config/mips/xm-iris3.h, config/mips/xm-iris4.h, config/xm-svr3.h,
	config/xm-svr4.h, config/sparc/xm-pbd.h, config/clipper/xm-clix.h:
	Delete unused and/or empty files.

	* config.gcc: Define USG in xm_defines as appropriate.  Define
	POSIX in lieu of xm-svr4.h.  Delete all references to the SVR3
	macro.  Remove deleted xm-* files from $xm_files variable.

2001-03-07  Tom Tromey  <tromey@redhat.com>

	* configure: Rebuilt.
	* configure.in: Allow config-lang.in to set `lang_requires' to list
	of other required languages.

2001-03-07  Andrew MacLeod  <amacleod@redhat.com>

	* config/a29k/a29k.c (print_operand): Free a29k_last_prologue_insn
	after its emitted.
	(output_prologue): Use xmalloc not oballoc.
	(output_epilog): Free a29k_first_epilogue_insn when finished.
	* confif/a29k/a29k.h (PREDICATE_CODES): Remove shift_constant_operand.

2001-03-07  Brad Lucier  <lucier@math.purdue.edu>

	* builtins.c (expand_builtin_mathfn): Check
	flag_unsafe_math_optimizations, not flag_fast_math.
	(expand_builtin): Likewise
	* combine.c (combine_simplify_rtx): Likewise.
	(simplify_if_then_else): Likewise.
	* cse.c (fold_rtx): Likewise.
	* flags.h: Remove flag_fast_math.  Add
	flag_unsafe_math_optimizations and flag_trapping_math.
	* fold-const.c (negate_expr): Check
	flag_unsafe_math_optimizations, not flag_fast_math.
	(invert_truthvalue): Likewise.
	(fold): Likewise.  Before associating operands, check that
	code == MULT_EXPR, not code != MULT_EXPR.
	* ifcvt.c (noce_try_minmax): Check
	flag_unsafe_math_optimizations, not flag_fast_math.
	(noce_operand_ok): Check flag_trapping_math, not flag_fast_math.
	* invoke.texi: Document -funsafe-math-optimizations and
	-fno-trapping-math.  Change documentation for -ffast-math.
	* jump.c (reversed_comparison_code_parts): Likewise.
	(rtx_equal_for_thread_p): Likewise.
	* optabs.c (emit_conditional_move): Likewise.
	* simplify-rtx.c (simplify_binary_operation): Likewise.
	(simplify_relational_operation): Likewise.
	(simplify_ternary_operation): Likewise.
	* toplev.c: Remove flag_fast_math.  Add flag_trapping_math and
	flag_unsafe_math_optimizations.  Remove fast-math entry from f_options.
	Add trapping-math and unsafe-math-optimizations entries to f_options.
	(set_fast_math_flags): New, sets flags for -ffast-math.
	(set_no_fast_math_flags): New, sets flags for -fno-fast-math.
	(decode_f_option): Add code to handle -ffast-math and -fno-fast-math.
	* toplev.h: Declare set_fast_math_flags and set_no_fast_math_flags.

	* config/alpha/alpha.c (alpha_emit_conditional_branch): Likewise.
	(alpha_emit_conditional_move): Initialize local_fast_math to
	flag_unsafe_math_optimizations, not flat_fast_math.
	* config/c4x/c4x.c (c4x_override_options): Call set_fast_math_flags
	instead of setting flag_fast_math to 1.
	* config/convex/convex.md: Check flag_unsafe_math_optimizations,
	not flag_fast_math.
	* config/i386/i386.c (override_options): Likewise
	* config/i386/i386.md: Likewise.
	* config/m68k/m68k.md: Likewise.
	* config/mips/mips.md: Likewise.
	* config/rs6000/rs6000.c (validate_condition_mode): Likewise.
	(rs6000_generate_compare): Likewise.

2001-03-07  Laurynas Biveinis  <lauras@softhome.net>

	* Makefile.in: Set RANLIB to @RANLIB@.
	Remove RANLIB_TEST.

2001-03-07  Laurynas Biveinis  <lauras@softhome.net>

	* fixinc/inclhack.def (djgpp_wchar_h): New test.
	* fixinc/fixincl.x: Regenerated.

2001-03-07  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.md (call_osf_1_noreturn): New pattern.

2001-03-07  Richard Henderson  <rth@redhat.com>

	* emit-rtl.c (remove_unnecessary_notes): Verify proper nesting
	of block notes and exception handling notes.

	* lists.c (init_EXPR_INSN_LIST_cache): Don't check initialized.
	* toplev.c (rest_of_compilation): Call init_EXPR_INSN_LIST_cache ...
	(compile_file): ... here.

2001-03-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* fixinc/Makefile.in (FIXINC_DEFS): Add -DHAVE_CONFIG_H.

	* fixinc/gnu-regex.c: Don't include auto-host.h since we get
	config.h now.  Include libiberty.h to handle alloca.

2001-03-06  Zack Weinberg  <zackw@stanford.edu>

	* c-parse.in (yylexname): New function, split out of _yylex.
	(objc_rid_sans_at): New table.
	(init_reswords): Initialize it.
	(_yylex): Give labels clearer names.  Handle CPP_ATSIGN by
	retrieving the next token and checking it for significance as
	an ObjC keyword or string constant.

	* cpplex.c (_cpp_lex_token): Just return CPP_ATSIGN for '@'.
	* cpplib.h (TTYPE_TABLE): Add CPP_ATSIGN, drop CPP_OSTRING.

	* c-lex.c, c-parse.in, cppmacro.c, cpplex.c: Remove references
	to CPP_OSTRING.

2001-03-06  Stephen L Moshier  <moshier@mediaone.net>

	* config/m68k/m68k.c (const_uint32_operand): Accept any
	const_int on a 32-bit host.

2001-03-06  Nicola Pero  <n.pero@mi.flashnet.it>

	* objc/objc-act.c (init_objc): Set save_lang_status,
	restore_lang_status, and mark_lang_status.

2001-03-06  Krister Walfridsson  <cato@df.lth.se>

	* dwarf2asm.c (dw2_asm_output_delta): Fix smallest_mode_for_size call.

2001-03-06  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cppinternals.texi: Update.

2001-03-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* config/a29k/xm-a29k.h, config/a29k/xm-unix.h,
	config/alpha/xm-alpha.h, config/arc/xm-arc.h, config/arm/xm-arm.h,
	config/c4x/xm-c4x.h, config/clipper/xm-clix.h,
	config/convex/xm-convex.h, config/d30v/xm-d30v.h,
	config/dsp16xx/xm-dsp16xx.h, config/elxsi/xm-elxsi.h,
	config/h8300/xm-h8300.h, config/i370/xm-i370.h,
	config/i370/xm-linux.h, config/i370/xm-mvs.h, config/i370/xm-oe.h,
	config/i386/xm-i386.h, config/i860/xm-i860.h,
	config/i960/xm-i960.h, config/ia64/xm-ia64.h,
	config/m32r/xm-m32r.h, config/m68k/xm-m68k.h,
	config/m88k/xm-m88k.h, config/mcore/xm-mcore.h,
	config/mips/xm-mips.h, config/mn10200/xm-mn10200.h,
	config/mn10300/xm-mn10300.h, config/ns32k/xm-ns32k.h,
	config/pa/xm-linux.h, config/pa/xm-pa.h, config/pa/xm-pa64hpux.h,
	config/pa/xm-pahpux.h, config/pa/xm-papro.h, config/pj/xm-pj.h,
	config/romp/xm-romp.h, config/rs6000/xm-beos.h,
	config/rs6000/xm-lynx.h, config/rs6000/xm-rs6000.h,
	config/rs6000/xm-sysv4.h, config/sh/xm-sh.h,
	config/sparc/xm-sparc.h, config/sparc/xm-sysv4.h,
	config/v850/xm-v850.h, config/vax/xm-vax.h, config/vax/xm-vms.h,
	config/we32k/xm-we32k.h: Delete HOST_BITS_PER_* definitions which
	match the defaults provided in hwint.h.

	* config/i386/xm-lynx.h, config/m68k/xm-lynx.h,
	config/sparc/xm-lynx.h, config/xm-std32.h: Delete files.

	* config.gcc (xm_file): Don't set to files which are deleted.

	* hwint.h: Provide default values for HOST_BITS_PER_*.  No longer
	guard this file against these macros being undefined.

2001-03-06  Zack Weinberg  <zackw@stanford.edu>

	* objc/objc-act.c (objc_add_static_instance): Set DECL_INITIAL
	and DECL_DEFER_OUTPUT on the decl we create, before calling
	rest_of_decl_compilation.

2001-03-06  Zack Weinberg  <zackw@stanford.edu>

	* aclocal.m4 (AM_GNU_GETTEXT): Don't AC_REQUIRE
	AC_FUNC_ALLOCA.
	* configure, config.in: Regenerate.
	* config.gcc: Remove references to deleted files.

	* genattr.c, genattrtab.c, genextract.c, genoutput.c,
	genrecog.c, rtl.c: Do not use alloca anywhere.

	* Makefile.in, build-make, system.h, config/x-interix,
	config/x-svr4, config/xm-interix.h, config/xm-openbsd.h,
	config/alpha/xm-alpha.h, config/alpha/xm-vms.h,
	config/arc/xm-arc.h, config/arm/xm-arm.h,
	config/d30v/xm-d30v.h, config/dsp16xx/xm-dsp16xx.h,
	config/h8300/xm-h8300.h, config/i370/x-oe,
	config/i370/xm-linux.h, config/i386/x-aix, config/i386/x-beos,
	config/i386/x-ncr3000, config/i386/x-sco5,
	config/i386/xm-dgux.h, config/i860/x-sysv4,
	config/i960/xm-i960.h, config/m32r/xm-m32r.h,
	config/m68k/x-crds, config/m68k/x-dpx2, config/m68k/x-hp320,
	config/m68k/x-hp320g, config/m69k/x-mot3300,
	config/m68k/x-mot3300-gas, config/m68k/xm-amix.h,
	config/m68k/xm-hp320.h, config/m68k/xm-m68kv.h,
	config/m68k/xm-mot3300.h, config/m88k/x-dolph,
	config/m88k/x-sysv4, config/m88k/x-tekXD88,
	config/m88k/xm-m88k.h, config/mcore/xm-mcore.h,
	config/mips/x-iris, config/mips/x-iris3,
	config/mips/x-sni-svr4, config/mips/x-sysv,
	config/mips/xm-iris6.h, config/mips/xm-mips.h,
	config/mips/xm-nws3250v4.h, config/pa/x-hpux,
	config/pa/x-pa-mpeix, config/pa/xm-pa.h,
	config/pa/xm-pa64hpux.h, config/pa/xm-pahpux.h,
	config/pa/xm-papro.h, config/romp/xm-romp.h,
	config/rs6000/x-aix31, config/rs6000/x-aix41,
	config/rs6000/x-beos, config/rs6000/x-lynx,
	config/rs6000/x-mach, config/rs6000/x-rs6000,
	config/rs6000/x-sysv4, config/rs6000/xm-rs6000.h,
	config/rs6000/xm-sysv4.h, config/sh/xm-sh.h,
	config/sparc/x-sysv4, config/sparc/xm-linux.h,
	config/sparc/xm-pbd.h, config/sparc/xm-sparc.h,
	config/vax/xm-vms.h: Eradicate all references to alloca and
	related stuff.

	* config/xm-alloca.h, config/clipper/x-clix,
	config/i386/xm-sysv4.h, config/i860/x-fx2800,
	config/i860/x-sysv3, config/m88k/x-sysv3,
	config/sparc/xm-sol2.h, config/we32k/x-we32k: Delete
	(contained only alloca related hacks).

	* config/i386/xm-beos.h, config/rs6000/xm-beos.h: Just define
	USE_C_ALLOCA.

2001-03-05  Brad Lucier  <lucier@math.purdue.edu>

	* invoke.texi: Document __FAST_MATH__.

2001-03-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* crtstuff.c: Restore include of auto-host.h.

2001-03-05  Fergus Henderson  <fjh@cs.mu.oz.au>

	Put main() in a separate file, so that the language
	front-end can use a different main().

	* main.c: New.
	* toplev.c: (main): Rename as toplev_main.
	* toplev.h: Declare toplev_main.
	* Makefile.in (OBJS): add toplev.o.
	  (BACKEND): remove toplev.o, add main.o.

2001-03-04  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cppfiles.c (search_from): Special case the empty string.

2001-03-04  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cppfiles.c (_cpp_execute_include): Don't make a null-terminated
	copy of the filename.  Don't use CPP_PREV_BUFFER.  Don't call
	strlen or strcpy; we already know the length.
	(_cpp_compare_file_date): Similarly.
	* cpphash.h (struct cpp_reader): Delete done_initialising.
	(CPP_PREV_BUFFER): Delete.
	* cppinit.c (cpp_start_read): Don't set done_initialising.
	* cpplex.c (parse_string): Guarantee null-termination.
	(_cpp_equiv_toklists): Remove.
	* cpplib.c (glue_header_name): Null-terminate.
	(do_line): Don't leak memory.
	* cpplib.h (BT_WEAK): Delete.
	* cppmain.c (cb_ident): Strings are now null-terminated.

2001-03-04  Laurynas Biveinis  <lauras@softhome.net>

	* gcc.c (convert_filename): Append executable suffix
	if NO_AUTO_EXE_SUFFIX is not defined.
	* gcc.texi: Document NO_AUTO_EXE_SUFFIX.
	* config/i386/djgpp.h: Define NO_AUTO_EXE_SUFFIX.

2001-03-03  David O'Brien  <obrien@FreeBSD.org>

	from 2000-09-06  Zack Weinberg  <zack@wolery.cumb.org>
	* c-parse.gperf, c-gperf.h: Delete.
	(c-gperf.h was accidently re-added to the CVS repo in the rev
	1.16 commit by tromey)

2001-03-03  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cpplex.c (_cpp_lex_token): Don't warn about directives in
	macro arguments when looking for the '('.
	* cppmacro.c (funlike_invocation_p): Set parsing_args to
	2 when really parsing arguments; 1 when looking for '('.
	Always restore the lexer position.

2001-03-03  Neil Booth  <neil@daikokuya.demon.co.uk>

	* longlong.h (umul_ppmm): Don't use a multiline string.

2001-03-03  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* fixinc/fixlib.h (t_bool): Add identifier `t_bool' in typedef.
	* fixinc/server.c (read_pipe_timeout): Use enum t_bool instead of
	t_bool in declaration because pcc can't combine volatile with typedef
	types.

Sat Mar  3 19:47:13 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.c (ix86_expand_fp_compare): Delay creating of scratch register
	until when it is really needed.
	(ix86_expand_compare): Update call of ix86_expand_fp_compare.
	* i386.h (PREDICATE_CODES): Add all codes for sse_comparison_operator
	* i386.md (float?i?f splitter): Don't force source operand to memory
	for SSE.
	(sse_movdfcc): Fix constraint.
	(sse_movdfcc splitter): Handle properly the second alternative.

2001-03-03  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cpplex.c (parse_string): Unconditionally pedwarn.

2001-03-03  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cpp.texi: Update.
	* cppexp.c (parse_number): Update.
	* cpplex.c (parse_string): Pedwarn if multiline string does not
	result from a system header's macro.
	* cpplib.h (sys_objmacro_p): Rename sys_macro_p.
	* cppmacro.c (sys_objmacro_p): Rename sys_macro_p.  Return true
	for function-like macros too.
	* c-lex.c (lex_number): Update.

2001-03-03  Richard Henderson  <rth@redhat.com>

	* dwarf2out.c (output_call_frame_info): Fix augmentation length.

Sat Mar  3 04:17:17 2001  J"orn Rennecke <amylaar@redhat.com>

	* combine.c (try_combine): If split with mode-changed scratch
	register didn't work, try the original mode.

Sat Mar  3 03:46:47 2001  J"orn Rennecke <amylaar@redhat.com>

	* tm.texi: Change STRUCT_FORCE_BLK to MEMBER_TYPE_FORCES_BLK.
	* config/c4x/c4x.h: Likewise.
	* stor-layout.c (compute_record_mode): Likewise.
	(layout_type, case ARRAY_TYPE): Use MEMBER_TYPE_FORCES_BLK.

2001-03-02  Zack Weinberg  <zackw@stanford.edu>

	* configure.in: Kill tm.h.  Include the files in the $tm_file
	list in all three of config.h, hconfig.h, tconfig.h, after the
	relevant set of xm_files.  Put TARGET_CPU_DEFAULT in all
	three, include insn-codes.h in all three (#ifndef GENERATOR_FILE).
	* configure: Regenerate.
	* Makefile.in (clean): Don't delete tm.h.

	* system.h: If SUCCESS_EXIT_CODE and FATAL_EXIT_CODE are not
	defined, set them from EXIT_SUCCESS and EXIT_FAILURE.  If
	those are not defined, set SEC and FEC to 0 and 1.
	* gcc.texi: Update to match.

	* crtstuff.c: Include tconfig.h, not auto-host.h and tm.h.
	* config/fp-bit.c, config/m68k/aux-crt2.asm,
	config/m68k/aux-crtn.asm, config/m68k/aux-mcount.c:
	Include tconfig.h, not tm.h.

	* config/xm-lynx.h, config/xm-std32.h,
	config/a29k/xm-a29k.h, config/a29k/xm-unix.h,
	config/alpha/xm-alpha.h, config/arc/xm-arc.h,
	config/avr/xm-avr.h, config/c4x/xm-c4x.h,
	config/clipper/xm-clix.h, config/convex/xm-convex.h,
	config/d30v/xm-d30v.h, config/dsp16xx/xm-dsp16xx.h,
	config/elxsi/xm-elxsi.h, config/fr30/xm-fr30.h,
	config/h8300/xm-h8300.h, config/i370/xm-linux.h,
	config/i386/xm-i386.h, config/i860/xm-i860.h,
	config/i960/xm-i960.h, config/ia64/xm-ia64.h,
	config/m32r/xm-m32r.h, config/m68hc11/xm-m68hc11.h,
	config/m88k/xm-m88k.h, config/mcore/xm-mcore.h,
	config/mips/xm-mips.h, config/mn10200/xm-mn10200.h,
	config/mn10300/xm-mn10300.h, config/ns32k/xm-ns32k.h,
	config/pa/xm-linux.h, config/pa/xm-pa.h,
	config/pa/xm-pa64hpux.h, config/pa/xm-pahpux.h,
	config/pa/xm-papro.h, config/pdp11/xm-pdp11.h,
	config/pj/xm-pj.h, config/romp/xm-romp.h,
	config/rs6000/xm-beos.h, config/rs6000/xm-rs6000.h,
	config/rs6000/xm-sysv4.h, config/sh/xm-sh.h,
	config/sparc/xm-sparc.h, config/sparc/xm-sysv4.h,
	config/v850/xm-v850.h, config/vax/xm-vax.h,
	config/we32k/xm-we32k.h:
	Don't include tm.h.
	Don't define SUCCESS_EXIT_CODE or FATAL_EXIT_CODE.

	* config/i370/xm-i370.h, config/i370/xm-mvs.h,
	config/i370/xm-oe.h: Don't include tm.h.  Don't define
	SUCCESS_EXIT_CODE.
	* config/vax/xm-vms.h: Don't include tm.h.

	* config/xm-lynx.h, config/avr/xm-avr.h,
	config/fr30/xm-fr30.h, config/pdp11/xm-pdp11.h,
	Delete; made empty by above changes.
	* config/i386/xm-lynx.h, config/m68k/xm-lynx.h,
	config/rs6000/xm-lynx.h, config/sparc/xm-lynx.h:
	Don't include config/xm-lynx.h or tm.h.

	* config/xm-gnu.h: Don't include fcntl.h.
	* config/sparc/xm-lynx.h: Don't include sys/types.h and
	sys/wait.h.
	* config/clipper/xm-clix.h, config/vax/xm-vax.h: Don't define isinf.

2001-03-02  Richard Henderson  <rth@redhat.com>

	* tm.texi (File Framework): Document UNALIGNED_SHORT_ASM_OP,
	UNALIGNED_INT_ASM_OP, and UNALIGNED_DOUBLE_INT_ASM_OP.

2001-03-02  Richard Henderson  <rth@redhat.com>

	* Makefile.in (OBJS): Add dwarf2asm.o.
	* dwarf2asm.c, dwarf2asm.h: New files.
	* dwarf2out.c (*): Use them.
	(size_of_uleb128, size_of_sleb128): Remove.
	(output_uleb128, output_sleb128): Remove.
	(UNALIGNED_SHORT_ASM_OP, UNALIGNED_INT_ASM_OP): Remove.
	(UNALIGNED_DOUBLE_INT_ASM_OP, ASM_BYTE_OP): Remove.
	(UNALIGNED_OFFSET_ASM_OP, UNALIGNED_WORD_ASM_OP): Remove.
	(FDE_LABEL, LINE_NUMBER_BEGIN_LABEL, LINE_NUMBER_END_LABEL): New.
	(ASM_OUTPUT_DWARF_DATA1, ASM_OUTPUT_DWARF_DELTA1): Remove.
	(ASM_OUTPUT_DWARF_DATA2, ASM_OUTPUT_DWARF_DELTA2): Remove.
	(ASM_OUTPUT_DWARF_DATA4, ASM_OUTPUT_DWARF_DELTA4): Remove.
	(ASM_OUTPUT_DWARF_DATA, ASM_OUTPUT_DWARF_DELTA): Remove.
	(ASM_OUTPUT_DWARF_ADDR, ASM_OUTPUT_DWARF_ADDR_DATA): Remove.
	(ASM_OUTPUT_DWARF_ADDR_DELTA, ASM_OUTPUT_DWARF_ADDR_CONST): Remove.
	(ASM_OUTPUT_DWARF_OFFSET4, ASM_OUTPUT_DWARF_OFFSET): Remove.
	(ASM_OUTPUT_DWARF_CONST_DOUBLE): Remove.
	(ASM_OUTPUT_DWARF_NSTRING, ASM_OUTPUT_DWARF_STRING): Remove.
	(dwarf2out_frame_debug): Remove unused variables.
	(output_loc_operands): Don't abort on 8 byte constants if
	host integers are wide enough.
	(output_symbolic_ref): Remove.
	(size_of_die): Don't assume 4 byte host integers.
	(output_line_info): Use ASM_GENERATE_INTERNAL_LABEL for begin
	and end labels.
	(add_const_value_attribute) [CONST_INT]: Verify we're not doing
	something stupid with HOST_WIDE_INT to long truncation.
	[CONST_DOUBLE]: Likewise.

	* config/arm/conix-elf.h (UNALIGNED_WORD_ASM_OP): Remove.
	(ASM_OUTPUT_DWARF2_ADDR_CONST, ASM_OUTPUT_DWARF_ADDR_CONST): Remove.
	* config/arm/unknown-elf.h: Likewise.
	* config/rs6000/aix.h (UNALIGNED_SHORT_ASM_OP): New.
	(UNALIGNED_INT_ASM_OP, UNALIGNED_DOUBLE_INT_ASM_OP): New.
	(ASM_OUTPUT_DWARF_ADDR_VAR, ASM_OUTPUT_DWARF_DELTA_VAR): Remove.
	(ASM_OUTPUT_DWARF_DELTA2, ASM_OUTPUT_DWARF_DELTA4): Remove.
	(ASM_OUTPUT_DWARF_DELTA, ASM_OUTPUT_DWARF_ADDR_DELTA): Remove.
	(ASM_OUTPUT_DWARF_ADDR, ASM_OUTPUT_DWARF_DATA4): Remove.
	(ASM_OUTPUT_DWARF_DATA2, ASM_OUTPUT_DWARF_OFFSET4): Remove.
	(ASM_OUTPUT_DWARF_OFFSET): Remove.
	* config/rs6000/sysv4.h (ASM_OUTPUT_DWARF_ADDR): Remove.
	* config/sparc/sp64-elf.h (UNALIGNED_DOUBLE_INT_ASM_OP): New.
	(UNALIGNED_LONGLONG_ASM_OP, ASM_OUTPUT_DWARF_ADDR): Remove.
	(ASM_OUTPUT_DWARF_ADDR_CONST, ASM_OUTPUT_DWARF_REF): Remove.

2001-03-02  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* cselib.c (hash_rtx): Cast enums to unsigned int.

2001-03-02  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* print-rtl.c (print_rtx): Cast enums to int for comparison.
	* c-decl.c (grokdeclarator): Cast enums to int for comparison and
	shifts.
	* c-format.c (C_STD_VER): Cast to int for comparisons.
	(check_function_format): Cast various enums to int for &.
	(maybe_read_dollar_number): Likewise.
	(check_format_info): Likewise.
	(check_format_info_main): Likewise.
	* expr.c (emit_move_insn_1): Cast enums to unsigned int for comparison.
	(safe_from_p): Likewise.
	* varasm.c (const_hash): Cast enum to int for %.
	* emit-rtl.c (init_emit_once): Use int loop variable to work around
	pcc enum problems with < and ++ operators.
	* regclass.c (init_reg_sets_1): Cast enums for comparison.
	(choose_hard_reg_mode): Use unsigned int to iterate over CCmodes.
	(regclass_init): Change enum class to int to iterate over reg_classes.
	* genrecog.c (merge_trees): Cast enums for comparison.
	* rtl.h (GET_CODE): Cast to enum rtx_code.
	(PUT_CODE): Cast to ENUM_BITFIELD(rtx_code).
	(GET_MODE): Cast to enum machine_mode.
	(PUT_MODE): Cast to ENUM_BITFIELD(machine_mode).
	(GET_NOTE_INSN_NAME): Cast enum to int.
	* tree.h (TREE_CODE): Cast to enum tree_code.
	(TREE_SET_CODE): Cast VALUE to ENUM_BITFIELD(tree_code).
	* timevar.c (timevar_print): Change loop variable id from enum to
	unsigned int.
	* fixinc/fixincl.c (VLEVEL): Cast enums in comparison to unsigned int.
	* config/i386/i386.md: Use PUT_MODE for mode assignment.
	* toplev.c (compile_file): Cast enum DFI to int.
	(decode_d_option): Likewise.

Fri Mar  2 12:18:13 2001  Christopher Faylor <cgf@cygnus.com>

	* cppinit.c (append_include_chain): Mark "after" include file name list
	as a system directory.
	* cpp.texi: Document new behavior.

Fri Mar  2 11:59:43 CET 2001  Jan Hubicka  <jh@suse.cz>

	* ifcvt.c (noce_operand_ok): Handle properly unarry operations.

2001-03-02  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cppfiles.c (struct include_file): Update.
	(stack_include_file): Use search_from.
	(cpp_included, find_include_file): Update.
	(cpp_execute_include): Update.  ptr->name may not be
	null terminated.  Use the new search_from member variable
	of cpp_buffer.
	(_cpp_compare_file_date): Similarly.
	(search_from): New function, similar to actual_directory.
	(actual_directory): Delete.
	(remap_filename): Update.  loc->name may not be null terminated.
	(struct file_name_list): Rename search_path.  Update.
	* cpphash.h (struct cpp_buffer): Delete actual_dir.  New members
	search_from and dir.
	(struct cpp_reader): Remove actual_dirs.
	* cppinit.c (struct cpp_pending): Update for renamed objects.
	(append_include_chain, remove_dup_dir, remove_dup_dirs,
	merge_include_chains, cpp_destroy, cpp_start_read): Similarly.
	* cpplib.h (struct cpp_options): Similarly.

2001-03-01  Zack Weinberg  <zackw@stanford.edu>

	* config/xm-lynx.h, config/xm-std32.h, config/a29k/xm-a29k.h,
	config/a29k/xm-unix.h, config/alpha/xm-alpha.h,
	config/arc/xm-arc.h, config/arm/xm-arm.h, config/c4x/xm-c4x.h,
	config/clipper/xm-clix.h, config/convex/xm-convex.h,
	config/d30v/xm-d30v.h, config/dsp16xx/xm-dsp16xx.h,
	config/elxsi/xm-elxsi.h, config/fr30/xm-fr30.h,
	config/h8300/xm-h8300.h, config/i370/xm-i370.h,
	config/i370/xm-linux.h, config/i370/xm-mvs.h,
	config/i370/xm-oe.h, config/i386/xm-aix.h,
	config/i386/xm-i386.h, config/i386/xm-osf.h,
	config/i860/xm-i860.h, config/i960/xm-i960.h,
	config/ia64/xm-ia64.h, config/m32r/xm-m32r.h,
	config/m68k/xm-m68k.h, config/m88k/xm-m88k.h,
	config/mcore/xm-mcore.h, config/mips/xm-mips.h,
	config/mn10200/xm-mn10200.h, config/mn10300/xm-mn10300.h,
	config/ns32k/xm-ns32k.h, config/pa/xm-linux.h,
	config/pa/xm-pa.h, config/pa/xm-pa64hpux.h,
	config/pa/xm-pahpux.h, config/pa/xm-papro.h,
	config/pj/xm-pj.h, config/romp/xm-romp.h,
	config/rs6000/xm-beos.h, config/rs6000/xm-rs6000.h,
	config/rs6000/xm-sysv4.h, config/sh/xm-sh.h,
	config/sparc/xm-sparc.h, config/sparc/xm-sysv4.h,
	config/v850/xm-v850.h, config/vax/xm-vax.h,
	config/vax/xm-vms.h, config/we32k/xm-we32k.h:
	Do not define TRUE or FALSE.

	* config/i386/xm-aix.h, config/i386/xm-osf.h: Delete; made
	empty by above change.
	* config.gcc: Remove references to these files.

	* configure.in: Detect stdbool.h.
	* configure, config.in: Regenerate.
	* system.h: Include stddef.h here if available.
	Set HAVE__BOOL based on GCC_VERSION and __STDC_VERSION__.
	Then set up a sensible boolean type at the very end.

	* combine.c, cse.c, expr.c, fold-const.c, gensupport.c,
	config/mcore/mcore.c: Rename variables named 'true' and/or 'false'.

	* hash.h: Delete 'boolean' typedef and related #undefs.

	* function.c, ggc-common.c, hash.h, hash.c, tlink.c: Replace
	all uses of 'boolean' with 'bool'.

2001-03-01  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* cpplib.c (_cpp_init_stacks): Cast enum for comparison.
	* cppexp.c (lex): Cast enums for comparison.
	* cppinit.c (parse_option): Cast enum for comparison.
	* cpplex.c (cpp_spell_token): Cast enums to int for minus.
	(cpp_output_token): Likewise.
	(cpp_can_paste): Cast enums for comparsion and plus/minus.
	(cpp_avoid_paste): Cast enums for minus and comparison.

2001-03-01  Zack Weinberg  <zackw@stanford.edu>

	* gcc.c, objc/lang-specs.h: Add zero initializer for cpp_spec
	field to all array elements.

2001-03-01  Zack Weinberg  <zackw@stanford.edu>

	* cpphash.h (struct cpp_reader): Add print_version field.
	* cppinit.c (cpp_handle_option): For -v, -version, and --version,
	just set print_version and other flags as appropriate.
	(cpp_post_options): Print version here if print_version is set.

	* toplev.c (exit_after_options): New flag.
	(independent_decode_option): Don't exit here; just set
	exit_after_options.
	(main): Exit after calling lang_hooks.post_options if
	exit_after_options is true.

	* cppinit.c (append_include_chain): Drop never-used case QUOTE.
	(merge_include_chains): Adjust comment to match code.

2001-03-01  Zack Weinberg  <zackw@stanford.edu>

	* stringpool.c (set_identifier): New function.
	* tree.h: Prototype it.

	* c-parse.in: Kill D_YES. If compiled for objc, call
	save_and_forget_protocol_qualifiers from init_reswords.
	* objc/objc-act.c (remember_protocol_qualifiers,
	forget_protocol_qualifiers): Don't diddle C_IS_RESERVED_WORD.
	Swap out the non-keyword IDENTIFIER_NODEs for keyword ones, or
	vice versa.
	(save_and_forget_protocol_qualifiers): New function.
	* c-lex.h: Prototype save_and_forget_protocol_qualifiers.

2001-03-01  Diego Novillo  <dnovillo@redhat.com>

	* c-semantics.c (prune_unused_decls): Return error_mark_node
	instead of (tree) 1 to stop traversing the tree chain.

2001-03-01  Bernd Schmidt  <bernds@redhat.com>

	Fix a problem introduced by Kenner's Feb 18 change.
	* toplev.c (rest_of_compilation): Disable flag_cse_follow_jumps and
	flag_cse_skip_blocks only temporarily, not for ever.

Thu Mar  1 09:49:58 2001  Jeffrey A Law  (law@cygnus.com)

	* config/pa/som.h  (ASM_IDENTIFY_GCC): Define.
	(ASM_IDENTIFY_GCC_AFTER_SOURCE): Likewise.

	* pa.c (emit_move_sequence): Verify operand0 is a hard register
	before determining its register class.

2001-03-01  Bernd Schmidt  <bernds@redhat.com>

	* config/ia64/ia64.c (ia64_hard_regno_rename_ok): Disallow renaming
	from reg 4 if current_function_calls_setjmp.
	(gen_nop_type): New function.
	(ia64_emit_nops): New function.
	(ia64_reorg): Call it.
	(ia64_sched_reorder): Move code that rotates bundles up a bit.

	* reload1.c (eliminate_regs_in_insn): Restrict the special case
	code not to try to optimize adds with anything but a REG destination.

	* sched-int.h (struct haifa_insn_data): Add new member priority_known.
	(INSN_PRIORITY_KNOWN): New accessor macro.
	* haifa-sched.c (priority): Use it instead of testing priority against
	zero.

2001-02-28  DJ Delorie  <dj@redhat.com>

	* config/m68k/m68k.h (MOVE_BY_PIECES_P): Avoid pushing bytes,
	since that doesn't work the way gcc wants on a generic m68k.

2001-02-28  Richard Henderson  <rth@redhat.com>

	* caller-save.c (save_call_clobbered_regs): Fix typo in
	comparison last change.

Wed Feb 28 19:31:42 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.c (pentium4_cost): New.
	(m_PENT4): New macro.
	(x86_push_memory, x86_movx,x86_cmove, x86_deep_branch, x86_use_sahf
	x86_sub_esp_4, x86_sub_esp_8, x86_add_esp_4, x86_add_esp_8
	x86_integer_DFmode_moves, x86_partial_reg_dependency,
	x86_memory_mismatch_stall): Add Pentium4
	(x86_use_q_reg, x86_use_any_reg): Kill.
	(override_options): Add pentium4.
	(incdec_operand): Return 0 for pentium4.
	(ix86_issue_rate): Add PROCESSOR_PENTIUM4 and PROCESSOR_ATHLON.
	* i386.h (x86_use_q_reg, x86_use_any_reg): Kill.
	(TARGET_PENTIUM4): Define.
	(enum processor_type): Add PROCESSOR_PENTIUM4.
	(CPP_CPU_DEFAULT_SPEC): Add pentium4 support.
	* i386.md (attribute "cpu"): Add pentium4.
	* invoke.texi (march): Add pentium4.

Wed Feb 28 19:28:06 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (sse_mov?fcc*): New patterns and splitters.
	* i386.c (ix86_expand_movcc): Work post-reload; recognize
	the SSE based conditional moves.

Wed Feb 28 19:18:23 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (attribute mode): Add "TI".
	(movsf_1): Add pxor support; remove constant propagation splitter.
	(movdf_integer): Likewise.
	(movdf_nointeger): Likewise.
	(movxf constant prop splitter): Handle all modes; update for SSE.
	* i386.h (CONST_DOUBLE_OK_FOR_LETTER): Add 'H' for SSE constants.
	* i386.c (standard_80387_constant_p): Rewrite.
	(standard_sse_constant_p): New.
	* i386-protos.h (standard_sse_constant_p): New.

Wed Feb 28 19:05:37 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (sse_setccsf, sse_setccdf): New.
	(sse_cmp* patterns): Use '%D' instead of outputtting condition
	flag directly.
	* i386.c (sse_comparison_operator): Accept the supported unordered
	comparses; be ready for fast_math.
	(print_operand): Support 'D'.

Wed Feb 28 18:54:51 CET 2001  Jan Hubicka  <jh@suse.cz>

	* jump.c (reversed_comparison_code): Kill.

Wed Feb 28 18:50:15 CET 2001  Jan Hubicka  <jh@suse.cz>

	* toplev.c (rest_of_compilation): Do post-reload splitting unconditionally
	for STACK_REGS

Wed Feb 28 18:47:37 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (sse_andti3, sse_nandti_3, sse_xorti3): Add SSE2 versions;
	add missing '%' in constraints.

Wed Feb 28 17:24:24 CET 2001  Jan Hubicka  <jh@suse.cz>

	* c-common.c (build_common_tree_nodes): Build intTI_type_nodes
	for HOST_BITS_PER_WIDE_INT == 32 too.

Wed Feb 28 17:22:35 CET 2001  Jan Hubicka  <jh@suse.cz>

	* caller-save.c (reg_save_code, reg_restore_code):  Index by mode, not
	NREGS.
	(insert_save, insert_restore): New parameter save_mode.
	(init_caller_save): Update initialization of reg_save_code
	and reg_restore_code.
	(save_call_clobbered_regs):  Compute save_modes and update calls to
	reg_save_code and reg_restore_code.
	(insert_restore):  Unsignetize numbers; use save_modes to choose mode
	of spill; update use of reg_restore_code.
	(insert_save):  Likewise.
	* i386.h (HARD_REGNO_CALLER_SAVE_MODE): Update.
	* c4x.h (HARD_REGNO_CALLER_SAVE_MODE): Update.
	* regs.h (HARD_REGNO_CALLER_SAVE_MODE): Likewise.

Wed Feb 28 17:19:28 CET 2001  Jan Hubicka  <jh@suse.cz>

	* ifcvt.c (noce_emit_store_flag, noce_try_store_flag_constants,
	noce_try_store_flag_inc, noce_try_store_flag_mask,
	noce_try_cmove_arith):
	Use reversed_comparison_code instead of reverse_comparison and
	can_reverse_comparison_p.

Wed Feb 28 17:17:29 CET 2001  Jan Hubicka  <jh@suse.cz>

	* jump.c (reversed_comparison_code_parts): Allow reversal of
	unordered compares in -ffast-math mode; reverse ordered compares
	for FP even w/o -ffast-math.

2001-02-27  Richard Henderson  <rth@redhat.com>

	* print-rtl.c (print_rtx) [i]: Don't print field five on
	NOTEs other than NOTE_INSN_DELETED_LABEL.

2001-02-27  Zack Weinberg  <zackw@stanford.edu>

	* mips/xm-iris4.h: Delete #if 0 block (there since before 1997).
	* pa/xm-linux.h, pa/xm-pa.h, pa/xm-papro.h: Don't declare errno.

2001-02-27  Diego Novillo  <dnovillo@redhat.com>

	* c-common.c (walk_stmt_tree): Visit the chain of the current tree
	even if walk_subtrees is 0.
	* c-semantics.c (prune_unused_decls): Return a non-null value to
	stop traversing the tree chain.

2001-02-27  DJ Delorie  <dj@redhat.com>

	* config/m68k/m68k.c (output_function_prologue): Save the new CFA
	register, *then* define it as the new CFA.

Tue Feb 27 16:49:13 2001  Jeffrey A Law  (law@cygnus.com)

	* pa.c (override_options): Promote -fpic to -fPIC.
	(legitimize_pic_address): Simplify due to removal of
	small PIC as a code generation option.
	(secondary_reload_class): Similarly.
	* pa.h (GO_IF_LEGITIMATE_ADDRESS): Similarly.
	(PRINT_OPERAND_ADDRESS): Similarly.
	* pa.md (various patterns): Similarly.
	(small pic lo_sum pattern): Remove.

Tue Feb 27 16:01:13 CET 2001  Jan Hubicka  <jh@suse.cz>
			      Fergus Henderson

	* md.texi (min, max): Document

Tue Feb 27 15:51:35 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (movsf, movdf): Use movaps for reg-reg moves if
	TARGET_PARTIAL_REG_DEPENDENCY.
	(truncdfsf2_1_sse, truncdfsf2_2): Penalize the fpreg->mem case.

Tue Feb 27 15:36:48 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (mins*, maxs*): New patterns, expanders and splitters.

2001-02-26  Jeffrey Oldham  <oldham@codesourcery.com>

	* mips.c (mips_make_temp_file): Fix thinko in last change.

2001-02-26  Jason Eckhardt  <jle@redhat.com>

	* combine.c (known_cond): Do not reverse the condition when
	SMAX/UMAX is being considered and the condition is for equality
	or inequality.

	* testsuite/gcc.c-torture/execute/20010221-1.c: New test.

2001-02-26  Philip Blundell  <philb@gnu.org>

	* config.gcc: Remove obsolete targets "arm*-*-linuxoldld" and
	"armv2-*-linux".
	* config/arm/linux-elf.h: Remove historical relics related to
	above configurations.
	* config/arm/linux-oldld.h: Delete.
	* config/arm/linux-elf26.h: Delete.

2001-02-26  Jason Merrill  <jason@redhat.com>

	* c-decl.c (finish_decl): Set DECL_DEFER_OUTPUT on tentative file-scope
	definitions.
	* toplev.c (rest_of_decl_compilation): Check DECL_DEFER_OUTPUT to
	recognize a tentative definition.  Lose obsolete code.

	* toplev.c (wrapup_global_declarations): Don't emit DECL_COMDAT
	variables unless necessary, either.

2001-02-25  Richard Henderson  <rth@redhat.com>

	* ifcvt.c (struct noce_if_info): Add test_bb.
	(noce_get_alt_condition): New.
	(noce_try_minmax, noce_try_abs): New.
	(noce_operand_ok): New.
	(noce_process_if_block): Use them.
	* rtlanal.c (may_trap_p): NEG and ABS can never trap.

Sun Feb 25 14:26:17 2001  Christopher Faylor <cgf@cygnus.com>

	* config/i386/cygwin.h (CPP_SPEC): Add missing space before w32api
	include.

2001-02-25  Zack Weinberg  <zackw@stanford.edu>

	* config.gcc: Put back pa/t-openbsd and rs6000/t-openbsd.
	* config/mips/mips.c (mips_make_temp_file): Set temp_filename
	properly.
	(mips_asm_file_end): Free temp_filename here.

Sun Feb 25 08:34:23 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* config/i386/i386-protos.h (ix86_set_move_mem_attrs): Move decl.
	* config/i386/i386.c (ix86_set_move_mem_attrs_1): Fix typo.

	* config/i386/i386.md (movstrsi): Handle FAIL case.

2001-02-25  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cppinit.c (builtin_array): Update.
	(init_builtins): Flag builtins to warn if redefined or
	undefined.  Define __GXX_WEAK as a normal macro.
	* cpplib.c (do_undef): Warn if flagged NODE_WARN.
	* cpplib.h (NODE_WARN): New flag.
	* cppmacro.c (builtin_macro): Remove handling of __GXX_WEAK__.
	Handle __STDC__ as a builtin only on Solaris.
	(warn_of_redefinition): Renamed from check_macro_definition.
	Reverse sense of test.  Always warn if NODE_WARN.
	(_cpp_create_definition): Use warn_of_redefinition.  Flag
	any macro beginning with "__STDC_" to require a mandatory
	warning if redefined or undefined.

2001-02-24  Zack Weinberg  <zackw@stanford.edu>

	* xm-interix.h, xm-lynx.h, alpha/xm-vms.h, convex/xm-convex.h,
	i370/xm-i370.h, i370/xm-linux.h, i370/xm-mvs.h, i370/xm-oe.h,
	i386/xm-beos.h, i386/xm-dos.h, i386/xm-mingw32.h,
	i860/xm-i860.h, m68k/xm-3b1.h, m68k/xm-amix.h, m68k/xm-aux.h,
	m68k/xm-crds.h, m68k/xm-mot3300.h, m88k/xm-sysv3.h,
	mips/xm-mips.h, rs6000/xm-beos.h, vax/xm-vms.h:
	Don't define any of:
	USE_PROTOTYPES, vfork, mktemp, SVR3, NO_SYS_PARAMS_H,
	P_tmpdir, MVS, NO_DBX_FORMAT, USE_STDARGS, STDC_HEADERS,
	NO_PRECOMPILES, i860, __PTR_TO_INT, __INT_TO_PTR, rindex,
	index, FULL_PROTOTYPES, AUX, R_OK, W_OK, X_OK, F_OK,
	STACK_DIRECTION, MIPS, MAX_READ_LEN, MAX_WRITE_LEN.

	* alpha/xm-alpha.h, clipper/xm-clix.h, d30v/xm-d30v.h,
	fr30/xm-fr30.h, i370/xm-linux.h: Remove commented-out macro
	definitions.

	* m68k/xm-3b1.h, m68k/xm-crds.h, m88k/xm-sysv3.h:
	Delete now-empty file.

	* alpha/vms.h: Define NEED_ATEXIT here...
	* alpha/xm-vms.h: ...not here.

	* i386/cygwin.h: Don't define PARAMS.
	* mips/mips.c: Don't prototype mktemp.  Don't define
	P_tmpdir.  Use make_temp_file to create temporary files.
	Don't be clever and delete temporary files early.
	* config.gcc: Drop references to deleted files.  Don't define
	FULL_PROTOTYPES.
	* gcc.texi: Don't mention USE_PROTOTYPES.

Sat Feb 24 20:25:29 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* config/i386/i386.c (ix86_set_move_mem_attrs): New function.
	(ix86_set_move_mem_attrs_1): Likewise.
	* config/i386/i386-protos.h (ix86_set_move_mem_attrs): New declaration.
	* config/i386/i386.md (movstrsi): Call it.

2001-02-24  Zack Weinberg  <zackw@stanford.edu>

	* config.gcc: Expunge references to alpha/t-pe, pa/t-openbsd,
	x-linux-aout, i386/t-go32, t-osf, m68k/x-m68kv,
	ns32k/xm-netbsd.h, rs6000/t-openbsd, rs6000/t-xnewas,
	rs6000/x-aix41-gld.  These are nonexistent, empty, or obsolete.

	(i750a-*-*): Error here if hosting on i750a.
	(alpha*-*-winnt*, ix86-*-winnt3*): Remove stanzas entirely.

	* x-linux-aout, xm-freebsd.h, i386/beos-pe.h, ns32k/xm-netbsd.h:
	Remove (empty modulo comments).

	* 1750a/xm-1750a.h, alpha/config-nt.sed, alpha/win-nt.h,
	alpha/xm-winnt.h, i386/config-nt.sed, i386/os2.h,
	i386/t-winnt, i386/win-nt.h, i386/xm-freebsd.h, i386/xm-os2.h,
	i386/xm-winnt.h, m68k/x-alloca-c, m88k/x-dguxbcs,
	mips/x-netbsd, mips/x-nws3250v4, rs6000/t-xnewas,
	rs6000/t-xrs6000, rs6000/xm-cygwin.h: Remove (obsolete)

	* i386/crtdll.h, i386/cygwin.h, i386/mingw32.h:
	Remove reference to winnt.h in comment.
	* rs6000/t-newas, rs6000/t-rs6000: Override LIBGCC1_TEST to null.

2001-02-24  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* loop.c (check_dbra_loop): A biv has uses besides counting if it is
	used to set another biv.

Sat Feb 24 06:45:21 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* tree.h (BLOCK_DEAD): New macro.
	(struct tree_block): New flag, dead_flag.
	* print-tree.c (print_node, case 'b'): Print missing fields.
	* emit-rtl.c (remove_unnecessary_notes): Set BLOCK_DEAD.
	* function.c (identify_blocks): Enable test for misplaced notes.
	(all_blocks): Skip BLOCK_DEAD blocks.
	* integrate.c (integrate_decl_tree): Likewise.

	* errors.c (internal_error, trim_filename): New functions.
	(fancy_abort): Call internal_error.
	* errors.h (internal_error, trim_filename): New declarations.

2001-02-24  Alexandre Oliva  <aoliva@redhat.com>

	* config/mn10300/mn10300.h (DBX_REGISTER_NUMBER): Reverted
	2000-08-26's patch.
	(EXTRA_CONSTRAINT): Formatting changes.

2001-02-23  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* rtl.c (rtl_check_failed_code2): Fix typo in last change.

2001-02-23  Per Bothner  <per@bothner.com>

	* gcc.c (record_temp_file, pfatal_with_name, error):  Make non-static,
	so they can be called from java/jvspec.c.
	* gcc.h (record_temp_file, pfatal_with_name, error):  Declare.

Sat Feb 24 03:32:50 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.c (ix86_frame): New structure.
	(ix86_compute_frame_size): Kill.
	(ix86_compute_frame_layout): New.
	(ix86_save_reg): New.
	(ix86_can_use_return_insn_p): Use frame layout stuff.
	(ix86_expand_prologue): Likewise.
	(ix86_expand_epilogue): Likewise.
	(ix86_initial_elimination_offset): Likewise.
	(ix86_nsaved_regs): Use ix86_save_reg.
	(ix86_emit_save_regs): Likewise.

Sat Feb 24 03:30:38 CET 2001  Jan Hubicka  <jh@suse.cz>

	* flow.c (find_sub_basic_blocks): New function.
	(split_block): Be ready for basic block introduced by CODE_LABEL.
	(commit_one_edge_insertion): Call find_sub_basic_block.

	* flow.c (make_edges): Add edge from entry for blocks starting with
	label having ALTERNATE_NAME

Sat Feb 24 03:19:42 CET 2001  Jan Hubicka  <jh@suse.cz>

	* function.c (epilogue_done): Be ready for first basic block not
	containing PROLOGUE_END note.
	(reposition_prologue_and_epilogue_notes): Avoid placing
	PROLOGUE_END note between BASIC_BLOCK.

Sat Feb 24 03:17:09 CET 2001  Jan Hubicka  <jh@suse.cz>

	* loop.c (canonicalize_condition): Move to reversed_comparison_code.

2001-02-21  DJ Delorie  <dj@redhat.com>

	* config/i960/i960.h (FRAME_POINTER_REQUIRED): Revert removal of
	check for current_function_has_nonlocal_goto from 1999-11-12.

Fri Feb 23 15:28:39 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* diagnostic.c (trim_filename): No longer static.
	* toplev.h (trim_filename): Declare.
	* rtl.c (rtl_check_failed_bounds): Call internal_error.
	(rtl_check_failed_type1, rtl_check_failed_type2): Likewise.
	(rtl_check_failed_code1, rtl_check_failed_code2): Likewise.
	(rtvec_check_failed_bounds): Likewise.
	* tree.c (tree_check_failed, tree_class_check_failed): Likewise.

	* convert.c (convert_to_integer): Don't do unsigned unless result or
	both inputs are unsigned.

	* fold-const.c (fold_convert): Don't call size_int_type_wide if
	input overflows.

	* c-decl.c (set_block): Set NAMES and BLOCKS from BLOCK.

	* varasm.c (output_constant): Recompute CODE after lang-specific fn.

2001-02-23  Jeffrey Oldham  <oldham@codesourcery.com>

	* Makefile.in (resource.o): Add params.h dependence.
	* params.def (MAX_DELAY_SLOT_LIVE_SEARCH): New parameter.
	* params.h (MAX_DELAY_SLOT_LIVE_SEARCH): Likewise.
	* resource.c: Add dependence on params.h.
	(current_live_regs): Fix explanatory comment.
	(find_basic_block): Add new parameter to permit limiting search
	for a BARRIER.
	(mark_target_live_regs): Add new argument to find_basic_block call.
	(incr_ticks_for_insn): Likewise.

2001-02-23  Gabriel Dos Reis  <gdr@merlin.codesourcery.com>

	* diagnostic.c (output_to_stream): Rename to
	output_buffer_to_stream. Loses the stream parameter.
	(init_output_buffer): Set diagnosic_buffer's stream.
	(flush_diagnostic_buffer): Adjust.
	(default_print_error_function): Likewise.
	(finish_diagnostic): Likewise.
	(verbatim): Likewise.

	* diagnostic.h (struct output_buffer): Add `stream' field.
	(output_buffer_attached_stream): New macro.

2001-02-23  Jakub Jelinek  <jakub@redhat.com>

	* fold-const.c (extract_muldiv) [case PLUS_EXPR]: If not MULT_EXPR,
	check if either operand is divisible by C.
	(multiple_of_p): Handle LSHIFT_EXPR with small constant shift.
	If type is signed, consider negative numbers as well.

2001-02-22  Richard Henderson  <rth@redhat.com>

	* config/ia64/crtbegin.asm (.fini): Use pc-relative relocs to
	reach .text instead of gp-relative relocs.
	* config/ia64/crtend.asm (.init): Likewise.

2001-02-22  Andreas Jaeger  <aj@suse.de>

	* extend.texi (C++ Attributes): Fix typo.

2001-02-21  David Mosberger  <davidm@hpl.hp.com>

	* config/ia64/ia64.c (ia64_epilogue_uses): For syscall_linkage
	functions, drop current_function_args_info.words test.
	(ia64_compute_frame_size): Mark syscall_linkage functions as
	using eight input registers.

2001-02-21  Loren J. Rittle  <ljrittle@acm.org>
	Bruce Korb  <bkorb@gnu.org>

	* fixinc/inclhack.def (freebsd_gcc3_breakage): new fix
	* fixinc/README: Document how to convert sed substitutions
	to format style c_fix-es.
	* fixinc/fixincl.x: regen

2001-02-21  Jeffrey D. Oldham  <oldham@codesourcery.com>

	* gcc.c: Add comment explaining how to add a command-line option.
	Add title to specs language comment.

2001-02-21  Jeffrey Oldham  <oldham@codesourcery.com>

	* gcc.c (cc1_options): Add "-param".
	(DEFAULT_WORD_SWITCH_TAKES_ARG): Likewise.
	(option_map): Likewise.
	* toplev.c (display_help): Add entry for "--param".
	(independent_decode_option): Fix typographical error.

Wed Feb 21 18:57:28 CET 2001  Catherine Moore  <clm@redhat.com>
			      Bernd Schmidt  <bernds@redhat.com>
			      Jan Hubicka  <jh@suse.cz>

	* i386.c (function_arg_advance):  Pass SSE arguments in registers.
	(function_arg): Likewise.

Wed Feb 21 18:12:41 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (mmx_lshrdi3, mmx_ashldi3): Guard by unspec.

2001-02-21  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.md (iorsi3): Do not output an extra newline
	character.
	(xorsi3): Likewise.

Wed Feb 21 17:35:24 CET 2001  Jan Hubicka  <jh@suse.cz>

	* flow.c (init_propagate_block_info): Canon address and use single_set
	for killing dead memory stores.

2001-02-21  Jeffrey Oldham  <oldham@codesourcery.com>

	* Makefile.in (reorg.o): Add params.h dependence.
	* params.def: Fix typographical error in comment.
	(MAX_DELAY_SLOT_INSN_SEARCH): New parameter.
	* params.h: Modify introductory comment.
	(MAX_DELAY_SLOT_INSN_SEARCH): New parameter.
	* reorg.c: Add dependence on params.h.
	(redundant_insn): Add parameterized throttle for search.
	(fill_simple_delay_slots): Add a comment explaining a variable.
	Move conditional out of loop, simplifying code.
	(fill_eager_delay_slots): Fix typographical error in comment.

2001-02-20  Aldy Hernandez  <aldyh@redhat.com>

	* tm.texi (REVERSE_CONDEXEC_PREDICATES_P): New macro documentation.

	* flow.c (ior_reg_cond): Use REVERSE_CONDEXEC_PREDICATES_P macro.
	(REVERSE_CONDEXEC_PREDICATES_P): Define macro.

2001-02-21  Jason Merrill  <jason@redhat.com>

	* tree.h (DECL_UNINLINABLE): Move from C++ frontend.
	(struct tree_decl): Add uninlinable bitfield.
	* c-decl.c (duplicate_decls): Set it.
	* integrate.c (function_cannot_inline_p): Check it.

	* dwarf2out.c (add_name_and_src_coords_attributes): Don't add
	DW_AT_MIPS_linkage_name to abstract methods.
	(dwarf2out_abstract_function): Emit class context before calling
	set_decl_abstract_flags.  Don't clear DECL_ABSTRACT.
	(gen_subprogram_die): Remove obsolete code.
	(gen_member_die): Don't include clones in the member list.
	(gen_decl_die): Emit abstract info for clone origin.
	* dwarfout.c (output_type): Don't include clones in the member list.
	* dbxout.c (dbxout_type_methods): Ignore abstract methods.
	* toplev.c (note_deferral_of_defined_inline_function): Don't clear
	DECL_ABSTRACT on a function that already has it set.

	* dwarf2out.c (gen_formal_types_die): Also accept a FUNCTION_DECL.
	(get_subprogram_die): Pass it in.

2001-02-21  Richard Earnshaw  <rearnsha@arm.com>

	* flow.c (mark_set_1): Make not_dead unsigned long.  For
	non-pseudos, use it as a bitmask of the hard regs that
	don't die.

2001-02-21  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cppfiles.c: Update comments.
	(_cpp_read_file): Don't check for NULL filenames any more.
	* cppinit.c (cpp_start_read): Don't do canonicalization of
	in_fname and out_fname.  Use the passed file name exclusively.
	(_cpp_handle_options): Don't treat "-" as a command line option,
	but as a normal filename.
	(_cpp_post_options): Canonicalize in_fname and out_fname.
	* cppmain.c (printer_init): Don't check out_fname for NULL.
	* c-lex.c (orig_filename): Rename cpp_filename for clarity.
	(init_c_lex): Update, and use "" to represent stdin to CPP.
	(yyparse): Update.

2001-02-20  Will Cohen  <wcohen@redhat.com>

	* config/pa/quadlib.c (_U_Qfcnvfxt_quad_to_usgl): New function.
	* config/pa/long_double.h (FIXUNS_TRUNCTFSI2_LIBCALL): Added.
	(INIT_TARGET_OPTABS): Use FIXUNS_TRUNCTFSI2_LIBCALL for
	fixunstfsi_libfunc.

2001-02-20  Stan Shebs  <shebs@apple.com>

	* config/rs6000/rs6000.c (output_cbranch): Output branches
	on separate lines instead of using ';' to separate.

2001-02-20  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cppinit.c (set_lang):  Move builtin handling to...
	(init_builtins): ...here.
	(_cpp_create_reader): Move call to set_lang.

2001-02-20  Mark Mitchell  <mark@codesourcery.com>

	* stmt.c (expand_return): If an attempt is made to return the
	error_mar_node, treat the return like a return without a value.

2001-02-19  Zack Weinberg  <zackw@stanford.edu>

	* sibcall.c (skip_copy_to_return_value): Call
	identify_call_return_value here, and return orig_insn if it
	returns zero.  Hardret and softret arguments now unnecessary.
	(call_ends_block_p): Don't call identify_call_return_value here.

	* ggc-common.c (ggc_mark_rtx_children): No need to mark 'S' or
	's' slots in RTXen.
	* ggc-page.c, ggc-simple.c (ggc_mark_if_gcable): Delete	function.
	* ggc.h (ggc_mark_if_gcable): Delete prototype.

Mon Feb 19 20:30:16 2001  Jeffrey A Law  (law@cygnus.com)

	* pa.c (move_operand): Accept code to load the address of a
	symbol out of the DLT as a valid move operand.
	(print_operand, case 'A'): New to handle generating a DLT
	reference for a LO_SUM expression.
	* pa.h (EXTRA_CONSTRAINT): Handle 'A' for DLT LO_SUM references.
	* pa.md (movsi, movdi patterns): Allow DLT LO_SUM references.

2001-02-19  Joseph S. Myers  <jsm28@cam.ac.uk>

	* README, cpp.texi, gcc.texi, version.c: Update version number to
	3.1.
	* cpp.1, gcov.1, gcc.1: Regenerate.

2001-02-19  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cppfiles.c (stack_include_file): Generate dependencies
	here, and manage include_count here too.
	(PRINT_THIS_DEP): Delete.
	(_cpp_execute_include): Do not generate dependencies here,
	apart from the case of a missing header.  Do not manage
	include_count.
	(_cpp_read_file): Leave dependency generation to
	stack_include_file.

Mon Feb 19 10:17:47 2001  Jeffrey A Law  (law@cygnus.com)

	* config.gcc (hppa*64*-*-hpux11*): Add MASK_GAS to
	target_cpu_default.  Remove dead assignment to
	target_cpu_default.

Mon Feb 19 16:47:39 CET 2001  Jan Hubicka  <jh@suse.cz>

	* regclass.c (contains_reg_of_mode): Make global.
	(init_reg_sets): Remove contains_reg_of_mode; take into account
	CLASS_MAX_NREGS when looking for the proper mode.
	(dump_regclass): Dump only classes considered for the pseudo.
	(regclass): Use contains_reg_of_mode.

Mon Feb 19 16:45:42 CET 2001  Jan Hubicka  <jh@suse.cz>

	* gcc.c (do_spec_1): 'n' for printing notices.
	* i386.h (CC1_CPU_SPEC): Notice deprecated options as deprecated.

Mon Feb 19 15:51:30 CET 2001  Jan Hubicka  <jh@suse.cz>

	* reg-stack.c (next_flags_user): Use current_block->end
	(swap_rtx_condition): Look for next user if flags don't die;
	give up on CALL_INSNs; use current_block->end.

Mon Feb 19 08:27:21 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* sibcall.c (call_ends_block_p): New function.
	(optimize_sibling_and_tail_recursive_call): Use it.

2001-02-18  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.md: Update copyright.
	(andsi3): Do not output an extra newline character.

Sun Feb 18 15:45:17 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* toplev.c (note_deferral_of_defined_inlined_function): Argument
	FNDECL may be unused.

	* toplev.c (rest_of_compilation): Don't have CSE skip blocks or
	follow jumps after first run.
	If -fexpensive-optimizations rerun CSE after GCSE and iterate until
	it doesn't change any jumps.

Sun Feb 18 17:05:50 2001  Jeffrey A Law  (law@cygnus.com)

	* Makefile.in (rtlanal.o): Depend on hard-reg-set.h.
	($HOST_PREFIX_1)rtlanal.o: Remove rules for building
	(mostlyclean): Corresponding changes.
	* rtlanal.c (hard-reg-set.h): Include.
	(rtx_unstable_p): Do not treat the argument pointer specially
	if it is not a fixed register.
	(rtx_varies_p, rtx_addr_can_trap_p): Similarly.

Sun Feb 18 15:45:17 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* sibcall.c (optimize_sibling_and_tail_recursive_call): Compare
	against last real insn in basic block.
	Rework to avoid gotos.

	* Makefile.in (gcse.o): Now includes ggc.h.
	* gcse.c: Include ggc.h.
	(want_to_gcse_p): Verify expression can be in SET as valid insn.
	(try_replace_reg): Remove warning of uninitialize variable.
	(process_insert_insn): Call invalid_insn_p to validate insn.
	* recog.c (insn_invalid_p): Now global.
	See if can make valid by adding CLOBBERs of SCRATCH only and do if so.
	* recog.h (insn_invalid_p): New declaration.

	* jump.c (jump_optimize_1): Only define reversed_code #ifdef HAVE_trap.

	* config/sparc/sparc.c (eligible_for_epilogue_delay): Don't put
	assignments from FP constants since 'Y' output code can't handle it.
	(eligible_for_sibcall_delay): Likewise.

	* flow.c (print_rtl_and_abort_fcn): Renamed from print_rtl_and_abort.
	Call fancy_abort directly, passing args.
	(print_rtl_and_abort): Now a macro, like fancy_abort.

	* final.c (output_operand_lossage): Use internal_error, not error.

2001-02-18  Shane Nay  <shane@agendacomputing.com>

	* mips.c (mips_expand_prologue) Add REG_MAYBE_DEAD to
	structure shift insns.

2001-02-18  Mark Mitchell  <mark@codesourcery.com>

	* invoke.texi (-fsquangle): Remove documentation.
	(-fname-mangling-version): Likewise.

2001-02-18  Lars Brinkhoff  <lars@nocrew.org>

	* optabs.c (expand_abs): Remove reference to
	HAVE_contitional_arithmetic.
	* combine.c (simplify_set): Likewise.

2001-02-18  Richard Henderson  <rth@redhat.com>

	* ifcvt.c (dead_or_predicable): Don't move code if eh regions
	would be disrupted.

2001-02-18  Richard Henderson  <rth@redhat.com>

	* config/ns32k/ns32k.h (ADJSP): Upcase arguments.

	* config/alpha/alpha.md (movsi_fix): Fix typo in pattern name.

	* reload1.c (reload_cse_simplify_set): Fix typo.

Sun Feb 18 09:30:09 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* diagnostic.c (_fatal_insn): Decrement errorcount.

	* invoke.texi (-I): Add note avoiding use for system header files.

	* rtl.h (add_clobbers): Remove duplicate declaration.
	* recog.h (added_clobbers_hard_reg_p): New declaration.
	* genemit.c (struct clobber_pat): New field has_hard_reg.
	(gen_insn): Record if added clobbers clobber hard reg.
	(gen_split): Avoid unused warning if number of operands is 0.
	(output_added_clobbers_hard_reg_p): New function.
	(main): Call it.

2001-02-18  Alan Modra <alan@linuxcare.com.au>

	* pa.c (hppa_expand_prologue): Simplify code storing return
	pointer.  For large (>=8k) frames with a post_store, adjust stack
	pointer by 8k-64 first rather than by 64.  When testing with
	VAL_14_BITS_P, always use the actual value rather than the value
	negated.  Add blockage to prevent scheduling of spills before
	stack frame has been created.
	(hppa_expand_epilogue): Simplify code loading return pointer.
	Allow a slightly larger range for merge_sp_adjust_with_load case.
	When testing with VAL_14_BITS_P, always use the actual value.

	* pa.c (pa_adjust_insn_length): Check that block move
	pattern is a set before looking at operands.

2001-02-17  Mark Mitchell  <mark@codesourcery.com>

	* fold-const.c (fold_binary_op_with_conditional_arg): New
	function, split out from ...
	(fold): ... here.
	* tree.def (COND_EXPR): Document the use of VOID_TYPE for
	conditional arms that throw exceptions.

	* print-tree.c (print_node): Do not use BLOCK_CHAIN when we're not
	looking at a BLOCK.

2001-02-17  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* aclocal.m4 (gcc_AC_CHECK_DECL): Before attempting the test,
	define HAVE_DECL_* to 1 to mask potential backup declarations.
	* configure: Regenerated.

2001-02-17  Mark Mitchell  <mark@codesourcery.com>

	* invoke.texi (-Woverloaded-virtual): Clarify documentation.

2001-02-17  Richard Henderson  <rth@redhat.com>

	* reload1.c (reload_cse_simplify_set): Respect LOAD_EXTEND_OP
	when replacing a memory load with a register.

Sat Feb 17 14:48:30 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
			  Jan Hubicka  <jh@suse.cz>

	* recog.c (validate_replace_src_1): New.
	(validate_replace_src_data): Likewise.
	(validate_replace_src): Use note_uses.
	* rtl.h (note_uses): Declare.
	* rtlanal.c (note_uses): New.

Sat Feb 17 10:52:34 CET 2001  Jan Hubicka  <jh@suse.cz>

	* reg-stack.c (stack_def): Make field reg unsigned.
	(remove_regno_note): Unsignetize parameter.

2001-02-16  Jes Sorensen  <jes@linuxcare.com>

	* ia64.c (errata_emit_nops): Add VOIDmode as second argument to
	shladd_operand() call.

2001-02-16  Bruce Korb  <bkorb@gnu.org>
	    Rodney Brown  <RodneyBrown@mynd.com>

	* fixinc/mkfixinc.sh: Use C fixincludes for UnixWare 7.
	* fixinc/inclhack.def: Add fixinc.svr4 patterns with matching
	machine restrictions
	* fixinc/fixincl.x: regen

Fri Feb 16 12:41:30 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* gcse.c (hash_scan_set): If cprop, see if REG_EQUAL or REG_EQUIV.
	Don't CSE a nop.
	(hash_scan_insn): Clean up calls to hash_scan_set.
	(compute_kill_rd): REGNO now unsigned.
	(try_replace_reg): Rework to use simplify_replace_rtx.
	(cprop_jump, cprop_cc0_jump): Likewise.
	(cprop_insn): Call find_reg_equal_equiv_note.
	Reflect changes to cprop_jump and cprop_cc0_jump.

	* recog.c (validate_replace_src): Replace in operands of
	ZERO_EXTRACT in SET_DEST.

	* cse.c (new_label_ref): New variable.
	(insert): Set it instead of recorded_label_ref.
	(cse_basic_block): Set recorded_label_ref if new_label_ref use, has
	CODE_LABEL for this function, and not already in REG_LABEL note.

2001-02-16  Jeffrey Oldham  <oldham@codesourcery.com>

	* resource.c (mark_referenced_resources): Fix typo in introductory
	comment.
	* config/mips/abi64.h (SUBTARGET_TARGET_OPTIONS): Fix typo in
	string constant.

2001-02-16  Jason Merrill  <jason@redhat.com>

	* dwarf2out.c (add_bound_info): Don't crash if SAVE_EXPR_RTL is
	NULL.
	(gen_subprogram_die): Don't abort on seeing a second definition if
	the previous one was abstract.  Don't replace an abstract instance
	in the lookup table.

	* dwarf2out.c (dwarf2out_abstract_function): Rename from
	gen_abstract_function.
	* dwarf2out.h: Declare it.
	* toplev.c (note_outlining_of_inline_function): New fn.
	* toplev.h: Declare it.
	* integrate.c (output_inline_function): Call it.
	* c-decl.c (duplicate_decls): Call it when redefining an extern
	inline.  Don't inline the new defn.

	* tree.h (BLOCK_CHAIN): Use BLOCK_CHECK.

2001-02-16  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* .gdbinit: Rename to gdbinit.in.
	* gdbinit.in: New file,
	* configure.in: Generate .gdbinit from gdbinit.in.
	* configure: Regenerated.
	* Makefile.in (distclean): Always remove .gdbinit.

2001-02-16  Jakub Jelinek  <jakub@redhat.com>

	* objc/objc-act.c (start_class): Register implemented_classes with
	GC.

2001-02-16  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cppfiles.c (_cpp_make_system_header): Generate a file
	change callback.

2001-02-15  Jim Meyering  <meyering@lucent.com>

	* Makefile.in (install-common): Don't depend on installdirs here.
	Instead, make each of the lang.install-common targets (e.g.,
	c++.install-common in cp/Make-lang.in) depend on it.
	(install-driver): Depend on installdirs.

Thu Feb 15 21:30:26 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* flow.c (tidy_fallthru_edge): Never end block on line number NOTE.

	* function.c (assign_parms): Set RTX_UNCHANGING_P in pseudo when we
	do in memory.

2001-02-15  Mark Mitchell  <mark@codesourcery.com>

	* invoke.texi (--param): Document.

Thu Feb 15 15:16:38 2001  Alexandre Oliva  <aoliva@redhat.com>

	* config/sh/sh.h (BOOL_TYPE_SIZE): Don't define.

Thu Feb 15 10:52:31 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (extendsfdf2_2): Fix constraints.

Thu Feb 15 09:46:21 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (fop_df_3 splitter): Fix operand number.

Wed Feb 14 12:37:37 CET 2001  Jan Hubicka  <jh@suse.cz>

	* invoke.texi (-mreg-alloc): Nuke.
	* i386.c (ix86_reg_alloc_order, regs_allocated,
	order_regs_for_local_alloc): Nuke.
	(override_options): Kill reg_alloc code.
	* i386.h (TARGET_OPTIONS): Kill reg-alloc.
	(REG_ALLOC_ORDER): SSE goes before I387.
	(ORDER_REGS_FOR_LOCAL_ALLOC): Kill.
	(ix86_reg_alloc_order): Likewise.
	* i386-protos.h (ix86_reg_alloc_order): Kill.

2001-02-14  Richard Henderson  <rth@redhat.com>

	* toplev.c (f_options): Clarify -fschedule-insns2 documentation.

Wed Feb 14 11:59:58 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.h (RETURN_IN_MEMORY): Fix formating; reject TFmodes

Wed Feb 14 11:12:38 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386-protos.h (ix86_memory_move_cost): Move offline.
	* i386.c (ix86_register_move_cost): Compute properly cost of
	SSE, MMX and i387 instructions.
	(*_cost): Add costs of SSE/MMX moves.
	(ix86_memory_move_cost): Move offline from ....; Likewise.
	* i386.h (MEMORY_MOVE_COST): .... here;
	(struct processor costs): Add new fields to represent costs
	of SSE/MMX moves.

Wed Feb 14 10:08:26 CET 2001  Jan Hubicka  <jh@suse.cz>

	* regclass.c (init_reg_sets_1): Reinstall the optimization of
	move_cost together with Matt Kraai's fix.

2001-02-14  Jeffrey Oldham  <oldham@codesourcery.com>

	* Makefile.in (OBJS): Add params.o.

2001-02-14  Richard Henderson  <rth@redhat.com>
	    DJ Delorie  <dj@redhat.com>

	* jump.c (jump_optimize_1): When we delete a conditional jump
	preceding a non-conditional jump to effectively the same place,
	make sure that the combined jump skips any clobber insns between
	the two labels.

2001-02-14  Jeffrey Oldham  <oldham@codesourcery.com>

	* gcc.c (do_spec_1): Fix off-by-one error for '%M' case.

2001-02-14  Mark Mitchell  <mark@codesourcery.com>

	* Makefile.in (toplev.o): Depend on params.h.
	(intergate.o): Likewise.
	(params.o): New target.
	* flags.h (inline_max_insns): Remove.
	* integrate.c: Include params.h.
	Use MAX_INLINE_INSNS instead of inline_max_insns.
	* params.c: New file.
	* params.h: Likewise.
	* params.def: Likewise.
	* toplev.c: Include params.h.
	(lang_independent_params): New variable.
	(decode_f_option): Use the param machinery instead of setting
	max_inline_insns.
	(independent_decode_option): Handle "--param name=value".
	(main): Register language-independent parameters.

Wed Feb 14 11:13:45 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (pushsf, pushdf_nointeger): Fix constraint.

2001-02-14  Richard Henderson  <rth@redhat.com>

	* regclass.c (init_reg_sets_1): Revert last two changes.

2001-02-14  Jakub Jelinek  <jakub@redhat.com>

	* stor-layout.c (is_pending_size, put_pending_size): New functions.
	(variable_size): Call put_pending_size.
	* tree.h (is_pending_size, put_pending_size): Add prototypes.
	* fold-const.c (extract_muldiv): If SAVE_EXPR is on the pending
	sizes list, put newly created SAVE_EXPR there as well.

2001-02-14  Jakub Jelinek  <jakub@redhat.com>

	* config/ia64/ia64.c (last_group): Only 2 entries are needed.
	(errata_find_address_regs): load_group has only 2 entries.
	(errata_emit_nops): Likewise.  shladd is not problematic.
	Clear last_group if nop was emitted.
	(fixup_errata): load_group has only 2 entries.
	Optimize.

2001-02-14  Neil Booth  <neil@daikokuya.demon.co.uk>

	* c-lex.c (lex_number): Only warn traditionally for U suffix
	outside system macros.
	* cppexp.c (parse_number): Similarly.
	* cpplib.h (NODE_SYSHDR, cpp_sys_objmacro_p): New.
	* cppmacro.c (struct cpp_macro): New member node.
	(parse_args): Only warn about missing rest args if not
	a system macro.
	(funlike_invocation_p): Similarly for uninvoked funlike macros.
	(cpp_sys_objmacro_p): New.
	(_cpp_create_definition): Store the node with the macro defn.
	Remember if the macro is defined in a system header.

2001-02-13  DJ Delorie  <dj@redhat.com>

	* configure.in (check_languages): determine languages to check
	* Makefile.in (check-c++): alias for check-g++
	(check-f77): alias for check-g77
	(CHECK_TARGETS): depend on configured languages

Wed Feb 14 01:13:59 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (fixsfsi2, fixdfdi2): Fix previous patch again.
	(sqrtsf2): Use TARGET_SSE instead of TARGET_SSE2)
	(sqrtsf2 patterns): Use 'x' instead of 'Y'.
	(sqrtextendsfdf2): Disable for SSE2.

Wed Feb 14 00:19:28 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (fixsfsi2, fixdfdi2): Fix previous patch again.
	(sqrtsf2): Use TARGET_SSE instead of TARGET_SSE2)
	(sqrtsf2 patterns): Use 'x' instead of 'Y'.
	(sqrtextendsfdf2): Disable for SSE2.

Wed Feb 14 00:11:20 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (movsfcc_1): Support integer cmove instruction.
	(movdfcc_1): Likewise; new splitter.

Tue Feb 13 23:19:27 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.c (output_fp_compare): Support SSE.
	(prepare_fp_compare_args): SSE comparisons always support memory.
	* i386.h (TARGET_CMOVE): SSE imply cmove.
	* i386.md (cmp?f2): Enable for SSE too.
	(cmpfp_i*): Support SSE.
	(cmpfp_i_sse): New.
	(cmpfp_i_sse_only): New.
	(s*, b* fp expanters): Enable for SSE too.
	(fp_jcc_1_sse, fp_jcc_1_sse_only, fp_jcc_2_sse, fp_jcc_2_sse_only):
	New patterns.

Tue Feb 13 23:05:42 CET 2001  Jan Hubicka  <jh@suse.cz>

	* regclass.c (init_reg_sets_1): Silence warning.

Tue Feb 13 22:03:07 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (sqrt?f2): Change to expander.
	(sqrt?f2_1, sqrt?f2_sse_only, sqrt?f2_i387): New.

Tue Feb 13 15:42:05 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* rtlanal.c (find_reg_equal_equiv_note): New function.
	* simplify-rtx.c (simplify_gen_unary, simplify_gen_ternary): New fns.
	(simplify_gen_relational, simplify_replace_rtx): Likewise.
	* rtl.h: Add declarations for above functions.

Tue Feb 13 21:09:11 CET 2001  Jan Hubicka  <jh@suse.cz>

	* cse.c (cse_main): Converts ifdefs on PIC_OFFSET_TABLE_REGNUM to
	conditionals.
	* defaults.h (PIC_OFFSET_TABLE_REGNUM): Default to INVALID_REGNUM.
	* emit-rtl.c (init_emit_once): Convert ifdefs to conditionals.
	* flow.c (mark_regs_live_at_end): Likewise.
	(calculate_global_regs_live): Likewise.
	* gcse.c (compute_hash_table): Likewise.
	(compute_kill_rd): Likewise.
	* resource.c (mark_target_live_regs): Likewise.
	* rtl.h (INVALID_REGNUM): New macro.

Tue Feb 13 20:59:22 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (fixsfsi2, fixdfdi2): Fix previous patch.

Tue Feb 13 16:32:20 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (fixsfsi2, fixdfdi2): Force operand to register
	for SSE.

Tue Feb 13 14:53:16 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (add?f3, sub?f3, mul?f3, dif?f3): Enable for TARGET_SSE(2)
	too.
	(fop_sf_comm, fop_df_comm, fop_sf_1, fop_df_1): Support SSE.
	(fop_sf_comm_sse, fop_df_comm_sse): New patterns.
	(fop_sf_1_sse, fop_df_1_sse): New patterns
	(fop_*): Disable float_extend and float patterns for SSE compilation.
	* i386.c (output_387_binary_op): Support SSE.

Tue Feb 13 14:16:34 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.md (dummy_extendsfdf2): Support SSE2
	(extendsfdf2): Enable if 80387 or SSE2.
	(extendsfdf2_1): Support SSE2. Disable if SSE2 is avialble
	and no MIX_I387_SSE2
	(extendsfdf2_1_sse_only): New pattern.
	(truncdfsf2): Enable if SSE2 or 80387; Always use SSE only version
	of SSE.
	(truncdfsf2_1): Support SSE.
	(truncdfsf2_2): Support SSE.
	(truncdfsf2_2_1_sse): New pattern.
	(fixtruncsfsi2): Always use SSE if available.
	(fix_truncsfsi_sse): New pattern.
	(fix_truncdfsi_sse): New pattern.
	(floatsis?f2): Support SSE.
	(floatsidf2_i387): New pattern.
	(floatsidf2_sse): Likewise.

Tue Feb 13 07:52:04 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* configure.in: Use "have_gnat" variable, not "gnat".
	* configure: Regenerated.

	* config/sparc/sparc.c (function_value): Treat all non-record
	aggregate types like used to treat UNION_TYPE.

Tue Feb 13 13:31:33 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.c (print_reg): Use ANY_FP_REG instead of FP_REG
	* i386.h (MASK_128BIT_LONG_DOUBLE): Renumber
	(MASK_SSE2): New.
	(MASK_MIX_SSE_I387): New.
	(TARGET_SSE): SSE2 imply SSE.
	(TARGET_SSE2, TARGET_MIX_SSE_I387): New.
	(TARGET_SWITCHES): Add "sse2", "mix-sse-i387".
	(enum reg_class): Add new classes.
	(REG_CLASS_NAMES): Likewise.
	(REG_CLASS_CONTENTS): Likewise.
	(ANY_FP_REG_P, ANY_FP_REGNO_P, SSE_REG_P, SSE_FLOAT_MODE): New macros.
	(REG_CLASS_FROM_LETTER): 'x' and 'y' is SSE_REGS only when SSE is
	supported. Add 'Y' to be SSE_REGS when SSE2 is supported.
	(CLASS_MAX_NREGS): Use new macros.
	(REGISTER_MOVE_COST): Rewrite using SECONDARY_MEMORY_MAYBE_NEEDED.
	* i386.md (pushsf, movsf): Support SSE.
	(pushdf_nointeger, pushdf_integer, pushdf): Support SSE, update
	splitters to use ANY_FP_REGNO_P.
	(movdf_nointeger, movdf_integer): Likewise.

2001-02-13  Alexandre Oliva  <aoliva@redhat.com>

	* combine.c (UWIDE_SHIFT_LEFT_BY_BITS_PER_WORD): New macro.
	(try_combine): Use it.

Tue Feb 13 11:37:06 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.h (SSE_CLASS_P, MMX_CLASS_P, MAYBE_FLOAT_CLASS_P,
	MAYBE_SSE_CLASS_P, MAYBE_MMX_CLASS_P): New macros.
	(PREFERRED_RELOAD_CLASS, SECONDARY_MEMORY_NEEDED): Move offline.
	(REGISTER_MOVE_COST): Likewise.
	* i386-protos.h (ix86_secondary_memory_needed,
	ix86_preferred_reload_class, ix86_register_move_cost): Declare.
	* i386.c (ix86_secondary_memory_needed,
	ix86_preferred_reload_class, ix86_register_move_cost): New function.

Die Feb 13 11:04:25 CET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.h (VALID_FP_MODE_P, VALID_INT_MODE_P): New.
	(HARD_REGNO_MODE_OK): Move offline to ....
	* i386.c (ix86_hard_regno_mode_ok) ... here;
	refuse all incorrect modes.
	* i386-protos.h (ix86_hard_regno_mode_ok): Declare.

2001-02-13  Richard Henderson  <rth@redhat.com>

	* sparc.md (cmp_cc_arith_op_set): Don't use match_dup on the
	entire operator; replicate that and match_dup the operands.
	(cmp_ccx_arith_op_set): Likewise.
	(cmp_cc_arith_op_not_set): Likewise.
	(cmp_ccx_arith_op_not_set): Likewise.

2001-02-13  Alexandre Oliva  <aoliva@redhat.com>

	* explow.c (trunc_int_for_mode): Sign-extend value to mode.

2001-02-12  Geoffrey Keating  <geoffk@redhat.com>

	* config/rs6000/sysv4.h (MASK_NO_BITFIELD_WORD): New macro.
	(TARGET_NO_BITFIELD_WORD): New macro.
	(SUBTARGET_SWITCHES): Add -mbit-word, -mno-bit-word options.
	(BITFIELD_NBYTES_LIMITED): Define based on TARGET_NO_BITFIELD_WORD.

Mon Feb 12 18:13:26 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* cselib.c: New file, from simplify-rtx.c.
	* simplify-rtx.c: Remove cselib parts.
	* Makefile.in: Add cselib.o.

2001-02-12  Geoffrey Keating  <geoffk@redhat.com>

	* config/rs6000/rs6000.c (rs6000_float_const): Remove warning.
	(setup_incoming_varargs): Remove warning.

	* config/rs6000/rs6000.c (validate_condition_mode): When
	flag_fast_math, allow floating-point conditionals to be reversed.
	(rs6000_generate_compare): When flag_fast_math, don't generate
	cror operations for FP conditionals.

	* config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Handle
	-mcall-i960.
	(ASM_SPEC): Likewise.
	(CC1_ENDIAN_LITTLE_SPEC): Likewise.
	(CC1_SPEC): Likewise.
	(LINK_TARGET_SPEC): Likewise.
	(CPP_ENDIAN_SPEC): Likewise.
	* Makefile.in (check-consistency): New target.

2001-02-12  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-decl.c (grokdeclarator): In C99 mode, give the more specific
	"return type defaults" warning for functions with return type
	defaulting to int.
	* c-lang.c (c_init): In C99 mode, enable warnings for implicit
	function declarations by default rather than only when pedantic.

Mon Feb 12 17:28:48 CET 2001  Jan Hubicka  <jh@suse.cz>

	* regclass.c (init_reg_sets_1): Optimize calculation of move_cost
	arrays.

2001-02-12  Nathan Sidwell  <nathan@codesourcery.com>

	* extend.texi (Deprecated): Deprecate new initializer lists.

2001-02-12  Nathan Sidwell  <nathan@codesourcery.com>

	* mkdeps.c (deps_add_default_target): Robustify. Add
	basename component only.
	* cpp.texi (-M): Describe how default target is generated.
	* invoke.texi (-M): Likewise.

2001-02-12  Kazu Hirata  <kazu@hxi.com>

	* toplev.c (push_float_handler): Remove.
	(pop_float_handler): Remove.
	* toplev.h: Remove prototypes for the above functions.

2001-02-12  Jakub Jelinek  <jakub@redhat.com>

	* c-common.c (constant_fits_type_p): New function.
	(convert_and_check): Use it.

2001-02-11  Mark Mitchell  <mark@codesourcery.com>

	* Makefile.in (GXX_ABI_FLAG): Don't define.
	* configure.in (--enable-new-gxx-abi): Remove option.
	* config.in: Regenerated.
	* configure: Likewise.

2001-02-12  Alexandre Oliva  <aoliva@redhat.com>

	* lcm.c (compute_earliest): Let EXIT_BLOCK be handled as a regular
	basic block.
	(optimize_mode_switching) [NORMAL_MODE]: Set up EXIT_BLOCK as a
	regular basic block, and arrange for all edges into it to switch
	to normal mode.

2001-02-11  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* Makefile.in (distclean): Do not remove .gdbinit.

2001-02-11  Mark Mitchell  <mark@codesourcery.com>

	* Makefile.in (gcc.o): Fix typos.
	(protize.o): Likewise.
	(unprotoize.o): Likewise.

2001-02-11  Richard Henderson  <rth@redhat.com>

	* tree.c (build1): Check for null operand in last change.

2001-02-11  Richard Henderson  <rth@redhat.com>

	* fold-const.c (split_tree): Don't assume a constant isn't splittable.
	(fold): Don't assume a constant isn't foldable.
	* tree.c (build): Set TREE_CONSTANT for an expression with no
	side-effects and constant operands.
	(build1): Likewise.

2001-02-10  Richard Henderson  <rth@redhat.com>

	* jump.c (squeeze_notes): Revert 2000-05-12 change.

2001-02-10  Anthony Green  <green@redhat.com>

	* cpp.texi (Standard Predefined): Add documentation for
	__OPTIMIZE_SIZE__.

	* c-common.c (combine_strings): Improve warning message.

2001-02-10  Geoffrey Keating  <geoffk@redhat.com>

	* config/rs6000/sysv4.h (LINK_TARGET_SPEC): Use two dashes for
	--oformat.
	* config/rs6000/sysv4le.h (LINK_TARGET_SPEC): Likewise.

Fri Feb  9 15:05:27 2001  Christopher Faylor <cgf@cygnus.com>

	* config/i386/t-cygwin (T_CPPFLAGS): Use correct location for
	CYGWIN_CROSS_DIR.

2001-02-09  Alexandre Oliva  <aoliva@redhat.com>

	* config/sh/sh.md (sibcalli, sibcalli_pcrel, sibcalli): Set
	fp_mode attribute.

2001-02-09  Nick Clifton  <nickc@redhat.com>

	* config/arm/arm.md: Change output contraint on post inc
	load/store multiple patterns to be a read/write contraint.

2001-02-09  Neil Booth  <neil@daikokuya.demon.co.uk>

	* gcc.c (cpp_options): Delete .d files on error.  Don't delete
	.o files when using the -M options.

2001-02-08  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>
	    David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.c (output_toc): Allow 32-bit targets to
	handle DImode constants.  Use one TOC entry for SImode and smaller
	constants, aligned properly.

2001-02-08  Jason Merrill  <jason@redhat.com>

	* config/arm/arm.c (arm_expand_prologue): Do tell the dwarf2 backend
	about the SP adjustment for saving the static chain pointer.
	* dwarf2out.c (dwarf2out_frame_debug_expr): Use the specified
	offset when setting a temporary CFA register.

2001-02-08  Chandrakala Chavva  <cchavva@redhat.com>

	* config.gcc : New targets, i386-*-chorusos*, sparc-*-chorusos*,
	powerpc-*-chorusos* .
	* config/rs6000/chorus.h : New file.
	* config/i386/chorus.h : New file.
	* config/sparc/chorus.h : New file.
	* config/sparc/t-chorus-elf : New file.

2001-02-08  David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.h (ASM_OUTPUT_SYMBOL_REF): Move from here ...
	* config/rs6000/aix.h (ASM_OUTPUT_SYMBOL_REF): ... to here.
	* config/rs6000/aix51.h (CPLUSCPLUS_CPP_SPEC): Define it.
	(__WCHAR_TYPE__): Correct macro name.

2001-02-08  Richard Henderson  <rth@redhat.com>

	* config/i386/i386.c (ix86_frame_pointer_required): New.
	(ix86_setup_frame_addresses): New.
	(struct machine_function): Add accesses_prev_frame.
	* config/i386/i386.h (FRAME_POINTER_REQUIRED): Call
	ix86_frame_pointer_required.
	(SUBTARGET_FRAME_POINTER_REQUIRED): New.
	(SETUP_FRAME_ADDRESSES): New.
	* config/i386/i386-protos.h: Update.
	* config/i386/sco5.h (SUBTARGET_FRAME_POINTER_REQUIRED): Rename
	from FRAME_POINTER_REQUIRED.
	* config/i386/svr3gas.h: Likewise.
	* config/i386/sysv3.h: Likewise.
	* config/i386/v3gas.h: Likewise.

2001-02-08  Richard Henderson  <rth@redhat.com>

	* config/sparc/sparc.c (function_arg_record_value_3): Fix
	calculation of the number of integer registers required.
	(function_arg_record_value): Likewise.

2001-02-08  Jason Merrill  <jason@redhat.com>

	* diagnostic.c (internal_error): Say "confused" after 1 error, not
	two.  Print file and line with "confused" message.

	* dwarf2out.c (dwarf2out_line): Include filename in -dA output.

Thu Feb  8 11:21:28 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* rtlanal.c (remove_node_from_expr_list): Correctly update PREV.

2001-02-08  Bernd Schmidt  <bernds@redhat.com>

	* final.c (cleanup_subreg_operands): The address of a MEM can
	contain SUBREGs.

	* config/ia64/ia64.c (ia64_variable_issue): Call group_barrier_needed_p
	for asms, too.

2001-02-08  Joseph S. Myers  <jsm28@cam.ac.uk>

	* gcc.texi (Incompatibilities): Update documentation of
	preprocessing numbers.

2001-02-07  Jakub Jelinek  <jakub@redhat.com>

	* c-decl.c (finish_enum): Revert part of 2000-01-05 change.

2001-02-07  Mark Mitchell  <mark@codesourcery.com>

	* config/rs6000/aix43.h (CPLUSCPLUS_CPP_SPEC): Define it.

	* defaults.h (CPLUSPLUS_CPP_SPEC): New macro.
	* gcc.c (struct compiler): Add cpp_spec field.
	(input_file_compiler): New variable.
	(do_spec_1): Allow a particular compiler to handle `%C'
	specially.
	(main): Store the current compiler in input_file_compiler.
	* tm.texi (CPLUSPLUS_CPP_SPEC): Document.

2001-02-07  Zack Weinberg  <zack@wolery.stanford.edu>

	* cpphash.h (struct spec_nodes): Add n_true and n_false.
	* cppinit.c (cpp_create_reader): Initialize them.
	(append_include_chain): cxx_aware arg might be unused.
	* cppexp.c (lex): In C++ mode, recognize 'true' and 'false'
	keywords and give them their phase 7 meaning.  Pedwarn about
	this unless '__bool_true_false_are_defined' is defined.

2001-02-07  Alexandre Oliva  <aoliva@redhat.com>

	* lcm.c (optimize_mode_switching): Emit mode_set before the
	JUMP_INSN of an abnormal edge.

2001-02-07  Bernd Schmidt  <bernds@redhat.com>

	* builtins.c (expand_builtin_setjmp_receiver): Emit an ASM_INPUT as
	a scheduling barrier at the end.

	* tm.texi (MD_INIT_BUILTINS, MD_EXPAND_BUILTIN): Document.

2001-02-07  Alexandre Oliva  <aoliva@redhat.com>

	* config/sh/sh.md (reload_outsf): Removed.
	(movsf_ie): Introduce constraints for FPUL loads and stores.
	(reload_insf): Broaden the output constraint.

	* config/elfos.h (INT_ASM_OP): Don't define it if it's already
	defined.
	* config/sh/sh.h (INT_ASM_OP, ASM_OUTPUT_CONSTRUCTOR,
	ASM_OUTPUT_DESTRUCTOR): Copy definitions from config/elfos.h.

2001-02-06  Chandrakala Chavva  <cchavva@redhat.com>

	* final.c: Revert my previous changes.
	* output.h: Make profile_label_no extern.
	* config/rs6000/rs6000.c (output_profile_hook): Use standard functions
	for generating label.

2001-02-06  Laurynas Biveinis  <lauras@softhome.net>

	* config/i386/djgpp.h: Add comments about standard paths.
	(MD_EXEC_PREFIX): Undefine before defining.
	(MD_STARTFILE_PREFIX): New.

2001-01-30  Bruce Korb  <bkorb@gnu.org>

	fixinc/fixincl.c(process):  Emit error message only if appropriate :)
	(load_file): do not rely on load_file_data() to close file pointer
	fixinc/fixlib.c(load_file_data): do not close passed in file pointer
	fixinc/inclhack.def(irix_limits_const): add test_text

2001-02-06  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cppexp.c (parse_defined): Improve diagnostics for invalid
	syntax.

2001-02-06  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cppmacro.c (cpp_get_token): Avoid pasting after a builtin.

2001-02-06  Mark Mitchell  <mark@codesourcery.com>

	* config/rs6000/rs6000.h (ASM_OUTPUT_SYMBOL_REF): Define.
	* config/rs6000/rs6000-protos.h (rs6000_output_symbol_ref): Declare.
	* config/rs6000/rs6000.c (VTABLE_NAME_P): New macro.
	(rs6000_output_symbol_ref): New function.
	(output_toc): Use VTABLE_NAME_P.

Tue Feb  6 07:54:51 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* print-tree.c (print_node, case PARM_DECL):
	Print DECL_ARG_TYPE and DECL_ARG_TYPE_AS_WRITTEN.

	* stor-layout.c (reference_types_internal): New variable.
	(internal_reference_types): New function.
	(layout_type, case REFERENCE_TYPE): Make Pmode if internal.
	* tree.h (internal_reference_types): New declaration.

	* cse.c (find_best_addr): Fix typo in computing cost.

Mon Feb  5 21:56:16 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* combine.c (nonzero_bits, case PLUS): If pointers extend unsigned
	and this is the sum of a pointer and a constant, we know the result
	did not overflow.
	(num_sign_bit_copies, case PLUS): Likewise.
	* explow.c (convert_memory_address): Remove opposite SUBREG.
	* function.c (instantiate_new_reg): New function (from common code).
	(instantiate_virtual_regs_1): Call it.
	For PLUS, handle if (plus (subreg (virt-reg) (const_int))
	if pointers sign- or zero-extend.
	* simplify-rtx.c (simplify_unary_operation, case ZERO_EXTEND):
	If pointers extend unsigned, use inside of SUBREG.
	(simplify_unary_operation, case SIGN_EXTEND): Likewise, if sign extend.

2001-02-05  Benjamin Kosnik  <bkoz@redhat.com>

	* Makefile.in (-DGPLUSPLUS_TOOL_INCLUDE_DIR): Change to target
	subdir of gcc_gxx_include_dir.
	(gcc_gxx_target_include_dir): Remove.

2001-02-05  Jeffrey Oldham  <oldham@codesourcery.com>

	* dwarf2out.c: Revise DWARF2 Abbreviation Glossary comments.
	(dwarf2out_frame_debug_expr): Revise introductory comments to add
	a high-level description.

2001-02-05  Chandrakala Chavva  <cchavva@redhat.com>

	* final.c: Move the declaration of profile_label_no to ...
	* output.h: ... here.
	* function.c (expand_function_start): Call PROFILE_HOOK.
	* config/rs6000/aix.h: Define PROFILE_HOOK.
	* config/rs6000/rs6000-protos.h: output_profile_hook new.
	* config/rs6000/rs6000.c (output_profile_hook): Define.
	(output_prolog): Do nothing for ABI_AIX as it is taken care by
	output_profile_hook.
	tm.texi : Explain new macro PROFILE_HOOK.

2001-02-06  Hans-Peter Nilsson  <hp@axis.com>

	* extend.texi (Extended Asm): Do not say that semicolon is always
	a valid line-breaking character for GNU assemblers.  Use
	newline-tab as the most commonly supported syntax.  Use
	newline-tab rather than semicolon in multi-insn examples.

2001-02-05  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* Makefile.in (gcc_gxx_target_include_dir): Use $(target_alias).

2001-02-05  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>
	    David Edelsohn  <edelsohn@gnu.org>

	* config/rs6000/rs6000.c (rs6000_return_addr): Use PIC
	code for AIX, even without flag_pic.

2001-02-05  Jakub Jelinek  <jakub@redhat.com>

	* c-typeck.c (common_type): push and pop binding level around
	calling common_type on function parameters.

Mon Feb  5 14:30:37 2001  Christopher Faylor <cgf@cygnus.com>

	* config/i386/cygwin.h (CPP_SPEC): Add missing space after -idirafter.

Mon Feb  5 11:23:16 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* config/mips/mips.c (override_options): Fix typo in last change.
	(mips_make_temp_file): Call fatal_io_error, not pfatal_with_name.
	(mips_asm_file_end): Likewise; also pass more args to fatal_io_error.

2001-02-05  Nathan Sidwell  <nathan@codesourcery.com>

	* invoke.texi (-fdump-class-layout): Document.
	(-fdump-translation-unit): Use `=' as filename separator.

2001-02-05  Mark Mitchell  <mark@codesourcery.com>

	* Makefile.in (s-mlib): Don't build multilibs if
	--disable-multilib.
	(DRIVER_DEFINES): Adjust accordingly.
	(gcc.o): Likewise.
	(protoize.o): Likewise.
	(unprotoize.o): Likewise.
	* configure.in: Recognize --enable-multilib.

2001-02-04  Mark Mitchell  <mark@codesourcery.com>

	* Makefile.in (DRIVER_DEFINES): Fix quoting.

	* Makefile.in (site.exp): Always set HAVE_LIBSTDCXX_V3.
	* configure.in: Remove --enable-libstdcxx_v3 support.
	* configure: Regenerated.

Sun Feb  4 15:52:44 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* config/avr/avr.h (ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP):
	Call abort instead of fatal.
	(TRAMPOLINE_TEMPLATE): Call internal_error instead of fatal.
	* config/dsp16xx/dsp16xx.h (FUNCTION_PROFILER): Likewise.
	(FUNCTION_BLOCK_PROFILER, BLOCK_PROFILER): Likewise.
	(TRAMPOLINE_TEMPLATE, INITIALIZE_TRAMPOLINE): Likewise.
	(ASM_OUTPUT_REG_PUSH, ASM_OUTPUT_REG_POP): Likewise.
	* config/rs6000/rs6000.h (RETURN_ADDRESS_OFFSET): Likewise.

	* diagnostic.h (set_internal_error_function): Renamed.
	* toplev.h (internal_error): Renamed from fatal.
	(pfatal_with_name): Deleted.
	(fatal_io_error): Now has printf-style arguments.
	* diagnostic.c (pfatal_with_name): Deleted.
	(fatal_io_error): Rework to have args in printf-style.
	(set_internal_error_function): Renamed from set_fatal_function.
	(internal_error): Renamed from fatal.
	(error_recursion, fancy_abort): Call internal_error instead of fatal.
	* dwarf2out.c (get_cfa_from_loc_descr): Likewise.
	* emit-rtl.c (gen_realpart, gen_imagpart): Likewise.
	* expr.c (check_max_integer_computation_mode, expand_expr): Likewise.
	* flow.c (verify_flow_info): Likewise.
	* config/arm/arm.c (thumb_unexpanded_epilogue): Likewise.
	* config/mips/mips.c (save_restore_insns): Likewise.

	* except.c (duplicate_eh_handlers): Call abort instead of fatal.
	* flow.c (verify_flow_info): Likewise.
	* config/arm/arm.c (thumb_load_double_from_address): Likewise.
	* config/avr/avr.c (pttreg_to_str, unique_section): Likewise.
	(avr_normalize_condition): Likewise.
	* config/c4x/c4x.c (c4x_emit_libcall, c4x_valid_operands): Likewise.
	* config/dsp16xx/dsp16xx.c (dsp16xx_reg_class_from_letter): Likewise.
	(limit_reload_class, double_reg_to_memory): Likewise.
	(print_operand_address, emit_1600_code_shift): Likewise.
	(gen_tst_reg, gen_compare_reg): Likewise.
	* config/m68hc11/m68hc11.c (m68hc11_emit_libcall): Likewise.
	* config/dsp16xx/dsp16xx.c (dsp16xx_invalid_register_for_compare):
	Deleted.
	* config/dsp16xx/dsp16xx.md (unnamed cmphi): Call abort instead of it.

	* c-parse.in (methoddef): Call fatal_error instead of fatal.
	* objc/objc-act.c (build_ivar_chain): Likewise.
	* dwarfout.c (dwarfout_init): Call fatal_io_error instead of
	pfatal_with_name.
	* graph.c (clean_graph_dump_file): Likewise.
	* profile.c (init_branch_prob): Likewise.
	* objc/objc-act.c (objc_init): Likewise.

	* config/arm/arm.c (arm_override_options): Make errors non-fatal.
	* config/avr/avr.c (avr_override_options): Likewise.
	* config/c4x/c4x.c (c4x_expand_prologue): Likewise.
	* config/dsp16xx/dsp16xx.c (function_prologue): Likewise.
	* config/h8300/h8300.c (h8300_init_once): Likewise.
	* config/mips/mips.c (override_options): Likewise.
	* config/i386/i386.c (override_options): Likewise, rework.
	* config/m68k/m68k.c (override_options): Likewise.

	* config/dsp16xx/dsp16xx.c (print_operand): Call output_operand_lossage
	instead of fatal.
	* config/mips/mips.c (print_operand): Likewise.
	* hash.c (hash_allocate): Don't check for failure returns from
	obstack functions that can't fail.
	(hash_table_init_n, hash_table_init): Likewise; also now return void.
	* hash.h (hash_table_init_n, hash_table_init): Now return void.
	* objc/objc_act.c (objc_check_decl): Remove unneeded fatal call.
	(get_object_reference): Likewise.

2001-02-04  Nick Clifton  <nickc@redhat.com>

	* config/arm/arm.c (all_cores): Add 710T, 720T, 740T, 940T, 9e,
	StrongARM1110, 10TDMI, and 1020T.

2001-02-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* mips.h (MULTILIB_ISA_DEFAULT): Don't use #elif.

2001-02-04  Alexandre Oliva  <aoliva@redhat.com>

	* config/sh/sh.md (movdf load split): Pass register number to
	FP_OR_XD_REGISTER_P.

2001-02-04  Mark Mitchell  <mark@codesourcery.com>

	* cppinit.c (BC): New macro.
	(builtin_array): Add __GXX_WEAK__.
	* cpplib.h (builtin_type): Add BT_WEAK.
	* cppmacro.c (builtin_macro): Handle BT_WEAK.
	* defaults.h (SUPPORTS_ONE_ONLY): Define.
	* varasm.c (SUPPORTS_ONE_ONLY): Do not define.

2001-02-03  Jakub Jelinek  <jakub@redhat.com>

	* cppinit.c (append_include_chain): Honor NO_IMPLICIT_EXTERN_C.

2001-02-03  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cpphash.h: Rename _ALIGN POOL_ALIGN.
	* cpplex.c (new_chunk, _cpp_pool_reserve): Update.

2001-02-03  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cpphash.h: Rename ALIGN _ALIGN.
	* cpplex.c (new_chunk, _cpp_pool_reserve): Update.

Fri Feb  2 23:15:29 2001  Christopher Faylor <cgf@cygnus.com>

	* config/i386/cygwin.h (CPP_SPEC): Reorganize YA to better handle cross
	compilation environment.
	* config/i386/t-cygwin (T_CPPFLAGS): Define CYGWIN_CROSS_DIR to allow
	control over location of cygwin includes and libs.

2001-02-03  Michael Hayes  <m.hayes@elec.canterbury.ac.nz)

	* c4x.h	(HARD_REGNO_CALL_PART_CLOBBERED): Fix typo.

2001-02-02  lars brinkhoff  <lars@nocrew.org>

	* md.texi (Standard Names): remove reference to spur.md.

2001-02-03  Michael Hayes  <m.hayes@elec.canterbury.ac.nz)

	* c4x.h (IS_INT_CALL_SAVED_REG, IS_FLOAT_CALL_SAVED_REG): Define.
	(HARD_REGNO_CALL_PART_CLOBBERED): Use IS_FLOAT_CALL_SAVED_REG.
	(INITIAL_FRAME_POINTER_OFFSET, INITIAL_ELIMINATION_OFFSET): Likewise.
	* c4x.c (c4x_hard_regno_rename_ok): Use IS_XXX_CALL_SAVED_REG.
	(c4x_expand_prologue, c4x_expand_epilogue): Likewise.

2001-02-03  Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>

	* c4x.c (group1_reg_operand, group1_mem_operand, arx_reg_operand,
	c4x_arn_reg_operand, c4x_arn_mem_operand): Do not check register
	number before reload.
	(c4x_adjust_cost): Return zero before reload.
	* c4x.md (load_immed_address+1, load_immed_address+2): Do not
	split before reload.

2001-02-03  Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>

	* c4x.c (c4x_hard_regno_rename_ok): New.
	* c4x-protos.h (c4x_hard_regno_rename_ok): New.
	* c4x.h (HARD_REGNO_RENAME_OK): Define.

Fri Feb  2 20:03:50 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* diagnostic.h: Add missing "extern" in all declarations.

2001-02-02  Alex Samuel  <samuel@codesourcery.com>

	* Makefile.in (gcc_gxx_target_include_dir): Generate dynamically
	as for gcc_gxx_include_dir.

2001-02-02  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cpp.texi, invoke.texi: Update -Wtraditional documentation.

2001-02-02  Alexandre Oliva  <aoliva@redhat.com>

	* config/sh/sh.c (output_far_jump): Don't use braf on SH1.  Emit
	label before alignment to be used as the braf base address.
	* config/sh/sh.md (length): Use longer lengths for SH1 PIC far
	branches.
	(casesi_jump_2): Require at least TARGET_SH2.

	* config/float-sh.h (LDBL_EPSILON, LDBL_MIN, LDBL_MAX): Prevent
	truncation to 32-bit doubles on -m3e and -m4-single-only.

2001-02-02  Mark Mitchell  <mark@codesourcery.com>

	* gcc.c (init_gcc_specs): New function.  Make -shared-libgcc
	the default when building a shared object.
	(init_spec): Use it.
	* testsuite/lib/g++.exp: Include the directory where libgcc
	is located to the LD_LIBRARY_PATH list.
	* invoke.texi (-shared-libgcc): Document the cases in which
	GCC defaults to using the shared libgcc.

2001-02-02  Alexandre Oliva  <aoliva@redhat.com>

	* config/fp-bit.h (MAX_USI_INT, MAX_SI_INT): Don't assume
	unsigned is wide enough.
	(BITS_PER_SI): New.
	* config/fp-bit.c (_fpmul_parts): Don't assume 32-bits SI.
	(si_to_float): Likewise.
	(float_to_si, float_to_usi): Use BITS_PER_SI.

2001-02-01  Jeffrey Oldham  <oldham@codesourcery.com>

	* dwarf2out.c: Added explanation of abbreviations.
	(def_cfa_1): Added comments listing DWARF2 instructions.
	(cfa_temp_reg): Removed in favor of cfa_temp.
	(cfa_temp_value): Removed in favor of cfa_temp.
	(cfa_temp): New global variable.
	(dwarf2out_frame_debug_expr): Added extensive introductory
	comments explaining the function's transformations.  Revised to
	use cfa_temp.  Added some rtx checking.  Generalize IOR case.
	(dwarf2out_frame_debug): Revised to use cfa_temp.
	(output_aranges): Cast as "unsigned" to avoid warning.
	* rtl.texi (RTX_FRAME_RELATED_P): Revise entry to emphasize better
	explain which instructions must be marked.

2001-02-01  Richard Henderson  <rth@redhat.com>

	* local-alloc.c (update_equiv_regs): Copy INSN_CODE to the
	new instruction.

2001-02-01  Alexandre Oliva  <aoliva@redhat.com>

	* config/sh/crt1.asm (main_k): Modified so that start calls
	___setup_argv_and_call_main.

2001-02-01  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cpphash.h (struct cpp_buffer): Move saved_flags from cpp_reader.
	* cpplex.c (_cpp_lex_token): New token picks up the saved flags,
	and AVOID_LPASTE is cleared on meeting an unescaped newline.
	* cppmacro.c (builtin_macro): Set builtin flags here.
	(paste_all_tokens): Preserve AVOID_LPASTE on pasted token.
	(replace_args): Clarify intent.
	(cpp_get_token): Macro expansion tokens get the saved flags.
	Update.
	* cppmain.c (scan_buffer): Remove now-redundant print.printed
	check.

2001-02-01  Jeffrey Oldham  <oldham@codesourcery.com>

	* config/mips/iris6.h (SUPPORTS_INIT_PRIORITY): Reverse change of
	2001-Jan-29.

Thu Feb  1 07:22:41 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* builtins.c (expand_builtin_alloca): allocate_dynamic_stack_space
	returns Pmode pseudo, but we need ptr_mode.
	* explow.c (allocate_dynamic_stack_space): Use plus_constant.
	Remove bogus conversions; use HOST_WIDE_INT for size.
	Don't use TARGET if wrong mode.

	* config/i386/i386.c (ix86_compute_frame_size): Allow
	stack_alignment_needed to be non-default even if size is zero.

2001-01-31  Alan Modra <alan@linuxcare.com.au>

	* pa.c (hppa_init_pic_save): New function.
	* pa.h (hppa_init_pic_save): Declare.
	* pa.md (call, call_value, sibcall, sibcall_value): Use
	the above instead of duplicated code.

	* pa.c (hppa_encode_label): Correct size of alloca buffer
	so we don't overrun it.  Correct leading `*' case.
	* pa.h (STRIP_NAME_ENCODING): Simplify now that we don't
	need to handle `*@'.
	(FUNCTION_NAME_P): Likewise.

2001-01-31  Richard Henderson  <rth@redhat.com>

	* config.gcc (alpha-osf5): Use float-i128.h.

	* config/float-i128.h (FLT_EVAL_METHOD, DECIMAL_DIG): Define.
	* config/float-i32.h: Likewise.
	* config/float-i64.h: Likewise.
	* config/float-sh.h: Likewise.
	* config/float-sparc.h: Likewise.

2001-01-31  DJ Delorie  <dj@redhat.com>

	* expmed.c (extract_bit_field): allow non-integral modes if we
	want to extract a whole register from itself.

2001-01-31  Jakub Jelinek  <jakub@redhat.com>

	* c-typeck.c (set_init_index): If first is equal to last, assume as
	if it was not a range at all.

2001-01-31  Alexandre Oliva  <aoliva@redhat.com>

	* config/fp-bit.c: Include tm.h.
	(float_to_si): Don't assume SImode is 32-bits wide.
	(float_to_usi): Likewise.

2001-01-31  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-parse.in (structsp): Pedwarn when "enum foo" refers to an
	incomplete type.
	(typename): Call pending_xref_error after parsing typed_typespecs.
	* c-decl.c (lookup_tag): Give error immediately rather than
	leaving it pending if the tag of the wrong type is in the same
	binding level.
	(xref_tag): Don't pedwarn for forward declarations of enum types
	here.
	* gcc.texi (Actual Bugs): Remove entry for misuse of struct, union
	and enum tags.

2001-01-31  Alexandre Oliva  <aoliva@redhat.com>

	* config/float-sparc.h (LDBL_MAX) [sparc32]: Fix typo.

2001-01-31  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cpplib.c (T_ELIF): Move to STDC89, not that it matters.
	(_cpp_handle_directive): Suggest not using #elif with -Wtraditional.

2001-01-31  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cpphash.h (struct cpp_reader): New saved_flags.
	* cppmacro.c (cpp_get_token): Use saved_flags to remember
	to avoid a paste after a pasted token.

2001-01-31  Alexandre Oliva  <aoliva@redhat.com>

	* libgcc2.h (Wtype_MAX, Wtype_MIN): Define.
	* libgcc2.c (__fixunssfSI, __fixunsdfSI, __fixunsxfSI): Use
	Wtype_MIN instead of LONG_MIN.

2001-01-30  Jeffrey Oldham  <oldham@codesourcery.com>

	* fixinc/fixincl.tpl: Add 2001 to copyright.  Change name of
	README file.
	* fixinc/fixincl.x: Regenerated.
	* fixinc/inclhack.def (irix_limits_const): New definition to
	convert "const" to "__const" in limits.h.

2001-01-30  Jeffrey Oldham  <oldham@codesourcery.com>

	* fixinc/genfixes (AG): Fix "autogen4" thinko.

2001-01-30  Herman A.J. ten Brugge  <Haj.Ten.Brugge@net.HCC.nl>

	* regmove.c (try_auto_increment): Change REG_DEAD into REG_UNUSED
	when register dies in the insn.

2001-01-30  Neil Booth  <neil@daikokuya.demon.co.uk>

	* diagnostic.c (fatal): Fix word wrap.

2001-01-30  Alexandre Oliva  <aoliva@redhat.com>

	* combine.c (try_combine): Fix SUBREG setting for
	HOST_BITS_PER_WIDE_INT >= 2 * BITS_PER_WORD.

2001-01-30  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* jump.c (comparison_dominates_p): Don't try to handle UNKNOWN
	comparison codes.

2001-01-30  Neil Booth  <neil@daikokuya.demon.co.uk>

	* c-decl.c (c_expand_body): Check TYPE_SIZE_UNIT (ret_type)
	is not NULL.
	* toplev.c (decode_W_option): Update warn_larger_than
	unconditionally for each processed switch.

2001-01-30  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* pa.c (pa_init_machine_status): Initialize pic_offset_table_save_rtx
	to NULL_RTX.
	(hppa_expand_prologue): Delete code to save pic offset table register
	in the function prologue.
	* pa.h (PIC_OFFSET_TABLE_SAVE_RTX): Correct type in comment.
	* pa.md (call, call_value, sibcall, sibcall_value): Save the pic offset
	table register at the beginning of the function after the prologue.

2001-01-29  lars brinkhoff  <lars@nocrew.org>

	* tm.texi (PUSH_ROUNDING): Remove duplicate lines.

2001-01-29  John David Anglin  <dave@hiauly1.hia.nrc.ca>
	    Jeff Law <law@redhat.com>

	* pa.md (return): Revise comment for trivial return.
	(return_internal): Non-trivial return pattern for non-PIC code.
	(return_internal_pic): Non-trivial return pattern for PIC code.
	It uses the PIC register to ensure it is restored after
	function calls.
	(epilogue): Generate appropriate return for PIC and non-PIC code.

Mon Jan 29 23:53:14 2001  Christopher Faylor <cgf@cygnus.com>

	* config/i386/cygwin.h: Fix -mno-cygwin search path for link.

2001-01-29  DJ Delorie  <dj@redhat.com>

	* combine.c (if_then_else_cond): Pass the correct mode to
	operand_subword() for constants.

Mon Jan 29 20:38:19 2001  Christopher Faylor <cgf@cygnus.com>

	* config/i386/cygwin.h: Add w32api to include search.  Search different
	directories in a cross-build environment.

2001-11-29  Tim Josling  <tej@melbpc.org.au>

	* tree.h (TYPE_STUB_DECL): Add documentation.

2001-11-29  Laurynas Biveinis  <lauras@softhome.net>

	* sdbout.c (sdbout_one_type): Skip types with indeterminate size.
	(sdbout_field_types): Likwise.  Fix use of host_integerp.

2001-01-29  Thomas Pfaff  <tpfaff@gmx.net>

	* mingw32.h: Override STARTFILE_SPEC and LINK_SPEC declared in
	cygwin.h.

2001-01-29  Jeffrey Oldham  <oldham@codesourcery.com>

	* config/mips/iris6.h (SUPPORTS_INIT_PRIORITY): Revise definition
	to use flag_gnu_linker.

2001-01-29  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cpplib.c (T_BAD_DIRECTIVE): Remove.
	(_cpp_init_stacks): Loop from 0 to N_DIRECTIVES - 1.

2001-01-29  Joseph S. Myers  <jsm28@cam.ac.uk>

	* tree.c, tree.h (build_parse_node): Remove; was identical to
	build_nt.
	* c-lang.c (start_cdtor), objc/objc-act.c
	(build_module_descriptor): Use build_nt instead of
	build_parse_node.

2001-01-29  Jakub Jelinek  <jakub@redhat.com>

	* config/i386/i386.md (addqi_1_lea): Fix mode (QI instead of HI).
	(testqi_1, andqi_2): If widening to SImode, make sure CONST_INT does
	not have any upper bits set.

2001-01-29  Phil Edwards  <pme@sources.redhat.com>

	* COPYING.LIB:  Update to LGPL 2.1 from the FSF.

2001-01-28  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* stmt.c (estimate_case_costs): Use integer_minus_one_node.

	* tree.c (build_common_tree_nodes_2): Set integer_minus_one_node.

	* tree.h (tree_index): Add new element TI_INTEGER_MINUS_ONE.
	(integer_minus_one_node): Define.

2001-01-28  Alexandre Oliva  <aoliva@redhat.com>

	* Makefile.in (bootstrap2-lean): Fix typo.

2001-01-28  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cpphash.c (_cpp_cleanup_hashtable, _cpp_lookup_with_hash)
	: Don't set fe_value.
	* cpplib.h (AVOID_LPASTE): New flag.
	(struct cpp_hashnode): Remove fe_value.
	* cpplex.c (cpp_avoid_paste): Don't paste '.' with a number.
	* cppmacro.c (builtin_macro): Don't set flags here.
	(replace_args): Set AVOID_LPASTE flag on first token of an
	argument, and the token following it.
	(cpp_get_token): Set AVOID_LPASTE flag on first token of a
	macro expansion, and on the token following it.  Do it for
	builtins too.
	* cppmain.c (scan_buffer): Avoid pasting only flagged tokens.

2001-01-27  Richard Henderson  <rth@redhat.com>

	* config/alpha/t-ieee: Remove multilibbing.
	(TARGET_LIBGCC2_CFLAGS): Add -mieee.

2001-01-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* configure.in: Arrange to include defaults.h in [ht]config.h/tm.h.

	* Makefile.in: Remove all dependencies on defaults.h.
	* builtins.c: Don't include defaults.h.
	* c-common.c: Likewise.
	* c-decl.c: Likewise.
	* c-pragma.c: Likewise.
	* c-typeck.c: Likewise.
	* combine.c: Likewise.
	* i386.c: Likewise.
	* frame-ia64.c: Likewise.
	* cppexp.c: Likewise.
	* crtstuff.c: Likewise.
	* dbxout.c: Likewise.
	* dwarf2out.c: Likewise.
	* dwarfout.c: Likewise.
	* emit-rtl.c: Likewise.
	* except.c: Likewise.
	* expr.c: Likewise.
	* final.c: Likewise.
	* frame-dwarf2.c: Likewise.
	* libgcc2.c: Likewise.
	* optabs.c: Likewise.
	* profile.c: Likewise.
	* sdbout.c: Likewise.
	* toplev.c: Likewise.
	* tradcif.y: Likewise.
	* tree.c: Likewise.
	* varasm.c: Likewise.

2001-01-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtins.c (expand_builtin_fputs): Use size_one_node when
	transforming into fwrite.

2001-01-27  Joseph S. Myers  <jsm28@cam.ac.uk>

	* extend.texi (Attribute Syntax): New section.

2001-01-27  Michael Sokolov  <msokolov@ivan.Harhan.ORG>

	* fixproto: Correctly install synthesized unistd.h and stdlib.h when
	they didn't need fixing.

2001-01-27  Janis Johnson <janis@us.ibm.com>

	* config.gcc (i[34567]86-sequent-{ptx4*,sysv4*}): Use usegas.h
	if appropriate.
	* config/ptx4.h: Several fixes to build on DYNIX/ptx v4.[456], and
	to remove macro definitions that are duplicated from elfos.h.

2001-01-27  Richard Henderson  <rth@redhat.com>

	* config/i386/sco5gas.h: Move ...
	* config/usegas.h: ... here.
	* config.gcc (i[34567]86-*-sco3.2v5) [tm_file]: Update.

2001-01-27  Jakub Jelinek  <jakub@redhat.com>

	* c-typeck.c (struct constructor_stack): Add range_stack member.
	(really_start_incremental_init): Clear it.
	(push_init_level): Save constructor_range_stack and clear it if
	pushing explicit braces.
	(pop_init_level): abort if constructor_range_stack is nonzero at
	explicit closing brace.  Restore saved constructor_range_stack if
	not implicit.

2001-01-27  Alexandre Oliva  <aoliva@redhat.com>

	* expr.c (emit_move_insn): Add REG_EQUAL note when constant loaded
	into register was forced into memory.

2001-01-27  Alexandre Oliva  <aoliva@redhat.com>

	* Makefile.in: Remove uses of + before $(MAKE).

2001-01-26  Richard Henderson  <rth@redhat.com>

	* stmt.c (cost_table): Remove.
	(COST_TABLE, cost_table_initialized): New.
	(estimate_case_costs): Use the later instead of the former.
	(balance_case_nodes): Likewise.

2001-01-26  Richard Henderson  <rth@redhat.com>

	* alias.c (objects_must_conflict_p): Read-only slots may not
	conflict despite having the same type.

2001-01-27  Michael Hayes  <mhayes@redhat.com>

	* loop.c (loop_giv_reduce_benefit): Copy mode size into
	int variable.
	(check_ext_dependant_givs): Initialize u_start_val and
	u_end_val.
	(load_mems): Make last_max_reg unsigned.
	(try_swap_copy_prop): Use INSN_P and initialize set.

Fri Jan 26 23:22:58 2001  Denis Chertykov  <denisc@overta.ru>

	* README.AVR : Removed.

Fri Jan 26 11:37:26 2001  Jeffrey A Law  (law@cygnus.com)

	* pa-64.h (text_section): Remove declaration.

	* pa.md (return_internal): Remove mode on PIC register use.

2001-01-25  lars brinkhoff  <lars@nocrew.org>

	* tm.texi (DATA_ALIGNMENT, LOCAL_ALIGNMENT, ASM_OPEN_PAREN,
	ASM_CLOSE_PAREN): fix typos.

2001-01-25  Mark Mitchell  <mark@codesourcery.com>

	* acconfig.h: Define `const' to the empty string if neither
	__STDC__ nor __cplusplus is defined.
	* config.in: Regenerated.

2001-01-25  David Edelsohn  <edelsohn@gnu.org>

	* config.gcc (rs6000-ibm-aix[5-9]*): Change to aix51.h.
	* collect2.c (main): Delete importf.  Add ".obj" file extension.
	(GCC_CHECK_HDR): Handle AIX V5 new magic number.
	(aix_std_libs): Add additional AIX libraries to skip.
	* config/rs6000/aix.h (MY_ISCOFF): Add AIX V5 new magic number.
	* config/rs6000/aix51.h: New file.

2001-01-25  Michael Hayes  <mhayes@redhat.com>

	* loop.c (loop_call_insn_emit_before, loop_call_insn_hoist): New.
	(loop_insn_emit_before): No longer static.
	(move_movables): Replace emit_insn_after with loop_insn_emit_after.
	(loop_givs_rescan, load_mems): Likewise.
	(check_dbra_loop): Replace emit_insn_before with loop_insn_emit_before.
	(maybe_eliminate_biv_1):
	(move_movables): Replace emit_call_insn_before with
	loop_call_insn_hoist.
	* loop.h (loop_insn_emit_before): Add.
	* unroll.c (copy_loop_body): Replace emit_insn_before with
	loop_insn_emit_before.

2001-01-25  Neil Booth  <neil@daikokuya.demon.co.uk>

	* diagnostic.c (fatal): Request preprocessed source.

Thu Jan 25 02:01:16 2001  J"orn Rennecke <amylaar@redhat.com>

	* c-decl.c (duplicate_decls): If different_binding_level is nonzero,
	olddecl has argument types and newdecl has none, use the argument
	types from olddecl.

2001-01-24  Ulrich Drepper  <drepper@redhat.com>

	* dwarf2out.c (prefix_of): New function.  Determine longest common
	prefix of the two arguments.  The units are whole path components.
	(output_file_names): When adding a new directory find the one entry
	with the longest common prefix already in the list.  Artificially
	generate entry if there is none for this prefix.
	Fix test to check whether the zeroth directory entry is used.

Wed Jan 24 23:51:55 2001  J"orn Rennecke <amylaar@redhat.com>

	* reload1.c (reload_reg_free_for_value_p): New parameter start_regno.
	Changed all callers.  Take it into account when deciding if a
	previously loaded value matches.

2001-01-24  Richard Henderson  <rth@redhat.com>

	* reload.c (find_reloads_subreg_address): Fail the substitution
	if the resulting address is insufficiently aligned.

2001-01-24  DJ Delorie  <dj@redhat.com>

	* combine.c (combine_simplify_rtx): If the modes are all VOIDmode,
	check the original operand's mode also.
	* simplify-rtx.c (simplify_ternary_operation): Ditto.

2001-01-24  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-parse.in (cast_expr): Move compound literals from here ...
	(primary): ... to here.  Use standard terminology "compound
	literal" instead of "constructor expression".

2001-01-24  Joseph S. Myers  <jsm28@cam.ac.uk>

	* gcc.1, cpp.1: Regenerate.

2001-01-24  Alexandre Oliva  <aoliva@redhat.com>

	* calls.c (emit_library_call_value_1): Memory slot for
	pass-by-reference argument should have the mode of the argument,
	not of the pointer to it.

2001-01-24  Tom Tromey  <tromey@redhat.com>

	* gcc.texi (G++ and GCC): Mention gcj manual.
	(Standards): Link to section of manual mentioning gcj/Java
	compatibility.

2001-01-24  Jakub Jelinek  <jakub@redhat.com>

	* cppfiles.c (_cpp_read_file): Add to dependencies if requested.
	* cppinit.c (cpp_start_read): Remove deps_add_dep call.
	* tradcpp.c (main): Add -imacros or -include'd dependencies
	for -M*.
	* cpp.texi (-M, -MM): Document -M -include behavior.

2001-01-24  Roger Collins <roger@ProProject.com>

	* config/i386/xm-i386.h: Make __i386__ a boolean macro.

2001-01-24  Will Cohen  <wcohen@redhat.com>

	* config/mips/abi64.h (RETURN_IN_MEMORY): Always take into account
	whether registers are 32 bits or 64 bits in size.

2001-01-24  Ben Elliston  <bje@redhat.com>

	* config/m32r/m32r.h (PREDICATE_CODES): Remove m32r_not_same_reg.

2001-01-24  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.md (builtin_longjmp_internal): New.
	(builtin_longjmp): Use it instead of emit_indirect_jump.

2001-01-23  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* bb-reorder.c (make_reorder_chain_1): Handle case where
	jump edge goes to the same block as the fallthru edge.

2001-01-23  Jim Wilson  <wilson@redhat.com>

	* dwarf2out.c (dwarf2out_line): Make last_file_num be unsigned.
	* frame.h (__ia64_personality_v1): Add prototype.
	* libgcc2.c (ia64_throw_helper): Change personality declaration to
	prototype form.  Add void * cast to first argument to personality
	call.
	* real.c (e113toe): Surround with INTEL_EXTENDED_IEEE_FORMAT ifdefs.
	(asctoe113): Likewise.
	* config/ia64/frame-ia64.c: Include eh-common.h.
	* config/ia64/ia64-protos.h (sdata_section, sbbs_section): Add
	prototypes.
	* config/ia64/ia64.c (emit_insn_group_barriers): Add ATTRIBUTE_UNUSED
	to dump parameter.
	(itanium_split_issue): Add prototype.
	(gen_nop_type): Ifdef out.
	(find_best_packet): Initialize best_packet.
	(ia64_encode_section_info): New local string.  Use for ggc_alloc_string
	result.
	* config/ia64/ia64.h (ASM_OUTPUT_LONG_DOUBLE): Use 0L not 0.
	* config/ia64/ia64.md (bsp_value): Add explicit stop bit at start.
	(flushrs): Add explicit stop bit at end.
	* config/ia64/lib1funcs.asm (__ia64_restore_stack_nonlocal): Change
	trailing \ to >.

2001-01-23  Chris Demetriou  <cgd@broadcom.com>

	* libgcc-std.ver (GCC_3.0): Add __terminate_func_set to list
	of EH symbols.
	* libgcc2.c (__terminate_func): Make variable static.
	(__terminate_set_func): New function to set __terminate_func.
	* libgcc2.h (__terminate_func_ptr): New typedef.
	(__terminate_set_func): New function.

2001-01-23  Richard Henderson  <rth@redhat.com>

	* flow.c (init_propagate_block_info): Don't consider unchanging
	memories for dead frame store elimination.

2001-01-23  Richard Henderson  <rth@redhat.com>

	* varasm.c (UNIQUE_SECTION): Move default implementation ...
	* defaults.h: ... here.

2001-01-24  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* c4x.h (TARGET_LOAD_DIRECT_MEMS): Define.

2001-01-23  Neil Booth  <neil@daikokuya.demon.co.uk>

	* c-lex.c (lex_charconst): Fix typo: s/p/str.

2001-01-23  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* rs6000.h (rs6000_return_addr): Move prototype from here...
	* rs6000-protos.h (rs6000_return_addr): ...to here.
	(rs6000_init_expanders): Delete prototype.

2001-01-23  Nick Clifton  <nickc@redhat.com>

	* invoke.texi: Replace , with \, inside @gccoptlist macros.
	(Spec Files): Document %B and %j and %.	and %v3 and %M and
	%{S*&T} spec switches.

2001-01-24  Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>

	* c4x.c (c4x_r11_set_p): Calculate rtx code correctly.

2001-01-23  Chris Demetriou  <cgd@sibyte.com>
	    Neil Booth  <neil@daikokuya.demon.co.uk>

	* cpperror.c: Merge handlers of PEDWARN and WARNING.
	Have -Werror make pedantic warnings errors, like the
	rest of GCC.

2001-01-23  Phil Edwards  <pme@sources.redhat.com>

	* c-tree.texi (IDENTIFIER_LENGTH):  Fix typo.

2001-01-23  Jakub Jelinek  <jakub@redhat.com>

	* integrate.h (struct inline_remap): Add compare_src, compare_mode.
	* integrate.c (expand_inline_function): Initialize them.
	(subst_constants): If changing COMPARE so that both its arguments
	will be VOIDmode and the comparison mode will be lost, note
	compare_mode.  Use the recorded compare_mode to optimize
	IF_THEN_ELSE.

2001-01-23  Jason Merrill  <jason@redhat.com>

	* dwarf2out.c (new_die): Use xcalloc.
	(output_die): Abort rather than emit a local reference to offset 0.

2001-01-17  Andrew Haley  <aph@redhat.com>

	* libgcc2.c (get_reg_addr): Don't abort if we haven't got a copy
	of a saved register; return NULL instead.
	(copy_reg): Take a pointer to a source register rather than a
	frame_state.
	(next_stack_level): Remember the address in the stack frame of all
	saved registers.
	Use the saved register pointer array as the source of the CFA.
	(throw_helper): Rewrite.  Unwind once rather than twice and keep
	track of saved registers as we go.

2001-01-23  Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>

	* c4x-protos.h (c4x_legitimize_reload_address): Remove.
	* c4x.c (c4x_legitimize_reload_address): Remove.
	* c4x.h (LEGITIMIZE_RELOAD_ADDRESS): Rewrite to generate correct
	reload address for ldp(k) insn.

Mon Jan 22 20:53:47 2001  Jeffrey A Law  (law@cygnus.com)

	* pa.md (return_internal): Add a USE of the PIC register to ensure
	it is restored after each call.
	(return expander): Corresponding changes.

2001-01-22  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* rs6000.h (INIT_EXPANDERS): Delete.
	(RETURN_ADDR_RTX): Call rs6000_return_addr().
	* rs6000.c (rs6000_override_options): Call *_machine_status from
	here...
	(rs6000_init_expanders): ...instead of here. Delete.
	(rs6000_mark_machine_status): New function.
	(rs6000_init_machine_status): Use xcalloc.
	(rs6000_return_addr): Generate RTX for the return address.
	(rs6000_ra_ever_killed): New, check if LR was ever destroyed.
	(rs6000_stack_info): Use it.

2001-01-22  Thomas Pfaff  <tpfaff@gmx.net>

	* gthr-win32.h: Include errno.h to get a declaration for
	EINVAL and _mingw.h if the target is mingw32.

2001-01-22  Andres Felipe Vargas <avargas@teletulua.com.co>

	* cpp.texi: Correct typos.

Mon Jan 22 13:59:09 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* explow.c (probe_stack_range): Ensure value passed to
	stack_check_libfunc is ptr_mode, not Pmode.

Mon Jan 22 16:53:06 2001  J"orn Rennecke <amylaar@redhat.com>

	* recog.c (validate_replace_rtx_1): In ZERO_EXTEND / SIGN_EXTEND
	case, don't use operand_subword to calculate a SUBREG that is
	wider than a word.

	* rtl.texi: Comparisons yield 0 or STORE_FLAG_VALUE.

2001-01-22 Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>

	* c4x.c (c4x_valid_rptb_p, c4x_label_ref_used_p): New functions.
	(c4x_rptb_insert): Call c4x_valid_rptb_p to check if repeat block is
	valid.  If not replace it by equivalent insns.

2001-01-22 Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>

	* c4x.c (c4x_check_legit_addr): Only check CONST.  Not if CONST
	contains SYMBOL_REF, LABEL_REF and CONST_INT.
	(c4x_U_constraint, symbolic_address_operand): Likewise.
	(c4x_immed_float_constant): Do not check if CONST_DOUBLE is in
	memory.
	(c4x_r11_set_p, c4x_check_laj_p): New functions.
	* c4x-protos.h (c4x_check_laj_p): Add prototype.
	* c4x.md (in_annul_slot_3): Do not allow auto-increment in last
	anulling slot because of silicon bug.
	(laj, lajv): Call c4x_check_laj_p to check for silicon bug.

2001-01-22  Alan Modra <alan@linuxcare.com.au>

	* cppexp.c (parse_charconst):  Change `mask' type to agree
	with parse_escape.

2001-01-21  Richard Henderson  <rth@redhat.com>

	* config/i386/i386.c (ix86_asm_file_end): Disable putting
	pic_label_name in a linkonce section.

2001-01-17  Philipp Thomas  <pthomas@suse.de>

	* aclocal.m4 (AM_WITH_NLS): Add -lintl to LIBS if gettext was
	found in libintl.
	* configure: Regenerate.

Sun Jan 21 02:38:56 2001  J"orn Rennecke <amylaar@redhat.com>

	* expmed.c (synth_mult, expand_mult_highpart, expand_divmod): Guard
	uses of shift_cost, shiftadd_cost and shiftsub_cost with bound checks.

Sun Jan 21 09:44:17 2001  Denis Chertykov  <denisc@overta.ru>

	* config/avr/avr.c (ret_cond_branch): New argument (reverse) added.
	If REVERSE nonzero then condition code in X must be reversed.
	(encode_section_info): Optimize if/else.
	(avr_function_value): Fix formatting.

	* config/avr/avr.md (branch): Call to ret_cond_branch changed.
	(difficult_branch): Likewise.
	(rvbranch): Likewise.
	(difficult_rvbranch): Likewise.

	* config/avr/avr-protos.h (ret_cond_branch): Prototype changed.

	* config/avr/libgcc.S: Fix comment.

2001-01-20  Michael Sokolov  <msokolov@ivan.Harhan.ORG>

	* sdbout.c (PUT_SDB_DEF): Fix after last bogus change.

2001-01-20  Michael Sokolov  <msokolov@ivan.Harhan.ORG>

	* cppinit.c (INO_T_EQ): Don't use #elif, fix formatting.

2001-01-20  Michael Sokolov  <msokolov@ivan.Harhan.ORG>

	* aclocal.m4 (gcc_AC_FUNC_STRSTR): New macro.
	* configure.in (gcc_AC_FUNC_STRSTR): Add invokation.
	* configure, config.in: Regenerate.
	* Makefile.in (STRSTR, HOST_STRSTR, USE_HOST_STRSTR): New variables.
	(LIBDEPS, HOST_LIBDEPS, LIBS, HOST_LIBS): Add strstr handling.
	(strstr.o, $(HOST_PREFIX_1)strstr.o): New rules.
	(doprint.o): New rule.

2001-01-20  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-typeck.c (digest_init): Handle boolean types as scalars.

Sat Jan 20 12:46:57 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* stmt.c (expand_return): Don't return anything if size is zero.
	Delete redundant assignment to BYTES.
	* expr.c (move_block_from_reg): Do nothing if NREGS is zero.

2001-01-20  Marek Michalkiewicz  <marekm@linux.org.pl>

	* config/avr/avr.h (INIT_TARGET_OPTABS): Remove most of it, was
	the same as the default library function names.
	* config/avr/avr.md: Document special characters after '%'.
	(mulqi3, mulhi3, mulsi3): Call libgcc.S functions ourselves,
	knowing which of the call-used registers are really clobbered.
	(divmodqi4, udivmodqi4, divmodhi4, udivmodhi4, divmodsi4, udivmodsi4):
	New.  Both quotient and remainder from one libgcc.S call.
	* config/avr/libgcc.S: Optimize mul/divmod for the new insns above,
	clobber as few registers as possible.
	* config/avr/t-avr (LIB1ASMFUNCS): Adjust for the above changes.

2001-01-20  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cppmacro.c (funlike_invocation_p): Don't move back up to the
	context of the top of the stack.

2001-01-20  Jakub Jelinek  <jakub@redhat.com>

	* function.c (fixup_var_refs): Move CALL_PLACEHOLDER handling...
	(fixup_var_refs_insns): ...here.

2001-01-20  Zack Weinberg  <zack@wolery.stanford.edu>

	* function.c (fixup_var_refs_insns): Break up into
	fixup_var_refs_insn [body of loop], fixup_var_refs_insns
	[loop over entire insn list], and fixup_var_refs_insns_with_hash
	[loop over hash table entries].
	(fixup_var_refs): Adjust calls to fixup_var_refs_insns and/or
	fixup_var_refs_insns_with_hash, to match above changes.

2001-01-19  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* Makefile.in (ORDINARY_FLAGS_TO_PASS): Add MAKEOVERRIDES variable.
	(libgcc.a): Likewise.
	(stmp-multilib): Likewise.
	(STAGE2_FLAGS_TO_PASS): Likewise.

2001-01-19  Alexandre Oliva  <aoliva@redhat.com>

	* config/sh/sh.c (prepare_move_operands) [PIC]: Use operands[0] as
	temporary if no_new_pseudos.

2001-01-19  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cppinternals.texi: Update.

2001-01-19  Richard Earnshaw  <rearnsha@arm.com>

	* arm.c (arm_init_builtins): Re-enable builtins.

Fri Jan 19 13:02:56 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* rtl.texi (SET, CLOBBER): Document PARALLEL as SET_DEST possibility.
	* flow.c (mark_set_1, case PARALLEL): Don't require BLKmode, allow
	element to be null, and always expect an EXPR_LIST.
	* rtlanal.c (reg_overlap_mentioned_p, note_stores): Likewise.
	* sched-deps.c (sched_analyze_1): Likewise.
	* sched-rgn.c (check_live_1, update_live_1): Likewise.

	* regclass.c (max_set_parallel): New variable.
	(reg_scan): Take it into account in computation of max_parallel.
	(reg_scan_mark_refs, case SET): Compute it.

	* alias.c (rtx_equal_for_memref_p, case ADDRESSOF): Don't assume
	args are REG.
	* expr.c (store_constructor): Don't look at MEM_ALIAS_SET unless MEM.
	* function.c (assign_parms): Use INTVAL for a CONST_INT.

2001-01-19  Jason Merrill  <jason@redhat.com>

	* dwarf2out.c (gen_subprogram_die): Don't reuse the in-class decl
	for the abstract instance of an inline function.

Fri Jan 19 14:31:35 2001  Alexandre Oliva  <aoliva@redhat.com>
			  J"orn Rennecke <amylaar@redhat.com>

	* reload1.c (move2add_note_store): Treat all registers directly or
	indirectly derived from a base register as members of the same set
	of values.
	(reload_cse_move2add): Adjust accordingly.  Take mode and offset
	of base register into account.

Fri Jan 19 09:18:42 2001  J"orn Rennecke <amylaar@redhat.com>

	* alias.c (find_base_value): Recognize TRUNCATE.
	(record_set): In PLUS case, invalidate if other summand is also a
	base value.

Thu Jan 18 06:43:04 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* flow.c (mark_set_1, case PARALLEL): New case; rework to allow
	entry to be EXPR_LIST.
	* rtlanal.c (reg_overlap_mentioned_p): Allow PARALLEL in SET to
	be an EXPR_LIST (but not null, which other code doesn't allow).
	(note_stores): Properly handle PARALLEL in SET.
	Recursively call for top-level PARALLEL.
	* sched-deps.c (sched_analyze_1): Handle EXPR_LIST in PARALLEL in SET.
	* sched-rgn.c (check_live_1, update_live_1): Likewise.

	* config.gcc (rs6000-ibm-aix*, rs6000-bull-bosx): Add rs6000/aix.h.

2001-01-18  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cpplib.c (_cpp_handle_directive): Use buffer->was_skipping,
	not pfile->skipping (== 0).

2001-01-17  Nick Clifton  <nickc@redhat.com>

	* config/rs6000/rs6000.c: Add prototypes for {init|free}_
	machine_status.

2001-01-17  Jim Wilson  <wilson@redhat.com>

	* invoke.texi (IA-64 options): Improve.

2001-01-17  Tom Tromey  <tromey@redhat.com>

	* invoke.texi (Optimize Options): Use `{}' to around @samp
	argument.

2001-01-17  Aldy Hernandez  <aldyh@redhat.com>

	* invoke.texi (-fno-guess-branch-probability): New option.

Wed Jan 17 13:26:34 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* combine.c (try_combine): Don't set i3_subst_into_i2 for
	case of making new double-word constant.
	Revert last change: instead just test i3_subst_into_i2.

2001-01-17  Jakub Jelinek  <jakub@redhat.com>

	* config/i386/i386.md (cmpqi_minus_1): Use {b} for QImode operation.
	Use q constraints instead of r.

Tue Jan 16 22:23:04 2001  Alan Modra (alan@linuxcare.com.au)

	* config/pa/pa.h (PIC_OFFSET_TABLE_REGNUM_SAVED): Remove.
	(machine_function): Define.
	(PIC_OFFSET_TABLE_SAVE_RTX) : Define.
	* config/pa/pa.c (pa_init_machine_status, pa_mark_machine_status,
	pa_free_machine_status): New functions.
	(override_options): Set {init,mark,free}_machine_status to above.
	(hppa_expand_prologue): Use PIC_OFFSET_TABLE_SAVE_RTX instead of
	PIC_OFFSET_TABLE_REGNUM_SAVED.
	* config/pa/pa.md: Use PIC_OFFSET_TABLE_SAVE_RTX instead of
	PIC_OFFSET_TABLE_REGNUM_SAVED throughout.
	* config/pa/pa32-regs.h (CONDITIONAL_REGISTER_USAGE): Remove
	references to PIC_OFFSET_TABLE_REGNUM_SAVED.
	* config/pa/pa64-regs.h (CONDITIONAL_REGISTER_USAGE): Likewise.

2001-01-15  DJ Delorie  <dj@redhat.com>

	* Makefile.in (gcov.1): Protect against texi2pod/pod2man failing.
	(cpp.1): Ditto.
	(gcc.1): Ditto.

Tue Jan 16 17:20:43 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* flow.c (propagate_one_insn): Make trying to delete a prologue
	or epilogue insn an ICE, not a warning.  Allow doing this if
	the current function returns with stack pointer depressed.

	* combine.c (try_combine): If i3_subst_into_i2, properly check for
	I3 having more than one SET.

2001-01-16  Jim Wilson  <wilson@redhat.com>

	* invoke.texi: Document IA-64 options.

	* config/ia64/ia64.c (ia64_print_operand_address): Delete 'B' support.
	(fixup_errata): Delete TARGET_A_STEP use.
	* config/ia64/ia64.h (MASK_A_STEP, TARGET_A_STEP): Delete.
	(TARGET_SWITCHES): Delete -ma-step option.
	* config/ia64/ia64.md (all FP patterns): Delete %B0.
	(movqicc_astep, movqi_internal_astep, movhicc_astep,
	movhi_internal_astep, movsicc_astep, movsi_internal_astep, movdi+1,
	movdi_internal_astep, movsfcc_astep, movsf_internal_astep,
	movdfcc_astep, movdf_internal_astep, movtfcc_astep,
	movtf_internal_astep, cmovdi_internal_astep, cmovsi_internal_astep):
	Delete.
	(movqi_internal, movhi_internal, movsi_internal, movdi_internal,
	movsf_internal, movdf_internal, movtf_internal, cmovdi_internal,
	cmovsi_internal): Delete ! TARGET_A_STEP check.

2001-01-16  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* gcc.texi (Bug Lists): Do not mention newsgroups nor the
	possibility to report bugs via postal mail. Change a URL and
	merge in a nearly duplicate statement...
	(Bug Reporting): ...from here.
	(Service): Refer to the Bug Reporting section instead of
	duplicating an URL.
	(Contributing): Remove trivial explanations concerning snapshots.

2001-01-16  Alan Modra <alan@linuxcare.com.au>

	* cppmain.c (general_init): Don't use ANSI prototype.

2001-01-16  Tom Tromey  <tromey@redhat.com>

	* gcc.c (cpp_options): Added `*' to specs for -MF, -MQ, and -MT.

2001-01-16  Richard Henderson  <rth@redhat.com>

	* config/i386/i386.h: Fix comment typo.
	* config/i386/i386.md (shift+compare pattern names): s/cmpno/cmp/
	(ashr+compare patterns): Match CCGOCmode not CCNOmode.

2001-01-16  Phil Edwards  <pme@sources.redhat.com>

	* gcc.c:  Revert previous -fsyntax-only-related change; move
	to cp/g++spec.c.

2001-01-16  Jakub Jelinek  <jakub@redhat.com>

	* config/i386/i386.c (fcmov_comparison_operator): Only initialize
	inmode after checking GET_CODE (op).

2001-01-16  Richard Henderson  <rth@redhat.com>

	* flow.c (struct propagate_block_info): Add mem_set_list_len.
	(MAX_MEM_SET_LIST_LEN): New.
	(propagate_one_insn): Update mem_set_list_len.
	(invalidate_mems_from_autoinc): Likewise.
	(invalidate_mems_from_set): Likewise.
	(mark_used_regs): Likewise.
	(init_propagate_block_info): Likewise.  Stop collecting memories
	when we reach MAX_MEM_SET_LIST_LEN.
	(mark_set_1): Likewise.

2001-01-16  Richard Henderson  <rth@redhat.com>

	* unroll.c (precondition_loop_p): Fail if no iteration
	variable found.

2001-01-16  Phil Edwards  <pme@sources.redhat.com>

	* gcc.c:  When -fsyntax-only is given, do not complain about
	unused libraries.

2001-01-15  Richard Henderson  <rth@redhat.com>

	* config/i386/i386.c (asm_output_function_prefix): Remove.
	(ix86_asm_file_end): New.
	(load_pic_register): Generate pic_label_name into a
	statically allocated buffer.
	* config/i386/i386-protos.h: Update.
	* config/i386/i386.h (ASM_OUTPUT_FUNCTION_PREFIX): Remove.
	(ASM_FILE_END): New.
	* config/i386/i386afe.h: New file.
	* config.gcc (i?86-*-elf) [tm_file]: Use it.
	(i?86-*-{freebsd,linux*,moss*}): Likewise.
	* config/elfos.h (ASM_FILE_END): Undef before redefinition.
	* config/i386/cygwin.h (ASM_FILE_END): Likewise.
	* config/i386/osfrose.h (ASM_FILE_END): Invoke ix86_asm_file_end.
	* config/i386/sco5.h (ASM_FILE_END): Likewise.
	* config/i386/winnt.c (i386_pe_asm_file_end): Likewise.

2001-01-15  Joseph S. Myers  <jsm28@cam.ac.uk>

	* Makefile.in (install-man): Remove explicit dependency on
	$(srcdir)/gcc.1.

	* configure.in, configure: Revert previous patch requiring perl
	5.6.0.

2001-01-12  Aldy Hernandez  <aldyh@redhat.com>

	* toplev.c (flag_guess_branch_prob): New.
	(f_options): Add guess-branch-probability option.
	(rest_of_decl_compilation): Only estimate branch probability if
	flag set.
	(main): set flag_guess_branch_prob.

	* flags.h (flag_guess_branch_prob): New.

2001-01-15  DJ Delorie  <dj@redhat.com>

	* gcc.texi (Makefile): Add documentation for Makefile targets.

2001-01-15  Philip Blundell  <philb@gnu.org>

	* config/arm/arm.c (arm_finalize_pic): New arg "prologue".
	(is_pic): Delete.
	* config/arm/arm-protos.h (arm_finalize_pic): Update prototype.
	(is_pic): Delete declaration.
	* config/arm/arm.h (FINALIZE_PIC): Update call to arm_finalize_pic.
	(OUTPUT_INT_ADDR_CONST): Remove special handling of PIC address.
	* config/arm/arm.md (builtin_setjmp_receiver): New.

2001-01-15  Richard Earnshaw  <rearnsha@arm.com>

	* arm.c (use_return_insn): Don't try to determine the function type
	until after reload has completed.
	(arm_output_epilogue): Don't adjust the sp value recovered from the
	stack.
	(emit_multi_reg_push): Don't record dwarf information for the pc.
	* arm.md (eh_epilogue): The function type may have changed, so it
	needs to be recalculated.
	* arm/netbsd.h (DWARF2_UNWIND_INFO): Delete.  Can now use dwarf2
	unwind tables on arm/netbsd.

2001-01-15  Richard Earnshaw  <rearnsha@arm.com>

	* arm.md (cbranchsi4): Correct calculation of branch ranges.
	(negated_cbranchsi4): Likewise.

2001-01-15  Richard Earnshaw  <rearnsha@arm.com>

	* config/arm/semi.h (SUBTARGET_EXTRA_SPECS): Define.
	(SUBTARGET_EXTRA_ASM_SPEC): Define to empty string.
	(ASM_SPEC): Call subtarget_extra_asm_spec.  Don't
	pass -mapcs-* options to assembler.
	* config/arm/elf.h (SUBTARGET_EXTRA_SPECS): Define.
	(SUBTARGET_EXTRA_ASM_SPEC): Define to empty string.
	(ASM_SPEC): Call subtarget_extra_asm_spec.

2001-01-15  Andreas Jaeger  <aj@suse.de>

	* config/i386/i386.c (ix86_init_builtins): Make i size_t to remove
	warnings.
	(ix86_expand_builtin): Likewise.

	* gencodes.c (output_predicate_decls): Make i size_t to avoid
	warning about comparison between signed and unsigned.

2001-01-14  Geoffrey Keating  <geoffk@redhat.com>

	* expr.c (do_jump): Treat VOIDmode CONST_DOUBLEs like CONST_INTs.

2001-01-14  Ralf Baechle <ralf@gnu.org>

	* config/mips/linux.h (SUBTARGET_CPP_SPEC): Default ABI is 32; change
	SUBTARGET_CPP_SPEC appropriately.

2001-01-12  Mark Mitchell  <mark@codesourcery.com>

	* varasm.c (make_decl_rtl): Fix typo in last change.

2001-01-14  Jeffrey Oldham  <oldham@codesourcery.com>

	* defaults.h (SUPPORTS_INIT_PRIORITY): New macro to indicate the
	linker supports the init_priority C++ attribute.
	* tm.texi (SUPPORTS_INIT_PRIORITY): Documentation for new macro.
	* config/mips/iris6.h (SUPPORTS_INIT_PRIORITY): Indicate Irix
	linker does not support init_priority C++ attribute.

Sun Jan 14 22:31:30 2001  J"orn Rennecke <amylaar@redhat.com>

	* Makefile.in (libgcc1-test.o): Depends on stmp-int-hdrs.

2001-01-14  Neil Booth  <neil@daikokuya.demon.co.uk>

	* c-parse.in (finish_parse): Add comment about cpp_destroy.
	* cp/lex.c (finish_parse): Similarly.
	* cppinit.c (cpp_cleanup): Rename cpp_destroy for clarity.
	Return the number of errors encountered.
	* cpplib.h (cpp_cleanup): Rename cpp_destroy, return int.
	* cppmain.c (main): Don't call cpp_destroy.

2001-01-14  Joseph S. Myers  <jsm28@cam.ac.uk>

	* configure.in: Require at least perl 5.6.0 to regenerate
	manpages.
	* configure: Regenerate.

2001-01-14  Richard Henderson  <rth@redhat.com>

	* genrecog.c (DT_veclen_ge): New.
	(add_to_sequence) [MATCH_PARALLEL]: Generate one.
	(maybe_both_true_2): Simplify DT_veclen vs DT_veclen_ge.
	(nodes_identical_1): Handle DT_veclen_ge.
	(write_cond, debug_decision_2): Likewise.

2001-01-14  Richard Earnshaw  <rearnsha@arm.com>

	* arm.md (ldmsi_postinc, ldmsi, stmsi_postinc, smsi): Delete.  Replace
	with ...
	(ldmsi_postinc[432], ldmsi[432], stmsi_postinc[432], stmsi[432]): New.

2001-01-14  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cppmain.c (do_preprocessing): New function; most of the old
	main.
	(main): Call it to do most of the work.
	(cb): Move from global scope to set_callbacks ().
	(setup_callbacks): Get the callback pointer.
	(general_init, printer_init): Clean up code and comments.

2001-01-14  Richard Earnshaw  <rearnsha@arm.com>

	* config/arm/semi.h (ASM_SPEC): Pass -k to the assembler when
	compiling PIC.

2001-01-14  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.c (get_shift_alg): Update comments.

Sun Jan 14 06:20:49 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* ggc-page.c (alloc_annon): Call perror and correctly call exit.
	(alloc_page, ggc_alloc): Add casts to remove warnings.

2001-01-14  Geoffrey Keating  <geoffk@redhat.com>

	* combine.c (simplify_comparison): Don't change `code' when
	can't reverse comparison.

2001-01-14  Richard Henderson  <rth@redhat.com>

	* rtlanal.c (computed_jump_p_1): Rename from jmp_uses_reg_or_mem;
	update all call sites.  Return true for all non-label constants.

Sun Jan 14 10:09:48 MET 2001  Jan hubicka  <jh@suse.cz>

	* i386.c (ix86_expand_compare): Add bypass_test and second_test
	parameters.
	(ix86_expand_branch): Update.
	(ix86_expand_setcc): Update to handle multiple test conditions.
	(expand_int_movcc): Likewise.
	(expand_fp_movcc): Likewise.
	* i386-protos.h (ix86_expand_compare): New.
	* i386.md (andqi_?_slp, orqi_?_slp): New.
	(conditional trap expander): Update call to ix86_expand_compare.

2001-01-14  Richard Henderson  <rth@redhat.com>

	* config/vax/vax.md: Use nonimmediate_operand instead of
	general_operand in destinations.

	* config/vax/vax.md (indirect_jump): Use register_operand.

	* config/vax/vax.h (RETURN_POPS_ARGS): Max at 255 arguments.
	* config/vax/vax.md (call_pop): Turn into an expander.
	(call_value_pop): Likewise.
	(call, call_value): New.

2001-01-14  Andreas Jaeger  <aj@suse.de>

	* config/i386/i386.c (ix86_split_fp_branch): Remove unused
	variables.
	(ix86_fp_compare_mode): Add unused attribute.
	(ix86_expand_fp_movcc): Remove unused variable.
	(ix86_expand_builtin): Make fcode unsigned.

	* expr.c (MOVE_BY_PIECES_P): Cast MOVE_RATIO to unsigned.
	(expand_expr): Add cast to avoid signed warning.
	(store_field): Likewise.
	(store_constructor_field): Likewise.
	(store_constructor): Likewise.
	(store_expr): Likewise.
	(clear_storage): Likewise.
	(emit_group_store): Likewise.
	(emit_group_load): Likewise.

2001-01-13  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-common.c: Move format checking code to ...
	* c-format.c: ... here.  New file.  Reorder some functions and
	declarations.
	(decl_handle_format_attribute, decl_handle_format_arg_attribute):
	New functions.
	* c-common.h (decl_handle_format_attribute,
	decl_handle_format_arg_attribute): Declare.
	* Makefile.in (C_AND_OBJC_OBJS): Add c-format.o.
	(c-common.o): Adjust dependencies.
	(c-format.o): New list of dependencies.

2001-01-13  Jakub Jelinek  <jakub@redhat.com>

	* unroll.c (loop_iterations): If we cannot prove iteration variable
	is set once in each iteration, punt.

Sun Jan 14 00:23:15 2001  Denis Chertykov  <denisc@overta.ru>

	* config/avr/avr.md ("strlenhi"): Remove clobber of input address.
	(*strlenhi): Remove clobber (which was buggy) of output address.

2001-01-13  Joseph S. Myers  <jsm28@cam.ac.uk>

	* Makefile.in (generated-manpages): Add gcc.1
	($(srcdir)/gcc.1): New target.
	(maintainer-clean): Delete $(srcdir)/gcc.1.
	* gcc.texi: Add macros @gccoptlist and @gol.
	* invoke.texi: Include option summary in manpage.  Mark up option
	summary with @gccoptlist and @gol.  Use @r in one place where
	appropriate.
	* texinfo.tex: Update to version 2000-12-11.07 from ftp.gnu.org.
	* gcc.1: Generate from invoke.texi.

2001-01-13  Richard Henderson  <rth@redhat.com>

	* ggc-page.c (USING_MALLOC_PAGE_GROUPS): New; set if not using mmap.
	(struct page_entry): Add group member.
	(struct page_group): New.
	(struct globals): Add page_groups member.
	(alloc_anon): Only define for using mmap; remove valloc call.
	(page_group_index): New.
	(set_page_group_in_use): New.
	(clear_page_group_in_use): New.
	(alloc_page): Implement USING_MALLOC_PAGE_GROUPS.
	(free_page, release_pages): Likewise.
	* configure.in (with-gc): Default to ggc-page always.

2001-01-13  Alexandre Oliva  <aoliva@redhat.com>

	* reload1.c (replace_pseudos_in_call_usage): Use
	reg_equiv_constant and reg_equiv_address, and don't try
	regno_reg_rtx first.

2001-01-13  Richard Henderson  <rth@redhat.com>

	* ggc-page.c (alloc_page): Round up allocation size to one page.
	Set e->order on extra pages.

2001-01-13  Richard Henderson  <rth@redhat.com>

	* genrecog.c (nodes_identical): Expand commentary.
	(write_switch): Watch out for identical nodes.

2001-01-13  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cppfiles.c (_cpp_fake_include): New function.
	* cpphash.h (_cpp_fake_include): New.
	* cpplib.c (do_line): Call _cpp_fake_include when entering
	header files in preprocessed input.
	* cppmain.c (cb_pragma_implementation): Remove handling.
	(setup_callbacks): Don't register pragmas.

2001-01-13  Neil Booth  <neil@daikokuya.demon.co.uk>

	* extend.texi: Udate for CPP.

2001-01-13  Andreas Jaeger  <aj@suse.de>

	* reload1.c: Add prototype for replace_pseudos_in_call_usage.

	* regmove.c: Add prototype for replace_in_call_usage.

2001-01-13  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cpplib.h (cpp_pool, mi_state, mi_ind, struct cpp_macro,
	struct cpp_chunk, struct htab, struct toklist,
	struct cpp_context, CPP_STACK_MAX, struct lexer_state,
	struct spec_nodes, struct cpp_reader, CPP_OPTION, CPP_BUFFER,
	CPP_BUF_LINE, CPP_BUF_COL, CPP_BUF_COLUMN, U, ustrcmp, ustrncmp,
	ustrlen, uxstrdup, ustrchr, ufputs): Move to cpphash.h.
	(struct macro_args): Delete.
	* cpphash.h: See above.

2001-01-13  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cppmain.c (struct printer): Remove no_line_dirs.
	(options, cb): New.
	(main, setup_callbacks, scan_buffer, printer_init, cb_define)
	: Use options rather than CPP_OPTION.
	(setup_callbacks): Use cb rather than pfile->cb.
	(main): No need to check for a buffer.  Use cpp_errors.
	(printer_init): Don't set no_line_dirs.
	(maybe_print_line): Use options not no_line_dirs.
	(cb_file_change): Don't call print_line if -P.

2001-01-13  Neil Booth  <neil@daikokuya.demon.co.uk>

	* c-lex.c (init_c_lex): Use cpp_get_callbacks to set
	callbacks.
	* c-parse.in (finish_parse): Use cpp_errors.
	(__yylex): Use return value of cpp_pop_buffer.
	* cp/lex.c (finish_parse): Use cpp_errors.
	* cp/spew.c (read_token): Use return value of cpp_pop_buffer.

Sat Jan 13 16:57:40 2001  Denis Chertykov  <denisc@overta.ru>

	* README.AVR: URLs corrected.

Sat Jan 13 07:30:02 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* c-decl.c (start_function): Don't warn if old prototype is builtin
	that's not in C's namespace.
	* libgcc2.c (_varargs): Update definition of __builtin_saveregs.
	(_bb): Add prototype for ctime.
	* config/alpha/osf.h (TRANSFER_FROM_TRAMPOLINE): Add missing protos.

Sat Jan 13 09:53:32 MET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.c (ix86_fp_comparison_arithmetics_cost,
	ix86_fp_comparison_fcomi_cost, ix86_fp_comparison_sahf_cost,
	ix86_fp_comparison_cost): New functions.
	(ix86_expand_fp_compare): Use the costs to choose best bethod; add
	two new parameters SECOND_TEST and BYPASS_TEST; allow generating
	two-branch sequences; make static.
	(ix86_use_fcomi_compare): Do decision according to the costs.
	(split_fp_branch): New.
	* i386.md (compare-and-branch patterns): Use split_fp_branch.
	* i386-protos.h (ix86_expand_fp_compare): Remove
	(ix86_split_fp_branch): Declare.

	* i386.h (PREDICATE_CODES): Update codes from fcmov_comparison_operand
	and ix86_comparison_operator.

	* i386.c (ix86_prepare_fp_compare_args): Try to rearange the comparison
	to make it cheaper.

	* i386.c (put_condition_code): Output properly the unordered/ordered
	compares in fp case.
	(ix86_expand_fp_movcc): Use ix86_expand_compare infrastructure.

	* tm.texi (REVERSE_CONDITION): Document.
	* i386.c (ix86_fp_compare_mode): Simplify; return always CCFPmode
	in -ffast-math mode.
	* i386.h (REVERSE_CONDITION, REVERSIBLE_CC_MODE): New macro.

2001-01-13  Alexandre Oliva  <aoliva@redhat.com>

	* config/sh/sh.c (sh_expand_epilogue): Use PR explicitly.

	* config/sh/sh.c (sh_expand_prologue): Let the second toggle_sz be
	optimized away.

	* config/sh/sh.c (mova_p): Fix test for mova_const.

2001-01-13  Neil Booth  <neil@daikokuya.demon.co.uk>

	* fix-header.c (read_scan_file): Use cpp_get_callbacks and
	cpp_get_options rather than dereferencing pfile and using
	CPP_OPTION.
	* scan-decls.c (scan_decls): Use return value of
	cpp_pop_buffer rather than CPP_BUFFER.

2001-01-13  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cppinit.c (cpp_handle_option): help_only is now part of the
	cpp_options structure.
	* cpplib.c (cpp_errors, cpp_get_options, cpp_get_callbacks,
	cpp_set_callbacks): New functions.
	* cpplib.h (cpp_callbacks): Break out as a named structure.
	(cpp_options): Move help_only here from cpp_reader.
	(CPP_FATAL_ERRORS): Update to use cpp_errors.
	(cpp_errors, cpp_get_options, cpp_get_callbacks,
	cpp_set_callbacks): New prototypes.
	* cppmain.c (main): Update for help_only.

2001-01-13  Joseph S. Myers  <jsm28@cam.ac.uk>

	* Makefile.in (info, maintainer-clean, install-info, uninstall):
	Also build and remove and install and uninstall c-tree.info and
	cppinternals.info.
	($(srcdir)/gcc.info): Add dependency on contrib.texi.
	($(srcdir)/cppinternals.info): New target.
	* c-tree.texi: Change file name used when makeinfo used without -o
	from ir.info to c-tree.info.  Add info directory entry.
	* cppinternals.texi: Add info directory entry.
	* .cvsignore: Update.

2001-01-12  Jakub Jelinek  <jakub@redhat.com>

	* c-typeck.c (store_init_value): Don't require constant initializer
	elements with -pedantic -std=c99.
	(digest_init): Change error about non-constant initializer elements
	into pedwarn.
	(constructor_range_end): Remove.
	(constructor_incremental, designator_depth,
	designator_errorneous): New variables.
	(struct constructor_stack): Remove range_end, add incremental.
	(struct constructor_range_stack, constructor_range_stack): New.
	(struct initializer_stack): Add constructor_range_stack.
	(finish_init): Set it.
	(start_init): Likewise.  require_constant_elements for non-static
	trees only if not flag_isoc99.
	(really_start_incremental_init): Remove constructor_range_end, add
	constructor_incremental.
	(pop_init_level): Likewise.
	(push_init_level): Likewise.  If implicit and the subobject had some
	value set already, preinitialize the level with it.
	Warn about missing braces only if not pushing due to designators.
	(set_designator, push_range_stack): New functions.
	(set_init_label): Use them.
	(set_init_index): Likewise.  Remove constructor_range_end.
	Error if designator index is outside of array bounds.
	(add_pending_init): Compare values of purpose index trees, not the
	trees themselves.  Allow overwriting of already initialized element.
	Issue a warning if it had side-effects.
	(set_nonincremental_init, set_nonincremental_init_from_string): New
	functions.
	(pending_init_member): Rename to...
	(find_init_member): ...this function.  Call set_nonincremental_init
	if necessary.  Compare values of purpose index trees, not the trees
	themselves.  Return the actual value, not just nonzero if something
	is found.
	(output_init_element): Remove checks for duplicates.
	If field has zero size, only check the initializer for correctness.
	Call set_nonincremental_init if necessary.  Push RECORD/ARRAY into AVL
	if constructor_incremental is zero.  Change error about initializers
	not computable at load time into pedwarn.
	(output_pending_init_elements): Compare bit positions, not
	FIELD_DECLs to take into account zero-sized fields.
	(process_init_element): Use constructor_range_stack to fill all
	ranges in the designator lists from current level up.
	* extend.texi: Update documentation for labeled elements.

2001-01-12  Alexandre Oliva  <aoliva@redhat.com>

	* calls.c (emit_library_call_value_1): Add USEs and CLOBBERs
	to function usage for arguments passed by reference.  Optimize
	callee-copied arguments.
	* regmove.c (replace_in_call_usage): New function.
	(fixup_match_1): Call it.
	* cse.c (cse_insn): Canonicalize registers in function usage.
	* reload1.c (replace_pseudos_in_call_usage): New function.
	(reload): Call it.

	* Makefile.in: Reverted yesterday's wrong patch.  Installed the
	right version.

2001-01-12  Jakub Jelinek  <jakub@redhat.com>

	* config/alpha/alpha.c (alpha_expand_block_move): GET_MODE of tmp,
	not XEXP (tmp, 0).

2001-01-12  DJ Delorie  <dj@redhat.com>

	* Makefile.in (bootstrap): rename stages to be mnemonic.  Add
	restageN, unstageN, bubblestrap, quickstrap, and cleanstrap
	targets.

2001-01-12  Joseph S. Myers  <jsm28@cam.ac.uk>

	* cpp.texi, extend.texi, gcc.texi, install.texi, invoke.texi,
	tm.texi: Consistently refer to ISO C instead of ANSI C.  Refer to
	-std options alongside references to -ansi.  Update some
	documentation for C99.
	* cpp.1: Regenerate.

2001-01-12  Andreas Jaeger  <aj@suse.de>

	* haifa-sched.c (restore_line_notes): Remove argument block B
	since it's unused.
	* sched-ebb.c (schedule_ebb): Change caller.
	* sched-rgn.c (schedule_region): Likewise.
	* sched-int.h (restore_line_notes): Adjust prototype.

	* loop.h: Remove wrong declaration of doloop_condition_get.

2001-01-12  Phil Edwards  <pme@sources.redhat.com>

	* extend.texi:  Move C++-extension-related node from the C section
	into the C++ section.

2001-01-12  Joseph S. Myers  <jsm28@cam.ac.uk>

	* extend.texi: Refer to an array of pointers to functions instead
	of one of functions.

Fri Jan 12 12:08:12 MET 2001  Andreas Jaeger  <aj@suse.de>
			      Jan Hubicka  <jh@suse.cz>

	* combine.c (reversed_comparison): Fix typo in last patch.
	Check X for NULL.
	(combine_reversed_comparison_code): Make static to follow
	prototype declaration.

2001-01-12  Phil Edwards  <pme@sources.redhat.com>

	* install.texi:  Remove misplaced duplicate entry.

2001-01-11  Ulrich Drepper  <drepper@redhat.com>

	* config/float-i386.h: Define FLT_EVAL_METHOD and DECIMAL_DIG for C99.

Thu Jan 11 17:06:30 EST 2001  John Wehle  (john@feith.com)

	* final.c: (leaf_function_p): Fix typo.

2001-01-11  Zack Weinberg  <zack@wolery.stanford.edu>

	* aclocal.m4 (AC_FUNC_MMAP_ANYWHERE): Completely rewritten.
	Now defines HAVE_MMAP_DEV_ZERO and/or HAVE_MMAP_ANON depending
	which you have.
	(AC_FUNC_MMAP_FILE): Don't AC_REQUIRE AC_FUNC_MMAP_ANYWHERE.
	* configure.in: Set GGC to ggc-page if any of mmap_dev_zero,
	mmap_anon, and valloc is available.
	* ggc-page.c: Restructure ifdef logic to match new autoconf
	spec.  Don't throw away the test page in init_ggc.

	* configure, config.in: Regenerate.

2001-01-12  Michael Hayes  <mhayes@redhat.com>

	* loop.h (total_biv_increment): Constify iv_class pointer.
	(struct induction): Replace `mem_mode' with `mem' rtx.
	* unroll.c (total_biv_increment): Constify iv_class pointer.
	* loop.c (loop_giv_reduce_benefit): Derive mem mode from mem rtx.
	(find_mem_givs, combine_givs_p): Likewise.
	(debug_ivs, debug_iv_class, loop_ivs_dump, loop_iv_class_dump): New.

2001-01-10  Thomas Pfaff <tpfaff@gmx.net>

	* gthr-win32.h (__gthread_objc_thread_get_data): Save and restore Win32
	LastError.
	(__gthread_getspecific): Ditto.

Fri Jan 12 00:04:00 MET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.c (ix86_comparison_operator, fcmov_comparison_operator,
	put_condition_code): Convert fp comparison codes to integer
	before handling.
	(ix86_expand_fp_compare): Postnote the fp comparison code conversion
	to final.

	* i386.c (unsigned_comparison, no_comparison_operator): Kill.
	* i386-protos.h (no_comparison_operator): Kill.

	* i386.c (ix86_expand_fp_compare): Fix ordered/unordered confussion.

	* combine.c (REVERSIBLE_CC_MODE): Remove.
	(reversible_comparison_p): Remove.
	(combine_reversed_comparison_code): New.
	(reversed_comparison): New.
	(combine_simplify_rtx): Use
	combine_reversed_comparison_code/reversed_comparison instead
	of reversible_comparison_p.
	(simplify_if_then_else): Likewise.
	(simplify_set): Likewise.
	(simplify_logical): Likewise.
	(if_then_else_cond): Likewise.
	(known_cond): Likewise.
	(simplify_comparison): Likewise.

2001-01-11  Alan Lehotsky  <lehotsky@tiac.net>

	* builtins.c (std_expand_builtin_va_start): Handle varargs when
	sizeof (int) is larger than sizeof(__word__).

2001-01-11  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cppinit.c (do_includes): Fix typo.

2001-01-11  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/m68hc11.md (cmphi_1): Make sure reloading
	in S_REGS does not occur because not all sources are possible
	when a S_REGS is a destination (sometimes needs a clobber).
	(movqi_const0, zero_extendhisi2, zero_extendqisi2): Likewise.
	(zero_extendhidi2, extendqisi2, extendqihi2, extendhisi2): Likewise.
	(anddi3, iordi3, xordi3, negqi2, one_cmplhi2, one_cmplqi2: Likewise.
	(ashldi3_const32, ashldi3_const1, ashlsi3_const16): Likewise.
	(ashlsi3_const1, ashlhi3_2, ashlqi3_const1, ashrhi3): Likewise.
	(ashrqi3_const1, lshrdi3_const32, lshrdi3_const63): Likewise.
	(lshrdi_const1, lshrsi3_const16): Likewise.
	(*addhi3, lshrsi3_const1, lshrqi3_const1): Likewise.
	(*movhi_68hc12, *movqi_68hc12): Likewise.
	(movstrictqi): Make sure reloading in D_REGS as a destination
	does not happen.

2001-01-11  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cppspec.c (DEFAULT_WORD_SWITCH_TAKES_ARG): Add -MQ.

2001-01-11  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cppinit.c (cpp_start_read): If -fpreprocessed, ignore
	-D, -U and -A, and don't initialize the builtins.
	(do_includes): Error if -include or -imacros with -fpreprocessed.
	* cppmain.c (cb_define, cb_undef): Unconditionally process
	the callback.
	* tradcpp.c (main): Fix typo.

2000-01-11  Mark Elbrecht  <snowball3@bigfoot.com>

	* cppfiles.c (cpp_included, find_include_file, _cpp_execute_include)
	(read_name_map): Use IS_ABSOLUTE_PATH.
	* tradcpp.c (get_filename): Likewise.

2001-01-11  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/m68hc11/m68hc11.md (*adcq, *subcq): Fix operand numbers.
	(*ashlsi3_const16_zexthi, *ashlsi3_const1): Likewise.
	(*lshrsi3_const, *lshrsi3_const1, *lshrsi3_const16): Likewise.
	(*ashrsi3, *ashrsi3_const, *ashlsi3, *ashlsi3_const): Likewise.
	(*ashlsi3_const1, *lshrsi3, *ashlsi3_const16): Likewise.
	(cmphi_z_used): Don't use '@' for the output.
	(tstqi_z_used): Likewise.
	(cmpqi_z_used): Likewise.
	(one_cmplsi2): Likewise.

2001-01-11  Alexandre Oliva  <aoliva@redhat.com>

	* config/sh/sh.c (barrier_align): Recognize branch around far
	branch and redundant insn.

2001-01-11  Neil Booth  <neil@daikokuya.demon.co.uk>

	* invoke.texi: Restore documentation of the drivers' switches -MD
	and -MMD.

2001-01-11  Alexandre Oliva  <aoliva@redhat.com>

	* config/sh/sh.h (LABEL_ALIGN): Use UNSPECV_ALIGN instead of 1.

	* Makefile.in (check-gcc//%, check-g++//%, check-g77//%,
	check-objc//%): Support parallel testing of multilibs.
	(TESTSUITEDIR): Set to testsuite by default, but override for
	parallel testing.
	(check-gcc, check-g++, check-g77, check-objc): Enter
	$(TESTSUITEDIR).

2001-01-11  Bernd Schmidt  <bernds@redhat.com>

	* alias.c (throughout): Use REGNO, rather than ORIGINAL_REGNO.
	* sched-deps.c (deps_may_trap_p): Likewise.
	* basic-block.h: Remove a comment.
	* flow.c (PROP_POSTRELOAD): Remove.
	(update_life_info): Don't add it to prop_flags.
	(mark_set_1): Lose the code that was enabled by it.

2001-01-11  Michael Hayes  <mhayes@redhat.com>

	* flow.c (flow_call_edges_add): New.
	* basic_block.h (flow_call_edges_add): New.

2001-01-11  J"orn Rennecke <amylaar@redhat.com>

	* reload1.c (move2add_note_store): Update reg_set_luid even if
	base reg remains the same.

2001-01-10  Nick Clifton  <nickc@redhat.com>

	* config/d30v/d30v.c (d30v_init_machine_status): Initialize
	machine_function structure to zero.
	Add prototypes for machine_status functions.

2001-01-10  Mark Mitchell  <mark@codesourcery.com>

	* c-common.h (CTI_VOID_LIST): Remove.
	(void_list_node): Likewise.
	* tree.h (TI_VOID_LIST_NODE): New enumeral.
	(void_list_node): New macro.
	* config/arm/arm.c (arm_init_builtins): Use void_list_node.
	* config/i386/i386.c (ix86_init_builtins): Likewise.
	* config/ia64a/ia64.c (ia64_init_builtins): Likewise.

2001-01-10  Neil Booth  <neil@daikokuya.demon.co.uk>

	* Makefile.in (tradcpp0): Depend on mkdeps.h.  Link mkdeps.o
	* cppinit.c (cpp_start_read): Update comment, remove unneeded
	if statement.
	* tradcpp.c: Include mkdeps.h.
	(deps, print_deps_phony_targets, deps_append, output_deps,
	init_dependency_output, output_deps): New.
	(deps_buffer, deps_allocated_size, deps_size, deps_column,
	deps_output): Delete.
	(print_deps_missing_files): Rename deps_missing_files.
	(inhibit_output): Make global.
	(main): Delete inhibit_output, deps_stream, deps_target.
	Use mkdeps functionality in the same way as cpplib.  Remove
	-g3 handling.  Handle -MF, -MP, -MQ, -MT.  Update handling of
	-M and -MM.  Remove old handling of deps via deps_out, and
	old reading of environment variables.
	(get_filename): Update to use deps_add_dep.

2001-01-10  Mark Mitchell  <mark@codesourcery.com>

	* output.h (make_function_rtl): Remove prototype.
	(make_decl_rtl): Likewise.
	* varasm.c (make_function_rtl): Remove.
	(make_decl_rtl): Determine top-levelness from DECL_CONTEXT, rather
	than from a third parameter.
	* tree.h (make_decl_rtl): Remove last parameter.
	* c-decl.c (builtin_function): Remove last argument in call to
	make_decl_rtl; use make_function_rtl instead of make_decl_rtl.
	(start_function): Likewise.
	* except.c (call_get_eh_context): Likewise.
	* expr.c (emit_block_move): Likewise.
	(clear_storage): Likewise.
	* profile.c (output_func_start_profiler): Likewise.
	* toplev.c (rest_of_decl_compilation): Likewise.
	* objc/objc-act.c (create_builtin_decl): Likewise.
	(synth_module_prologue): Likewise.
	(generate_static_reference): Likewise.
	(build_selector_reference_decl): Likewise.
	(build_class_reference_decl): Likewise.
	(build_objc_string_decl): Likewise.
	(build_protocol_reference): Likewise.

2001-01-10  Richard Henderson  <rth@redhat.com>

	* hwint.h: Revert yesterday's change.

2001-01-10  Nick Clifton  <nickc@redhat.com>

	* function.h (save_machine_status): Delete.
	(restore_machine_status): Delete.
	Amend comment describing {init|mark|free}_machine_status.

	* function.c (save_machine_status): Delete.
	(restore_machine_status): Delete.
	Amend comment describing {init|mark|free}_machine_status.
	(push_function_context_to): Remove invocation of
	save_machine_status.
	(pop_function_context_from): Remove invocation of
	restore_machine_status.

	* emit-rtl.c (init_emit_once): Amend comment describing
	{init|mark|free}_machine_status.

	* tm.texi (Per-Function Data): New node.  Describe the
	INIT_EXPANDERS macro and the {init|mark|free}_machine_status
	function pointers.

2001-01-10  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cppinit.c (OPT_g): Remove.
	(cpp_handle_option): Update for removed -g3.
	(print_help): Update.
	* cpplib.h (struct cpp_options): Remove debug_output.
	* cppmain.c (setup_callbacks, cb_define): Update.
	* gcc.c (cpp_options): Translate -g3 to -dD.

2001-01-10  Aldy Hernandez  <aldyh@redhat.com>

	* config/i960/i960.md: Change modifier to + on the zero_extract
	pattern after the (rotate -2 reg) canonicalization pattern.

2001-01-10  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.c (alpha_free_machine_status): New.
	(override_options): Install it.
	(alpha_mark_machine_status): Verify machine non-null.
	* config/i386/i386.c (ix86_free_machine_status): New.
	(override_options): Install it.
	(ix86_init_machine_status): Use xcalloc.
	(ix86_mark_machine_status): Verify machine non-null.
	* config/ia64/ia64.c (ia64_free_machine_status): New.
	(ia64_override_options): Install it.
	(ia64_mark_machine_status): Verify machine non-null.

Wed Jan 10 11:34:39 2001  Jeffrey A Law  (law@cygnus.com)

	* function.c (instantiate_virtual_regs): Instantiate virtual
	registers found in CALL_INSN_FUNCTION_USAGE.

2001-01-10  Joseph S. Myers  <jsm28@cam.ac.uk>

	* i386.h (CPP_CPU_SPEC): Allow for -std=c* and -std=i* as
	equivalent to -ansi in disabling -Di386.

Wed Jan 10 16:38:31 MET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.c (ix86_fp_compare_code_to_integer, ix86_fp_comparison_codes):
	new functions.
	(ix86_expand_fp_compare): Make trivial use of new infrastructure.

2001-01-10  Richard Earnshaw  <rearnsha@arm.com>

	* arm.c (arm_init_builtins): Temporarily disable xscale builtins.

2001-01-10  Joseph S. Myers  <jsm28@cam.ac.uk>

	* invoke.texi: Document that -fcond-mismatch isn't supported for
	C++.

2001-01-10  Joseph S. Myers  <jsm28@cam.ac.uk>

	* gcc.texi: Define macro gcctabopt.
	* invoke.texi: Add manpage sections BUGS and AUTHOR.  Use
	@command, @env and @option in some places where appropriate.  Use
	@gcctabopt where appropriate.  Put URLs and email addresses inside
	@w.

2001-01-10  Nathan Sidwell  <nathan@codesourcery.com>

	* gcc.c (cpp_options): Set MD file name from output
	filename, if specified.
	(suffix_subst): New static variable.
	(do_spec): Clear it.
	(do_spec_1, case '.'): Handle new `%.suffix' spec.
	Clear it.
	(give_switch): Handle suffix_subst.

2001-01-10  Phil Edwards  <pme@sources.redhat.com>

	* invoke.texi:  Fix another typo.

2001-01-10  Phil Edwards  <pme@sources.redhat.com>

	* invoke.texi:  Fix typo.

2001-01-10  Neil Booth  <neil@daikokuya.demon.co.uk>

	* c-lang.c (lang_hooks): Update.
	(lang_decode_option): Remove.
	(lang_init_options): Rename c_init_options.
	* toplev.c (main): Use lang_hooks for lang_init_options
	and lang_decode_option.
	* toplev.h (lang_hooks): Add 2 new hooks.
	* tree.h: Remove lang_init_options and lang_decode_option.
	* cp/cp-tree.h (lang_decode_option): Rename cxx_decode_option.
	* cp/decl2.c: Similarly.
	* cp/lex.c (lang_init_options): Rename cxx_init_options.
	(lang_hooks): Update.
	* f/com.c (f_init, f_finish): Rename ffe_init, ffe_finish
	for consistency.
	(lang_init_options): Rename ffe_init_options.
	(lang_hooks): Update.
	(lang_decode_option): Remove.
	* java/lang.c (lang_init_options): Rename java_init_options.
	(lang_decode_option): Rename java_decode_option.
	(lang_hooks): Update.
	* objc/objc-act.c (lang_init_options): Rename objc_init_options.
	(lang_decode_option): Rename objc_decode_option.
	(lang_hooks): Update.

2001-01-09  Nick Clifton  <nickc@redhat.com>

	* config/d30v/d30v.c (d30v_eh_epilogue_sp_ofs): Delete.
	(d30v_return_addr_rtx): Delete.
	(d30v_expand_epilogue): Use eh_epilogue_sp_ofs field in the
	cfun->machine structure.
	(struct machine_function): Move to d30v.h
	(d30v_save_machine_status): Delete.
	(d30v_restore_machine_status): Delete.
	(d30v_init_machine_status): New Function.
	(d30v_mark_machine_status): New Function.
	(d30v_free_machine_status): New Function.
	(d30v_init_expanders): Use new functions.
	(d30v_return_addr): Use ra_rtx field in cfun->machine.
	(d30v_add_gc_roots): Remove d30v_eh_epilogue_sp_ofs and
	d30v_return_addr_rtx.

	* config/d30v/d30v.h (struct_machine): Move here.
	Add eh_epilogue_sp_ofs field.

	*config/d30v/d30v.md (epilogue): Initialize eh_epilogue_sp_ofs
	field in cfun->machine structure.

Tue Jan  9 21:34:57 2001  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* pa32-regs.h (CONDITIONAL_REGISTER_USAGE): When generating pic code,
	PIC_OFFSET_TABLE_REGNUM_SAVED is a call_used register.
	* pa64-regs.h (CONDITIONAL_REGISTER_USAGE): Likewise.

Tue Jan  9 21:25:19 2001  Jeffrey A Law  (law@cygnus.com)

	* objc/lang-options.h: Remove bogus reference to
	Java trademark.

2001-01-09  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.c (get_shift_alg): Use a struct shift_info to
	return the result.

2001-01-09  Alan Lehotsky  <lehotsky@tiac.net>

	* reload.c (find_reloads_address): Check for eliminable registers
	when substituting a constant expression for a pseudo.

2001-01-09  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-common.c (enum format_type): Add format_type_error.
	(decode_format_type): New function.
	(decl_attributes): Use it.
	(format_kind_info): Adjust comment.

2001-01-09  David O'Brien  <obrien@BSDi.com>

	* config.gcc (*-*-gnu*, i[34567]86-*-elf*, i[34567]86-*-linux*libc1,
	i[34567]86-*-linux*, i[34567]86-*-moss*): Specify needed platform specific
	files in tm_file.
	* config/i386/gnu.h: Don't include required platform specific .h files,
	tm.h will do it instead.
	* config/i386/i386elf.h: Likewise.
	* config/i386/linux.h: Likewise.
	* config/i386/moss.h: Likewise.
	* config/mips/gnu.h: Likewise.

2001-01-09  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* config.gcc (powerpc-*-beos*): Include ${tm_file} and rs6000/aix.h.
	(rs6000-ibm-aix3.[01]*): Likewise.
	(rs6000-ibm-aix3.2.[456789]*, powerpc-ibm-aix3.2.[456789]*): Likewise.
	(rs6000-ibm-aix4.[12]*, powerpc-ibm-aix4.[12]*): Likewise.
	(rs6000-ibm-aix4.[3456789]*, powerpc-ibm-aix4.[3456789]*): Likewise.
	(rs6000-ibm-aix[56789].*, powerpc-ibm-aix[56789].*): Likewise.
	(powerpc-*-sysv*): Include {tm_file}. svr4.h and rs6000/sysv4.h.
	(powerpc-*-eabiaix*): Likewise.
	(powerpc-*-eabisim*): Likewise.
	(powerpc-*-elf*): Likewise.
	(powerpc-*-eabi*): Likewise.
	(powerpc-*-rtems*): Likewise.
	(powerpc-*-linux*libc1): Likewise.
	(powerpc-*-linux*): Likewise.
	(powerpc-wrs-vxworks*): Likewise.
	(powerpcle-wrs-vxworks*): Likewise.
	(powerpcle-*-sysv*): Likewise.
	(powerpcle-*-elf*): Likewise.
	(powerpcle-*-eabisim*): Likewise.
	(powerpcle-*-eabi*): Likewise.
	(powerpcle-*-solaris2*): Likewise.
	* config/rs6000/aix31.h: Delete includes.
	* config/rs6000/aix3newas.h: Likewise.
	* config/rs6000/aix41.h: Likewise.
	* config/rs6000/aix43.h: Likewise.
	* config/rs6000/beos.h: Likewise.
	* config/rs6000/rtems.h: Likewise.
	* config/rs6000/sysv4.h: Likewise.

2001-01-09  Kazu Hirata  <kazu@hxi.com>

	* config/h8300/h8300.c (get_shift_alg): Remove an argument cpu.
	Change an argument mode of machine_mode to shift_mode of
	shift_mode.  Remove an extra error check.
	(emit_a_shift): Adopt to the new calling prototype of
	get_shift_alg.
	(function_prologue): Fix code for a monitor
	function.  Support H8S.
	(function_epilogue): Do not output pop for a monitor function.

2001-01-09  Nick Clifton  <nickc@redhat.com>

	* config/rs6000/rs6000.c (rs6000_sysv_varargs_p): Delete.
	(setup_incoming_varargs): Use sysv_varargs_p field of the
	cfun->machine structure.
	(struct machine_function): Move to rs6000.h
	(rs6000_save_machine_status): Delete.
	(rs6000_restore_machine_status): Delete.
	(rs6000_init_machine_status): New Function.
	(rs6000_free_machine_status): New Function.
	(rs6000_init_expanders): Use new functions.

	* config/rs6000/rs6000.h (rs6000_sysv_varargs_p): Delete
	export.
	(struct machine_function): Move here.

	* config/rs6000/sysv4.h (RS6000_VARARGS_AREA): Use
	sysv_varargs_p field of the cfun->machine structure.

	* config/rs6000/rs6000-protos.h (rs6000_save_machine_status):
	Remove prototype.
	(rs6000_restore_machine_status): Remove prototype.

2001-01-09  Richard Henderson  <rth@redhat.com>

	* sched-int.h (struct deps): Add max_reg, reg_last_in_use; merge
	reg_last_uses, reg_last_sets, reg_last_clobbers into struct deps_reg.
	* sched-deps.c (sched_analyze_1): Update uses of struct deps.
	(sched_analyze_2, sched_analyze_insn): Likewise.
	(sched_analyze, init_deps): Likewise.
	(free_deps): Likewise.  Iterate with EXECUTE_IF_SET_IN_REG_SET.
	* sched-rgn.c (propagate_deps): Likewise.  Remove max_reg argument.
	(compute_block_backward_dependences): Update propagate_deps call.

2001-01-09  Mark Elbrecht  <snowball3@bigfoot.com>

	* gcc.c (process_command): Set switches[n_switches].ordering to 0.

2001-01-09  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cppinit.c (OPT_MD, OPT_MMD): Restore.
	(cpp_handle_option): Handle them.
	(cpp_post_options): Ensure one of -M or -MM is specified with
	any other -M? option.
	(init_dependency_output): Suppress output with -MG.

2001-01-09  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cpp.texi: Update.
	* invoke.texi: Update.

2001-01-09  Bernd Schmidt  <bernds@redhat.com>

	* sh.md (reload_outsf): Generate recognizable patterns for
	TARGET_SH3E.

2001-01-09  Neil Booth  <neil@daikokuya.demon.co.uk>

	* c-lang.c (lang_hooks): Update.
	(lang_init): Rename c_init.
	(lang_finish): Remove.
	* toplev.c (compile_file): Use lang_hooks for lang_init ()
	and lang_finish ().
	* toplev.h (lang_hooks): Add init () and finish ().
	* tree.h (lang_init, lang_finish): Remove.
	* cp/tree.h (lang_init, lang_finish): Remove.
	* cp/decl2.c (cxx_post_options, lang_hooks): Move to cp/lex.c.
	* cp/lex.c (cxx_init, cxx_finish, cxx_post_options,
	lang_hooks): New.
	(lang_init, lang_finish): Remove.
	* f/com.c (lang_init, lang_finish): Rename f_init, f_finish.
	(lang_hooks): Update.
	* java/lang.c (lang_init): Rename java_init.
	(lang_finish): Remove.
	(lang_hooks): Update.
	* objc/objc-act.c (lang_init): Rename objc_init.
	(lang_finish): Remove.
	(lang_hoooks): Update.

20001-01-09  Graham Stott  <grahams@redhat.com>

	* cppfiles.c (_cpp_execute_include): Move `len` initialisation
	after `ptr` is initialized.

2001-01-09  Alexandre Oliva  <aoliva@redhat.com>

	* config/sh/sh.h (STATIC_CHAIN_REGNUM): Change from r13 to r3.
	(INITIALIZE_TRAMPOLINE): Adjust accordingly.
	* config/sh/sh.c (sh_expand_prologue): Use r1 as temporary for
	stack adjusts, instead of r3.

2001-01-09  Michael Hayes  <mhayes@redhat.com>

	* flow.c (flow_loop_scan): Break out of ...
	(flow_loops_find) ... here.
	* basic-block.h (flow_loop_scan): New.
	(LOOP_ENTRY_EDGES, LOOP_EXIT_EDGES): Add.
	(LOOP_EDGES, LOOP_EXITS_DOMS, LOOP_ALL): Redefine.

2001-01-09  Alexandre Oliva  <aoliva@redhat.com>

	* cppinit.c (cpp_cleanup): NULLify macro_buffer and zero
	macro_buffer_len.
	* cppmacro.c (cpp_macro_definition): Reset macro_buffer_len when
	realloc()ing macro_buffer.

	* hwint.h (HOST_BITS_PER_WIDE_INT, HOST_WIDE_INT): Use long long
	if it's wider than long and the target's long is wider than the
	host's.

2001-01-09  Mark Mitchell  <mark@codesourcery.com>

	Remove support for using UWIN as a host machine.
	* configure.in: Issue an error message.
	* configure: Regenerated.
	* config.gcc: Remove xm_* UWIN configury.
	* config/i386/xm-uwin.h: Remove.

2001-01-08  Nick Clifton  <nickc@redhat.com>

	* config/v850/v850.c (ra_rtx): Delete.
	(v850_save_machine_status): Delete.
	(v850_restore_machine_status): Delete.
	(v850_init_machine_status): New function.
	(v850_mark_machine_status): New function.
	(v850_free_machine_status): New function.
	(v850_return_addr): Use ra_rtx field in machine structure.
	(v850_init_expanders): Use new functions.

	* config/v850/v850-protos.h: Fix prototypes for v850_output_*
	* config/v850/v850.c: Change arguments to v850_output+* functions
	to take a const char *, to avoid compile time warning.
	* config/v850/v850.h (ASM_OUTPUT_LABELREF): Undefine, not needed.
	(USER_LABEL_PREFIX): Redefine.

2000-01-08  Jim Wilson  <wilson@redhat.com>

	* sched-rgn.c (BITSET_ADD, BITSET_REMOVE, bitset_member): Cast
	1 to unsigned HOST_WIDE_INT before left shift.

2001-01-08  Nick Clifton  <nickc@redhat.com>

	* config/arm/arm.c (arm_mark_machine_status): Check to see if
	the machine structure has been allocated.
	(arm_free_machine_status): New function: Free the machine
	specific function structure.

2001-01-08  Richard Henderson  <rth@redhat.com>

	* jump.c (simplejump_p): Revert last change.

2001-01-08  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cppinit.c (init): Rename init_library.
	(cpp_create_reader): Update.
	* gcc.c (cpp_options): If -o given, use it as the target of
	any -M options.

2001-01-08  Richard Earnshaw  <rearnsha@arm.com>

	* arm.c (arm_arch5e): New variable.
	(all_cores): XScale is a 5TE device.
	(arm_override_options): Set arm_arch5e.
	(arm_init_builtins): __builtin_prefetch is in arch5e.
	* arm.h (arm_arch5e): Declare it.

	* arm.h (PREDICATE_CODES): Add arm_hard_register_operand.

	* arm.md (define_constants): Add defines for UNSPEC and
	UNSPEC_VOLATILE insns.  Update all users.
	(define_constants): Add constants for IP_REGNUM, SP_REGNUM, PC_REGNUM.
	* arm.c (multi_register_push, note_invalid_constants)
	(emit_multi_reg_push, emit_sfm, expand_prologue): Use constants.
	* arm.h (SP_REGNUM, IP_REGNUM, PC_REGNUM): Delete defines.
	(STACK_POINTER_REGNUM): Define in terms of SP_REGNUM.

Mon Jan  8 16:14:56 MET 2001  Jan Hubicka  <jh@suse.cz>

	* jump.c (jump_optimize_1): Use reversed_comparison_code
	instead of can_reverse_comparison_p.
	(jump_back_p): Likewise.
	(invert_exp_1): Likewise.
	(thread_jumps): Likewise.
	* simplify-rtx.c (simplify_unary_operation): Likewise.
	(simplify_ternary_operation): Likewise.
	* cse.c (find_comparison_args): Convert to use
	can_reverse_comparison_p.
	(record_jump_equiv): Likewise.

2001-01-08  Richard Earnshaw  <rearnsha@arm.com>

	* arm.h (HARD_REGNO_RENAME_OK): Delete.
	(EPILOGUE_USES): Define.
	(INITIAL_ELIMINATION_OFFSET): Current prologue code does not
	automatically stack the LR if it isn't live.

Mon Jan  8 13:46:02 MET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.c (ix86_expand_int_movcc): Take care to reverse fp conditions
	properly.

Sun Jan  7 18:37:43 2001  Mark P Mitchell  <mark@codesourcery.com>

	* ggc-page.c (max_alignment): New structure.
	(MAX_ALIGNMENT): New macro.
	(init_ggc): Use it to round up the sizes in the
	extra_order_size_table.

2001-01-07  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* config/rs6000/rs6000.h (EPILOGUE_USES): New, mark link register
	after reload.

2001-01-07  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtins.def (BUILT_IN_FPRINTF): New entry.

	* c-common.c (c_expand_builtin_fprintf): New function.
	(init_function_format_info): Handle __builtin_fprintf.
	(c_common_nodes_and_builtins): Declare fprintf/__builtin_fprintf.
	(c_expand_builtin): Handle BUILT_IN_FPRINTF.

	* c-decl.c (duplicate_decls): Adjust comment.

	* extend.texi (fprintf): Document new builtin.

2001-01-07  Richard Henderson  <rth@redhat.com>

	* jump.c (simplejump_p): Recognize any single_set jump
	of the proper form.

2001-01-07  Richard Henderson  <rth@redhat.com>

	* configure.in (slibdir): Accept an --with-slibdir option.
	Use "test" not "[" in configure.  Default to $(libdir).

	* config/t-linux (SHLIB_INSTALL): Double quote slibdir;
	fix typo in rm -f.
	* config/t-aix43 (SHLIB_INSTALL): Likewise.
	* config/alpha/t-osf4 (SHLIB_INSTALL): Likewise.
	(SHLIB_LINK): Create links for the soname.
	* config/mips/t-iris6: Likewise.
	* config/sparc/t-slibgcc: Likewise.
	* config/sparc/t-slibgcc-sld: Likewise.

2001-01-07  Jakub Jelinek  <jakub@redhat.com>

	* config/i386/i386.c (constant_call_address_operand): Accept
	(const (plus (symbol_ref) (const_int))).
	* config/i386/i386.h (PREDICATE_CODES): Add CONST for
	constant_call_address_operand.

2001-01-08  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* libgcc2.h (W_TYPE_SIZE): Fix case where MIN_UNITS_PER_WORD == 1
	and LONG_LONG_TYPE_SIZE > 32.

2001-01-07  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* jump.c (reversed_comparison_code_parts): Fix typo introduced by
	the previous change.

Sun Jan  7 19:37:48 MET 2001  Jan Hubicka  <jh@suse.cz>

	* jump.c (reversed_comparison_code_parts, reversed_comparison_code):
	New.
	(can_reverse_comparison_p): Rewrite to use reversed_comparison_code.
	(reverse_condition_maybe_unordered): Abort on unsigned comparisons.
	* rtl.h (reversed_comparison_code_parts, reversed_comparison_code):
	Declare.

2001-01-07  Neil Booth  <neil@daikokuya.demon.co.uk>

	* fix-header.c (read_scan_file): s/pfile/scan_in/.

2001-01-07  Neil Booth  <neil@daikokuya.demon.co.uk>

	* c-lang.c (c_post_options): Call cpp_post_options.
	* objc/objc-act.c (objc_post_options): Similarly.
	* cppmain.c (main): Similarly.
	* fix-header.c (read_scan_file): Similarly.
	* cppinit.c (cpp_start_read): Move option consistency checks
	to cpp_post_options.  Don't call init_dependency_output.
	If needed, add default target and main file dependency.
	(OPT_MD, OPT_MMD): Remove.
	(OPT_MF): New.
	(cpp_handle_option): Update for OPT_* changes.
	(cpp_post_options): New.
	(init_dependency_output): Command line -MF overrides environment
	variables.  Don't set default target etc.  Suppress output
	if dependencies are going to stdout.
	(print_help): Update.
	* cpplib.h (cpp_post_options): New.
	* gcc.c (cpp_options): Update for -MD, -MMD, -MF.

Sun Jan  7 14:44:19 MET 2001  Jan Hubicka  <jh@suse.cz>

	* jump.c (comparison_dominates_p): Support unordered compares.

Sun Jan  7 14:39:07 MET 2001  Jan Hubicka  <jh@suse.cz>

	* simplify-rtx.c (simplify_relational_operation): Always simplify
	ORDERED and UNORDERED when FLAG_FAST_MATH.  Handle properly UNLE
	and UNGE.

Sun Jan  7 14:35:13 MET 2001  Jan Hubicka  <jh@suse.cz>

	* combine.c (combine_simplify_rtx): Recognize the unordered compares.
	(nonzero_bits): Likewise.
	(simplify_comparison): Likewise.
	(num_sign_bit_copies): Likewise; return more sane value depending
	on STORE_FLAG_VALUE.
	(known_cond): Do not assume EQ to be always true for equivalent
	operands.

Sun Jan  7 14:31:57 MET 2001  Jan Hubicka  <jh@suse.cz>

	* cse.c (fold_rtx): Handle unordered comparisons.

Sun Jan  7 13:49:19 MET 2001  Jan Hubicka  <jh@suse.cz>

	* rtlanal.c (set_of_1): New static function.
	(reg_set_last_1, reg_set_p_1, reg_set_reg, reg_set_flag,
	 reg_set_last_unknown, reg_set_last_value, reg_set_last_first_regno,
	 reg_set_last_last_regno): Remove.
	(set_of): New global function.
	(set_of_data): New structure.
	(reg_set_p, reg_set_last): Revamp for set_of.
	* rtl.h (set_of): New.

2001-01-07  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-common.c (c_common_nodes_and_builtins): Add _Exit builtin.
	* extend.texi: Document _Exit builtin.

2001-01-07  Neil Booth  <neil@daikokuya.demon.co.uk>

	* (initialize, initialize_builtins,
	initialize_dependency_output, initialize_standard_includes):
	Rename s/initialize/init. Update.
	(init_dependency_output): Move to after
	cpp_handle_options, the correct location temporally at least.
	(opt_comp): Move next to init (), its caller.  Fix prototype.
	(init): Make "initialized" local scope.
	(cpp_create_reader): Always call init ().
	(cpp_start_read): Update.
	(output_deps): New function, broken out of cpp_finish.
	(cpp_finish): Break out output_deps.

2001-01-07  Richard Henderson  <rth@redhat.com>

	* collect2.c (COFF specific stuff): Revert 12-06 patch
	to prototype system functions.

2001-01-07  Michael Hayes  <mhayes@redhat.com>

	* hard-reg-set.h: Add multiple include guard.
	* basic-block.h (struct loop): Add `sink' field.
	* loop.h: Include sbitmap.h, hard-reg-set.h, and basic-block.h.
	(emit_iv_add_mult): Delete.
	(loop_iv_add_mult_hoist, loop_iv_add_mult_sink): Define.
	(loop_iv_add_mult_emit_before, loop_insn_sink): Define.
	(unroll_loop): Remove end_insert_before argument.
	* loop.c (loop_givs_rescan): Remove end_insert_before argument.
	(maybe_eliminate_biv_1): Likewise.
	(emit_iv_add_mult): Delete.
	(gen_add_mult, loop_regs_update): New.
	(loop_insn_emit_after, loop_insn_emit_before): New.
	(loop_insn_sink, loop_insn_sink_or_swim): New.
	(emit_iv_add_mult): Delete.
	(scan_loop): Set loop->sink.
	(loop_givs_reduce): Use loop_insn_sink and its ilk.
	(loop_givs_rescan, strength_reduce, check_dbra_loop): Likewise.
	(maybe_eliminate_biv_1): Likewise.
	(maybe_eliminate_biv_1): Add basic block argument.
	* unroll.c (unroll_loop): Remove end_insert_before argument.
	(find_splittable_regs): Likewise.
	(find_splittable_regs): Use loop_insn_sink and its ilk.
	(find_splittable_givs, final_biv_value, final_giv_value): Likewise.

2001-01-07  Michael Hayes  <mhayes@redhat.com>

	* loop.h (loop_insn_hoist): New prototype.
	* loop.c (loop_insn_hoist, loop_insn_emit_before): New.
	(move_movables, loop_givs_rescan): Use loop_insn_hoist.
	(check_dbra_loop, load_mems): Likewise.
	* unroll.c (unroll_loop, find_splittable_regs): Likewise.
	(find_splittable_givs): Likewise.

2001-01-07  Michael Hayes  <mhayes@redhat.com>

	* loop.c (emit_iv_add_mult): Use single_set to examine new insn.

2001-01-07  Richard Henderson  <rth@redhat.com>

	* sched-rgn.c (is_cfg_nonregular): Fix thinko's last change.

2001-01-07  Richard Henderson  <rth@redhat.com>

	* Makefile.in (DRIVER_DEFINES): Define ENABLE_SHARED_LIBGCC and
	NO_SHARED_LIBGCC_MULTILIB as required for the target.
	* gcc.c (init_spec): Massage the existing libgcc_spec into a
	variant that handles a shared libgcc.
	(process_command): Always validate -{static,shared}-libgcc.
	(do_spec_1): New 'M' case.
	* invoke.text (Link Options): Document -{static,shared}-libgcc.

2001-01-07  Richard Henderson  <rth@redhat.com>

	* Makefile.in (slibdir): New variable.
	(libgcc.mk): Pass SHLIB_INSTALL to mklibgcc.
	(installdirs): Create slibdir.
	(install-libgcc, install-multilib): Defer to libgcc.mk.
	* configure.in (slibdir): Substitute.
	* mklibgcc.in (install): New target.

	* config/t-linux (SHLIB_LINK): Create links for the soname.
	(SHLIB_INSTALL): New.
	* config/alpha/t-osf4 (SHLIB_INSTALL): New.
	* config/mips/t-iris6 (SHLIB_INSTALL): New.
	* config/rs6000/t-aix43 (SHLIB_INSTALL): New.
	* config/sparc/t-slibgcc (SHLIB_INSTALL): New.
	* config/sparc/t-slibgcc-sld (SHLIB_INSTALL): New.

2001-01-07  Richard Henderson  <rth@redhat.com>

	* config/rs6000/aix.h (LINK_LIBGCC_SPECIAL_1): New.
	* config/rs6000/rs6000.h (LIBGCC_SPEC): Remove.
	* config/rs6000/sysv4.h (LIBGCC_SPEC): Remove.

2001-01-07  Michael Hayes  <mhayes@redhat.com>

	* loop.c (count_loop_regs_set): Delete.
	(load_mems_and_recount_loop_regs_set): Delete.
	(loop_regs_scan): Merge common code from count_loop_regs_set,
	scan_loop, and load_mems_and_recount_loop_regs_set.
	(scan_loop): Call load_mems directly and loop_regs_scan
	again if new registers created.

2001-01-07  Neil Booth  <neil@daikokuya.demon.co.uk>

	* toplev.c (main): Call the front-end specific post_options
	hook if one is given.
	* toplev.h (struct_lang_hooks, lang_hooks): New.
	* c-lang.c (c_post_options, lang_hooks): Implement lang_hooks
	for the C front end.
	* cp/decl2.c (cxx_post_options, lang_hooks): Implement
	lang_hooks for the C++ front end.
	* objc/objc-act.c (objc_post_options, lang_hooks): Implement
	lang_hooks for the ObjC front end.
	* f/com.c (lang_hooks): Hooks for the Fortran front end.
	* java/lang.c (lang_hooks): Hooks for the Java front end.

2001-01-07  Neil Booth  <neil@daikokuya.demon.co.uk>

	* c-lex.c (init_c_lex): Request #define / #undef callbacks
	for verbose DWARF[2] debugging.
	(cb_define, cb_undef): The new callbacks.
	* toplev.h (debug_define, debug_undef): Make const correct.
	* toplev.c (debug_define, debug_undef): Similarly.  Do not
	perform the verbosity tests here anymore.

2001-01-07  Alexandre Oliva  <aoliva@redhat.com>

	* reload.c (subst_reloads): Take INSN argument.  When
	replacing a LABEL_REF in a JUMP_INSN, add a REG_LABEL note.
	* reload.h (subst_reloads): Adjust prototype.
	* reload1.c (reload_as_needed): Pass INSN to subst_reloads.
	* jump.c (mark_all_labels): Canonicalize any REG_LABEL notes
	present in JUMP_INSNs and copy them to JUMP_LABEL.
	* flow.c (find_label_refs, find_basic_blocks_1): Skip
	JUMP_INSNs and insns with REG_LABELs that are followed by
	JUMP_INSNs with the same REG_LABEL.
	* sched-rgn.c (is_cfg_nonregular): Likewise.
	* rtlanal.c (computed_jump_p): Make it false if a REG_LABEL
	note is available.
	* unroll.c (unroll_loop): Look for REG_LABEL notes in
	JUMP_INSNs too.
	* rtl.texi (REG_LABEL): Document usage in JUMP_INSNs.

2001-01-06  Richard Henderson  <rth@redhat.com>

	* loop.c (scan_loop): Use xcalloc for the regs array.
	(load_mems_and_recount_loop_regs_set): Zero the new memory
	received from xrealloc.

2001-01-06  Neil Booth  <neil@daikokuya.demon.co.uk>

	* mkdeps.c (deps_add_dep): Fix vector re-allocation.

Sat Jan  6 00:09:34 2001  J"orn Rennecke <amylaar@redhat.com>

	* integrate.c (copy_rtx_and_substitute): When copying
	an ignored return value, strip REG_FUNCTION_VALUE_P.

2001-01-06  Michael Hayes  <mhayes@redhat.com>

	* loop.c (debug_biv, debug_giv): New.
	(loop_biv_dump): Break out from ...
	(record_biv): ... here.
	(loop_giv_dump): Break out from ...
	(record_giv): ... here.
	(loop_bivs_check): Use print_simple_rtl.
	* unroll.c (loop_iterations): Use print_simple_rtl.

2000-01-05  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* pa.md (return, return_internal): Modify patterns to prevent regrename
	mucking with the return pointer.

2001-01-05  Richard Henderson  <rth@redhat.com>

	* dwarf2out.c (mem_loc_descriptor) [case MEM]: Revert 10-31 change.

Fri Jan  5 16:34:18 2001  Nick Clifton  <nickc@redhat.com>

	* config/v850/lib1funcs.asm: Replace __mulsi3 routine with faster
	version supplied by Matteo Frigo.

2001-01-05  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cpp.texi: Update for -MQ.
	* cppinit.c (cpp_create_reader): Always create pfile->deps.
	(cpp_cleanup): Always free pfile->deps.
	(initialize_dependency_output): Don't create pfile->deps.
	(cpp_handle_option): Similarly.
	(OPT_MQ): New.
	* gcc.c (cpp_options): Handle -MQ.
	(DEFAULT_WORD_SWITCH_TAKES_ARG): Add -MQ.
	* mkdeps.c (base_name): Remove.
	(deps_init): Don't allocate vector space until it's needed.
	(deps_free): Only free vectors if allocated.
	(deps_add_target, deps_add_dep): Update for initial allocation.
	(deps_add_default_target): Don't strip to the base_name.

2001-01-05  DJ Delorie <dj@redhat.com>

	* config/v850/v850.h (RETURN_ADDR_RTX): Define.
	(INIT_EXPANDERS): Define.

	* config/v850/v850.c (struct machine_function): Define.
	(v850_save_machine_status): New function.
	(v850_restore_machine_status): New function.
	(v850_return_addr): New function.
	(v850_init_expanders): New function.

	* config/v850/v850-protos.h: Add prototypes for v850_return_addr
	and v850_init_expanders.

2001-01-05  Zack Weinberg  <zack@wolery.stanford.edu>

	* cpplib.h (struct cpp_reader): Add help_only field.
	* cppinit.c (COMMAND_LINE_OPTIONS): Add OPT_version.
	(cpp_handle_option): Set pfile->help_only if we see -h,
	--help, -target-help, or --version.  Print version string but
	do not set help_only if we see -v or -version.  Make text
	printed by -v match that printed by (-)-version.

	* cppmain.c (main): Exit after option parsing if
	pfile->help_only is true.

	* toplev.c (independent_decode_option): Call print_version,
	then exit, if we see --version (but not -version).
	(print_version): Split lengthy message into two lines.

2001-01-05  Nick Clifton  <nickc@redhat.com>

	* config/v850/v850.c (v850_encode_data_area): Use alloca to create
	temporary string for initialisation before calling ggc_alloc_string.

2001-01-06  Michael Hayes  <mhayes@redhat.com>

	* rtl.h (print_simple_rtl): New.
	* print-rtl.c (print_simple_rtl): New.
	(flag_simple): New.
	(print_rtx): Disable printing of flags and modes, etc.,
	if `flag_simple` nonzero.

2001-01-05  Zack Weinberg  <zack@wolery.stanford.edu>

	* function.c (fixup_var_refs): Use push_to_full_sequence where
	possible.

2001-01-05  Michael Meissner  <meissner@redhat.com>

	* flags.h (flag_reorder_blocks): Add declaration.
	(flag_rename_block): Ditto.

2001-01-05  DJ Delorie  <dj@redhat.com>

	* function.c (reorder_blocks): Make sure the flags are all reset
	before using them to mark blocks, else a second invocation will
	corrupt the block chain.
	(reorder_blocks_0): New, resets the flags.

Fri Jan  5 20:34:06 2001  J"orn Rennecke <amylaar@redhat.com>

	* cse.c (find_comparison_args): Stop if the argument is known to
	be constant.

2001-01-05  Alexandre Oliva  <aoliva@redhat.com>

	* config/sh/sh.md (movdf): When splitting load into pair of
	registers, don't clobber the register used in the address too
	early.

2001-01-05  Jeffrey Oldham  <oldham@codesourcery.com>

	* varasm.c (mark_constant_pool): Improve initial comments.
	(mark_constants): Move marking of constants to mark_constant.
	(mark_constant): New function to recursively mark all constants
	referred to by a constant.

2001-01-05  Catherine Moore  <clm@redhat.com>

	* dbxout.c ((dbxout_parms): Handle invisible ref where decl is a REG.

2001-01-05  Phil Edwards  <pme@sources.redhat.com>

	* cp/lang-options.h:  Bring comment in line with reality.
	* f/lang-options.h:  Likewise.
	* java/lang-options.h:  Likewise.
	* objc/lang-options.h:  Likewise.
	* ch/lang-options.h:  Likewise.
	* f/g77.texi:  And update the manual.

2001-01-05  Marek Michalkiewicz  <marekm@linux.org.pl>
	    Denis Chertykov  <denisc@overta.ru>

	* config/avr/avr-protos.h (avr_peep2_scratch_safe): Prototype.
	* config/avr/avr.c (avr_peep2_scratch_safe): New function.
	* config/avr/avr.md (all peepholes that request a scratch register):
	Call it, FAIL the peephole if not safe (in interrupt functions).

2001-01-05  Mark Mitchell  <mark@codesourcery.com>

	* ggc-page.c (NUM_EXTRA_ORDERS): Hardwire to zero for now.

2001-01-05  Joseph S. Myers  <jsm28@cam.ac.uk>

	* builtins.def (BUILT_IN_CONJ, BUILT_IN_CREAL, BUILT_IN_CIMAG):
	Define.
	* builtins.c (expand_builtin): Abort on BUILT_IN_CONJ,
	BUILT_IN_CREAL and BUILT_IN_CIMAG.
	* c-common.c (c_common_nodes_and_builtins): Create builtin conjf,
	conj, conjl, crealf, creal, creall, cimagf, cimag and cimagl.
	(expand_tree_builtin): Handle BUILT_IN_CONJ, BUILT_IN_CREAL and
	BUILT_IN_CIMAG.
	* extend.texi: Document these builtins.

2001-01-05  Daniel Berlin  <dberlin@redhat.com>

	* c-common.c (lang_get_alias_set): Say we know nothing of
	VECTOR_TYPE aliasing.

	* dwarf2out.c (is_base_type): Handle VECTOR_TYPE properly.

2001-01-05  Bruce Korb  <bkorb@gnu.org>

	* fixinc/mkfixinc.sh(vax-*-bsd): convert exit and atexit calls to
	their x* equivalent versions for atexit-less systems
	* fixinc/fixincl.c(main): do not return from main() on atexit-less
	systems (or any other system any more).

2001-01-05  Richard Earnshaw  <rearnsha@arm.com>

	* arm.md (ldmsi_postinc): Avoid use of match_dup between input and
	output operands.  Use arm_hard_register_operand for operand 4.
	(stmsi_postinc): Similarly.
	(ldmsi): Use arm_hard_register_operand for opernand 2.
	(stmsi): Similarly.
	* arm.c (arm_hard_register_operand): New function.
	* arm-protos.h (arm_hard_register_operand): Prototype it.

	* arm.h (HARD_REGNO_RENAME_OK): Define.

Fri Jan  5 16:29:49 MET 2001  Jan Hubicka  <jh@suse.cz>

	* simplify-rtx.c (cfc_args): add "unordered" field.
	(check_fold_consts): Set unordered field.
	(simplify_relational_operation): Simplify the unordered
	comparisons.

	* reg-stack.c (swap_rtx_condition): Ensure that the transformation
	is valid.

	* emit-rtl.c (try_split): Fix code to mark labels.
	* jump.c (mark_jump_label): Make global.
	* rtl.h (mark_jump_label): Declare.

	* predict.c (estimate_probability): Handle unordred comparisons.

2001-01-05  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cpp.texi: Update for -MP.  Clarify behavior of -MT.
	* cppinit.c (initialize_dependency_output):  Update.
	(cpp_finish): Output dummy targets for -MP.
	(OPT_MP): New.
	(cpp_handle_option): Handle -MP.  Don't quote -MT options.
	* cpplib.h (struct cpp_options): Add deps_phony_targets.
	* gcc.c (cpp_options): Update to handle -MP.
	* mkdeps.c (deps_add_target, deps_add_default_target): Update
	to quote only the default target.
	(deps_phony_targets): Insert a preceding newline.  Rename from
	deps_dummy_targets for consistency.
	* mkdeps.h: Update

2001-01-05  Alexandre Oliva  <aoliva@redhat.com>

	* calls.c (emit_library_call_value_1): Support
	INIT_CUMULATIVE_LIBCALL_ARGS.
	* tm.texi (INIT_CUMULATIVE_LIBCALL_ARGS): Document it.

2001-01-04  Richard Henderson  <rth@redhat.com>

	* c-decl.c (finish_struct): Detect flexible array members
	used in an inappropriate context.
	* c-typeck.c (really_start_incremental_init): Special case
	constructor_max_index for zero length arrays.
	(pop_init_level): Allow initialization of flexible array
	members.  Deprecate initialization of zero length arrays.
	Don't issue missing initializer warning for flexible array
	members or zero length arrays.
	(process_init_element): Don't dereference null DECL_SIZE.
	* varasm.c (array_size_for_constructor): Return a HOST_WIDE_INT.
	Don't abort for empty constructors.  Use size_binop
	(output_constructor): Add commentary regarding zero length
	array futures.  Abort if we try to initialize an array of
	unspecified length with a non-empty constructor in the middle
	of a structure.

	* extend.texi (Zero Length): Update and clarify documentation
	on static initialization.

2001-01-05  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* config/c4x/c4x.c (c4x_expand_prologue): Don't compile an ISR
	with more than 32767 words of local storage.

2001-01-05  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>

	* config/c4x/c4x.c (c4x_init_builtins): Remove builtin support
	for 'abs', 'labs', and 'fabs'.
	(c4x_expand_builtin): Likewise.
	* config/c4x/c4x.h (enum c4x_builtins): Likewise.

2001-01-05  Alexandre Oliva  <aoliva@redhat.com>

	* config/sh/sh.md (prget, prset): New insn types.
	(return delay slot): Don't allow prset.
	(call, sfunc delay slot): Don't allow prget.
	(movsi_i, movsi_ie, movsi_i_lowpart): Create separate alternatives
	for prset and prget.

2001-01-05  Michael Hayes  <mhayes@redhat.com>

	* loop.h (struct loop_reg): New.
	(struct loop_regs): Change to use array of `struct loop_reg'.
	* loop.c: Replace assortment of varrays with single regs array.
	(count_one_set): Delete may_not_move array argument
	and use regs array instead.  All caller's changed.
	(count_loop_regs_set): Delete may_not_move and single_usage
	arguments and use regs array instead.  All caller's changed.
	(find_single_use_in_loop): Replace usage array argument with pointer
	to regs structure.  All caller's changed.
	(loop_optimize): Delete `moved_once' array.

2001-01-05  Michael Hayes  <mhayes@redhat.com>

	* loop.c (prescan_loop): Set loop_info->has_nonconst_call.
	Use it instead of loop_info->has_call for scanning loop mems.
	(check_dbra_loop): Replace loop_info->has_call test with
	loop_info->has_nonconst_call.

2000-01-04  Matthew Hiller  <hiller@redhat.com>

	* config/sh/sh.h (EPILOGUE_USES): Recognize fpscr as epilogue-used
	for TARGET_SH3E.

2001-01-04  Joseph S. Myers  <jsm28@cam.ac.uk>

	* fold-const.c (fold): When folding a CONJ_EXPR of a COMPLEX_CST,
	use TREE_REALPART and TREE_IMAGPART instead of TREE_OPERAND.

2001-01-04  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-common.c (SIZE_TYPE, WCHAR_TYPE): Define.
	(flag_short_double, flag_short_wchar): Define.
	(c_common_nodes_and_builtins): Create many tree nodes shared
	between C and C++ here instead of in cp/decl.c and ...
	* c-decl.c (init_decl_processing): ... here.
	(SIZE_TYPE, WCHAR_TYPE): Don't define.
	(flag_short_double, flag_short_wchar): Don't define.
	(record_builtin_type): New function.
	(build_void_list_node): New function.
	* c-common.h (flag_short_double, flag_short_wchar,
	record_builtin_type, build_void_list_node): Declare.

Thu Jan  4 21:09:47 2001  J"orn Rennecke <amylaar@redhat.com>

	* integrate.c (expand_inline_function): Don't put a virtual
	register into the reg map.

	* function.c (fixup_var_refs_1): If force_operand didn't put
	the address into the target, move it there.

2001-01-04  Mark Mitchell  <mark@codesourcery.com>

	Special-case tree_decl/tree_list allocations.
	* ggc-page.c (OBJECT_PER_PAGE): Reimplement.
	(OBJECT_SIZE): New macro.
	(NUM_EXTRA_ORDER): Likewise.
	(extra_order_size_table): New variable.
	(NUM_ORDERS): New macro.
	(objects_per_page_table): New variable.
	(object_size_table): New variable.
	(G.pages): Use NUM_ORDERS to bound the array.
	(G.page_tails): Likewise.
	(DIV_ROUND_UP): Remove.
	(BITMAP_SIZE): Use CEIL, instead of DIV_ROUND_UP.
	(alloc_page): Use OBJECT_SIZE.
	(size_lookup): Don't make it const.
	(ggc_alloc): Use OBJECT_SIZE.
	(ggc_set_mark): Likewise.
	(ggc_get_size): Likewise.
	(init_ggc): Set up the object_size_table, objects_per_page_table,
	and adjust size_lookup.
	(ggc_recalculate_in_use_p): Use CEIL, not DIV_ROUND_UP.
	(ggc_pop_context): Use NUM_ORDERS.
	(clear_marks): Likewise.
	(sweep_pages): Likewise.
	(poison_pages): Likewise.
	(ggc_print_statistics): Use OBJECT_SIZE.

Thu Jan  4 15:54:05 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* varasm.c (output_constructor): Use HOST_WIDE_INT for sizes.
	Only call array_size_for_constructor if last field and array type
	with no upper bound.

2001-01-04  Philip Blundell  <philb@gnu.org>

	* config/arm/arm.c (arm_gen_constant): Prefer to emit constants
	from bit 31 downwards, if this requires no more insns.
	(count_insns_for_constant): New helper function for above.

2001-01-04  Alexandre Oliva  <aoliva@redhat.com>

	* gencodes.c (output_predicate_decls): Remove empty initializer.

2001-01-04  Mark Mitchell  <mark@codesourcery.com>

	* tree.c (copy_node): Remove documentation about obstacks.
	(buidl1): Check that nobody tries to build 2-argument nodes this
	way.

2001-01-04  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* sparc.h (PREDICATE_CODES): Delete fp_sethi_p, fp_mov_p and
	fp_high_losum_p.

	* gencodes.c (output_predicate_decls): Fill empty initializer
	braces.

2001-01-04  Jakub Jelinek  <jakub@redhat.com>

	* tradcpp.c (deps_file, print_deps_missing_files): New variables.
	(main): Handle -MG, -MD, -MMD.  Bail out if -MG is given without -M
	or -MM.
	(do_include): Handle missing headers like cpp0.
	* cppfiles.c (_cpp_execute_include): Don't prefix absolute header
	paths with first include pathname.  Don't strcat to uninitialized
	string.

2001-01-04  Bernd Schmidt  <bernds@redhat.com>

	* regrename.c (regrename_optimize): Don't rename from frame pointer
	if frame_pointer_needed.
	(do_replace): Don't set ORIGINAL_REGNO to a hard register number.
	* config/ia64/ia64.c (emit_all_group_insn_barriers): New function.
	(ia64_reorg): Use it instead of scheduling if ! optimize.
	(errata_emit_nops): Properly call asm_noperands.
	(ia64_sched_reorder): Finish cycle if we see an asm.
	(ia64_variable_issue): Clear scheduling state after asms.

2001-01-04  Neil Booth  <neil@daikokuya.demon.co.uk>

	* cpp.texi: Update for -MT.
	* cppinit.c (initialize_dependency_output): Add a default
	target if none has been given already.
	(no_tgt, OPT_MT): New.
	(cpp_handle_option): Handle -MT.  Update -M etc.
	* cpplib.h (struct cpp_options): Remove deps_target.
	* gcc.c (cpp_options): Handle -MT.
	* mkdeps.c (struct deps): Move from mkdeps.h.
	(deps_calc_target): Rename deps_add_default_target.  Add a
	default target if none has been specified already.
	* mkdeps.h (struct deps): Move to mkdeps.c.
	(deps_calc_target): Rename deps_add_default_target.

2000-01-03  Richard Henderson  <rth@redhat.com>

	* c-decl.c (grokdeclarator): Give zero-length arrays size zero.
	Remove dead code.
	* c-typeck.c (push_init_level): Move checks for flexible array
	members and zero length arrays ...
	(pop_init_level): ... here.  Silently discard empty initializations.
	Remove dead code.
	* varasm.c (output_constructor): Update for sizeof change to
	zero-length arrays.

	* extend.texi (Zero Length): Clarify semantics.

2001-01-03  Alexandre Oliva  <aoliva@redhat.com>

	* configure.in (tm.h): Include isns-codes.h last.
	* configure: Rebuilt.

2001-01-03  Richard Henderson  <rth@redhat.com>

	* config/alpha/alpha.md (addvsi3, addvdi3): New.
	(negvsi2, negvdi2, subvsi3, subvdi3, mulvsi3, mulvdi3): New.

2001-01-03  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* tradcpp.c (main): Make sure finclude() is called with a valid
	indepth value while handling -include.

2001-01-03  Alexandre Oliva  <aoliva@redhat.com>

	* gencodes.c (output_predicate_decls): New function.
	(main): Call it.
	* machmode.h (GET_MODE_MASK): Arrange for it to be defined
	even if it is not the first time machmode.h is #included.
	* config/sh/sh.c (fpul_operand): Declare MODE argument.
	* tm.texi (PREDICATE_CODES): Document predicate declarations.
	* gcc.texi (Copyright): Added 2001.

2001-01-03  Joseph S. Myers  <jsm28@cam.ac.uk>

	* c-common.c (c_common_lang_init): New function.  Warn if format
	warning options which only have effects when used with -Wformat
	are used without -Wformat.
	* c-common.h (c_common_lang_init): Declare.
	* c-lang.c (lang_init): Call c_common_lang_init.
	* objc/objc-act.c (lang_init): Call c_common_lang_init.

2001-01-03  Joseph S. Myers  <jsm28@cam.ac.uk>

	* configure.in: Check for the mktemp command.
	* configure: Regenerate.
	* gccbug.in: Use a separate temporary file $TEMP0 for one use of
	$TEMP.  Create temporary files with mktemp, if available at
	configure time; otherwise use set -C.  Remove temporary files
	before exit.

2001-01-03  Joseph S. Myers  <jsm28@cam.ac.uk>

	* configure.in: Require at least texinfo 4.0.  Check for whether
	Pod::Man is sufficiently recent to regenerate GCC manpages.
	* configure:  Regenerate.
	* Makefile.in (TEXI2POD): Call perl explicitly rather than relying
	on #!.
	(GENERATED_MANPAGES): Define.
	(generated-manpages): New target.  Depend on cpp.1 as well as
	gcov.1.
	(install-man): Depend on $(GENERATED_MANPAGES) (defined by
	configure to generated-manpages or empty) rather than on the
	manpages directly.  Remove execute permission from installed
	gcov.1 as well as cpp.1.
	* cpp.1, gcov.1: Regenerate.

2001-01-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* builtins.c (expand_builtin_strncmp): Use host_integerp and
	tree_low_cst.  Allow using cmpstrsi in more cases.

Wed Jan  3 10:48:43 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* config/sparc/sparc.h (RETURN_IN_MEMORY): Return 0 for variable
	sized types.

Wed Jan  3 12:22:32 2001  Alexandre Oliva  <aoliva@redhat.com>

	* build-make (HOST_CFLAGS): Added `-DGENERATOR_FILE'.
	* Makefile.in (HOST_CFLAGS): Mention build-make.

Wed Jan  3 08:53:50 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* config/sparc/sparc.md (nonlocal_goto): Emit goto_handler_and_restore
	as JUMP_INSN.

2001-01-01  Bernd Schmidt  <bernds@redhat.com>

	* builtins.c (expand_builtin_return_addr): Don't use MEM_ALIAS_SET on
	a REG rtx.

	* cse.c (cse_rtx_varies_p): Accept additional FROM_ALIAS arg.  All
	callers changed.

	* alias.c (throughout): Use ORIGINAL_REGNO when accessing
	reg_base_value and reg_known_value arrays.
	(init_alias_analysis): Add more cases to detect known values.
	* sched-deps.c (deps_may_trap_p): New function.
	(sched_analyze_2): Use it.

2001-01-03  Alexandre Oliva  <aoliva@redhat.com>

	* combine.c (simplify_shift_const): Even if we're sign-extracting,
	don't discard an ASHIFTRT if we're shifting in a wider mode.

2000-01-02  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* toplev.c (rest_of_compilation): Don't print basic block information
	when CFG isn't up to date.

2001-01-02  Mark Elbrecht  <snowball3@bigfoot.com>

	* config/i386/djgpp.h (DWARF2_DEBUGGING_INFO): Define.
	(UNALIGNED_INT_ASM_OP, UNALIGNED_DOUBLE_ASM_OP): Define.
	(UNALIGNED_SHORT_ASM_OP): Define.
	(CPP_PREDEFINES): Remove defines for GO32 and DJGPP.

2001-01-02  Mark Mitchell  <mark@codesourcery.com>

	* fold-const.c (fold_convert): Fix typo.

2001-01-02  Richard Henderson  <rth@redhat.com>

	* c-common.h (ASM_INPUT_P): New.
	* c-parse.in (asm): Set it when needed.
	* c-semantics.c (genrtl_asm_stmt): Test it instead of the
	existence of an operand.

Tue Jan  2 20:27:07 MET 2001  Jan Hubicka  <jh@suse.cz>

	* dwarf2out.c (stack_adjust_offset): Handle PRE_MODIFY.
	(dwarf2out_frame_debug_expr): Likewise.
	(mem_loc_descriptor): Handle PRE and POST_MODIFY.

Tue Jan  2 20:21:31 MET 2001  Jan Hubicka  <jh@suse.cz>

	* i386.c (ix86_split_to_parts): Return number of part required;
	handle TFmodes.
	(print_operand, ix86_expand_branch, ix86_expand_fp_movcc): Handle
	TFmodes.
	(ix86_split_long_move): Use number of part returned
	by ix86_split_to_parts
	* i386.h (MASK_128BIT_LONG_DOUBLE, TARGET_128BIT_LONG_DOUBLE):
	New macros.
	(TARGET_SWITCHES): Add 128bit-long-double and 96bit-long-double
	(LONG_DOUBLE_TYPE_SIZE): Change from constant.
	(MAX_LONG_DOUBLE_TYPE_SIZE): New macro.
	(INTEL_EXTENDED_IEEE_FORMAT): Likewise.
	(ALIGN_MODE_128): Add TFmode.
	(IS_STACK_MODE): Likewise.
	(HARD_REGNO_NREGS): TFmode needs 3 registers.
	(HARD_REGNO_OK): Support TFmodes.
	(ASM_OUTPUT_LONG_DOUBLE): Handle TFmodes.
	* i386.md (scheduler definitions): Use memory operand to determine
	fst/fld instructions; use mode attribute to determine real mode of
	the instruction.
	(*tf): New patterns, expanders and splitters; based on XFmode patterns.
	* invoke.texi (128bit-long-double, 96bit-long-double): Document.

2001-01-02  Mark Mitchell  <mark@codesourcery.com>

	* tree.def (TRUTH_NOT_EXPR): Improve documentation.

Tue Jan  2 10:47:38 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.

	* expr.c (store_constructor_field): Update ALIGN before calling
	store_constructor.

2001-01-02  Jeffrey Oldham  <oldham@codesourcery.com>

	* config/mips/mips.c (function_arg): Don't pass NULL_TREE to
	host_integerp.

2001-01-02  Jeffrey Oldham  <oldham@codesourcery.com>

	* tm.texi (FUNCTION_ARG): Document that @var{type} can be an
	incomplete type.

Tue Jan  2 10:47:38 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.

	* c-decl.c (start_function): Don't warn on third parameter to main.

2001-01-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* tsystem.h: Define HAVE_DECL_GETOPT.

2001-01-02  Philip Blundell  <pb@futuretv.com>

	* config/arm/linux-gas.h (CLEAR_INSN_CACHE): Avoid illegal clobber
	of input operand.

2001-01-02  Richard Henderson  <rth@redhat.com>

	* alpha.md (*ze_and_ne): Duplicate insn condition to split.

2001-01-02  Andreas Jaeger  <aj@suse.de>

	* c-decl.c (c_decode_option): Remove support of
	-Wmissing-noreturn.

	* toplev.c (documented_lang_options): Remove -Wmissing-noreturn.
	(W_options): Add -Wmissing-noreturn here.

	* flow.c: Define lang_missing_noreturn_ok_p.
	(check_function_return_warnings): Use it.

	* c-common.h: Declare lang_missing_noreturn_ok_p.

	* c-lang.c (c_missing_noreturn_ok_p): New function.
	(lang_init): Set lang_missing_noreturn_ok_p.

	* invoke.texi (Warning Options): Document this.

2000-12-27  Phil Edwards  <pme@sources.redhat.com>

	* extend.texi (C++ Extensions):  New node for C++ attributes;
	describe init_priority and com_interface.
	* invoke.texi:  Remove -finit-priority as it now has zero effect.
	* install.texi:  Fix xref syntax.
	* md.texi:  Likewise.

Mon Jan  1 21:28:29 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* config.gcc (sparc64-wrs-vxworks*): New case.
	* config/sparc/vxsparc64.h, config/sparc/t-vxsparc64: New files.

	* config/sparc/sparc.c (sparc_override_options): Do support different
	pointer and architecture size.
	* config/sparc/sparc.h (MIN_UNITS_PER_WORD): Always 4.
	(POINTERS_EXTEND_UNSIGNED): Define.
	(Pmode): Test TARGET_ARCH64, not TARGET_PTR64.
	(FUNCTION_MODE): Define to be Pmode.
	* config/sparc/sparc.md (64-bit call patterns): FUNCTION_MODE now DI.

	* function.c (expand_function_end): Properly handle DECL_RESULT
	and copy when ptr_mode != Pmode.
	* expmed.c (make_tree): Convert X from Pmode to ptr_mode, if needed.

2001-01-01  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* c-common.c (c_common_nodes_and_builtins): Set prototype
	parameters for __builtin_fputs, __builtin_fputc and
	__builtin_fwrite.  Don't declare plain fputc as a builtin.

2001-01-01  John David Anglin  <dave@hiauly1.hia.nrc.ca>

	* loop.c (add_label_notes): Increment the label usage count when
	a note is added to an insn which refers to a CODE_LABEL.
	* gcse.c (add_label_notes): Likewise.

2001-01-01  Andreas Jaeger  <aj@suse.de>

	* loop.c (scan_loop): Use xmalloc to allocate movables.

2001-01-01  Alexandre Oliva  <aoliva@redhat.com>

	* tm.texi (REGISTER_MOVE_COST): Add a mode argument.
	* reload.c (REGISTER_MOVE_COST): Likewise.  Adjust all callers.
	* reload1.c (REGISTER_MOVE_COST): Likewise.
	* regclass.c (REGISTER_MOVE_COST): Likewise.
	(move_cost, may_move_in_cost, may_move_out_cost): Add mode
	dimension.  Adjust all users.
	(init_reg_sets_1): Iterate on all modes.
	* config/1750a/1750a.h (REGISTER_MOVE_COST): Adjust.
	* config/a29k/a29k.h (REGISTER_MOVE_COST): Adjust.
	* config/alpha/alpha.h (REGISTER_MOVE_COST): Adjust.
	* config/arc/arc.h (REGISTER_MOVE_COST): Adjust.
	* config/arm/arm.h (REGISTER_MOVE_COST): Adjust.
	* config/avr/avr.h (REGISTER_MOVE_COST): Adjust.
	* config/c4x/c4x.h (REGISTER_MOVE_COST): Adjust.
	* config/d30v/d30v.h (REGISTER_MOVE_COST): Adjust.
	* config/dsp16xx/dsp16xx.h (REGISTER_MOVE_COST): Adjust.
	* config/h8300/h8300.h (REGISTER_MOVE_COST): Adjust.
	* config/i386/i386.h (REGISTER_MOVE_COST): Adjust.
	* config/ia64/ia64.h (REGISTER_MOVE_COST): Adjust.
	* config/m32r/m32r.h (REGISTER_MOVE_COST): Adjust.
	* config/m68hc11/m68hc11.h (REGISTER_MOVE_COST): Adjust.
	* config/m68k/m68k.h (REGISTER_MOVE_COST): Adjust.
	* config/mcore/mcore.h (REGISTER_MOVE_COST): Adjust.
	* config/mips/mips.h (REGISTER_MOVE_COST): Adjust.
	* config/mn10200/mn10200.h (REGISTER_MOVE_COST): Adjust.
	* config/mn10300/mn10300.h (REGISTER_MOVE_COST): Adjust.
	* config/ns32k/ns32k.h (REGISTER_MOVE_COST): Adjust.
	* config/pa/pa.h (REGISTER_MOVE_COST): Adjust.
	* config/pdp11/pdp11.h (REGISTER_MOVE_COST): Adjust.
	* config/pj/pj.h (REGISTER_MOVE_COST): Adjust.
	* config/romp/romp.h (REGISTER_MOVE_COST): Adjust.
	* config/rs6000/rs6000.h (REGISTER_MOVE_COST): Adjust.
	* config/sh/sh.h (REGISTER_MOVE_COST): Adjust.
	* config/sparc/sparc.h (REGISTER_MOVE_COST): Adjust.

2001-01-01  Bernd Schmidt  <bernds@redhat.com>

	* alias.c (fixed_scalar_and_varying_struct): Adjust prototype of
	arg VARIES_P.  Call it with extra arg.
	(true_dependence): Likewise.
	* rtl.h (rtx_addr_can_trap_p): Declare.
	(rtx_varies_p, rtx_addr_varies_p, true_dependence): Update
	prototypes.
	* rtlanal.c (rtx_addr_can_trap_p): No longer static.
	(rtx_varies_p): Accept extra arg FOR_ALIAS; only disallow
	pic offset table register if it's zero.  All callers changed.
	(rtx_addr_varies_p): Accept extra arg FOR_ALIAS; all callers changed.

Mon Jan  1 07:38:33 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* explow.c (convert_memory_address, case SYMBOL_REF): Copy
	STRING_POOL_ADDRESS_P.

	* config/sparc/sparc.c (input_operand): Properly test for short op.

	* config.gcc (sparc-*-elf): Include sparc/sol2.h.
	(sparc-*-rtems*): Include sparc/sol2.h and sparc/elf.h.
	(sparclite-*-elf*, sparc86x-*-elf*): Likewise.
	* config/sparc/elf.h: No longer include sol2.h.
	* config/sparc/lifeelf.h: No longer include sparc/elf.h.
	* config/sparc/rtemself.h, config/sparc/sp86x-elf.h: Likewise.

	* config/sparc/sparc.md: Test TARGET_ARCH64 instead of TARGET_PTR64.

2001-01-01  Michael Hayes  <mhayes@redhat.com>

	* loop.c (check_insn_for_bivs): Use ivs->n_regs to check array bounds.
	(find_mem_givs, record_biv, maybe_eliminate_biv): Likewise.
	(record_initial): Likewise.
	* unroll.c (copy_loop_body, loop_iterations): Likewise.
	(remap_split_bivs): Likewise.

2001-01-01  Michael Hayes  <mhayes@redhat.com>

	* loop.c (loop_ivs_free): New function.
	(strength_reduce): Break out from...

2001-01-01  Michael Hayes  <mhayes@redhat.com>

	* loop.h (struct iv): New.
	(REG_IV_TYPE, REG_IV_CLASS, REG_INFO): Modify to use 'struct iv'.
	(struct loop_ivs): Replace 'reg_iv_type', 'reg_iv_info',
	'reg_biv_class' fields with 'regs' and 'n_regs'.
	(struct ivs): Rename 'loop_iv_list' field to 'list'.
	* loop.c (loop_bivs_find, strength_reduce): Use ivs->regs array.
	* unroll.c (loop_iterations): Check array bounds with ivs->n_regs.

2000-12-31  Alexandre Oliva  <aoliva@redhat.com>

	* resource.c (mark_referenced_resources): Abort() before
	attempting to mark a pseudo register.
	(mark_set_resources): Likewise.

2001-01-01  Michael Hayes  <mhayes@redhat.com>

	* loop.h (REG_IV_CLASS): New accessor macro.
	* loop.c (REG_IV_CLASS): Use it instead of reg_iv_class array.
	* unroll.c (REG_IV_CLASS): Likewise.

See ChangeLog.4 for earlier changes.
